feat: create procurement tracker report
diff --git a/erpnext/buying/report/procurement_tracker/__init__.py b/erpnext/buying/report/procurement_tracker/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/report/procurement_tracker/__init__.py
diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.js b/erpnext/buying/report/procurement_tracker/procurement_tracker.js
new file mode 100644
index 0000000..7096b9f
--- /dev/null
+++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.js
@@ -0,0 +1,9 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+/* eslint-disable */
+
+frappe.query_reports["Procurement Tracker"] = {
+ "filters": [
+
+ ]
+}
diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.json b/erpnext/buying/report/procurement_tracker/procurement_tracker.json
new file mode 100644
index 0000000..028736c
--- /dev/null
+++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.json
@@ -0,0 +1,20 @@
+{
+ "add_total_row": 1,
+ "creation": "2019-03-29 17:05:45.196949",
+ "disable_prepared_report": 0,
+ "disabled": 0,
+ "docstatus": 0,
+ "doctype": "Report",
+ "idx": 0,
+ "is_standard": "Yes",
+ "modified": "2019-03-29 17:18:06.678728",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Procurement Tracker",
+ "owner": "Administrator",
+ "prepared_report": 0,
+ "ref_doctype": "Purchase Order",
+ "report_name": "Procurement Tracker",
+ "report_type": "Script Report",
+ "roles": []
+}
\ No newline at end of file
diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.py b/erpnext/buying/report/procurement_tracker/procurement_tracker.py
new file mode 100644
index 0000000..ee6fd2d
--- /dev/null
+++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.py
@@ -0,0 +1,167 @@
+# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from frappe.utils import cint,cstr
+
+def execute(filters=None):
+ columns = get_columns()
+ data = get_data()
+ return columns, data
+
+def get_columns():
+ columns = [
+ {
+ "label": _("Date Requisition Received in Procurement "),
+ "fieldname": "date_requisition_received_in_procurement",
+ "fieldtype": "Date",
+ "width": 140
+ },
+ {
+ "label": _("Date Requisition was Raised"),
+ "fieldname": "date_requisition_was_raised",
+ "fieldtype": "Date",
+ "width": 140
+ },
+ {
+ "label": _("Sector/Project"),
+ "options": "Cost Center",
+ "fieldname": "sector/project",
+ "fieldtype": "Link",
+ "width": 140
+ },
+ {
+ "label": _("Requesting Site"),
+ "options": "Warehouse",
+ "fieldname": "requesting_site",
+ "fieldtype": "Link",
+ "width": 140
+ },
+ {
+ "label": _("Requestor"),
+ "options": "Employee",
+ "fieldname": "requestor",
+ "fieldtype": "Link",
+ "width": 140
+ },
+ {
+ "label": _("Budget Code"),
+ "options": "Budget",
+ "fieldname": "budget_code",
+ "fieldtype": "Link",
+ "width": 140
+ },
+ {
+ "label": _("Requisition Line"),
+ "options": "Item",
+ "fieldname": "requisition_line",
+ "fieldtype": "Link",
+ "width": 140
+ },
+ {
+ "label": _("Description"),
+ "fieldname": "description",
+ "fieldtype": "Data",
+ "width": 200
+ },
+ {
+ "label": _("Quantity"),
+ "fieldname": "quantity",
+ "fieldtype": "Int",
+ "width": 140
+ },
+ {
+ "label": _("Unit of Measure"),
+ "options": "UOM",
+ "fieldname": "unit_of_measurement",
+ "fieldtype": "Link",
+ "width": 140
+ },
+ {
+ "label": _("Status"),
+ "fieldname": "status",
+ "fieldtype": "data",
+ "width": 140
+ },
+ {
+ "label": _("Purchase Order Date"),
+ "fieldname": "purchase_order_date",
+ "fieldtype": "Date",
+ "width": 140
+ },
+ {
+ "label": _("Purchase Order"),
+ "options": "Purchase Order",
+ "fieldname": "purchase_order",
+ "fieldtype": "Link",
+ "width": 140
+ },
+ {
+ "label": _("Supplier"),
+ "options": "Supplier",
+ "fieldname": "supplier",
+ "fieldtype": "Link",
+ "width": 140
+ },
+ {
+ "label": _("Estimated Cost"),
+ "fieldname": "estimated_cost",
+ "fieldtype": "Float",
+ "width": 140
+ },
+ {
+ "label": _("Actual Cost"),
+ "fieldname": "actual_cost",
+ "fieldtype": "Float",
+ "width": 140
+ },
+ {
+ "label": _("Purchase Order Amount"),
+ "fieldname": "purchase_order_amount",
+ "fieldtype": "Float",
+ "width": 140
+ },
+ {
+ "label": _("Purchase Order Amount(USD)"),
+ "fieldname": "purchase_order_amount_usd",
+ "fieldtype": "Float",
+ "width": 140
+ },
+ {
+ "label": _("Expected Delivery Date"),
+ "fieldname": "expected_delivery_date",
+ "fieldtype": "Date",
+ "width": 140
+ },
+ {
+ "label": _("Actual Delivery Date"),
+ "fieldname": "actual_delivery_date",
+ "fieldtype": "Date",
+ "width": 140
+ },
+ ]
+ return columns
+
+def get_data():
+ purchase_order_entry = frappe.db.sql("""
+ SELECT
+ po_item.item_code,
+ po_item.item_name,
+ po_item.description,
+ po.name,
+ po.transaction_date,
+ po.customer,
+ po.territory,
+ sum(po_item.qty) as net_qty,
+ po.company
+ FROM `tabPurchase Order` po, `tabPurchase Order Item` po_item
+ WHERE
+ po.docstatus = 1
+ and po.name = po_item.parent
+ and po.status not in ("Closed","Completed","Cancelled")
+ GROUP BY
+ po.name,po_item.item_code
+ """, as_dict = 1)
+ return data
\ No newline at end of file