From f783fada333bb94abc541ec59b89e7d65fc1f576 Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Tue, 4 Apr 2023 18:09:13 +0530 Subject: [PATCH] fix: use `doc_events` to set item taxes --- india_compliance/gst_india/overrides/item.py | 24 ++++++++++++++++++- .../gst_india/overrides/transaction.py | 15 ------------ india_compliance/hooks.py | 3 +-- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/india_compliance/gst_india/overrides/item.py b/india_compliance/gst_india/overrides/item.py index 5a3c82492b..54e67ddf84 100644 --- a/india_compliance/gst_india/overrides/item.py +++ b/india_compliance/gst_india/overrides/item.py @@ -2,7 +2,12 @@ from frappe import _ -def validate_hsn_code(doc, method=None): +def validate(doc, method=None): + validate_hsn_code(doc) + set_taxes_from_hsn_code(doc) + + +def validate_hsn_code(doc): # HSN Code is being validated only for sales items if not doc.is_sales_item: return @@ -31,3 +36,20 @@ def validate_hsn_code(doc, method=None): " HSN/SAC code." ).format(min_hsn_digits) ) + + +def set_taxes_from_hsn_code(doc): + if doc.taxes or not doc.gst_hsn_code: + return + + hsn_doc = frappe.get_doc("GST HSN Code", doc.gst_hsn_code) + + for tax in hsn_doc.taxes: + doc.append( + "taxes", + { + "item_tax_template": tax.item_tax_template, + "tax_category": tax.tax_category, + "valid_from": tax.valid_from, + }, + ) diff --git a/india_compliance/gst_india/overrides/transaction.py b/india_compliance/gst_india/overrides/transaction.py index 6538a4e8c9..82719e3526 100644 --- a/india_compliance/gst_india/overrides/transaction.py +++ b/india_compliance/gst_india/overrides/transaction.py @@ -646,21 +646,6 @@ def get_tax_template(master_doctype, company, is_inter_state, state_code): return default_tax -def set_item_tax_from_hsn_code(item): - if not item.taxes and item.gst_hsn_code: - hsn_doc = frappe.get_doc("GST HSN Code", item.gst_hsn_code) - - for tax in hsn_doc.taxes: - item.append( - "taxes", - { - "item_tax_template": tax.item_tax_template, - "tax_category": tax.tax_category, - "valid_from": tax.valid_from, - }, - ) - - def validate_reverse_charge_transaction(doc, method=None): base_gst_tax = 0 base_reverse_charge_booked = 0 diff --git a/india_compliance/hooks.py b/india_compliance/hooks.py index 9660270417..c6a0353ebb 100644 --- a/india_compliance/hooks.py +++ b/india_compliance/hooks.py @@ -77,7 +77,7 @@ "india_compliance.gst_india.overrides.transaction.validate_transaction" ), }, - "Item": {"validate": "india_compliance.gst_india.overrides.item.validate_hsn_code"}, + "Item": {"validate": "india_compliance.gst_india.overrides.item.validate"}, "Payment Entry": { "validate": ( "india_compliance.gst_india.overrides.payment_entry.update_place_of_supply" @@ -153,7 +153,6 @@ "erpnext.accounts.party.get_regional_address_details": ( "india_compliance.gst_india.overrides.transaction.update_party_details" ), - "erpnext.stock.doctype.item.item.set_item_tax_from_hsn_code": "india_compliance.gst_india.overrides.transaction.set_item_tax_from_hsn_code", "erpnext.assets.doctype.asset.asset.get_depreciation_amount": ( "india_compliance.income_tax_india.overrides.asset.get_depreciation_amount" ),