From c76aef126e492c613942a73372265ed749a2a94f Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Wed, 5 Nov 2025 18:15:17 +0500 Subject: [PATCH] fix --- core/apps/orders/management/commands/update_party.py | 1 - core/apps/orders/models/party.py | 11 +++++++++++ core/apps/orders/serializers/party.py | 9 +-------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/core/apps/orders/management/commands/update_party.py b/core/apps/orders/management/commands/update_party.py index 1d4e3d2..3ba8d73 100644 --- a/core/apps/orders/management/commands/update_party.py +++ b/core/apps/orders/management/commands/update_party.py @@ -7,6 +7,5 @@ class Command(BaseCommand): def handle(self, *args, **options): parties = Party.objects.all() for party in parties: - party.party_amount.payment_amount = party.party_amount.calculated_amount - party.party_amount.paid_amount party.party_amount.save() self.stdout.write("Parties updated") \ No newline at end of file diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 01672d2..eebaeee 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -94,6 +94,17 @@ class PartyAmount(BaseModel): payment_amount = models.BigIntegerField(default=0) debt_amount = models.BigIntegerField(default=0) total_expense_amount = models.BigIntegerField(default=0) + overdue_amount = models.BigIntegerField(default=0) + + def save(self, *args, **kwargs): + if self.calculated_amount < self.paid_amount: + self.overdue_amount = self.paid_amount - self.calculated_amount + elif self.calculated_amount > self.paid_amount: + self.payment_amount = self.calculated_amount - self.paid_amount + else: + self.overdue_amount = 0 + self.payment_amount = 0 + return super().save(*args, **kwargs) def __str__(self): return f'{self.party} amount' diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 3094f97..4636b16 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -94,8 +94,6 @@ class PartyCreateSerializer(serializers.Serializer): class PartyAmountSerializer(serializers.ModelSerializer): - payment_amount = serializers.SerializerMethodField(method_name='get_payment_amount') - class Meta: model = PartyAmount fields = [ @@ -107,14 +105,9 @@ class PartyAmountSerializer(serializers.ModelSerializer): "payment_amount", "debt_amount", "total_expense_amount", + "overdue_amount" ] - def get_payment_amount(self, obj): - if obj.calculated_amount < obj.paid_amount: - return obj.paid_amount - obj.calculated_amount - else: - return obj.calculated_amount - obj.paid_amount - class PartyDetailSerializer(serializers.ModelSerializer): orders = OrderListSerializer(many=True)