diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index a9ee7efdab9..e903ab1ca30 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -67,21 +67,12 @@ from erpnext.setup.utils import get_exchange_rate from erpnext.stock.doctype.item.item import get_uom_conv_factor from erpnext.stock.doctype.packed_item.packed_item import make_packing_list from erpnext.stock.get_item_details import ( -<<<<<<< HEAD - _get_item_tax_template, - get_conversion_factor, - get_item_details, - get_item_tax_map, - get_item_warehouse, -======= - ItemDetailsCtx, _get_item_tax_template, _get_item_tax_template_from_item_group, get_conversion_factor, get_item_details, get_item_tax_map, - get_item_warehouse_, ->>>>>>> 03c9d16ca6 (fix: fetch get_item_tax_template while update items) + get_item_warehouse, ) from erpnext.utilities.regional import temporary_flag from erpnext.utilities.transaction_base import TransactionBase @@ -3656,29 +3647,15 @@ def set_child_tax_template_and_map(item, child_item, parent_doc): "base_net_rate": item.get("base_net_rate"), } -<<<<<<< HEAD -<<<<<<< HEAD child_item.item_tax_template = _get_item_tax_template(args, item.taxes) + + if not child_item.get("item_tax_template"): + child_item.item_tax_template = _get_item_tax_template_from_item_group(args, item.item_group) + if child_item.get("item_tax_template"): child_item.item_tax_rate = get_item_tax_map( parent_doc.get("company"), child_item.item_tax_template, as_json=True ) -======= - child_item.item_tax_template = get_item_tax_template(ctx, item.taxes) -======= - item_tax_template = _get_item_tax_template(ctx, item.taxes) - - if not item_tax_template: - item_tax_template = _get_item_tax_template_from_item_group(ctx, item.item_group) - - child_item.item_tax_template = item_tax_template ->>>>>>> 97e7916b66 (fix: resolve item tax template from item group in update items) - child_item.item_tax_rate = get_item_tax_map( - doc=parent_doc, - tax_template=child_item.item_tax_template, - as_json=True, - ) ->>>>>>> 03c9d16ca6 (fix: fetch get_item_tax_template while update items) def add_taxes_from_tax_template(child_item, parent_doc, db_insert=True): diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index ac354e61825..57df373bd06 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -7,6 +7,7 @@ import json import frappe from frappe import _, throw from frappe.model import child_table_fields, default_fields +from frappe.model.document import Document from frappe.model.meta import get_field_precision from frappe.model.utils import get_fetch_values from frappe.query_builder.functions import IfNull, Sum @@ -672,7 +673,9 @@ def get_item_tax_info(company, tax_category, item_codes, item_rates=None, item_t @frappe.whitelist() -def get_item_tax_template(args, item=None, out=None): +def get_item_tax_template( + args: str | dict, item: Document | None = None, out: dict | None = None +) -> str | None: if isinstance(args, str): args = json.loads(args) @@ -687,15 +690,7 @@ def get_item_tax_template(args, item=None, out=None): item_tax_template = _get_item_tax_template(args, item.taxes, out) if not item_tax_template: -<<<<<<< HEAD - item_group = item.item_group - while item_group and not item_tax_template: - item_group_doc = frappe.get_cached_doc("Item Group", item_group) - item_tax_template = _get_item_tax_template(args, item_group_doc.taxes, out) - item_group = item_group_doc.parent_item_group -======= - item_tax_template = _get_item_tax_template_from_item_group(ctx, item.item_group, out) ->>>>>>> ad22256b2d (fix: resolve item tax template from item group in update items) + item_tax_template = _get_item_tax_template_from_item_group(args, item.item_group, out) if out and args.get("child_doctype") and item_tax_template: out.update(get_fetch_values(args.get("child_doctype"), "item_tax_template", item_tax_template)) @@ -703,40 +698,26 @@ def get_item_tax_template(args, item=None, out=None): return item_tax_template -<<<<<<< HEAD -def _get_item_tax_template(args, taxes, out=None, for_validate=False): -======= -def _get_item_tax_template_from_item_group(ctx, item_group, out=None): +def _get_item_tax_template_from_item_group( + args: dict, item_group: str, out: dict | None = None +) -> str | None: from frappe.utils.nestedset import get_ancestors_of ancestors = get_ancestors_of("Item Group", item_group) for group in [item_group, *ancestors]: group_doc = frappe.get_cached_doc("Item Group", group) - item_tax_template = _get_item_tax_template(ctx, group_doc.taxes, out) + item_tax_template = _get_item_tax_template(args, group_doc.taxes, out) if item_tax_template: return item_tax_template return None -@erpnext.normalize_ctx_input(ItemDetailsCtx) def _get_item_tax_template( - ctx: ItemDetailsCtx, taxes, out: ItemDetails | None = None, for_validate=False -) -> None | str | list[str]: - """ - Accesses: - ctx = { - "company": str - "bill_date": str - "transaction_date": str - "tax_category": None - "item_tax_template": None - } - Passes: - ctx = { - "base_net_rate": float - } - """ ->>>>>>> ad22256b2d (fix: resolve item tax template from item group in update items) + args: dict, + taxes, + out: dict | None = None, + for_validate: bool = False, +) -> str | list[str] | None: if out is None: out = {} taxes_with_validity = []