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:
|
||||
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)))
|
||||
|
||||
def convert_deferred_expense_to_expense(start_date=None, end_date=None):
|
||||
|
@ -189,7 +189,8 @@ class BOM(WebsiteGenerator):
|
||||
"currency": self.currency,
|
||||
"conversion_rate": self.conversion_rate 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"))
|
||||
out = frappe._dict()
|
||||
@ -213,7 +214,7 @@ class BOM(WebsiteGenerator):
|
||||
existing_bom_cost = self.total_cost
|
||||
|
||||
for d in self.get("items"):
|
||||
d.rate = self.get_rm_rate({
|
||||
rate = self.get_rm_rate({
|
||||
"item_code": d.item_code,
|
||||
"bom_no": d.bom_no,
|
||||
"qty": d.qty,
|
||||
@ -221,6 +222,8 @@ class BOM(WebsiteGenerator):
|
||||
"stock_uom": d.stock_uom,
|
||||
"conversion_factor": d.conversion_factor
|
||||
})
|
||||
if rate:
|
||||
d.rate = rate
|
||||
d.amount = flt(d.rate) * flt(d.qty)
|
||||
|
||||
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,
|
||||
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
|
||||
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
|
||||
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 supplier=%(supplier)s"
|
||||
|
||||
conditions += """ and item_code=%(item_code)s
|
||||
conditions = """where item_code=%(item_code)s
|
||||
and price_list=%(price_list)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'):
|
||||
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"]:
|
||||
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"):
|
||||
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:
|
||||
item_price_data = general_price_list_rate
|
||||
|
Loading…
Reference in New Issue
Block a user