Skip to content

Commit

Permalink
fix(regional): set frappe.flags.company temporarily, where required
Browse files Browse the repository at this point in the history
(cherry picked from commit 4205f56)
  • Loading branch information
sagarvora authored and mergify[bot] committed Jul 24, 2023
1 parent e867fe7 commit 73e9b38
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 18 deletions.
6 changes: 3 additions & 3 deletions erpnext/accounts/party.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
from erpnext import get_company_currency
from erpnext.accounts.utils import get_fiscal_year
from erpnext.exceptions import InvalidAccountCurrency, PartyDisabled, PartyFrozen
from erpnext.utilities.regional import temporary_flag

PURCHASE_TRANSACTION_TYPES = {"Purchase Order", "Purchase Receipt", "Purchase Invoice"}
SALES_TRANSACTION_TYPES = {
Expand Down Expand Up @@ -261,9 +262,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)
with temporary_flag("company", company):
get_regional_address_details(party_details, doctype, company)

return party_address, shipping_address

Expand Down
5 changes: 4 additions & 1 deletion erpnext/controllers/accounts_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
get_item_tax_map,
get_item_warehouse,
)
from erpnext.utilities.regional import temporary_flag
from erpnext.utilities.transaction_base import TransactionBase


Expand Down Expand Up @@ -758,7 +759,9 @@ def get_gl_dict(self, args, account_currency=None, item=None):
}
)

update_gl_dict_with_regional_fields(self, gl_dict)
with temporary_flag("company", self.company):
update_gl_dict_with_regional_fields(self, gl_dict)

accounting_dimensions = get_accounting_dimensions()
dimension_dict = frappe._dict()

Expand Down
22 changes: 8 additions & 14 deletions erpnext/controllers/taxes_and_totals.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
validate_taxes_and_charges,
)
from erpnext.stock.get_item_details import _get_item_tax_template
from erpnext.utilities.regional import temporary_flag


class calculate_taxes_and_totals(object):
Expand Down Expand Up @@ -942,7 +943,6 @@ def set_total_amount_to_default_mop(self, total_amount_to_pay):
def get_itemised_tax_breakup_html(doc):
if not doc.taxes:
return
frappe.flags.company = doc.company

# get headers
tax_accounts = []
Expand All @@ -952,15 +952,11 @@ def get_itemised_tax_breakup_html(doc):
if tax.description not in tax_accounts:
tax_accounts.append(tax.description)

headers = get_itemised_tax_breakup_header(doc.doctype + " Item", tax_accounts)

# get tax breakup data
itemised_tax, itemised_taxable_amount = get_itemised_tax_breakup_data(doc)

get_rounded_tax_amount(itemised_tax, doc.precision("tax_amount", "taxes"))

update_itemised_tax_data(doc)
frappe.flags.company = None
with temporary_flag("company", doc.company):
headers = get_itemised_tax_breakup_header(doc.doctype + " Item", tax_accounts)
itemised_tax, itemised_taxable_amount = get_itemised_tax_breakup_data(doc)
get_rounded_tax_amount(itemised_tax, doc.precision("tax_amount", "taxes"))
update_itemised_tax_data(doc)

return frappe.render_template(
"templates/includes/itemised_tax_breakup.html",
Expand All @@ -977,10 +973,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
with temporary_flag("company", company):
return get_regional_round_off_accounts(company, account_list)


@erpnext.allow_regional
Expand Down
13 changes: 13 additions & 0 deletions erpnext/utilities/regional.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from contextlib import contextmanager

import frappe


@contextmanager
def temporary_flag(flag_name, value):
flags = frappe.local.flags
flags[flag_name] = value
try:
yield
finally:
flags.pop(flag_name, None)

0 comments on commit 73e9b38

Please sign in to comment.