This commit is contained in:
behruz-dev
2025-11-12 14:39:19 +05:00
parent 035a294a64
commit d376aaa6c1

View File

@@ -111,36 +111,22 @@ class CounterpartyBalance(BaseModel):
Party = apps.get_model('orders', 'Party') Party = apps.get_model('orders', 'Party')
Income = apps.get_model('finance', 'Income') Income = apps.get_model('finance', 'Income')
Expence = apps.get_model('finance', 'Expence') Expence = apps.get_model('finance', 'Expence')
# party_payment = Party.objects.filter( parties = Party.objects.filter(
# orders__counterparty=self.counterparty,
# is_deleted=False,
# currency='usd'
# ).aggregate(
# payment_amount=models.Sum('party_amount__payment_amount')
# )['payment_amount'] or 0
# party_overdue = Party.objects.filter(
# orders__counterparty=self.counterparty,
# is_deleted=False,
# currency='usd'
# ).aggregate(
# overdue_amount=models.Sum('party_amount__overdue_amount')
# )['overdue_amount'] or 0
# party_amount = Decimal(party_payment or 0) - Decimal(party_overdue or 0)
party_total_amount = Party.objects.filter(
orders__counterparty=self.counterparty, orders__counterparty=self.counterparty,
is_deleted=False, is_deleted=False,
currency='uzs' currency='usd'
).distinct().aggregate(total_price=models.Sum('party_amount__paid_amount'))['total_price'] or 0 ).distinct()
paid_amount = parties.aggregate(total_price=models.Sum('party_amount__paid_amount'))['total_price'] or 0
total_amount = parties.aggregate(total_price=models.Sum('party_amount__total_price'))['total_price'] or 0
income = Income.objects.filter(currency='usd', counterparty=self.counterparty).aggregate( income = Income.objects.filter(currency='usd', counterparty=self.counterparty).aggregate(
total_price=models.Sum("price") total_price=models.Sum("price")
)['total_price'] or 0 )['total_price'] or 0
expence = Expence.objects.filter(currency='usd', counterparty=self.counterparty).aggregate( expence = Expence.objects.filter(currency='usd', counterparty=self.counterparty).aggregate(
total_price=models.Sum("price") total_price=models.Sum("price")
)['total_price'] or 0 )['total_price'] or 0
return (party_total_amount + income) - expence party_amount = total_amount - paid_amount
return (party_amount + income) - expence
@property @property
@@ -149,37 +135,22 @@ class CounterpartyBalance(BaseModel):
Income = apps.get_model('finance', 'Income') Income = apps.get_model('finance', 'Income')
Expence = apps.get_model('finance', 'Expence') Expence = apps.get_model('finance', 'Expence')
# party_payment = Party.objects.filter(
# orders__counterparty=self.counterparty,
# is_deleted=False,
# currency='uzs'
# ).aggregate(
# payment_amount=models.Sum('party_amount__payment_amount')
# )['payment_amount'] or 0
# party_overdue = Party.objects.filter(
# orders__counterparty=self.counterparty,
# is_deleted=False,
# currency='uzs'
# ).aggregate(
# overdue_amount=models.Sum('party_amount__overdue_amount')
# )['overdue_amount'] or 0
# party_amount = Decimal(party_payment or 0) - Decimal(party_overdue or 0)
parties = Party.objects.filter( parties = Party.objects.filter(
orders__counterparty=self.counterparty, orders__counterparty=self.counterparty,
is_deleted=False, is_deleted=False,
currency='uzs' currency='uzs'
).distinct() ).distinct()
paid_amount = parties.aggregate(total_price=models.Sum('party_amount__paid_amount'))['total_price'] or 0 paid_amount = parties.aggregate(total_price=models.Sum('party_amount__paid_amount'))['total_price'] or 0
total_amount = parties.aaggregate(total_price=models.Sum('party_amount__total_price'))['total_price'] or 0 total_amount = parties.aggregate(total_price=models.Sum('party_amount__total_price'))['total_price'] or 0
income = Income.objects.filter(currency='uzs', counterparty=self.counterparty).aggregate( income = Income.objects.filter(currency='uzs', counterparty=self.counterparty).aggregate(
total_price=models.Sum("price") total_price=models.Sum("price")
)['total_price'] or 0 )['total_price'] or 0
expence = Expence.objects.filter(currency='uzs', counterparty=self.counterparty).aggregate( expence = Expence.objects.filter(currency='uzs', counterparty=self.counterparty).aggregate(
total_price=models.Sum("price") total_price=models.Sum("price")
)['total_price'] or 0 )['total_price'] or 0
return ((total_amount - paid_amount) + income) - expence party_amount = total_amount - paid_amount
print(party_amount)
return (party_amount + income) - expence
def __str__(self): def __str__(self):
return f"{self.counterparty.name}" return f"{self.counterparty.name}"