From 8b077106f9e69e4e6fb0084a68f805fbf3626fef Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Mon, 14 Mar 2022 16:13:35 +0530 Subject: [PATCH 1/4] fix: KSA E-Invoice QR Code showing wrong VAT amount (cherry picked from commit b37559c535ce5cc4589a08a1af95311b360ce810) --- erpnext/regional/saudi_arabia/utils.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/erpnext/regional/saudi_arabia/utils.py b/erpnext/regional/saudi_arabia/utils.py index 674ea83cc65..80b7264adce 100644 --- a/erpnext/regional/saudi_arabia/utils.py +++ b/erpnext/regional/saudi_arabia/utils.py @@ -93,7 +93,7 @@ def create_qr_code(doc, method=None): tlv_array.append(''.join([tag, length, value])) # VAT Amount - vat_amount = str(doc.total_taxes_and_charges) + vat_amount = str(get_vat_amount(doc)) tag = bytes([5]).hex() length = bytes([len(vat_amount)]).hex() @@ -130,6 +130,22 @@ def create_qr_code(doc, method=None): doc.db_set('ksa_einv_qr', _file.file_url) doc.notify_update() +def get_vat_amount(doc): + vat_settings = frappe.db.get_value('KSA VAT Setting', {'company': doc.company}) + vat_accounts = [] + vat_amount = 0 + + if vat_settings: + vat_settings_doc = frappe.get_doc('KSA VAT Setting', vat_settings) + + for row in vat_settings_doc.get('ksa_vat_sales_accounts'): + vat_accounts.append(row.account) + + for tax in doc.get('taxes'): + if tax.account_head in vat_accounts: + vat_amount += tax.tax_amount + + return vat_amount def delete_qr_code_file(doc, method=None): region = get_region(doc.company) From fc298770e9959a77e1c0a32d2df73cb0d4d79918 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Mon, 14 Mar 2022 16:27:04 +0530 Subject: [PATCH 2/4] fix: Linting Issue (cherry picked from commit 3cc2e53b0822a221a76b900406eaff4b160da532) --- erpnext/regional/saudi_arabia/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/regional/saudi_arabia/utils.py b/erpnext/regional/saudi_arabia/utils.py index 80b7264adce..2859bbc3c96 100644 --- a/erpnext/regional/saudi_arabia/utils.py +++ b/erpnext/regional/saudi_arabia/utils.py @@ -133,7 +133,7 @@ def create_qr_code(doc, method=None): def get_vat_amount(doc): vat_settings = frappe.db.get_value('KSA VAT Setting', {'company': doc.company}) vat_accounts = [] - vat_amount = 0 + vat_amount = 0 if vat_settings: vat_settings_doc = frappe.get_doc('KSA VAT Setting', vat_settings) From c5de90320fc1ea8326e080822c2db0ccf90afee3 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Mon, 14 Mar 2022 17:17:01 +0530 Subject: [PATCH 3/4] fix: Itemised tax rate updation (cherry picked from commit be56efad262cc8233d7bc462aa08d7f02e35ddcb) --- erpnext/regional/united_arab_emirates/utils.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/erpnext/regional/united_arab_emirates/utils.py b/erpnext/regional/united_arab_emirates/utils.py index 891e75e0033..c18af93b2c8 100644 --- a/erpnext/regional/united_arab_emirates/utils.py +++ b/erpnext/regional/united_arab_emirates/utils.py @@ -28,9 +28,12 @@ def update_itemised_tax_data(doc): elif row.item_code and itemised_tax.get(row.item_code): tax_rate = sum([tax.get('tax_rate', 0) for d, tax in itemised_tax.get(row.item_code).items()]) - row.tax_rate = flt(tax_rate, row.precision("tax_rate")) - row.tax_amount = flt((row.net_amount * tax_rate) / 100, row.precision("net_amount")) - row.total_amount = flt((row.net_amount + row.tax_amount), row.precision("total_amount")) + meta = frappe.get_meta(row.doctype) + + if meta.has_field('tax_rate'): + row.tax_rate = flt(tax_rate, row.precision("tax_rate")) + row.tax_amount = flt((row.net_amount * tax_rate) / 100, row.precision("net_amount")) + row.total_amount = flt((row.net_amount + row.tax_amount), row.precision("total_amount")) def get_account_currency(account): """Helper function to get account currency.""" From ec92551f7c940282d7663cb139ea0da71d5eb076 Mon Sep 17 00:00:00 2001 From: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com> Date: Mon, 14 Mar 2022 18:35:49 +0530 Subject: [PATCH 4/4] Update erpnext/regional/saudi_arabia/utils.py Co-authored-by: Saqib Ansari (cherry picked from commit e33d4713cda199f4d74b0d2fdb540dd77b81a381) --- erpnext/regional/saudi_arabia/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/regional/saudi_arabia/utils.py b/erpnext/regional/saudi_arabia/utils.py index 2859bbc3c96..60953ca6d83 100644 --- a/erpnext/regional/saudi_arabia/utils.py +++ b/erpnext/regional/saudi_arabia/utils.py @@ -136,7 +136,7 @@ def get_vat_amount(doc): vat_amount = 0 if vat_settings: - vat_settings_doc = frappe.get_doc('KSA VAT Setting', vat_settings) + vat_settings_doc = frappe.get_cached_doc('KSA VAT Setting', vat_settings) for row in vat_settings_doc.get('ksa_vat_sales_accounts'): vat_accounts.append(row.account)