fix(manufacturing): Get raw materials rate from price list ignoring party

This commit is contained in:
Nabin Hait 2019-01-25 16:25:15 +05:30
parent 3476a457ad
commit 01ca3e5e36
2 changed files with 18 additions and 12 deletions

View File

@ -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:

View File

@ -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,20 @@ 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:
conditions += " and (customer is null or customer = '') and (supplier is null or supplier = '')"
if args.get("customer"):
conditions += " and customer=%(customer)s"
if args.get("supplier"):
conditions += " and supplier=%(supplier)s"
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 +493,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