fix: Item tax validity comparison fixes (#34784)
fix: Item tax validity comparsion fixes
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index 2eca5ca..f5432c1 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -36,8 +36,24 @@
self.make_route()
self.validate_item_group_defaults()
+ self.check_item_tax()
ECommerceSettings.validate_field_filters(self.filter_fields, enable_field_filters=True)
+ def check_item_tax(self):
+ """Check whether Tax Rate is not entered twice for same Tax Type"""
+ check_list = []
+ for d in self.get("taxes"):
+ if d.item_tax_template:
+ if (d.item_tax_template, d.tax_category) in check_list:
+ frappe.throw(
+ _("{0} entered twice {1} in Item Taxes").format(
+ frappe.bold(d.item_tax_template),
+ "for tax category {0}".format(frappe.bold(d.tax_category)) if d.tax_category else "",
+ )
+ )
+ else:
+ check_list.append((d.item_tax_template, d.tax_category))
+
def on_update(self):
NestedSet.on_update(self)
invalidate_cache_for(self)
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 3f0ac3e..3cc59be 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -351,10 +351,15 @@
check_list = []
for d in self.get("taxes"):
if d.item_tax_template:
- if d.item_tax_template in check_list:
- frappe.throw(_("{0} entered twice in Item Tax").format(d.item_tax_template))
+ if (d.item_tax_template, d.tax_category) in check_list:
+ frappe.throw(
+ _("{0} entered twice {1} in Item Taxes").format(
+ frappe.bold(d.item_tax_template),
+ "for tax category {0}".format(frappe.bold(d.tax_category)) if d.tax_category else "",
+ )
+ )
else:
- check_list.append(d.item_tax_template)
+ check_list.append((d.item_tax_template, d.tax_category))
def validate_barcode(self):
import barcodenumber
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 2df39c8..2cf3797 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -637,7 +637,9 @@
taxes_with_no_validity.append(tax)
if taxes_with_validity:
- taxes = sorted(taxes_with_validity, key=lambda i: i.valid_from, reverse=True)
+ taxes = sorted(
+ taxes_with_validity, key=lambda i: i.valid_from or tax.maximum_net_rate, reverse=True
+ )
else:
taxes = taxes_with_no_validity