Get item defaults from item group (#15089)
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 0eb29a2..eeff7aa 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -687,14 +687,6 @@
}
});
-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 f9d0e71..ba5e827 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -121,15 +121,13 @@
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 @@
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 @@
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