From 41c0c9f46bc8765171d3268d6b8b2afa8d765e54 Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Thu, 18 Jun 2020 11:18:44 +0500 Subject: [PATCH 01/10] fix: Item Tax Template --- erpnext/controllers/queries.py | 3 ++- erpnext/public/js/controllers/transaction.js | 3 ++- erpnext/stock/doctype/item_tax/item_tax.json | 15 +++++++++++---- erpnext/stock/get_item_details.py | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py index f6a8d27d440..ee8364a40e3 100644 --- a/erpnext/controllers/queries.py +++ b/erpnext/controllers/queries.py @@ -570,7 +570,8 @@ def get_tax_template(doctype, txt, searchfield, start, page_len, filters): args = { 'item_code': filters.get('item_code'), 'posting_date': filters.get('valid_from'), - 'tax_category': filters.get('tax_category') + 'tax_category': filters.get('tax_category'), + 'company': filters.get('company') } taxes = _get_item_tax_template(args, taxes, for_validate=True) diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 905f6fb80f5..3c56a636bd1 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -1835,7 +1835,8 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ if (doc.tax_category) filters['tax_category'] = doc.tax_category; - + if (doc.company) + filters['company'] = doc.company; return { query: "erpnext.controllers.queries.get_tax_template", filters: filters diff --git a/erpnext/stock/doctype/item_tax/item_tax.json b/erpnext/stock/doctype/item_tax/item_tax.json index a93e4636add..cf3c0e9c347 100644 --- a/erpnext/stock/doctype/item_tax/item_tax.json +++ b/erpnext/stock/doctype/item_tax/item_tax.json @@ -1,5 +1,4 @@ { - "actions": [], "creation": "2013-02-22 01:28:01", "doctype": "DocType", "editable_grid": 1, @@ -7,7 +6,8 @@ "field_order": [ "item_tax_template", "tax_category", - "valid_from" + "valid_from", + "company" ], "fields": [ { @@ -34,12 +34,19 @@ "fieldtype": "Date", "in_list_view": 1, "label": "Valid From" + }, + { + "fetch_from": "item_tax_template.company", + "fieldname": "company", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Company", + "options": "Company" } ], "idx": 1, "istable": 1, - "links": [], - "modified": "2019-12-28 21:54:40.807849", + "modified": "2020-06-18 02:30:44.610171", "modified_by": "Administrator", "module": "Stock", "name": "Item Tax", diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 0ed3b276e39..08ee6300ffe 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -442,7 +442,7 @@ def _get_item_tax_template(args, taxes, out={}, for_validate=False): taxes_with_no_validity = [] for tax in taxes: - if tax.valid_from: + if tax.valid_from and tax.company == args['company']: # In purchase Invoice first preference will be given to supplier invoice date # if supplier date is not present then posting date validation_date = args.get('transaction_date') or args.get('bill_date') or args.get('posting_date') From e39649bc9e30c39a99b2642a19dc571dcfbe70cd Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Thu, 18 Jun 2020 11:42:53 +0500 Subject: [PATCH 02/10] fix: Item Tax Template with no validity --- erpnext/stock/get_item_details.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 08ee6300ffe..67333f4aa9b 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -450,7 +450,8 @@ def _get_item_tax_template(args, taxes, out={}, for_validate=False): if getdate(tax.valid_from) <= getdate(validation_date): taxes_with_validity.append(tax) else: - taxes_with_no_validity.append(tax) + if tax.company == args['company']: + taxes_with_no_validity.append(tax) if taxes_with_validity: taxes = sorted(taxes_with_validity, key = lambda i: i.valid_from, reverse=True) From 728bf0e6dd282ddff629edcd37879b5608beda08 Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Thu, 18 Jun 2020 12:21:42 +0500 Subject: [PATCH 03/10] fix: Item Tax Template --- erpnext/controllers/taxes_and_totals.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index 4e568e2795a..a9eb9963bfe 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -53,7 +53,8 @@ class calculate_taxes_and_totals(object): 'tax_category': self.doc.get('tax_category'), 'posting_date': self.doc.get('posting_date'), 'bill_date': self.doc.get('bill_date'), - 'transaction_date': self.doc.get('transaction_date') + 'transaction_date': self.doc.get('transaction_date'), + 'company': self.doc.get('company') } item_group = item_doc.item_group From 015910b4c458a5ad89be796ead759e76eaed2794 Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Thu, 18 Jun 2020 23:15:22 +0500 Subject: [PATCH 04/10] Company Field Added in Item Tax Template --- .../item_tax_template/item_tax_template.js | 12 + .../item_tax_template/item_tax_template.json | 225 ++++++------------ 2 files changed, 83 insertions(+), 154 deletions(-) diff --git a/erpnext/accounts/doctype/item_tax_template/item_tax_template.js b/erpnext/accounts/doctype/item_tax_template/item_tax_template.js index 42abdb809ba..e30ef61a232 100644 --- a/erpnext/accounts/doctype/item_tax_template/item_tax_template.js +++ b/erpnext/accounts/doctype/item_tax_template/item_tax_template.js @@ -6,6 +6,18 @@ frappe.ui.form.on('Item Tax Template', { frm.set_query("tax_type", "taxes", function(doc) { return { filters: [ + ['Account', 'company', '=', frm.doc.company], + ['Account', 'is_group', '=', 0], + ['Account', 'account_type', 'in', ['Tax', 'Chargeable', 'Income Account', 'Expense Account', 'Expenses Included In Valuation']] + ] + } + }); + }, + company: function (frm) { + frm.set_query("tax_type", "taxes", function(doc) { + return { + filters: [ + ['Account', 'company', '=', frm.doc.company], ['Account', 'is_group', '=', 0], ['Account', 'account_type', 'in', ['Tax', 'Chargeable', 'Income Account', 'Expense Account', 'Expenses Included In Valuation']] ] diff --git a/erpnext/accounts/doctype/item_tax_template/item_tax_template.json b/erpnext/accounts/doctype/item_tax_template/item_tax_template.json index f713cfc0bac..856c371ecfa 100644 --- a/erpnext/accounts/doctype/item_tax_template/item_tax_template.json +++ b/erpnext/accounts/doctype/item_tax_template/item_tax_template.json @@ -1,168 +1,85 @@ { - "allow_copy": 0, - "allow_events_in_timeline": 0, - "allow_guest_to_view": 0, - "allow_import": 1, - "allow_rename": 1, - "autoname": "field:title", - "beta": 0, - "creation": "2018-11-22 22:45:00.370913", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "document_type": "Setup", - "editable_grid": 1, - "engine": "InnoDB", + "allow_import": 1, + "allow_rename": 1, + "autoname": "field:title", + "creation": "2018-11-22 22:45:00.370913", + "doctype": "DocType", + "document_type": "Setup", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "title", + "company", + "taxes" + ], "fields": [ { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "title", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 1, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Title", - "length": 0, - "no_copy": 1, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "fieldname": "title", + "fieldtype": "Data", + "in_filter": 1, + "in_list_view": 1, + "label": "Title", + "no_copy": 1, + "reqd": 1, "unique": 1 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "taxes", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Tax Rates", - "length": 0, - "no_copy": 0, - "options": "Item Tax Template Detail", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "fieldname": "taxes", + "fieldtype": "Table", + "label": "Tax Rates", + "options": "Item Tax Template Detail", + "reqd": 1 + }, + { + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company", + "reqd": 1 } - ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 0, - "image_view": 0, - "in_create": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "max_attachments": 0, - "modified": "2018-12-21 23:51:16.328340", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Item Tax Template", - "name_case": "", - "owner": "Administrator", + ], + "modified": "2020-06-18 20:27:42.615842", + "modified_by": "ahmad@havenir.com", + "module": "Accounts", + "name": "Item Tax Template", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, "write": 1 - }, + }, { - "amend": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Accounts Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts Manager", + "share": 1, "write": 1 - }, + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 1, - "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Accounts User", - "set_user_permissions": 0, - "share": 1, - "submit": 0, - "write": 0 + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts User", + "share": 1 } - ], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "search_fields": "", - "show_name_in_global_search": 1, - "sort_field": "modified", - "sort_order": "DESC", - "track_changes": 1, - "track_seen": 0, - "track_views": 0 + ], + "show_name_in_global_search": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 } \ No newline at end of file From ad3d44d62272c87d275ae26adc4b5338ace698c8 Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Thu, 18 Jun 2020 23:16:16 +0500 Subject: [PATCH 05/10] fix: Item Tax Template check on company field --- erpnext/stock/doctype/item_tax/item_tax.json | 5 +++-- erpnext/stock/get_item_details.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/erpnext/stock/doctype/item_tax/item_tax.json b/erpnext/stock/doctype/item_tax/item_tax.json index cf3c0e9c347..8ff6f69fdb0 100644 --- a/erpnext/stock/doctype/item_tax/item_tax.json +++ b/erpnext/stock/doctype/item_tax/item_tax.json @@ -41,12 +41,13 @@ "fieldtype": "Link", "in_list_view": 1, "label": "Company", - "options": "Company" + "options": "Company", + "read_only": 1 } ], "idx": 1, "istable": 1, - "modified": "2020-06-18 02:30:44.610171", + "modified": "2020-06-18 22:53:44.546967", "modified_by": "Administrator", "module": "Stock", "name": "Item Tax", diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 67333f4aa9b..143a8ebef85 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -413,7 +413,7 @@ def get_item_tax_info(company, tax_category, item_codes): continue out[item_code] = {} item = frappe.get_cached_doc("Item", item_code) - get_item_tax_template({"tax_category": tax_category}, item, out[item_code]) + get_item_tax_template({"company": company, "tax_category": tax_category}, item, out[item_code]) out[item_code]["item_tax_rate"] = get_item_tax_map(company, out[item_code].get("item_tax_template"), as_json=True) return out From 261ecba3d64afd0b746c72933255c2c5427fef4b Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Thu, 25 Jun 2020 01:56:53 +0500 Subject: [PATCH 06/10] Company field removed from Item Taxes Table --- erpnext/stock/doctype/item_tax/item_tax.json | 14 ++------------ erpnext/stock/get_item_details.py | 5 +++-- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/erpnext/stock/doctype/item_tax/item_tax.json b/erpnext/stock/doctype/item_tax/item_tax.json index 8ff6f69fdb0..ae36efc7e3f 100644 --- a/erpnext/stock/doctype/item_tax/item_tax.json +++ b/erpnext/stock/doctype/item_tax/item_tax.json @@ -6,8 +6,7 @@ "field_order": [ "item_tax_template", "tax_category", - "valid_from", - "company" + "valid_from" ], "fields": [ { @@ -34,20 +33,11 @@ "fieldtype": "Date", "in_list_view": 1, "label": "Valid From" - }, - { - "fetch_from": "item_tax_template.company", - "fieldname": "company", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Company", - "options": "Company", - "read_only": 1 } ], "idx": 1, "istable": 1, - "modified": "2020-06-18 22:53:44.546967", + "modified": "2020-06-25 01:40:28.859752", "modified_by": "Administrator", "module": "Stock", "name": "Item Tax", diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 143a8ebef85..e6a545f6ecf 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -442,7 +442,8 @@ def _get_item_tax_template(args, taxes, out={}, for_validate=False): taxes_with_no_validity = [] for tax in taxes: - if tax.valid_from and tax.company == args['company']: + tax_company = frappe.get_value("Item Tax Template", tax.item_tax_template, 'company') + if tax.valid_from and tax_company == args['company']: # In purchase Invoice first preference will be given to supplier invoice date # if supplier date is not present then posting date validation_date = args.get('transaction_date') or args.get('bill_date') or args.get('posting_date') @@ -450,7 +451,7 @@ def _get_item_tax_template(args, taxes, out={}, for_validate=False): if getdate(tax.valid_from) <= getdate(validation_date): taxes_with_validity.append(tax) else: - if tax.company == args['company']: + if tax_company == args['company']: taxes_with_no_validity.append(tax) if taxes_with_validity: From f933cf80dffb4f650ea453ea697a36d7d98eb343 Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Thu, 25 Jun 2020 02:12:35 +0500 Subject: [PATCH 07/10] Patch for Updating item Tax Template Company --- .../patches/v12_0/update_item_tax_template_company.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 erpnext/patches/v12_0/update_item_tax_template_company.py diff --git a/erpnext/patches/v12_0/update_item_tax_template_company.py b/erpnext/patches/v12_0/update_item_tax_template_company.py new file mode 100644 index 00000000000..54ce78ed222 --- /dev/null +++ b/erpnext/patches/v12_0/update_item_tax_template_company.py @@ -0,0 +1,11 @@ +from __future__ import unicode_literals +import frappe + +def execute(): + item_tax_template_list = frappe.get_list('Item Tax Template') + for template in item_tax_template_list: + doc = frappe.get_doc('Item Tax Template', template.name) + for tax in doc.taxes: + doc.company = frappe.get_value('Account', tax.tax_type, 'company') + break + doc.save() \ No newline at end of file From b2725577b204d1d32da38f584a752150c0003a11 Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Thu, 25 Jun 2020 02:20:42 +0500 Subject: [PATCH 08/10] Patch file updated --- erpnext/patches.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index c7a7abf8196..7fe5c61c4fb 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -707,3 +707,5 @@ erpnext.patches.v13_0.move_doctype_reports_and_notification_from_hr_to_payroll # erpnext.patches.v13_0.move_payroll_setting_separately_from_hr_settings #22-06-2020 erpnext.patches.v13_0.check_is_income_tax_component #22-06-2020 erpnext.patches.v12_0.add_taxjar_integration_field +execute:frappe.reload_doc('account', 'doctype', 'item_tax_template') +erpnext.patches.v12_0.update_item_tax_template_company From 405b20884bf3a6f53628d1c398775a69627f6fcf Mon Sep 17 00:00:00 2001 From: mohammadahmad1990 Date: Fri, 3 Jul 2020 15:15:27 +0500 Subject: [PATCH 09/10] fix: patch --- erpnext/patches.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 7fe5c61c4fb..62dd775b9cd 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -707,5 +707,5 @@ erpnext.patches.v13_0.move_doctype_reports_and_notification_from_hr_to_payroll # erpnext.patches.v13_0.move_payroll_setting_separately_from_hr_settings #22-06-2020 erpnext.patches.v13_0.check_is_income_tax_component #22-06-2020 erpnext.patches.v12_0.add_taxjar_integration_field -execute:frappe.reload_doc('account', 'doctype', 'item_tax_template') +execute:frappe.reload_doc('accounts', 'doctype', 'item_tax_template') erpnext.patches.v12_0.update_item_tax_template_company From be05c4e14ae3db924b1b904abe1eb6328f28d0a7 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Sun, 5 Jul 2020 18:16:16 +0530 Subject: [PATCH 10/10] fix: Codacy and minor fixes --- erpnext/accounts/doctype/item_tax_template/item_tax_template.js | 2 +- erpnext/patches.txt | 1 - erpnext/patches/v12_0/update_item_tax_template_company.py | 2 ++ 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/item_tax_template/item_tax_template.js b/erpnext/accounts/doctype/item_tax_template/item_tax_template.js index e30ef61a232..e921a0d949d 100644 --- a/erpnext/accounts/doctype/item_tax_template/item_tax_template.js +++ b/erpnext/accounts/doctype/item_tax_template/item_tax_template.js @@ -13,7 +13,7 @@ frappe.ui.form.on('Item Tax Template', { } }); }, - company: function (frm) { + company: function (frm) { frm.set_query("tax_type", "taxes", function(doc) { return { filters: [ diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 62dd775b9cd..cd4a221843c 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -707,5 +707,4 @@ erpnext.patches.v13_0.move_doctype_reports_and_notification_from_hr_to_payroll # erpnext.patches.v13_0.move_payroll_setting_separately_from_hr_settings #22-06-2020 erpnext.patches.v13_0.check_is_income_tax_component #22-06-2020 erpnext.patches.v12_0.add_taxjar_integration_field -execute:frappe.reload_doc('accounts', 'doctype', 'item_tax_template') erpnext.patches.v12_0.update_item_tax_template_company diff --git a/erpnext/patches/v12_0/update_item_tax_template_company.py b/erpnext/patches/v12_0/update_item_tax_template_company.py index 54ce78ed222..f7496999b33 100644 --- a/erpnext/patches/v12_0/update_item_tax_template_company.py +++ b/erpnext/patches/v12_0/update_item_tax_template_company.py @@ -2,6 +2,8 @@ from __future__ import unicode_literals import frappe def execute(): + frappe.reload_doc('accounts', 'doctype', 'item_tax_template') + item_tax_template_list = frappe.get_list('Item Tax Template') for template in item_tax_template_list: doc = frappe.get_doc('Item Tax Template', template.name)