diff --git a/core/apps/counterparty/migrations/0009_counterpartybalance_total_balance.py b/core/apps/counterparty/migrations/0009_counterpartybalance_total_balance.py new file mode 100644 index 0000000..18029b5 --- /dev/null +++ b/core/apps/counterparty/migrations/0009_counterpartybalance_total_balance.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.4 on 2025-11-18 15:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('counterparty', '0008_remove_counterparty_balance_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='counterpartybalance', + name='total_balance', + field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15), + ), + ] diff --git a/core/apps/counterparty/models/conterparty.py b/core/apps/counterparty/models/conterparty.py index 57be960..0e90e4e 100644 --- a/core/apps/counterparty/models/conterparty.py +++ b/core/apps/counterparty/models/conterparty.py @@ -3,7 +3,7 @@ from decimal import Decimal from django.db import models from django.apps import apps -from core.apps.shared.models import BaseModel, Region, District +from core.apps.shared.models import BaseModel, Region, District, UsdCourse class CounterpartyFolder(BaseModel): @@ -69,20 +69,6 @@ class CounterpartyBalance(BaseModel): debit_uzs = models.DecimalField(max_digits=15, decimal_places=2, default=0.00) def save(self, *args, **kwargs): - # if self.balance_usd > 0: - # self.debit_usd = self.balance_usd - # self.kredit_usd = Decimal('0.00') - # elif self.balance_usd < 0: - # self.kredit_usd = abs(self.balance_usd) - # self.debit_usd = Decimal('0.00') - - # if self.balance_uzs > 0: - # self.debit_uzs = self.balance_uzs - # self.kredit_uzs = Decimal('0.00') - # elif self.balance_uzs < 0: - # self.kredit_uzs = abs(self.balance_uzs) - # self.debit_uzs = Decimal('0.00') - if self.total_balance_usd >= 0: self.kredit_usd = self.total_balance_usd elif self.total_balance_usd <= 0: @@ -145,6 +131,12 @@ class CounterpartyBalance(BaseModel): total_price=models.Sum("price") )['total_price'] or 0 return (total_amount + income) - expence + + @property + def total_balance(self): + usd_course = Decimal(UsdCourse.objects.first().value) if UsdCourse.objects.exists() else Decimal(12000) + return self.total_balance_usd + (self.total_balance_usd * usd_course) + def __str__(self): return f"{self.counterparty.name}" diff --git a/core/apps/counterparty/views/counterparty.py b/core/apps/counterparty/views/counterparty.py index b89cf9a..e912cee 100644 --- a/core/apps/counterparty/views/counterparty.py +++ b/core/apps/counterparty/views/counterparty.py @@ -266,7 +266,8 @@ class CounterPartyIncomeExpenceStatisticsApiView(views.APIView): 'balance': { 'uzs': balance_uzs, 'usd': balance_usd, - 'status': status + 'status': status, + 'total_balance': counterparty.balance.total_balance } }