finance: import income and expence commands added
This commit is contained in:
@@ -98,7 +98,6 @@ class IncomeCreateSerializer(serializers.ModelSerializer):
|
||||
]
|
||||
|
||||
def validate(self, data):
|
||||
"""Validasiya qilish"""
|
||||
price = data.get('price')
|
||||
exchange_rate = data.get('exchange_rate')
|
||||
|
||||
@@ -112,7 +111,6 @@ class IncomeCreateSerializer(serializers.ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
with transaction.atomic():
|
||||
# Exchange rate va final price hisoblash
|
||||
exchange_rate = validated_data.get("exchange_rate") or 1
|
||||
final_price = validated_data.get("price")
|
||||
|
||||
@@ -138,57 +136,45 @@ class IncomeCreateSerializer(serializers.ModelSerializer):
|
||||
currency = validated_data.get("currency", "uzs").lower()
|
||||
|
||||
if currency == "uzs":
|
||||
# Cash transaction balansini yangilash
|
||||
cash_transaction.income_balance_uzs += income.price
|
||||
cash_transaction.total_balance_uzs = (
|
||||
cash_transaction.income_balance_uzs
|
||||
- cash_transaction.expence_balance_uzs
|
||||
)
|
||||
|
||||
# Payment type balansini yangilash
|
||||
payment_type.total_uzs += income.price
|
||||
|
||||
# Kontrapartiya hisobini yangilash
|
||||
if income.counterparty:
|
||||
if income.counterparty.debit_uzs > 0:
|
||||
# Debit bo'lsa, uni qisqartirish
|
||||
income.counterparty.debit_uzs -= income.price
|
||||
income.counterparty.total_debit -= income.price
|
||||
|
||||
# Kredit oshirish
|
||||
income.counterparty.kredit_uzs += income.price # ✅ TUZATILDI
|
||||
income.counterparty.kredit_uzs += income.price
|
||||
income.counterparty.total_kredit += income.price
|
||||
else:
|
||||
# Debit yo'q bo'lsa, to'g'ridan-to'g'ri kredit oshirish
|
||||
income.counterparty.kredit_uzs += income.price
|
||||
income.counterparty.total_kredit += income.price
|
||||
|
||||
income.counterparty.save()
|
||||
|
||||
elif currency == "usd":
|
||||
# Cash transaction balansini yangilash
|
||||
cash_transaction.income_balance_usd += income.price
|
||||
cash_transaction.total_balance_usd = (
|
||||
cash_transaction.income_balance_usd
|
||||
- cash_transaction.expence_balance_usd
|
||||
)
|
||||
|
||||
# Payment type balansini yangilash
|
||||
payment_type.total_usd += income.price
|
||||
|
||||
# Kontrapartiya hisobini yangilash
|
||||
if income.counterparty:
|
||||
if income.counterparty.debit_usd > 0:
|
||||
# Debit bo'lsa, uni qisqartirish
|
||||
income.counterparty.debit_usd -= income.price # ✅ TUZATILDI
|
||||
income.counterparty.debit_usd -= income.price
|
||||
income.counterparty.total_debit -= income.price
|
||||
|
||||
# Kredit oshirish
|
||||
income.counterparty.kredit_usd += income.price # ✅ TUZATILDI
|
||||
income.counterparty.kredit_usd += income.price
|
||||
income.counterparty.total_kredit += income.price
|
||||
else:
|
||||
# Debit yo'q bo'lsa, to'g'ridan-to'g'ri kredit oshirish
|
||||
income.counterparty.kredit_usd += income.price # ✅ TUZATILDI
|
||||
income.counterparty.kredit_usd += income.price
|
||||
income.counterparty.total_kredit += income.price
|
||||
|
||||
income.counterparty.save()
|
||||
@@ -234,7 +220,6 @@ class IncomeUpdateSerializer(serializers.ModelSerializer):
|
||||
new_counterparty = validated_data.get("counterparty", instance.counterparty)
|
||||
currency = instance.currency.lower()
|
||||
|
||||
# Asosiy ma'lumotlarni yangilash
|
||||
instance.project_folder = validated_data.get(
|
||||
"project_folder", instance.project_folder
|
||||
)
|
||||
@@ -247,40 +232,33 @@ class IncomeUpdateSerializer(serializers.ModelSerializer):
|
||||
instance.audit = validated_data.get("audit", instance.audit)
|
||||
instance.file = validated_data.get("file", instance.file)
|
||||
|
||||
# Agar narxi o'zgarsa, balanslarni yangilash
|
||||
if validated_data.get("price") and old_price != new_price:
|
||||
price_difference = new_price - old_price # ✅ To'g'ri farq
|
||||
price_difference = new_price - old_price
|
||||
cash_transaction = instance.cash_transaction
|
||||
payment_type = instance.payment_type
|
||||
|
||||
if currency == "uzs":
|
||||
# Cash transaction balansini yangilash
|
||||
cash_transaction.income_balance_uzs += price_difference
|
||||
cash_transaction.total_balance_uzs = (
|
||||
cash_transaction.income_balance_uzs
|
||||
- cash_transaction.expence_balance_uzs
|
||||
)
|
||||
|
||||
# Payment type balansini yangilash
|
||||
payment_type.total_uzs += price_difference # ✅ Narx oshsa, balans oshadi
|
||||
payment_type.total_uzs += price_difference
|
||||
|
||||
elif currency == "usd":
|
||||
# Cash transaction balansini yangilash
|
||||
cash_transaction.income_balance_usd += price_difference
|
||||
cash_transaction.total_balance_usd = (
|
||||
cash_transaction.income_balance_usd
|
||||
- cash_transaction.expence_balance_usd
|
||||
)
|
||||
|
||||
# Payment type balansini yangilash
|
||||
payment_type.total_usd += price_difference # ✅ Narx oshsa, balans oshadi
|
||||
payment_type.total_usd += price_difference
|
||||
|
||||
cash_transaction.save()
|
||||
payment_type.save()
|
||||
|
||||
# Agar kontrapartiya o'zgarsa, uning hisobini yangilash
|
||||
if new_counterparty != old_counterparty:
|
||||
# Eski kontrapartyani qaytarish
|
||||
if old_counterparty:
|
||||
if currency == "uzs":
|
||||
if old_counterparty.kredit_uzs > 0:
|
||||
@@ -299,7 +277,6 @@ class IncomeUpdateSerializer(serializers.ModelSerializer):
|
||||
|
||||
old_counterparty.save()
|
||||
|
||||
# Yangi kontrapartyani yangilash
|
||||
if new_counterparty:
|
||||
if currency == "uzs":
|
||||
if new_counterparty.debit_uzs > 0:
|
||||
|
||||
Reference in New Issue
Block a user