diff --git a/erpnext/accounts/doctype/item_tax_template/test_records.json b/erpnext/accounts/doctype/item_tax_template/test_records.json index 8422eb44c14..db540e86aac 100644 --- a/erpnext/accounts/doctype/item_tax_template/test_records.json +++ b/erpnext/accounts/doctype/item_tax_template/test_records.json @@ -10,5 +10,65 @@ "tax_type": "_Test Account Excise Duty - _TC" } ] + }, + { + "doctype": "Item Tax Template", + "title": "_Test Account Excise Duty @ 12", + "taxes": [ + { + "doctype": "Item Tax Template Detail", + "parentfield": "taxes", + "tax_rate": 12, + "tax_type": "_Test Account Excise Duty - _TC" + } + ] + }, + { + "doctype": "Item Tax Template", + "title": "_Test Account Excise Duty @ 15", + "taxes": [ + { + "doctype": "Item Tax Template Detail", + "parentfield": "taxes", + "tax_rate": 15, + "tax_type": "_Test Account Excise Duty - _TC" + } + ] + }, + { + "doctype": "Item Tax Template", + "title": "_Test Account Excise Duty @ 20", + "taxes": [ + { + "doctype": "Item Tax Template Detail", + "parentfield": "taxes", + "tax_rate": 20, + "tax_type": "_Test Account Excise Duty - _TC" + } + ] + }, + { + "doctype": "Item Tax Template", + "title": "_Test Item Tax Template 1", + "taxes": [ + { + "doctype": "Item Tax Template Detail", + "parentfield": "taxes", + "tax_rate": 5, + "tax_type": "_Test Account Excise Duty - _TC" + }, + { + "doctype": "Item Tax Template Detail", + "parentfield": "taxes", + "tax_rate": 10, + "tax_type": "_Test Account Education Cess - _TC" + }, + { + "doctype": "Item Tax Template Detail", + "parentfield": "taxes", + "tax_rate": 15, + "tax_type": "_Test Account S&H Education Cess - _TC" + } + ] } ] diff --git a/erpnext/setup/doctype/item_group/test_records.json b/erpnext/setup/doctype/item_group/test_records.json index 436535eef01..71159643209 100644 --- a/erpnext/setup/doctype/item_group/test_records.json +++ b/erpnext/setup/doctype/item_group/test_records.json @@ -69,5 +69,39 @@ "is_group": 1, "item_group_name": "_Test Item Group D", "parent_item_group": "All Item Groups" + }, + { + "doctype": "Item Group", + "is_group": 1, + "item_group_name": "_Test Item Group Tax Parent", + "parent_item_group": "All Item Groups", + "taxes": [ + { + "doctype": "Item Tax", + "parentfield": "taxes", + "item_tax_template": "_Test Account Excise Duty @ 10", + "tax_category": "" + }, + { + "doctype": "Item Tax", + "parentfield": "taxes", + "item_tax_template": "_Test Account Excise Duty @ 12", + "tax_category": "_Test Tax Category 1" + } + ] + }, + { + "doctype": "Item Group", + "is_group": 0, + "item_group_name": "_Test Item Group Tax Child Override", + "parent_item_group": "_Test Item Group Tax Parent", + "taxes": [ + { + "doctype": "Item Tax", + "parentfield": "taxes", + "item_tax_template": "_Test Account Excise Duty @ 15", + "tax_category": "" + } + ] } ] \ No newline at end of file diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py index 7d5966936d0..6c9c5c9563a 100644 --- a/erpnext/stock/doctype/item/test_item.py +++ b/erpnext/stock/doctype/item/test_item.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import unittest import frappe +import json from frappe.test_runner import make_test_objects from erpnext.controllers.item_variant import (create_variant, ItemVariantExistsError, @@ -76,7 +77,6 @@ class TestItem(unittest.TestCase): "amount": 0.0, "base_amount": 0.0, "batch_no": None, - "item_tax_rate": '{}', "uom": "_Test UOM", "conversion_factor": 1.0, } @@ -102,6 +102,68 @@ class TestItem(unittest.TestCase): for key, value in iteritems(to_check): self.assertEqual(value, details.get(key)) + def test_item_tax_template(self): + expected_item_tax_template = [ + {"item_code": "_Test Item With Item Tax Template", "tax_category": "", + "item_tax_template": "_Test Account Excise Duty @ 10"}, + {"item_code": "_Test Item With Item Tax Template", "tax_category": "_Test Tax Category 1", + "item_tax_template": "_Test Account Excise Duty @ 12"}, + {"item_code": "_Test Item With Item Tax Template", "tax_category": "_Test Tax Category 2", + "item_tax_template": None}, + + {"item_code": "_Test Item Inherit Group Item Tax Template 1", "tax_category": "", + "item_tax_template": "_Test Account Excise Duty @ 10"}, + {"item_code": "_Test Item Inherit Group Item Tax Template 1", "tax_category": "_Test Tax Category 1", + "item_tax_template": "_Test Account Excise Duty @ 12"}, + {"item_code": "_Test Item Inherit Group Item Tax Template 1", "tax_category": "_Test Tax Category 2", + "item_tax_template": None}, + + {"item_code": "_Test Item Inherit Group Item Tax Template 2", "tax_category": "", + "item_tax_template": "_Test Account Excise Duty @ 15"}, + {"item_code": "_Test Item Inherit Group Item Tax Template 2", "tax_category": "_Test Tax Category 1", + "item_tax_template": "_Test Account Excise Duty @ 12"}, + {"item_code": "_Test Item Inherit Group Item Tax Template 2", "tax_category": "_Test Tax Category 2", + "item_tax_template": None}, + + {"item_code": "_Test Item Override Group Item Tax Template", "tax_category": "", + "item_tax_template": "_Test Account Excise Duty @ 20"}, + {"item_code": "_Test Item Override Group Item Tax Template", "tax_category": "_Test Tax Category 1", + "item_tax_template": "_Test Item Tax Template 1"}, + {"item_code": "_Test Item Override Group Item Tax Template", "tax_category": "_Test Tax Category 2", + "item_tax_template": None}, + ] + + expected_item_tax_map = { + None: {}, + "_Test Account Excise Duty @ 10": {"_Test Account Excise Duty - _TC": 10}, + "_Test Account Excise Duty @ 12": {"_Test Account Excise Duty - _TC": 12}, + "_Test Account Excise Duty @ 15": {"_Test Account Excise Duty - _TC": 15}, + "_Test Account Excise Duty @ 20": {"_Test Account Excise Duty - _TC": 20}, + "_Test Item Tax Template 1": {"_Test Account Excise Duty - _TC": 5, "_Test Account Education Cess - _TC": 10, + "_Test Account S&H Education Cess - _TC": 15} + } + + for data in expected_item_tax_template: + details = get_item_details({ + "item_code": data['item_code'], + "tax_category": data['tax_category'], + "company": "_Test Company", + "price_list": "_Test Price List", + "currency": "_Test Currency", + "doctype": "Sales Order", + "conversion_rate": 1, + "price_list_currency": "_Test Currency", + "plc_conversion_rate": 1, + "order_type": "Sales", + "customer": "_Test Customer", + "conversion_factor": 1, + "price_list_uom_dependant": 1, + "ignore_pricing_rule": 1 + }) + + self.assertEqual(details.item_tax_template, data['item_tax_template']) + self.assertEqual(json.loads(details.item_tax_rate), expected_item_tax_map[details.item_tax_template]) + def test_item_attribute_change_after_variant(self): frappe.delete_doc_if_exists("Item", "_Test Variant Item-L", force=1) diff --git a/erpnext/stock/doctype/item/test_records.json b/erpnext/stock/doctype/item/test_records.json index 4cba5790ba7..b09a3c0866c 100644 --- a/erpnext/stock/doctype/item/test_records.json +++ b/erpnext/stock/doctype/item/test_records.json @@ -344,5 +344,121 @@ "stock_uom": "_Test UOM", "show_in_website": 1, "website_warehouse": "_Test Warehouse Group-C1 - _TC" + }, + { + "description": "_Test Item With Item Tax Template", + "doctype": "Item", + "has_batch_no": 0, + "has_serial_no": 0, + "inspection_required": 0, + "is_stock_item": 1, + "is_sub_contracted_item": 0, + "item_code": "_Test Item With Item Tax Template", + "item_group": "_Test Item Group", + "item_name": "_Test Item With Item Tax Template", + "stock_uom": "_Test UOM", + "gst_hsn_code": "999800", + "item_defaults": [{ + "company": "_Test Company", + "default_warehouse": "_Test Warehouse - _TC", + "expense_account": "_Test Account Cost for Goods Sold - _TC", + "buying_cost_center": "_Test Cost Center - _TC", + "selling_cost_center": "_Test Cost Center - _TC", + "income_account": "Sales - _TC" + }], + "taxes": [ + { + "doctype": "Item Tax", + "parentfield": "taxes", + "item_tax_template": "_Test Account Excise Duty @ 10", + "tax_category": "" + }, + { + "doctype": "Item Tax", + "parentfield": "taxes", + "item_tax_template": "_Test Account Excise Duty @ 12", + "tax_category": "_Test Tax Category 1" + } + ] + }, + { + "description": "_Test Item Inherit Group Item Tax Template 1", + "doctype": "Item", + "has_batch_no": 0, + "has_serial_no": 0, + "inspection_required": 0, + "is_stock_item": 1, + "is_sub_contracted_item": 0, + "item_code": "_Test Item Inherit Group Item Tax Template 1", + "item_group": "_Test Item Group Tax Parent", + "item_name": "_Test Item Inherit Group Item Tax Template 1", + "stock_uom": "_Test UOM", + "gst_hsn_code": "999800", + "item_defaults": [{ + "company": "_Test Company", + "default_warehouse": "_Test Warehouse - _TC", + "expense_account": "_Test Account Cost for Goods Sold - _TC", + "buying_cost_center": "_Test Cost Center - _TC", + "selling_cost_center": "_Test Cost Center - _TC", + "income_account": "Sales - _TC" + }] + }, + { + "description": "_Test Item Inherit Group Item Tax Template 2", + "doctype": "Item", + "has_batch_no": 0, + "has_serial_no": 0, + "inspection_required": 0, + "is_stock_item": 1, + "is_sub_contracted_item": 0, + "item_code": "_Test Item Inherit Group Item Tax Template 2", + "item_group": "_Test Item Group Tax Child Override", + "item_name": "_Test Item Inherit Group Item Tax Template 2", + "stock_uom": "_Test UOM", + "gst_hsn_code": "999800", + "item_defaults": [{ + "company": "_Test Company", + "default_warehouse": "_Test Warehouse - _TC", + "expense_account": "_Test Account Cost for Goods Sold - _TC", + "buying_cost_center": "_Test Cost Center - _TC", + "selling_cost_center": "_Test Cost Center - _TC", + "income_account": "Sales - _TC" + }] + }, + { + "description": "_Test Item Override Group Item Tax Template", + "doctype": "Item", + "has_batch_no": 0, + "has_serial_no": 0, + "inspection_required": 0, + "is_stock_item": 1, + "is_sub_contracted_item": 0, + "item_code": "_Test Item Override Group Item Tax Template", + "item_group": "_Test Item Group Tax Child Override", + "item_name": "_Test Item Override Group Item Tax Template", + "stock_uom": "_Test UOM", + "gst_hsn_code": "999800", + "item_defaults": [{ + "company": "_Test Company", + "default_warehouse": "_Test Warehouse - _TC", + "expense_account": "_Test Account Cost for Goods Sold - _TC", + "buying_cost_center": "_Test Cost Center - _TC", + "selling_cost_center": "_Test Cost Center - _TC", + "income_account": "Sales - _TC" + }], + "taxes": [ + { + "doctype": "Item Tax", + "parentfield": "taxes", + "item_tax_template": "_Test Account Excise Duty @ 20", + "tax_category": "" + }, + { + "doctype": "Item Tax", + "parentfield": "taxes", + "item_tax_template": "_Test Item Tax Template 1", + "tax_category": "_Test Tax Category 1" + } + ] } ]