From a5163b0879ea4c9e158315403f22e07f93d65802 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Tue, 30 Nov 2021 20:34:53 +0530 Subject: [PATCH 1/2] fix: Taxes and Charges template not getting copied from Purchase Order/Receipt to Invoice (cherry picked from commit 6a75e8d283bb76214af832bb0a29c20eefae328c) --- erpnext/accounts/party.py | 10 ++++++---- erpnext/public/js/utils/party.js | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index 2844228533c..a1c34a87ba8 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -69,10 +69,12 @@ def _get_party_details(party=None, account=None, party_type="Customer", company= party_details["tax_category"] = get_address_tax_category(party.get("tax_category"), party_address, shipping_address if party_type != "Supplier" else party_address) - if not party_details.get("taxes_and_charges"): - party_details["taxes_and_charges"] = set_taxes(party.name, party_type, posting_date, company, - customer_group=party_details.customer_group, supplier_group=party_details.supplier_group, tax_category=party_details.tax_category, - billing_address=party_address, shipping_address=shipping_address) + tax_template = set_taxes(party.name, party_type, posting_date, company, + customer_group=party_details.customer_group, supplier_group=party_details.supplier_group, tax_category=party_details.tax_category, + billing_address=party_address, shipping_address=shipping_address) + + if tax_template: + party_details['taxes_and_charges'] = tax_template if cint(fetch_payment_terms_template): party_details["payment_terms_template"] = get_payment_terms_template(party.name, party_type, company) diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js index a492b32a9f6..c26a154046a 100644 --- a/erpnext/public/js/utils/party.js +++ b/erpnext/public/js/utils/party.js @@ -77,6 +77,7 @@ erpnext.utils.get_party_details = function(frm, method, args, callback) { if (args) { args.posting_date = frm.doc.posting_date || frm.doc.transaction_date; args.fetch_payment_terms_template = cint(!frm.doc.ignore_default_payment_terms_template); + args.taxes_and_charges = frm.doc.taxes_and_charges; } } if (!args || !args.party) return; From 6bb2051c117fd122f14cad6cc2343fd5a73964bf Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Thu, 2 Dec 2021 17:17:56 +0530 Subject: [PATCH 2/2] fix: India utils code cleanup (cherry picked from commit 56c626adbfbd04e7e9063f6500ec380f7bfb3da4) --- erpnext/public/js/utils/party.js | 1 - erpnext/regional/india/utils.py | 25 +++++++------------------ 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js index c26a154046a..a492b32a9f6 100644 --- a/erpnext/public/js/utils/party.js +++ b/erpnext/public/js/utils/party.js @@ -77,7 +77,6 @@ erpnext.utils.get_party_details = function(frm, method, args, callback) { if (args) { args.posting_date = frm.doc.posting_date || frm.doc.transaction_date; args.fetch_payment_terms_template = cint(!frm.doc.ignore_default_payment_terms_template); - args.taxes_and_charges = frm.doc.taxes_and_charges; } } if (!args || !args.party) return; diff --git a/erpnext/regional/india/utils.py b/erpnext/regional/india/utils.py index f8a31657314..4f8a0ac5d40 100644 --- a/erpnext/regional/india/utils.py +++ b/erpnext/regional/india/utils.py @@ -208,28 +208,18 @@ def get_regional_address_details(party_details, doctype, company): if doctype in ("Sales Invoice", "Delivery Note", "Sales Order"): master_doctype = "Sales Taxes and Charges Template" - get_tax_template_based_on_category(master_doctype, company, party_details) - - if party_details.get('taxes_and_charges'): - return party_details - - if not party_details.company_gstin: - return party_details + tax_template_by_category = get_tax_template_based_on_category(master_doctype, company, party_details) elif doctype in ("Purchase Invoice", "Purchase Order", "Purchase Receipt"): master_doctype = "Purchase Taxes and Charges Template" - get_tax_template_based_on_category(master_doctype, company, party_details) + tax_template_by_category = get_tax_template_based_on_category(master_doctype, company, party_details) - if party_details.get('taxes_and_charges'): - return party_details - - if not party_details.supplier_gstin: - return party_details + if tax_template_by_category: + party_details.get['taxes_and_charges'] = tax_template_by_category + return if not party_details.place_of_supply: return party_details - if not party_details.company_gstin: return party_details - if ((doctype in ("Sales Invoice", "Delivery Note", "Sales Order") and party_details.company_gstin and party_details.company_gstin[:2] != party_details.place_of_supply[:2]) or (doctype in ("Purchase Invoice", "Purchase Order", "Purchase Receipt") and party_details.supplier_gstin and party_details.supplier_gstin[:2] != party_details.place_of_supply[:2])): @@ -239,6 +229,7 @@ def get_regional_address_details(party_details, doctype, company): if not default_tax: return party_details + party_details["taxes_and_charges"] = default_tax party_details.taxes = get_taxes_and_charges(master_doctype, default_tax) @@ -270,9 +261,7 @@ def get_tax_template_based_on_category(master_doctype, company, party_details): default_tax = frappe.db.get_value(master_doctype, {'company': company, 'tax_category': party_details.get('tax_category')}, 'name') - if default_tax: - party_details["taxes_and_charges"] = default_tax - party_details.taxes = get_taxes_and_charges(master_doctype, default_tax) + return default_tax def get_tax_template(master_doctype, company, is_inter_state, state_code): tax_categories = frappe.get_all('Tax Category', fields = ['name', 'is_inter_state', 'gst_state'],