mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-10-08 15:21:38 +00:00
feat(wallet): implement wallet transaction model, views, and serializers for fund management ✨
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m42s
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m42s
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from api.models import User
|
||||
import uuid
|
||||
from django.conf import settings
|
||||
from devices.models import Device
|
||||
|
||||
# Create your models here.
|
||||
|
||||
from devices.models import Device
|
||||
user = settings.AUTH_USER_MODEL
|
||||
|
||||
# Create your models here.
|
||||
|
||||
@@ -20,7 +20,7 @@ class Payment(models.Model):
|
||||
number_of_months = models.IntegerField()
|
||||
amount = models.FloatField()
|
||||
paid = models.BooleanField(default=False)
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="payments")
|
||||
user = models.ForeignKey(user, on_delete=models.CASCADE, related_name="payments")
|
||||
paid_at = models.DateTimeField(null=True, blank=True)
|
||||
method = models.CharField(max_length=255, choices=PAYMENT_TYPES, default="TRANSFER")
|
||||
expiry_notification_sent = models.BooleanField(default=False)
|
||||
@@ -65,7 +65,7 @@ class BillFormula(models.Model):
|
||||
class Topup(models.Model):
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
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")
|
||||
paid = models.BooleanField(default=False)
|
||||
paid_at = models.DateTimeField(null=True, blank=True)
|
||||
status = models.CharField(
|
||||
@@ -94,3 +94,28 @@ class Topup(models.Model):
|
||||
|
||||
class Meta:
|
||||
ordering = ["-created_at"]
|
||||
|
||||
|
||||
class WalletTransaction(models.Model):
|
||||
TRANSACTION_TYPES = [
|
||||
("TOPUP", "Topup"),
|
||||
("DEBIT", "Debit"),
|
||||
]
|
||||
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
user = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="wallet_transactions",
|
||||
)
|
||||
amount = models.FloatField()
|
||||
transaction_type = models.CharField(max_length=10, choices=TRANSACTION_TYPES)
|
||||
description = models.TextField(blank=True, null=True)
|
||||
reference_id = models.CharField(max_length=255, blank=True, null=True)
|
||||
created_at = models.DateTimeField(default=timezone.now)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.transaction_type} {self.amount} ({self.user.username})"
|
||||
|
||||
class Meta:
|
||||
ordering = ["-created_at"]
|
||||
|
Reference in New Issue
Block a user