Merge pull request #16497 from nabinhait/bom_price

BOM raw materials price
This commit is contained in:
Nabin Hait 2019-01-29 14:58:40 +05:30 committed by GitHub
commit cc41b876fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 13 deletions

View File

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

View File

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

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,
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