fix: min_qty and valid_from for the price selection (#20217)
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 51ab48a..8cfde8c 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -968,7 +968,7 @@
qty: function(doc, cdt, cdn) {
let item = frappe.get_doc(cdt, cdn);
- this.conversion_factor(doc, cdt, cdn, true);
+ this.conversion_factor(doc, cdt, cdn, false);
this.apply_pricing_rule(item, true);
},
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 4e5b933..b80f99d 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -610,7 +610,7 @@
return frappe.db.sql(""" select name, price_list_rate, uom
from `tabItem Price` {conditions}
- order by uom desc, min_qty desc """.format(conditions=conditions), args)
+ order by uom desc, min_qty desc, valid_from desc """.format(conditions=conditions), args)
def get_price_list_rate_for(args, item_code):
"""
@@ -643,10 +643,15 @@
if desired_qty and check_packing_list(price_list_rate[0][0], desired_qty, item_code):
item_price_data = price_list_rate
else:
- for field in ["customer", "supplier", "min_qty"]:
+ for field in ["customer", "supplier"]:
del item_price_args[field]
general_price_list_rate = get_item_price(item_price_args, item_code, ignore_party=args.get("ignore_party"))
+
+ if not general_price_list_rate:
+ del item_price_args["min_qty"]
+ 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["uom"] = args.get("stock_uom")
general_price_list_rate = get_item_price(item_price_args, item_code, ignore_party=args.get("ignore_party"))