feat(topup): add payment_type field and update AdminTopupCreateView to handle payment type
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m26s

This commit is contained in:
2025-07-27 12:17:12 +05:00
parent cdef5ed27c
commit 80fc27fd74
3 changed files with 37 additions and 6 deletions

View File

@@ -0,0 +1,21 @@
# Generated by Django 5.2 on 2025-07-27 07:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("billing", "0014_wallettransaction"),
]
operations = [
migrations.AddField(
model_name="topup",
name="payment_type",
field=models.CharField(
choices=[("CASH", "Cash"), ("TRANSFER", "Transfer")],
default="TRANSFER",
max_length=20,
),
),
]

View File

@@ -66,6 +66,14 @@ class Topup(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
amount = models.FloatField() amount = models.FloatField()
user = models.ForeignKey(user, on_delete=models.CASCADE, related_name="topups") user = models.ForeignKey(user, on_delete=models.CASCADE, related_name="topups")
payment_type = models.CharField(
max_length=20,
choices=[
("CASH", "Cash"),
("TRANSFER", "Transfer"),
],
default="TRANSFER",
)
paid = models.BooleanField(default=False) paid = models.BooleanField(default=False)
paid_at = models.DateTimeField(null=True, blank=True) paid_at = models.DateTimeField(null=True, blank=True)
status = models.CharField( status = models.CharField(

View File

@@ -624,14 +624,16 @@ class AdminTopupCreateView(StaffEditorPermissionMixin, generics.CreateAPIView):
{"message": "User not found."}, {"message": "User not found."},
status=status.HTTP_404_NOT_FOUND, status=status.HTTP_404_NOT_FOUND,
) )
topup = Topup.objects.create(amount=amount, user=user) topup = Topup.objects.create(
description = f"Topup of {amount} MVR (Cash)"
WalletTransaction.objects.create(
user=user,
amount=amount, amount=amount,
transaction_type="TOPUP", user=user,
description=description, paid=True,
paid_at=timezone.now(),
payment_type="CASH",
status="PAID",
) )
description = f"Topup of {amount} MVR (Cash)"
user.add_wallet_funds(amount, description, topup.id)
serializer = TopupSerializer(topup) serializer = TopupSerializer(topup)
return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.data, status=status.HTTP_201_CREATED)