finance: import income and expence commands added

This commit is contained in:
behruz-dev
2025-11-01 08:45:57 +05:00
parent 713cb61d4e
commit 3f2b86be57
4 changed files with 135 additions and 79 deletions

View File

@@ -382,7 +382,6 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer):
]
def validate(self, data):
"""Validasiya qilish"""
price = data.get('price')
exchange_rate = data.get('exchange_rate')
party = data.get('party')
@@ -397,7 +396,6 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer):
if not party:
raise serializers.ValidationError("Party talab qilinadi")
# USD kursi tekshiruvi
try:
usd_course = UsdCourse.objects.first()
if not usd_course or not usd_course.value:
@@ -439,24 +437,20 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer):
party = expence.party
if currency == "uzs":
# Cash transaction balansini yangilash
cash_transaction.expence_balance_uzs += expence.price
cash_transaction.total_balance_uzs = (
cash_transaction.income_balance_uzs
- cash_transaction.expence_balance_uzs
)
# Payment type balansini yangilash
if payment_type.total_uzs > expence.price:
payment_type.total_uzs -= expence.price
# Kontrapartiya hisobini yangilash
if expence.counterparty:
if expence.counterparty.kredit_uzs > 0:
expence.counterparty.kredit_uzs -= expence.price
expence.counterparty.total_kredit -= expence.price
# ✅ TUZATILDI: Debit to'g'ridan-to'g'ri oshadi
expence.counterparty.debit_uzs += expence.price
expence.counterparty.total_debit += expence.price
else:
@@ -465,15 +459,12 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer):
expence.counterparty.save()
# Party hisobini yangilash
if party:
if party.currency == "uzs":
# ✅ Birjani to'g'ri hisoblash
party.party_amount.payment_amount -= expence.price
party.party_amount.paid_amount += expence.price
party.party_amount.save()
elif party.currency == 'usd':
# ✅ USD kursi bilan to'g'ri konvertatsiya
converted_price = round(expence.price / usd_value)
party.party_amount.payment_amount -= converted_price
party.party_amount.paid_amount += converted_price
@@ -482,25 +473,20 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer):
party.save()
elif currency == "usd":
# Cash transaction balansini yangilash
cash_transaction.expence_balance_usd += expence.price
cash_transaction.total_balance_usd = (
cash_transaction.income_balance_usd
- cash_transaction.expence_balance_usd
)
# Payment type balansini yangilash
if payment_type.total_usd > expence.price:
payment_type.total_usd -= expence.price
# Kontrapartiya hisobini yangilash
if expence.counterparty:
if expence.counterparty.kredit_usd > 0:
# ✅ TUZATILDI: expence.price ishlatish
expence.counterparty.kredit_usd -= expence.price
expence.counterparty.total_kredit -= expence.price
# ✅ TUZATILDI: Debit to'g'ridan-to'g'ri oshadi
expence.counterparty.debit_usd += expence.price
expence.counterparty.total_debit += expence.price
else:
@@ -509,15 +495,12 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer):
expence.counterparty.save()
# Party hisobini yangilash
if party:
if party.currency == "usd":
# ✅ TUZATILDI: expence.price ishlatish
party.party_amount.payment_amount -= expence.price
party.party_amount.paid_amount += expence.price
party.party_amount.save()
elif party.currency == "uzs":
# ✅ TUZATILDI: expence.price bilan konvertatsiya
converted_price = expence.price * usd_value
party.party_amount.payment_amount -= converted_price
party.party_amount.paid_amount += converted_price
@@ -525,7 +508,6 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer):
party.save()
# Barcha o'zgarishlari saqlash
cash_transaction.save()
payment_type.save()