From e26f443791fe5637a4af3049dbc766127de6c49f Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Wed, 12 Nov 2025 14:23:38 +0500 Subject: [PATCH] fix --- core/apps/orders/admin/party.py | 3 ++- core/apps/orders/models/party.py | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/apps/orders/admin/party.py b/core/apps/orders/admin/party.py index 7a585db..3514d9f 100644 --- a/core/apps/orders/admin/party.py +++ b/core/apps/orders/admin/party.py @@ -25,9 +25,10 @@ class PartyAdmin(admin.ModelAdmin): search_fields = [ "number", "orders__counterparty__name" ] + autocomplete_fields = ['orders'] def get_queryset(self, request): - return super().get_queryset(request).select_related('party_amount') + return super().get_queryset(request).select_related('party_amount', 'mediator').prefetch_related('orders') @admin.register(PartyAmount) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 7f5bcd8..2292072 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -78,6 +78,7 @@ class Party(BaseModel): percentage += order.completion_percentage if percentage > 0 and count > 0: self.process = percentage / count + self.party_amount.save() return super().save(*args, **kwargs) @@ -98,6 +99,8 @@ class PartyAmount(BaseModel): overdue_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00) def save(self, *args, **kwargs): + self.total_price = self.party.orders.aggregate(total_price=models.Sum('total_price'))['total_price'] or 0 + self.calculated_amount = self.total_price if self.calculated_amount < self.paid_amount: self.overdue_amount = self.paid_amount - self.calculated_amount self.payment_amount = 0