mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-13 02:01:21 +00:00
stock_entry: set COGS for material issue only
This commit is contained in:
@@ -652,35 +652,36 @@ class StockEntry(StockController):
|
|||||||
|
|
||||||
ret = frappe._dict({
|
ret = frappe._dict({
|
||||||
'uom' : item.stock_uom,
|
'uom' : item.stock_uom,
|
||||||
'stock_uom' : item.stock_uom,
|
'stock_uom' : item.stock_uom,
|
||||||
'description' : item.description,
|
'description' : item.description,
|
||||||
'image' : item.image,
|
'image' : item.image,
|
||||||
'item_name' : item.item_name,
|
'item_name' : item.item_name,
|
||||||
'expense_account' : args.get("expense_account"),
|
'cost_center' : get_default_cost_center(args, item, item_group_defaults, self.company),
|
||||||
'cost_center' : get_default_cost_center(args, item, item_group_defaults),
|
'qty' : args.get("qty"),
|
||||||
'qty' : args.get("qty"),
|
|
||||||
'transfer_qty' : args.get('qty'),
|
'transfer_qty' : args.get('qty'),
|
||||||
'conversion_factor' : 1,
|
'conversion_factor' : 1,
|
||||||
'batch_no' : '',
|
'batch_no' : '',
|
||||||
'actual_qty' : 0,
|
'actual_qty' : 0,
|
||||||
'basic_rate' : 0,
|
'basic_rate' : 0,
|
||||||
'serial_no' : '',
|
'serial_no' : '',
|
||||||
'has_serial_no' : item.has_serial_no,
|
'has_serial_no' : item.has_serial_no,
|
||||||
'has_batch_no' : item.has_batch_no,
|
'has_batch_no' : item.has_batch_no,
|
||||||
'sample_quantity' : item.sample_quantity
|
'sample_quantity' : item.sample_quantity
|
||||||
})
|
})
|
||||||
for d in [["Account", "expense_account", "default_expense_account"],
|
|
||||||
["Cost Center", "cost_center", "cost_center"]]:
|
|
||||||
company = frappe.db.get_value(d[0], ret.get(d[1]), "company")
|
|
||||||
if not ret[d[1]] or (company and self.company != company):
|
|
||||||
ret[d[1]] = frappe.get_cached_value('Company', self.company, d[2]) if d[2] else None
|
|
||||||
|
|
||||||
# update uom
|
# update uom
|
||||||
if args.get("uom") and for_update:
|
if args.get("uom") and for_update:
|
||||||
ret.update(get_uom_details(args.get('item_code'), args.get('uom'), args.get('qty')))
|
ret.update(get_uom_details(args.get('item_code'), args.get('uom'), args.get('qty')))
|
||||||
|
|
||||||
if not ret["expense_account"]:
|
if self.purpose == 'Material Issue':
|
||||||
ret["expense_account"] = frappe.get_cached_value('Company', self.company, "stock_adjustment_account")
|
ret["expense_account"] = (item.get("expense_account") or
|
||||||
|
item_group_defaults.get("expense_account") or
|
||||||
|
frappe.get_cached_value('Company', self.company, "default_expense_account"))
|
||||||
|
|
||||||
|
for company_field, field in {'stock_adjustment_account': 'expense_account',
|
||||||
|
'cost_center': 'cost_center'}.items():
|
||||||
|
if not ret.get(field):
|
||||||
|
ret[field] = frappe.get_cached_value('Company', self.company, company_field)
|
||||||
|
|
||||||
args['posting_date'] = self.posting_date
|
args['posting_date'] = self.posting_date
|
||||||
args['posting_time'] = self.posting_time
|
args['posting_time'] = self.posting_time
|
||||||
@@ -1036,8 +1037,7 @@ class StockEntry(StockController):
|
|||||||
return item_dict
|
return item_dict
|
||||||
|
|
||||||
def add_to_stock_entry_detail(self, item_dict, bom_no=None):
|
def add_to_stock_entry_detail(self, item_dict, bom_no=None):
|
||||||
expense_account, cost_center = frappe.db.get_values("Company", self.company, \
|
cost_center = frappe.db.get_value("Company", self.company, 'cost_center')
|
||||||
["default_expense_account", "cost_center"])[0]
|
|
||||||
|
|
||||||
for d in item_dict:
|
for d in item_dict:
|
||||||
stock_uom = item_dict[d].get("stock_uom") or frappe.db.get_value("Item", d, "stock_uom")
|
stock_uom = item_dict[d].get("stock_uom") or frappe.db.get_value("Item", d, "stock_uom")
|
||||||
@@ -1051,7 +1051,7 @@ class StockEntry(StockController):
|
|||||||
se_child.uom = item_dict[d]["uom"] if item_dict[d].get("uom") else stock_uom
|
se_child.uom = item_dict[d]["uom"] if item_dict[d].get("uom") else stock_uom
|
||||||
se_child.stock_uom = stock_uom
|
se_child.stock_uom = stock_uom
|
||||||
se_child.qty = flt(item_dict[d]["qty"], se_child.precision("qty"))
|
se_child.qty = flt(item_dict[d]["qty"], se_child.precision("qty"))
|
||||||
se_child.expense_account = item_dict[d].get("expense_account") or expense_account
|
se_child.expense_account = item_dict[d].get("expense_account")
|
||||||
se_child.cost_center = item_dict[d].get("cost_center") or cost_center
|
se_child.cost_center = item_dict[d].get("cost_center") or cost_center
|
||||||
se_child.allow_alternative_item = item_dict[d].get("allow_alternative_item", 0)
|
se_child.allow_alternative_item = item_dict[d].get("allow_alternative_item", 0)
|
||||||
se_child.subcontracted_item = item_dict[d].get("main_item_code")
|
se_child.subcontracted_item = item_dict[d].get("main_item_code")
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ def get_default_deferred_account(args, item, fieldname=None):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_default_cost_center(args, item, item_group):
|
def get_default_cost_center(args, item, item_group, company=None):
|
||||||
cost_center = None
|
cost_center = None
|
||||||
if args.get('project'):
|
if args.get('project'):
|
||||||
cost_center = frappe.db.get_value("Project", args.get("project"), "cost_center", cache=True)
|
cost_center = frappe.db.get_value("Project", args.get("project"), "cost_center", cache=True)
|
||||||
@@ -377,7 +377,13 @@ def get_default_cost_center(args, item, item_group):
|
|||||||
else:
|
else:
|
||||||
cost_center = item.get('buying_cost_center') or item_group.get('buying_cost_center')
|
cost_center = item.get('buying_cost_center') or item_group.get('buying_cost_center')
|
||||||
|
|
||||||
return cost_center or args.get("cost_center")
|
cost_center = cost_center or args.get("cost_center")
|
||||||
|
|
||||||
|
if (company and cost_center
|
||||||
|
and frappe.get_cached_value("Cost Center", cost_center, "company") != company):
|
||||||
|
return None
|
||||||
|
|
||||||
|
return cost_center
|
||||||
|
|
||||||
def get_default_supplier(args, item, item_group):
|
def get_default_supplier(args, item, item_group):
|
||||||
return (item.get("default_supplier")
|
return (item.get("default_supplier")
|
||||||
|
|||||||
Reference in New Issue
Block a user