2018-07-17 12:31:44 +00:00
|
|
|
# Copyright (c) 2018, Frappe and Contributors
|
|
|
|
# License: GNU General Public License v3. See license.txt
|
|
|
|
|
2021-09-02 11:14:59 +00:00
|
|
|
|
2018-07-17 12:31:44 +00:00
|
|
|
import frappe
|
|
|
|
|
2021-09-02 11:14:59 +00:00
|
|
|
|
2018-07-17 12:31:44 +00:00
|
|
|
def execute():
|
|
|
|
'''
|
|
|
|
|
|
|
|
Fields to move from item group to item defaults child table
|
|
|
|
[ default_cost_center, default_expense_account, default_income_account ]
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
frappe.reload_doc('stock', 'doctype', 'item_default')
|
|
|
|
frappe.reload_doc('setup', 'doctype', 'item_group')
|
|
|
|
|
|
|
|
companies = frappe.get_all("Company")
|
|
|
|
item_groups = frappe.db.sql("""select name, default_income_account, default_expense_account,\
|
|
|
|
default_cost_center from `tabItem Group`""", as_dict=True)
|
|
|
|
|
|
|
|
if len(companies) == 1:
|
|
|
|
for item_group in item_groups:
|
|
|
|
doc = frappe.get_doc("Item Group", item_group.get("name"))
|
|
|
|
item_group_defaults = []
|
|
|
|
item_group_defaults.append({
|
|
|
|
"company": companies[0].name,
|
|
|
|
"income_account": item_group.get("default_income_account"),
|
|
|
|
"expense_account": item_group.get("default_expense_account"),
|
|
|
|
"buying_cost_center": item_group.get("default_cost_center"),
|
|
|
|
"selling_cost_center": item_group.get("default_cost_center")
|
|
|
|
})
|
|
|
|
doc.extend("item_group_defaults", item_group_defaults)
|
|
|
|
for child_doc in doc.item_group_defaults:
|
|
|
|
child_doc.db_insert()
|
|
|
|
else:
|
|
|
|
item_group_dict = {
|
|
|
|
"default_expense_account": ["expense_account"],
|
|
|
|
"default_income_account": ["income_account"],
|
|
|
|
"default_cost_center": ["buying_cost_center", "selling_cost_center"]
|
|
|
|
}
|
|
|
|
for item_group in item_groups:
|
|
|
|
item_group_defaults = []
|
|
|
|
def insert_into_item_defaults(doc_field_name, doc_field_value, company):
|
|
|
|
for d in item_group_defaults:
|
|
|
|
if d.get("company") == company:
|
|
|
|
d[doc_field_name[0]] = doc_field_value
|
|
|
|
if len(doc_field_name) > 1:
|
|
|
|
d[doc_field_name[1]] = doc_field_value
|
|
|
|
return
|
|
|
|
|
|
|
|
item_group_defaults.append({
|
|
|
|
"company": company,
|
|
|
|
doc_field_name[0]: doc_field_value
|
|
|
|
})
|
|
|
|
|
|
|
|
if(len(doc_field_name) > 1):
|
|
|
|
item_group_defaults[len(item_group_defaults)-1][doc_field_name[1]] = doc_field_value
|
|
|
|
|
|
|
|
for d in [
|
|
|
|
["default_expense_account", "Account"], ["default_income_account", "Account"],
|
|
|
|
["default_cost_center", "Cost Center"]
|
|
|
|
]:
|
|
|
|
if item_group.get(d[0]):
|
|
|
|
company = frappe.get_value(d[1], item_group.get(d[0]), "company", cache=True)
|
|
|
|
doc_field_name = item_group_dict.get(d[0])
|
|
|
|
|
|
|
|
insert_into_item_defaults(doc_field_name, item_group.get(d[0]), company)
|
|
|
|
|
|
|
|
doc = frappe.get_doc("Item Group", item_group.get("name"))
|
|
|
|
doc.extend("item_group_defaults", item_group_defaults)
|
|
|
|
for child_doc in doc.item_group_defaults:
|
|
|
|
child_doc.db_insert()
|