Adding "Include UOM" in Reports with Qty and Rates (#15541)
* Added Include UOM field for Stock Balane, Stock Ledger and Stock Projected Qty * Add columns in result list-of-lists instead of converting reports to list-of-dicts * For requested changes -Merged conversion factor query with item detail queries -Ensuring snail_case -Made columns consistently list-of-dicts
This commit is contained in:
@@ -246,3 +246,34 @@ def validate_warehouse_company(warehouse, company):
|
||||
def is_group_warehouse(warehouse):
|
||||
if frappe.db.get_value("Warehouse", warehouse, "is_group"):
|
||||
frappe.throw(_("Group node warehouse is not allowed to select for transactions"))
|
||||
|
||||
def update_included_uom_in_report(columns, result, include_uom, conversion_factors):
|
||||
if not include_uom or not conversion_factors:
|
||||
return
|
||||
|
||||
convertible_cols = {}
|
||||
for col_idx in reversed(range(0, len(columns))):
|
||||
col = columns[col_idx]
|
||||
if isinstance(col, dict) and col.get("convertible") in ['rate', 'qty']:
|
||||
convertible_cols[col_idx] = col['convertible']
|
||||
columns.insert(col_idx+1, col.copy())
|
||||
columns[col_idx+1]['fieldname'] += "_alt"
|
||||
if convertible_cols[col_idx] == 'rate':
|
||||
columns[col_idx+1]['label'] += " (per {})".format(include_uom)
|
||||
else:
|
||||
columns[col_idx+1]['label'] += " ({})".format(include_uom)
|
||||
|
||||
for row_idx, row in enumerate(result):
|
||||
new_row = []
|
||||
for col_idx, d in enumerate(row):
|
||||
new_row.append(d)
|
||||
if col_idx in convertible_cols:
|
||||
if conversion_factors[row_idx]:
|
||||
if convertible_cols[col_idx] == 'rate':
|
||||
new_row.append(flt(d) * conversion_factors[row_idx])
|
||||
else:
|
||||
new_row.append(flt(d) / conversion_factors[row_idx])
|
||||
else:
|
||||
new_row.append(None)
|
||||
|
||||
result[row_idx] = new_row
|
||||
|
||||
Reference in New Issue
Block a user