Merge pull request #16497 from nabinhait/bom_price
BOM raw materials price
This commit is contained in:
commit
cc41b876fb
@ -29,7 +29,7 @@ def validate_service_stop_date(doc):
|
|||||||
if date_diff(item.service_stop_date, item.service_end_date) > 0:
|
if date_diff(item.service_stop_date, item.service_end_date) > 0:
|
||||||
frappe.throw(_("Service Stop Date cannot be after Service End Date"))
|
frappe.throw(_("Service Stop Date cannot be after Service End Date"))
|
||||||
|
|
||||||
if old_stop_dates and old_stop_dates[item.name] and item.service_stop_date!=old_stop_dates[item.name]:
|
if old_stop_dates and old_stop_dates.get(item.name) and item.service_stop_date!=old_stop_dates[item.name]:
|
||||||
frappe.throw(_("Cannot change Service Stop Date for item in row {0}".format(item.idx)))
|
frappe.throw(_("Cannot change Service Stop Date for item in row {0}".format(item.idx)))
|
||||||
|
|
||||||
def convert_deferred_expense_to_expense(start_date=None, end_date=None):
|
def convert_deferred_expense_to_expense(start_date=None, end_date=None):
|
||||||
|
@ -189,7 +189,8 @@ class BOM(WebsiteGenerator):
|
|||||||
"currency": self.currency,
|
"currency": self.currency,
|
||||||
"conversion_rate": self.conversion_rate or 1,
|
"conversion_rate": self.conversion_rate or 1,
|
||||||
"conversion_factor": arg.get("conversion_factor") or 1,
|
"conversion_factor": arg.get("conversion_factor") or 1,
|
||||||
"plc_conversion_rate": 1
|
"plc_conversion_rate": 1,
|
||||||
|
"ignore_party": True
|
||||||
})
|
})
|
||||||
item_doc = frappe.get_doc("Item", arg.get("item_code"))
|
item_doc = frappe.get_doc("Item", arg.get("item_code"))
|
||||||
out = frappe._dict()
|
out = frappe._dict()
|
||||||
@ -213,7 +214,7 @@ class BOM(WebsiteGenerator):
|
|||||||
existing_bom_cost = self.total_cost
|
existing_bom_cost = self.total_cost
|
||||||
|
|
||||||
for d in self.get("items"):
|
for d in self.get("items"):
|
||||||
d.rate = self.get_rm_rate({
|
rate = self.get_rm_rate({
|
||||||
"item_code": d.item_code,
|
"item_code": d.item_code,
|
||||||
"bom_no": d.bom_no,
|
"bom_no": d.bom_no,
|
||||||
"qty": d.qty,
|
"qty": d.qty,
|
||||||
@ -221,6 +222,8 @@ class BOM(WebsiteGenerator):
|
|||||||
"stock_uom": d.stock_uom,
|
"stock_uom": d.stock_uom,
|
||||||
"conversion_factor": d.conversion_factor
|
"conversion_factor": d.conversion_factor
|
||||||
})
|
})
|
||||||
|
if rate:
|
||||||
|
d.rate = rate
|
||||||
d.amount = flt(d.rate) * flt(d.qty)
|
d.amount = flt(d.rate) * flt(d.qty)
|
||||||
|
|
||||||
if self.docstatus == 1:
|
if self.docstatus == 1:
|
||||||
|
@ -424,7 +424,7 @@ def insert_item_price(args):
|
|||||||
frappe.msgprint(_("Item Price added for {0} in Price List {1}").format(args.item_code,
|
frappe.msgprint(_("Item Price added for {0} in Price List {1}").format(args.item_code,
|
||||||
args.price_list), alert=True)
|
args.price_list), alert=True)
|
||||||
|
|
||||||
def get_item_price(args, item_code):
|
def get_item_price(args, item_code, ignore_party=False):
|
||||||
"""
|
"""
|
||||||
Get name, price_list_rate from Item Price based on conditions
|
Get name, price_list_rate from Item Price based on conditions
|
||||||
Check if the Derised qty is within the increment of the packing list.
|
Check if the Derised qty is within the increment of the packing list.
|
||||||
@ -434,17 +434,19 @@ def get_item_price(args, item_code):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
args['item_code'] = item_code
|
args['item_code'] = item_code
|
||||||
conditions = "where (customer is null or customer = '') and (supplier is null or supplier = '')"
|
|
||||||
if args.get("customer"):
|
|
||||||
conditions = "where customer=%(customer)s"
|
|
||||||
|
|
||||||
if args.get("supplier"):
|
conditions = """where item_code=%(item_code)s
|
||||||
conditions = "where supplier=%(supplier)s"
|
|
||||||
|
|
||||||
conditions += """ and item_code=%(item_code)s
|
|
||||||
and price_list=%(price_list)s
|
and price_list=%(price_list)s
|
||||||
and ifnull(uom, '') in ('', %(uom)s)"""
|
and ifnull(uom, '') in ('', %(uom)s)"""
|
||||||
|
|
||||||
|
if not ignore_party:
|
||||||
|
if args.get("customer"):
|
||||||
|
conditions += " and customer=%(customer)s"
|
||||||
|
elif args.get("supplier"):
|
||||||
|
conditions += " and supplier=%(supplier)s"
|
||||||
|
else:
|
||||||
|
conditions += " and (customer is null or customer = '') and (supplier is null or supplier = '')"
|
||||||
|
|
||||||
if args.get('min_qty'):
|
if args.get('min_qty'):
|
||||||
conditions += " and ifnull(min_qty, 0) <= %(min_qty)s"
|
conditions += " and ifnull(min_qty, 0) <= %(min_qty)s"
|
||||||
|
|
||||||
@ -490,10 +492,10 @@ def get_price_list_rate_for(args, item_code):
|
|||||||
for field in ["customer", "supplier", "min_qty"]:
|
for field in ["customer", "supplier", "min_qty"]:
|
||||||
del item_price_args[field]
|
del item_price_args[field]
|
||||||
|
|
||||||
general_price_list_rate = get_item_price(item_price_args, item_code)
|
general_price_list_rate = get_item_price(item_price_args, item_code, ignore_party=args.get("ignore_party"))
|
||||||
if not general_price_list_rate and args.get("uom") != args.get("stock_uom"):
|
if not general_price_list_rate and args.get("uom") != args.get("stock_uom"):
|
||||||
item_price_args["args"] = args.get("stock_uom")
|
item_price_args["args"] = args.get("stock_uom")
|
||||||
general_price_list_rate = get_item_price(item_price_args, item_code)
|
general_price_list_rate = get_item_price(item_price_args, item_code, ignore_party=args.get("ignore_party"))
|
||||||
|
|
||||||
if general_price_list_rate:
|
if general_price_list_rate:
|
||||||
item_price_data = general_price_list_rate
|
item_price_data = general_price_list_rate
|
||||||
|
Loading…
x
Reference in New Issue
Block a user