From 283bd2c4909cdfd00fa3f07941064b63d77efb34 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 29 Apr 2024 17:01:48 +0530 Subject: [PATCH 1/3] fix: Merge debit and credit in transaction currency while merging gle with similar head --- .../sales_invoice/test_sales_invoice.py | 43 +++++++++++++++++++ erpnext/accounts/general_ledger.py | 10 +++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index 37488ebd8d..ffcb208e80 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -1733,6 +1733,49 @@ class TestSalesInvoice(FrappeTestCase): self.assertTrue(gle) + def test_gle_in_transaction_currency(self): + # create multi currency sales invoice with 2 items with same income account + si = create_sales_invoice( + customer="_Test Customer USD", + debit_to="_Test Receivable USD - _TC", + currency="USD", + conversion_rate=50, + do_not_submit=True, + ) + # add 2nd item with same income account + si.append( + "items", + { + "item_code": "_Test Item", + "qty": 1, + "rate": 80, + "income_account": "Sales - _TC", + "cost_center": "_Test Cost Center - _TC", + }, + ) + si.submit() + + gl_entries = frappe.db.sql( + """select transaction_currency, transaction_exchange_rate, + debit_in_transaction_currency, credit_in_transaction_currency + from `tabGL Entry` + where voucher_type='Sales Invoice' and voucher_no=%s and account = 'Sales - _TC' + order by account asc""", + si.name, + as_dict=1, + ) + + expected_gle = { + "transaction_currency": "USD", + "transaction_exchange_rate": 50, + "debit_in_transaction_currency": 0, + "credit_in_transaction_currency": 180, + } + + for gle in gl_entries: + for field in expected_gle: + self.assertEqual(expected_gle[field], gle[field]) + def test_invoice_exchange_rate(self): si = create_sales_invoice( customer="_Test Customer USD", diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index ff8a450d2a..348c3f9948 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -244,14 +244,16 @@ def merge_similar_entries(gl_map, precision=None): same_head.debit_in_account_currency = flt(same_head.debit_in_account_currency) + flt( entry.debit_in_account_currency ) + same_head.debit_in_transaction_currency = flt(same_head.debit_in_transaction_currency) + flt( + entry.debit_in_transaction_currency + ) same_head.credit = flt(same_head.credit) + flt(entry.credit) same_head.credit_in_account_currency = flt(same_head.credit_in_account_currency) + flt( entry.credit_in_account_currency ) - if not same_head.remarks: - same_head.remarks = entry.remarks - else: - same_head.remarks += f"\n{entry.remarks}" + same_head.credit_in_transaction_currency = flt(same_head.credit_in_transaction_currency) + flt( + entry.credit_in_transaction_currency + ) else: merged_gl_map.append(entry) -- GitLab From 2dcb7218f7c2fc681763f3a286080fbcb30bd956 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 29 Apr 2024 17:24:31 +0530 Subject: [PATCH 2/3] fix: Patch to fix the incorrect debit and credit in transaction currency --- erpnext/patches.txt | 3 +++ ...ix_debit_credit_in_transaction_currency.py | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 erpnext/patches/v15_0/fix_debit_credit_in_transaction_currency.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index ac0be698b7..2881e1cbcd 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -390,3 +390,6 @@ execute:frappe.delete_doc_if_exists("DocType", "Integration References") erpnext.patches.v14_0.migrate_gl_to_payment_ledger erpnext.stock.doctype.delivery_note.patches.drop_unused_return_against_index # 2023-12-20 erpnext.patches.v14_0.set_maintain_stock_for_bom_item +erpnext.patches.v15_0.delete_orphaned_asset_movement_item_records +erpnext.patches.v15_0.remove_cancelled_asset_capitalization_from_asset +erpnext.patches.v15_0.fix_debit_credit_in_transaction_currency \ No newline at end of file diff --git a/erpnext/patches/v15_0/fix_debit_credit_in_transaction_currency.py b/erpnext/patches/v15_0/fix_debit_credit_in_transaction_currency.py new file mode 100644 index 0000000000..e0cc8f85a5 --- /dev/null +++ b/erpnext/patches/v15_0/fix_debit_credit_in_transaction_currency.py @@ -0,0 +1,21 @@ +import frappe + + +def execute(): + # update debit and credit in transaction currency: + # if transaction currency is same as account currency, + # then debit and credit in transaction currency is same as debit and credit in account currency + # else debit and credit divided by exchange rate + + # nosemgrep + frappe.db.sql( + """ + UPDATE `tabGL Entry` + SET + debit_in_transaction_currency = IF(transaction_currency = account_currency, debit_in_account_currency, debit / transaction_exchange_rate), + credit_in_transaction_currency = IF(transaction_currency = account_currency, credit_in_account_currency, credit / transaction_exchange_rate) + WHERE + transaction_exchange_rate > 0 + and transaction_currency is not null + """ + ) -- GitLab From 0ba7f0cecd9e7937afa6a32129e7fe544b2e6740 Mon Sep 17 00:00:00 2001 From: Charles-Henri Decultot Date: Wed, 8 May 2024 19:50:02 +0000 Subject: [PATCH 3/3] fix: merge conflicts --- erpnext/accounts/general_ledger.py | 5 +++++ erpnext/patches.txt | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index 348c3f9948..59d53cb297 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -254,6 +254,11 @@ def merge_similar_entries(gl_map, precision=None): same_head.credit_in_transaction_currency = flt(same_head.credit_in_transaction_currency) + flt( entry.credit_in_transaction_currency ) + if not same_head.remarks: + same_head.remarks = entry.remarks + else: + same_head.remarks += f"\n{entry.remarks}" + else: merged_gl_map.append(entry) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 2881e1cbcd..0e4fac603d 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -390,6 +390,5 @@ execute:frappe.delete_doc_if_exists("DocType", "Integration References") erpnext.patches.v14_0.migrate_gl_to_payment_ledger erpnext.stock.doctype.delivery_note.patches.drop_unused_return_against_index # 2023-12-20 erpnext.patches.v14_0.set_maintain_stock_for_bom_item -erpnext.patches.v15_0.delete_orphaned_asset_movement_item_records erpnext.patches.v15_0.remove_cancelled_asset_capitalization_from_asset erpnext.patches.v15_0.fix_debit_credit_in_transaction_currency \ No newline at end of file -- GitLab