Merge pull request #26176 from deepeshgarg007/item_tax_fetch_fix

fix: User is not able to change item tax template
This commit is contained in:
Deepesh Garg 2021-06-24 19:55:49 +05:30 committed by GitHub
commit b4b76b75cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 13 deletions

View File

@ -270,11 +270,14 @@ erpnext.taxes_and_totals = erpnext.payments.extend({
let me = this;
let item_codes = [];
let item_rates = {};
let item_tax_templates = {};
$.each(this.frm.doc.items || [], function(i, item) {
if (item.item_code) {
// Use combination of name and item code in case same item is added multiple times
item_codes.push([item.item_code, item.name]);
item_rates[item.name] = item.net_rate;
item_tax_templates[item.name] = item.item_tax_template;
}
});
@ -285,18 +288,16 @@ erpnext.taxes_and_totals = erpnext.payments.extend({
company: me.frm.doc.company,
tax_category: cstr(me.frm.doc.tax_category),
item_codes: item_codes,
item_rates: item_rates
item_rates: item_rates,
item_tax_templates: item_tax_templates
},
callback: function(r) {
if (!r.exc) {
$.each(me.frm.doc.items || [], function(i, item) {
if (item.name && r.message.hasOwnProperty(item.name)) {
if (item.name && r.message.hasOwnProperty(item.name) && r.message[item.name].item_tax_template) {
item.item_tax_template = r.message[item.name].item_tax_template;
item.item_tax_rate = r.message[item.name].item_tax_rate;
me.add_taxes_from_item_tax_template(item.item_tax_rate);
} else {
item.item_tax_template = "";
item.item_tax_rate = "{}";
}
});
}

View File

@ -436,20 +436,28 @@ def get_barcode_data(items_list):
return itemwise_barcode
@frappe.whitelist()
def get_item_tax_info(company, tax_category, item_codes, item_rates=None):
def get_item_tax_info(company, tax_category, item_codes, item_rates=None, item_tax_templates=None):
out = {}
if isinstance(item_codes, string_types):
if isinstance(item_codes, (str,)):
item_codes = json.loads(item_codes)
if isinstance(item_rates, string_types):
if isinstance(item_rates, (str,)):
item_rates = json.loads(item_rates)
if isinstance(item_tax_templates, (str,)):
item_tax_templates = json.loads(item_tax_templates)
for item_code in item_codes:
if not item_code or item_code[1] in out:
if not item_code or item_code[1] in out or not item_tax_templates.get(item_code[1]):
continue
out[item_code[1]] = {}
item = frappe.get_cached_doc("Item", item_code[0])
args = {"company": company, "tax_category": tax_category, "net_rate": item_rates[item_code[1]]}
if item_tax_templates:
args.update({"item_tax_template": item_tax_templates.get(item_code[1])})
get_item_tax_template(args, item, out[item_code[1]])
out[item_code[1]]["item_tax_rate"] = get_item_tax_map(company, out[item_code[1]].get("item_tax_template"), as_json=True)
@ -463,9 +471,7 @@ def get_item_tax_template(args, item, out):
}
"""
item_tax_template = args.get("item_tax_template")
if not item_tax_template:
item_tax_template = _get_item_tax_template(args, item.taxes, out)
item_tax_template = _get_item_tax_template(args, item.taxes, out)
if not item_tax_template:
item_group = item.item_group
@ -508,7 +514,8 @@ def _get_item_tax_template(args, taxes, out=None, for_validate=False):
return None
# do not change if already a valid template
if args.get('item_tax_template') in taxes:
if args.get('item_tax_template') in {t.item_tax_template for t in taxes}:
out["item_tax_template"] = args.get('item_tax_template')
return args.get('item_tax_template')
for tax in taxes: