fix: incorrect paid_amount and exchange rate in PE
If Company master has no default cash or bank account set but Party has
default company bank account set. In this case, paid_amount and
conversion rate are not calculated correctly
(cherry picked from commit 123355392b)
This commit is contained in:
@@ -1733,6 +1733,13 @@ def get_payment_entry(
|
|||||||
# bank or cash
|
# bank or cash
|
||||||
bank = get_bank_cash_account(doc, bank_account)
|
bank = get_bank_cash_account(doc, bank_account)
|
||||||
|
|
||||||
|
# if default bank or cash account is not set in company master and party has default company bank account, fetch it
|
||||||
|
if party_type in ["Customer", "Supplier"] and not bank:
|
||||||
|
party_bank_account = get_party_bank_account(party_type, doc.get(scrub(party_type)))
|
||||||
|
if party_bank_account:
|
||||||
|
account = frappe.db.get_value("Bank Account", party_bank_account, "account")
|
||||||
|
bank = get_bank_cash_account(doc, account)
|
||||||
|
|
||||||
paid_amount, received_amount = set_paid_amount_and_received_amount(
|
paid_amount, received_amount = set_paid_amount_and_received_amount(
|
||||||
dt, party_account_currency, bank, outstanding_amount, payment_type, bank_amount, doc
|
dt, party_account_currency, bank, outstanding_amount, payment_type, bank_amount, doc
|
||||||
)
|
)
|
||||||
@@ -1949,16 +1956,24 @@ def set_paid_amount_and_received_amount(
|
|||||||
paid_amount = received_amount = 0
|
paid_amount = received_amount = 0
|
||||||
if party_account_currency == bank.account_currency:
|
if party_account_currency == bank.account_currency:
|
||||||
paid_amount = received_amount = abs(outstanding_amount)
|
paid_amount = received_amount = abs(outstanding_amount)
|
||||||
elif payment_type == "Receive":
|
else:
|
||||||
|
company_currency = frappe.get_cached_value("Company", doc.get("company"), "default_currency")
|
||||||
|
if payment_type == "Receive":
|
||||||
paid_amount = abs(outstanding_amount)
|
paid_amount = abs(outstanding_amount)
|
||||||
if bank_amount:
|
if bank_amount:
|
||||||
received_amount = bank_amount
|
received_amount = bank_amount
|
||||||
|
else:
|
||||||
|
if company_currency != bank.account_currency:
|
||||||
|
received_amount = paid_amount / doc.get("conversion_rate", 1)
|
||||||
else:
|
else:
|
||||||
received_amount = paid_amount * doc.get("conversion_rate", 1)
|
received_amount = paid_amount * doc.get("conversion_rate", 1)
|
||||||
else:
|
else:
|
||||||
received_amount = abs(outstanding_amount)
|
received_amount = abs(outstanding_amount)
|
||||||
if bank_amount:
|
if bank_amount:
|
||||||
paid_amount = bank_amount
|
paid_amount = bank_amount
|
||||||
|
else:
|
||||||
|
if company_currency != bank.account_currency:
|
||||||
|
paid_amount = received_amount / doc.get("conversion_rate", 1)
|
||||||
else:
|
else:
|
||||||
# if party account currency and bank currency is different then populate paid amount as well
|
# if party account currency and bank currency is different then populate paid amount as well
|
||||||
paid_amount = received_amount * doc.get("conversion_rate", 1)
|
paid_amount = received_amount * doc.get("conversion_rate", 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user