From aca374e47895fe5853843c4975ca5d3d289a940e Mon Sep 17 00:00:00 2001 From: Saif Ur Rehman Date: Fri, 28 Dec 2018 04:53:25 +0500 Subject: [PATCH] feat: add_taxes_from_item_tax_template --- .../accounts_settings/accounts_settings.json | 57 +++++++++++++++++- .../accounts_settings/accounts_settings.py | 1 + erpnext/public/js/controllers/transaction.js | 58 ++++++++++++++----- 3 files changed, 101 insertions(+), 15 deletions(-) diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json index b7eb786354d..4597eae899d 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json @@ -1,5 +1,6 @@ { "allow_copy": 0, + "allow_events_in_timeline": 0, "allow_guest_to_view": 0, "allow_import": 0, "allow_rename": 0, @@ -15,6 +16,7 @@ "fields": [ { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -47,6 +49,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -78,6 +81,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -110,6 +114,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -140,6 +145,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -172,6 +178,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -203,6 +210,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -234,6 +242,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -266,6 +275,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -298,6 +308,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -329,6 +340,39 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "add_taxes_from_item_tax_template", + "fieldtype": "Check", + "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": "Automatically Add Taxes and Charges from Item Tax Template", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -360,6 +404,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -391,6 +436,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -421,6 +467,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -452,6 +499,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -483,6 +531,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -515,6 +564,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -548,6 +598,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -579,6 +630,7 @@ }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -622,7 +674,7 @@ "issingle": 1, "istable": 0, "max_attachments": 0, - "modified": "2018-05-14 15:58:27.638576", + "modified": "2018-12-28 04:30:38.835015", "modified_by": "Administrator", "module": "Accounts", "name": "Accounts Settings", @@ -692,5 +744,6 @@ "show_name_in_global_search": 0, "sort_order": "ASC", "track_changes": 1, - "track_seen": 0 + "track_seen": 0, + "track_views": 0 } \ No newline at end of file diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py index 54467495364..81841780d74 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py @@ -15,6 +15,7 @@ class AccountsSettings(Document): frappe.clear_cache() def validate(self): + frappe.db.set_default("add_taxes_from_item_tax_template", self.get("add_taxes_from_item_tax_template", "")) self.validate_stale_days() self.enable_payment_schedule_in_print() self.enable_fields_for_cost_center_settings() diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index caf1042a4e5..9df835906aa 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -450,6 +450,12 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ callback: function(r) { if(!r.exc) { frappe.run_serially([ + () => { + var d = locals[cdt][cdn]; + if(d.item_tax_template && d.item_tax_rate) { + me.add_taxes_from_item_tax_template(d.item_tax_rate); + } + }, () => me.frm.script_manager.trigger("price_list_rate", cdt, cdn), () => me.toggle_conversion_factor(item), () => { @@ -473,6 +479,26 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ } }, + add_taxes_from_item_tax_template: function(item_tax_map) { + let me = this; + + if(cint(frappe.defaults.get_default("add_taxes_from_item_tax_template"))) { + if(typeof (item_tax_map) == "string") { + item_tax_map = JSON.parse(item_tax_map); + } + + $.each(item_tax_map, function(tax, rate) { + let found = (me.frm.doc.taxes || []).find(d => d.account_head === tax); + if(!found) { + let child = frappe.model.add_child(me.frm.doc, "taxes"); + child.charge_type = "On Net Total"; + child.account_head = tax; + child.rate = 0; + } + }); + } + }, + serial_no: function(doc, cdt, cdn) { var me = this; var item = frappe.get_doc(cdt, cdn); @@ -1311,7 +1337,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ item.item_tax_rate = r.message[item.item_code].item_tax_rate; } else { item.item_tax_template = ""; - item.item_tax_rate = ""; + item.item_tax_rate = "{}"; } }); me.calculate_taxes_and_totals(); @@ -1325,19 +1351,25 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ var me = this; var item = frappe.get_doc(cdt, cdn); - return this.frm.call({ - method: "erpnext.stock.get_item_details.get_item_tax_map", - args: { - "item_tax_template": item.item_tax_template, - "as_json": true - }, - callback: function(r) { - if(!r.exc) { - item.item_tax_rate = r.message; - me.calculate_taxes_and_totals(); + if(item.item_tax_template) { + return this.frm.call({ + method: "erpnext.stock.get_item_details.get_item_tax_map", + args: { + item_tax_template: item.item_tax_template, + as_json: true + }, + callback: function(r) { + if(!r.exc) { + item.item_tax_rate = r.message; + me.add_taxes_from_item_tax_template(item.item_tax_rate); + me.calculate_taxes_and_totals(); + } } - } - }); + }); + } else { + item.item_tax_rate = "{}"; + me.calculate_taxes_and_totals(); + } }, is_recurring: function() {