mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-22 14:39:19 +00:00
refactor: item-wise purchase history (query to script report) -- formatter
(cherry picked from commit 003a9608dc)
This commit is contained in:
@@ -2,68 +2,64 @@
|
|||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
|
|
||||||
frappe.query_reports["Item-wise Purchase History"] = {
|
frappe.query_reports["Item-wise Purchase History"] = {
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
fieldname: "company",
|
fieldname: "company",
|
||||||
label: __("Company"),
|
label: __("Company"),
|
||||||
fieldtype: "Link",
|
fieldtype: "Link",
|
||||||
options: "Company",
|
options: "Company",
|
||||||
default: frappe.defaults.get_user_default("Company"),
|
default: frappe.defaults.get_user_default("Company"),
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldname: "from_date",
|
fieldname: "from_date",
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
label: __("From Date"),
|
label: __("From Date"),
|
||||||
fieldtype: "Date",
|
fieldtype: "Date",
|
||||||
default: frappe.datetime.add_months(
|
default: frappe.datetime.add_months(
|
||||||
frappe.datetime.get_today(),
|
frappe.datetime.get_today(),
|
||||||
-1,
|
-1,
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldname: "to_date",
|
fieldname: "to_date",
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
default: frappe.datetime.get_today(),
|
default: frappe.datetime.get_today(),
|
||||||
label: __("To Date"),
|
label: __("To Date"),
|
||||||
fieldtype: "Date",
|
fieldtype: "Date",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldname: "item_group",
|
fieldname: "item_group",
|
||||||
label: __("Item Group"),
|
label: __("Item Group"),
|
||||||
fieldtype: "Link",
|
fieldtype: "Link",
|
||||||
options: "Item Group",
|
options: "Item Group",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldname: "item_code",
|
fieldname: "item_code",
|
||||||
label: __("Item"),
|
label: __("Item"),
|
||||||
fieldtype: "Link",
|
fieldtype: "Link",
|
||||||
options: "Item",
|
options: "Item",
|
||||||
get_query: () => {
|
get_query: () => {
|
||||||
return {
|
return {
|
||||||
query: "erpnext.controllers.queries.item_query",
|
query: "erpnext.controllers.queries.item_query",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldname: "supplier",
|
fieldname: "supplier",
|
||||||
label: __("Supplier"),
|
label: __("Supplier"),
|
||||||
fieldtype: "Link",
|
fieldtype: "Link",
|
||||||
options: "Supplier",
|
options: "Supplier",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
formatter: function (value, row, column, data, default_formatter) {
|
formatter: function (value, row, column, data, default_formatter) {
|
||||||
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) &&
|
value = "<span style='color:green;'>" + value + "</span>";
|
||||||
data &&
|
}
|
||||||
data[column.fieldname] > 0
|
return value;
|
||||||
) {
|
},
|
||||||
value = "<span style='color:green;'>" + value + "</span>";
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user