refactor: item-wise purchase history (query to script report) -- formatter

This commit is contained in:
Nihantra Patel
2024-06-19 14:57:02 +05:30
parent 49331e6109
commit 003a9608dc
2 changed files with 65 additions and 83 deletions

View File

@@ -57,11 +57,7 @@ frappe.query_reports["Item-wise Purchase History"] = {
value = default_formatter(value, row, column, data); value = default_formatter(value, row, column, data);
let format_fields = ["received_qty", "billed_amt"]; let format_fields = ["received_qty", "billed_amt"];
if ( if (in_list(format_fields, column.fieldname) && data && data[column.fieldname] > 0) {
in_list(format_fields, column.fieldname) &&
data &&
data[column.fieldname] > 0
) {
value = "<span style='color:green;'>" + value + "</span>"; value = "<span style='color:green;'>" + value + "</span>";
} }
return value; return value;

View File

@@ -177,25 +177,19 @@ def get_data(filters):
"billed_amt": flt(record.get("billed_amt")), "billed_amt": flt(record.get("billed_amt")),
"company": record.get("company"), "company": record.get("company"),
} }
row["currency"] = frappe.get_cached_value( row["currency"] = frappe.get_cached_value("Company", row["company"], "default_currency")
"Company", row["company"], "default_currency"
)
data.append(row) data.append(row)
return data return data
def get_supplier_details(): def get_supplier_details():
details = frappe.get_all( details = frappe.get_all("Supplier", fields=["name", "supplier_name", "supplier_group"])
"Supplier", fields=["name", "supplier_name", "supplier_group"]
)
supplier_details = {} supplier_details = {}
for d in details: for d in details:
supplier_details.setdefault( supplier_details.setdefault(
d.name, d.name,
frappe._dict( frappe._dict({"supplier_name": d.supplier_name, "supplier_group": d.supplier_group}),
{"supplier_name": d.supplier_name, "supplier_group": d.supplier_group}
),
) )
return supplier_details return supplier_details
@@ -204,9 +198,7 @@ def get_item_details():
details = frappe.db.get_all("Item", fields=["name", "item_name", "item_group"]) details = frappe.db.get_all("Item", fields=["name", "item_name", "item_group"])
item_details = {} item_details = {}
for d in details: for d in details:
item_details.setdefault( item_details.setdefault(d.name, frappe._dict({"item_name": d.item_name, "item_group": d.item_group}))
d.name, frappe._dict({"item_name": d.item_name, "item_group": d.item_group})
)
return item_details return item_details
@@ -265,15 +257,11 @@ def get_chart_data(data):
if item_key not in item_wise_purchase_map: if item_key not in item_wise_purchase_map:
item_wise_purchase_map[item_key] = 0 item_wise_purchase_map[item_key] = 0
item_wise_purchase_map[item_key] = flt(item_wise_purchase_map[item_key]) + flt( item_wise_purchase_map[item_key] = flt(item_wise_purchase_map[item_key]) + flt(row.get("amount"))
row.get("amount")
)
item_wise_purchase_map = { item_wise_purchase_map = {
item: value item: value
for item, value in ( for item, value in (sorted(item_wise_purchase_map.items(), key=lambda i: i[1], reverse=True))
sorted(item_wise_purchase_map.items(), key=lambda i: i[1], reverse=True)
)
} }
for key in item_wise_purchase_map: for key in item_wise_purchase_map:
@@ -283,9 +271,7 @@ def get_chart_data(data):
return { return {
"data": { "data": {
"labels": labels[:30], # show max of 30 items in chart "labels": labels[:30], # show max of 30 items in chart
"datasets": [ "datasets": [{"name": _("Total Purchase Amount"), "values": datapoints[:30]}],
{"name": _("Total Purchase Amount"), "values": datapoints[:30]}
],
}, },
"type": "bar", "type": "bar",
"fieldtype": "Currency", "fieldtype": "Currency",