Merge branch 'develop' of https://github.com/frappe/erpnext into enable-discount-accounting

This commit is contained in:
Deepesh Garg
2021-08-13 16:00:20 +05:30
270 changed files with 6046 additions and 5302 deletions

View File

@@ -74,9 +74,7 @@ def get_item_details(args, doc=None, for_validate=False, overwrite_warehouse=Tru
update_party_blanket_order(args, out)
if not doc or cint(doc.get('is_return')) == 0:
# get price list rate only if the invoice is not a credit or debit note
get_price_list_rate(args, item, out)
out.update(get_price_list_rate(args, item))
if args.customer and cint(args.is_pos):
out.update(get_pos_profile_item_details(args.company, args, update_data=True))
@@ -314,8 +312,8 @@ def get_basic_details(args, item, overwrite_warehouse=True):
"transaction_date": args.get("transaction_date"),
"against_blanket_order": args.get("against_blanket_order"),
"bom_no": item.get("default_bom"),
"weight_per_unit": args.get("weight_per_unit") or item.get("weight_per_unit"),
"weight_uom": args.get("weight_uom") or item.get("weight_uom")
"weight_per_unit": item.get("weight_per_unit"),
"weight_uom": item.get("weight_uom")
})
if item.get("enable_deferred_revenue") or item.get("enable_deferred_expense"):
@@ -644,7 +642,10 @@ def get_default_supplier(args, item, item_group, brand):
or item_group.get("default_supplier")
or brand.get("default_supplier"))
def get_price_list_rate(args, item_doc, out):
def get_price_list_rate(args, item_doc, out=None):
if out is None:
out = frappe._dict()
meta = frappe.get_meta(args.parenttype or args.doctype)
if meta.get_field("currency") or args.get('currency'):
@@ -657,17 +658,17 @@ def get_price_list_rate(args, item_doc, out):
if meta.get_field("currency"):
validate_conversion_rate(args, meta)
price_list_rate = get_price_list_rate_for(args, item_doc.name) or 0
price_list_rate = get_price_list_rate_for(args, item_doc.name)
# variant
if not price_list_rate and item_doc.variant_of:
if price_list_rate is None and item_doc.variant_of:
price_list_rate = get_price_list_rate_for(args, item_doc.variant_of)
# insert in database
if not price_list_rate:
if price_list_rate is None:
if args.price_list and args.rate:
insert_item_price(args)
return {}
return out
out.price_list_rate = flt(price_list_rate) * flt(args.plc_conversion_rate) \
/ flt(args.conversion_rate)
@@ -677,6 +678,8 @@ def get_price_list_rate(args, item_doc, out):
out.update(get_last_purchase_details(item_doc.name,
args.name, args.conversion_rate))
return out
def insert_item_price(args):
"""Insert Item Price if Price List and Price List Rate are specified and currency is the same"""
if frappe.db.get_value("Price List", args.price_list, "currency", cache=True) == args.currency \
@@ -1079,9 +1082,8 @@ def apply_price_list(args, as_doc=False):
}
def apply_price_list_on_item(args):
item_details = frappe._dict()
item_doc = frappe.get_doc("Item", args.item_code)
get_price_list_rate(args, item_doc, item_details)
item_details = get_price_list_rate(args, item_doc)
item_details.update(get_pricing_rule_for_item(args, item_details.price_list_rate))