This commit is contained in:
behruz-dev
2025-11-01 16:12:26 +05:00
parent a2f23fb601
commit 3f8bf3c391
2 changed files with 68 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
from django.core.management.base import BaseCommand
from core.apps.finance.models import Counterparty
from core.apps.counterparty.utils.counterparty import update_counterparty_balance
class Command(BaseCommand):
help = 'Barcha counterpartylardagi debit va kredit balanslarini yangilash'
def handle(self, *args, **options):
counterparties = Counterparty.objects.all()
for counterparty in counterparties:
update_counterparty_balance(counterparty)
self.stdout.write(
self.style.SUCCESS(
f'{counterparties.count()} ta counterparty yangilandi'
)
)

View File

@@ -0,0 +1,51 @@
from django.db.models import Sum
from core.apps.finance.models import Expence
from core.apps.finance.models import Income
def update_counterparty_balance(counterparty):
if not counterparty:
return
expences = Expence.objects.filter(
counterparty=counterparty,
is_deleted=False,
status='CONFIRMED'
)
debit_usd = expences.filter(currency='usd').aggregate(
total=Sum('price')
)['total'] or 0
debit_uzs = expences.filter(currency='uzs').aggregate(
total=Sum('price')
)['total'] or 0
incomes = Income.objects.filter(
counterparty=counterparty,
is_deleted=False
)
kredit_usd = incomes.filter(currency='usd').aggregate(
total=Sum('price')
)['total'] or 0
kredit_uzs = incomes.filter(currency='uzs').aggregate(
total=Sum('price')
)['total'] or 0
total_debit = debit_usd + debit_uzs
total_kredit = kredit_usd + kredit_uzs
counterparty.debit_usd = debit_usd
counterparty.debit_uzs = debit_uzs
counterparty.total_debit = total_debit
counterparty.kredit_usd = kredit_usd
counterparty.kredit_uzs = kredit_uzs
counterparty.total_kredit = total_kredit
counterparty.save(update_fields=[
'debit_usd', 'debit_uzs', 'total_debit',
'kredit_usd', 'kredit_uzs', 'total_kredit'
])