diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index 0eb29a28b4..eeff7aa8d8 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -687,14 +687,6 @@ $.extend(erpnext.item, { } }); -frappe.ui.form.on("Item", { - setup: function(frm) { - // #13478 : Default Accounts in Item from Item Group - cur_frm.add_fetch('item_group', 'default_expense_account', 'expense_account'); - cur_frm.add_fetch('item_group', 'default_income_account', 'income_account'); - }, -}); - frappe.ui.form.on("UOM Conversion Detail", { uom: function(frm, cdt, cdn) { var row = locals[cdt][cdn]; diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index f9d0e7121c..ba5e8273a7 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -121,15 +121,13 @@ class Item(WebsiteGenerator): self.validate_fixed_asset() self.validate_retain_sample() self.validate_uom_conversion_factor() + self.update_defaults_from_item_group() if not self.get("__islocal"): self.old_item_group = frappe.db.get_value(self.doctype, self.name, "item_group") self.old_website_item_groups = frappe.db.sql_list("""select item_group from `tabWebsite Item Group` where parentfield='website_item_groups' and parenttype='Item' and parent=%s""", self.name) - elif not self.item_defaults: - self.append("item_defaults", {"company": frappe.defaults.get_defaults().company}) - def on_update(self): invalidate_cache_for_item(self) @@ -662,6 +660,27 @@ class Item(WebsiteGenerator): template_item.flags.ignore_permissions = True template_item.save() + def update_defaults_from_item_group(self): + """Get defaults from Item Group""" + if self.item_group and not self.item_defaults: + item_defaults = frappe.db.get_values("Item Default", {"parent": self.item_group}, + ['company', 'default_warehouse','default_price_list','buying_cost_center','default_supplier', + 'expense_account','selling_cost_center','income_account'], as_dict = 1) + if item_defaults: + for item in item_defaults: + self.append('item_defaults', { + 'company': item.company, + 'default_warehouse': item.default_warehouse, + 'default_price_list': item.default_price_list, + 'buying_cost_center': item.buying_cost_center, + 'default_supplier': item.default_supplier, + 'expense_account': item.expense_account, + 'selling_cost_center': item.selling_cost_center, + 'income_account': item.income_account + }) + else: + self.append("item_defaults", {"company": frappe.defaults.get_defaults().company}) + def update_variants(self): if self.flags.dont_update_variants or \ frappe.db.get_single_value('Item Variant Settings', 'do_not_update_variants'): @@ -946,4 +965,4 @@ def get_uom_conv_factor(uom, stock_uom): if uom_stock.from_uom == uom_row.from_uom: value = flt(uom_stock.value) * 1/flt(uom_row.value) - return value + return value \ No newline at end of file