From 17ef3c964f194816c60d49fa8ec471b184869d3e Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Tue, 4 Apr 2023 17:49:50 +0530 Subject: [PATCH 1/3] fix: set `frappe.flags.company` to call regional code accurately --- erpnext/accounts/party.py | 2 ++ erpnext/controllers/taxes_and_totals.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index ac9368e69c7..77470428256 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -259,6 +259,8 @@ def set_address_details( ) if doctype in TRANSACTION_TYPES: + # required to set correct region + frappe.flags.company = company get_regional_address_details(party_details, doctype, company) return party_address, shipping_address diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index 1edd7bf85e1..4661c5ca7e8 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -976,6 +976,8 @@ def get_itemised_tax_breakup_html(doc): @frappe.whitelist() def get_round_off_applicable_accounts(company, account_list): + # required to set correct region + frappe.flags.company = company account_list = get_regional_round_off_accounts(company, account_list) return account_list From 2fa641f86de8ad0be5f39575726d3672bfd885d4 Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Tue, 4 Apr 2023 17:50:31 +0530 Subject: [PATCH 2/3] fix: simplify `erpnext.get_region` --- erpnext/__init__.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index e0f0c98e9c9..5ccb1b942f9 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -120,12 +120,14 @@ def get_region(company=None): You can also set global company flag in `frappe.flags.company` """ - if company or frappe.flags.company: - return frappe.get_cached_value("Company", company or frappe.flags.company, "country") - elif frappe.flags.country: - return frappe.flags.country - else: - return frappe.get_system_settings("country") + + if not company: + company = frappe.local.flags.company + + if company: + return frappe.get_cached_value("Company", company, "country") + + return frappe.flags.country or frappe.get_system_settings("country") def allow_regional(fn): From 776b56ccd13c45e9eda0a67e8c9f42e65acb3135 Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Tue, 4 Apr 2023 19:24:07 +0530 Subject: [PATCH 3/3] fix: use `functools.wraps` to preserve doc signature --- erpnext/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 5ccb1b942f9..c9c9c9c6df6 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -1,3 +1,4 @@ +import functools import inspect import frappe @@ -138,6 +139,7 @@ def allow_regional(fn): def myfunction(): pass""" + @functools.wraps(fn) def caller(*args, **kwargs): overrides = frappe.get_hooks("regional_overrides", {}).get(get_region()) function_path = f"{inspect.getmodule(fn).__name__}.{fn.__name__}"