diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.js b/erpnext/buying/report/procurement_tracker/procurement_tracker.js
index 7096b9f..0013666 100644
--- a/erpnext/buying/report/procurement_tracker/procurement_tracker.js
+++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.js
@@ -4,6 +4,27 @@
 
 frappe.query_reports["Procurement Tracker"] = {
 	"filters": [
-
+		{
+			fieldname: "company",
+			label: __("Company"),
+			fieldtype: "Link",
+			options: "Company",
+			default: frappe.defaults.get_user_default("Company"),
+			reqd: 1
+		},
+		{
+			fieldname: "cost_center",
+			label: __("Cost Center"),
+			fieldtype: "Link",
+			options: "Cost Center",
+			reqd: 1
+		},
+		{
+			fieldname: "project",
+			label: __("Project"),
+			fieldtype: "Link",
+			options: "Project",
+			reqd: 1
+		}
 	]
 }
diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.py b/erpnext/buying/report/procurement_tracker/procurement_tracker.py
index 18a6660..e3361a4 100644
--- a/erpnext/buying/report/procurement_tracker/procurement_tracker.py
+++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.py
@@ -6,11 +6,11 @@
 from frappe import _
 
 def execute(filters=None):
-	columns = get_columns()
-	data = get_data()
+	columns = get_columns(filters)
+	data = get_data(filters)
 	return columns, data
 
-def get_columns():
+def get_columns(filters):
 	columns = [
 		{
 			"label": _("Material Request Date"),
@@ -144,9 +144,22 @@
 	]
 	return columns
 
-def get_data():
-	purchase_order_entry = get_po_entries()
-	mr_records, procurement_record_against_mr = get_mapped_mr_details()
+def get_conditions(filters):
+	conditions = ""
+
+	if filters.get("company"):
+		conditions += " AND company='%s'"% filters.get('company')
+	if filters.get("cost_center") or filters.get("project"):
+		conditions += """
+			AND (cost_center='%s'
+			OR project='%s')
+			"""% (filters.get('cost_center'), filters.get('project'))
+	return conditions
+
+def get_data(filters):
+	conditions = get_conditions(filters)
+	purchase_order_entry = get_po_entries(conditions)
+	mr_records, procurement_record_against_mr = get_mapped_mr_details(conditions)
 	pr_records = get_mapped_pr_records()
 	pi_records = get_mapped_pi_records()
 
@@ -157,7 +170,7 @@
 		# fetch material records linked to the purchase order item
 		mr_record = mr_records.get(po.material_request_item, [{}])[0]
 		procurement_detail = {
-			"material_request_date": mr_record.get('transaction_date', ''),
+			"material_request_date": mr_record.get('transaction_date'),
 			"cost_center": po.cost_center,
 			"project": po.project,
 			"requesting_site": po.warehouse,
@@ -180,7 +193,7 @@
 		procurement_record.append(procurement_detail)
 	return procurement_record
 
-def get_mapped_mr_details():
+def get_mapped_mr_details(conditions):
 	mr_records = {}
 	mr_details = frappe.db.sql("""
 		SELECT
@@ -194,7 +207,8 @@
 			mr.per_ordered>=0
 			AND mr.name=mr_item.parent
 			AND mr.docstatus=1
-		""", as_dict=1)
+			{conditions}
+		""".format(conditions=conditions), as_dict=1) #nosec
 
 	procurement_record_against_mr = []
 	for record in mr_details:
@@ -232,7 +246,7 @@
 			AND pr_item.purchase_order_item IS NOT NULL
 		"""))
 
-def get_po_entries():
+def get_po_entries(conditions):
 	return frappe.db.sql("""
 		SELECT
 			po_item.name,
@@ -257,6 +271,7 @@
 			po.docstatus = 1
 			AND po.name = po_item.parent
 			AND po.status not in  ("Closed","Completed","Cancelled")
+			{conditions}
 		GROUP BY
 			po.name,po_item.item_code
-		""", as_dict=1)
\ No newline at end of file
+		""".format(conditions=conditions), as_dict=1) #nosec
\ No newline at end of file
diff --git a/erpnext/buying/report/procurement_tracker/test_procurement_tracker.py b/erpnext/buying/report/procurement_tracker/test_procurement_tracker.py
index 7d8e750..418396f 100644
--- a/erpnext/buying/report/procurement_tracker/test_procurement_tracker.py
+++ b/erpnext/buying/report/procurement_tracker/test_procurement_tracker.py
@@ -8,12 +8,33 @@
 from erpnext.buying.report.procurement_tracker.procurement_tracker import execute
 from erpnext.stock.doctype.material_request.test_material_request import make_material_request
 from erpnext.stock.doctype.material_request.material_request import make_purchase_order
-from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt, make_purchase_invoice
+from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt
+from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
 
 class TestProcurementTracker(unittest.TestCase):
 	maxDiff = None
 	def test_result_for_procurement_tracker(self):
-		mr = make_material_request()
+		filters = {
+			'company': '_Test Procurement Company',
+			'cost_center': '_Test Cost Center - _TC'
+		}
+		expected_data = self.generate_expected_data()
+		report = execute(filters)
+
+		length = len(report[1])
+		self.assertEqual(expected_data, report[1][length-1])
+
+	def generate_expected_data(self):
+		if not frappe.db.exists("Company", "_Test Procurement Company"):
+			frappe.get_doc(dict(
+				doctype="Company",
+				company_name="_Test Procurement Company",
+				abbr="_TPC",
+				default_currency="INR",
+				country="India"
+				)).insert()
+		warehouse = create_warehouse("_Test Procurement Warehouse", company="_Test Procurement Company")
+		mr = make_material_request(company="_Test Procurement Company", warehouse=warehouse)
 		po = make_purchase_order(mr.name)
 		po.supplier = "_Test Supplier"
 		po.get("items")[0].cost_center = "_Test Cost Center - _TC"
@@ -23,12 +44,11 @@
 		frappe.db.commit()
 		date_obj = datetime.date(datetime.now())
 
-		report = execute()
 		expected_data = {
 			"material_request_date": date_obj,
 			"cost_center": "_Test Cost Center - _TC",
 			"project": None,
-			"requesting_site": "_Test Warehouse - _TC",
+			"requesting_site": "_Test Procurement Warehouse - _TPC",
 			"requestor": "Administrator",
 			"material_request_no": mr.name,
 			"description": '_Test Item 1',
@@ -45,5 +65,4 @@
 			"expected_delivery_date": date_obj,
 			"actual_delivery_date": date_obj
 		}
-		length = len(report[1])
-		self.assertEqual(expected_data, report[1][length-1])
\ No newline at end of file
+		return expected_data
\ No newline at end of file
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 7dc54d0..79cdc1a 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -629,7 +629,8 @@
 		"item_code": args.item_code or "_Test Item",
 		"qty": args.qty or 10,
 		"schedule_date": args.schedule_date or today(),
-		"warehouse": args.warehouse or "_Test Warehouse - _TC"
+		"warehouse": args.warehouse or "_Test Warehouse - _TC",
+		"cost_center": args.cost_center or "_Test Cost Center - _TC"
 	})
 	mr.insert()
 	if not args.do_not_submit:
