mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-22 14:39:19 +00:00
fix: ensure variant conversion factor is returned before the template's
This commit is contained in:
@@ -1333,21 +1333,32 @@ def get_pos_profile(company, pos_profile=None, user=None):
|
|||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_conversion_factor(item_code, uom):
|
def get_conversion_factor(item_code, uom):
|
||||||
item = frappe.get_cached_value("Item", item_code, ["variant_of", "stock_uom"], as_dict=True)
|
item = frappe.get_cached_value("Item", item_code, ["variant_of", "stock_uom"], as_dict=True)
|
||||||
if not item_code or not item:
|
if not item_code or not item or uom == item.stock_uom:
|
||||||
return {"conversion_factor": 1.0}
|
return {"conversion_factor": 1.0}
|
||||||
|
|
||||||
if uom == item.stock_uom:
|
item_codes = [item_code]
|
||||||
return {"conversion_factor": 1.0}
|
|
||||||
|
|
||||||
filters = {"parent": item_code, "uom": uom}
|
|
||||||
|
|
||||||
if item.variant_of:
|
if item.variant_of:
|
||||||
filters["parent"] = ("in", (item_code, item.variant_of))
|
item_codes.append(item.variant_of)
|
||||||
conversion_factor = frappe.get_all("UOM Conversion Detail", filters, pluck="conversion_factor")
|
|
||||||
if not conversion_factor:
|
|
||||||
conversion_factor = [get_uom_conv_factor(uom, item.stock_uom) or 1]
|
|
||||||
|
|
||||||
return {"conversion_factor": conversion_factor[-1]}
|
parent = frappe.qb.DocType("Item")
|
||||||
|
child = frappe.qb.DocType("UOM Conversion Detail")
|
||||||
|
query = (
|
||||||
|
frappe.qb.from_(parent)
|
||||||
|
.join(child)
|
||||||
|
.on(parent.name == child.parent)
|
||||||
|
.select(child.conversion_factor)
|
||||||
|
.where((parent.name.isin(item_codes)) & (child.uom == uom))
|
||||||
|
.orderby(parent.has_variants)
|
||||||
|
.limit(1)
|
||||||
|
)
|
||||||
|
conversion_factor = query.run(pluck="conversion_factor")
|
||||||
|
|
||||||
|
if not conversion_factor:
|
||||||
|
conversion_factor = get_uom_conv_factor(uom, item.stock_uom)
|
||||||
|
else:
|
||||||
|
conversion_factor = conversion_factor[0]
|
||||||
|
|
||||||
|
return {"conversion_factor": conversion_factor or 1.0}
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
|
|||||||
Reference in New Issue
Block a user