Merge pull request #21992 from rohitwaghchaure/fixed-forecasting-data-and-changed-columns-pre-release

refactor: display the order's data for past period
diff --git a/erpnext/accounts/desk_page/accounting/accounting.json b/erpnext/accounts/desk_page/accounting/accounting.json
index 576d10c..42fb9f4 100644
--- a/erpnext/accounts/desk_page/accounting/accounting.json
+++ b/erpnext/accounts/desk_page/accounting/accounting.json
@@ -18,7 +18,7 @@
   {
    "hidden": 0,
    "label": "Accounts Payable",
-   "links": "[\n    {\n        \"description\": \"Bills raised by Suppliers.\",\n        \"label\": \"Purchase Invoice\",\n        \"name\": \"Purchase Invoice\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Supplier database.\",\n        \"label\": \"Supplier\",\n        \"name\": \"Supplier\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Bank/Cash transactions against party or for internal transfer\",\n        \"label\": \"Payment Entry\",\n        \"name\": \"Payment Entry\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Accounts Payable\",\n        \"name\": \"Accounts Payable\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Accounts Payable Summary\",\n        \"name\": \"Accounts Payable Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Register\",\n        \"name\": \"Purchase Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Item-wise Purchase Register\",\n        \"name\": \"Item-wise Purchase Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Order Items To Be Billed\",\n        \"name\": \"Purchase Order Items To Be Billed\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Received Items To Be Billed\",\n        \"name\": \"Received Items To Be Billed\",\n        \"type\": \"report\"\n    }\n]"
+   "links": "[\n    {\n        \"description\": \"Bills raised by Suppliers.\",\n        \"label\": \"Purchase Invoice\",\n        \"name\": \"Purchase Invoice\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Supplier database.\",\n        \"label\": \"Supplier\",\n        \"name\": \"Supplier\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Bank/Cash transactions against party or for internal transfer\",\n        \"label\": \"Payment Entry\",\n        \"name\": \"Payment Entry\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Accounts Payable\",\n        \"name\": \"Accounts Payable\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Accounts Payable Summary\",\n        \"name\": \"Accounts Payable Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Register\",\n        \"name\": \"Purchase Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Item-wise Purchase Register\",\n        \"name\": \"Item-wise Purchase Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Order\"\n        ],\n        \"doctype\": \"Purchase Order\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Order Analysis\",\n        \"name\": \"Purchase Order Analysis\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Received Items To Be Billed\",\n        \"name\": \"Received Items To Be Billed\",\n        \"type\": \"report\"\n    }\n]"
   },
   {
    "hidden": 0,
@@ -94,10 +94,11 @@
  "docstatus": 0,
  "doctype": "Desk Page",
  "extends_another_page": 0,
+ "hide_custom": 0,
  "idx": 0,
  "is_standard": 1,
  "label": "Accounting",
- "modified": "2020-05-18 17:27:26.882340",
+ "modified": "2020-05-27 20:34:50.949772",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounting",
diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js
index 4d8da37..699eb08 100644
--- a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js
+++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js
@@ -11,21 +11,9 @@
 			};
 		});
 
-		frm.set_query('cost_center', 'invoices', function(doc, cdt, cdn) {
-			return {
-				filters: {
-					'company': doc.company
-				}
-			};
-		});
-
-		frm.set_query('cost_center', function(doc) {
-			return {
-				filters: {
-					'company': doc.company
-				}
-			};
-		});
+		if (frm.doc.company) {
+			frm.trigger('setup_company_filters');
+		}
 	},
 
 	refresh: function(frm) {
@@ -51,19 +39,50 @@
 		});
 	},
 
-	company: function(frm) {
-		frappe.call({
-			method: 'erpnext.accounts.doctype.opening_invoice_creation_tool.opening_invoice_creation_tool.get_temporary_opening_account',
-			args: {
-				company: frm.doc.company
-			},
-			callback: (r) => {
-				if (r.message) {
-					frm.doc.__onload.temporary_opening_account = r.message;
-					frm.trigger('update_invoice_table');
+	setup_company_filters: function(frm) {
+		frm.set_query('cost_center', 'invoices', function(doc, cdt, cdn) {
+			return {
+				filters: {
+					'company': doc.company
+				}
+			};
+		});
+
+		frm.set_query('cost_center', function(doc) {
+			return {
+				filters: {
+					'company': doc.company
+				}
+			};
+		});
+
+		frm.set_query('temporary_opening_account', 'invoices', function(doc, cdt, cdn) {
+			return {
+				filters: {
+					'company': doc.company
 				}
 			}
-		})
+		});
+	},
+
+	company: function(frm) {
+		if (frm.doc.company) {
+
+			frm.trigger('setup_company_filters');
+
+			frappe.call({
+				method: 'erpnext.accounts.doctype.opening_invoice_creation_tool.opening_invoice_creation_tool.get_temporary_opening_account',
+				args: {
+					company: frm.doc.company
+				},
+				callback: (r) => {
+					if (r.message) {
+						frm.doc.__onload.temporary_opening_account = r.message;
+						frm.trigger('update_invoice_table');
+					}
+				}
+			})
+		}
 	},
 
 	invoice_type: function(frm) {
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index a0a1b97..c6f852a 100755
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -534,7 +534,7 @@
 
 	def get_ageing_data(self, entry_date, row):
 		# [0-30, 30-60, 60-90, 90-120, 120-above]
-		row.range1 = row.range2 = row.range3 = row.range4 = range5 = 0.0
+		row.range1 = row.range2 = row.range3 = row.range4 = row.range5 = 0.0
 
 		if not (self.age_as_on and entry_date):
 			return
diff --git a/erpnext/accounts/report/purchase_order_items_to_be_billed/__init__.py b/erpnext/accounts/report/purchase_order_items_to_be_billed/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/accounts/report/purchase_order_items_to_be_billed/__init__.py
+++ /dev/null
diff --git a/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.js b/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.js
deleted file mode 100644
index 24c9592..0000000
--- a/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-
-frappe.query_reports["Purchase Order Items To Be Billed"] = {
-	"filters": [
-
-	]
-}
diff --git a/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.json b/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.json
deleted file mode 100644
index 3645ec0..0000000
--- a/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "add_total_row": 1, 
- "apply_user_permissions": 1, 
- "creation": "2013-05-28 15:54:16", 
- "disabled": 0, 
- "docstatus": 0, 
- "doctype": "Report", 
- "idx": 3, 
- "is_standard": "Yes", 
- "modified": "2017-02-24 20:00:24.302988", 
- "modified_by": "Administrator", 
- "module": "Accounts", 
- "name": "Purchase Order Items To Be Billed", 
- "owner": "Administrator", 
- "query": "select \n    `tabPurchase Order`.`name` as \"Purchase Order:Link/Purchase Order:120\",\n    `tabPurchase Order`.`transaction_date` as \"Date:Date:100\",\n\t`tabPurchase Order`.`supplier` as \"Supplier:Link/Supplier:120\",\n\t`tabPurchase Order`.`supplier_name` as \"Supplier Name::150\",\n\t`tabPurchase Order Item`.`project` as \"Project\",\n\t`tabPurchase Order Item`.item_code as \"Item Code:Link/Item:120\",\n\t`tabPurchase Order Item`.base_amount as \"Amount:Currency:100\",\n\t(`tabPurchase Order Item`.billed_amt * ifnull(`tabPurchase Order`.conversion_rate, 1)) as \"Billed Amount:Currency:100\", \n\t(`tabPurchase Order Item`.base_amount - (`tabPurchase Order Item`.billed_amt * ifnull(`tabPurchase Order`.conversion_rate, 1))) as \"Amount to Bill:Currency:100\",\n\t`tabPurchase Order Item`.item_name as \"Item Name::150\",\n\t`tabPurchase Order Item`.description as \"Description::200\",\n\t`tabPurchase Order`.company as \"Company:Link/Company:\"\nfrom\n\t`tabPurchase Order`, `tabPurchase Order Item`\nwhere\n\t`tabPurchase Order Item`.`parent` = `tabPurchase Order`.`name`\n\tand `tabPurchase Order`.docstatus = 1\n\tand `tabPurchase Order`.status != \"Closed\"\n        and `tabPurchase Order Item`.amount > 0\n\tand (`tabPurchase Order Item`.billed_amt * ifnull(`tabPurchase Order`.conversion_rate, 1)) < `tabPurchase Order Item`.base_amount\norder by `tabPurchase Order`.transaction_date asc", 
- "ref_doctype": "Purchase Invoice", 
- "report_name": "Purchase Order Items To Be Billed", 
- "report_type": "Script Report", 
- "roles": [
-  {
-   "role": "Accounts User"
-  }, 
-  {
-   "role": "Purchase User"
-  }, 
-  {
-   "role": "Auditor"
-  }, 
-  {
-   "role": "Accounts Manager"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.py b/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.py
deleted file mode 100644
index 99d0a36..0000000
--- a/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# 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 erpnext.accounts.report.non_billed_report import get_ordered_to_be_billed_data
-
-def execute(filters=None):
-	columns = get_column()
-	args = get_args()
-	data = get_ordered_to_be_billed_data(args)
-	return columns, data
-
-def get_column():
-	return [
-		_("Purchase Order") + ":Link/Purchase Order:120", _("Status") + "::120", _("Date") + ":Date:100",
-		_("Suplier") + ":Link/Supplier:120", _("Suplier Name") + "::120",
-		_("Project") + ":Link/Project:120", _("Item Code") + ":Link/Item:120",
-		_("Amount") + ":Currency:100", _("Billed Amount") + ":Currency:100", _("Amount to Bill") + ":Currency:100",
-		_("Item Name") + "::120", _("Description") + "::120", _("Company") + ":Link/Company:120",
-	]
-
-def get_args():
-	return {'doctype': 'Purchase Order', 'party': 'supplier',
-		'date': 'transaction_date', 'order': 'transaction_date', 'order_by': 'asc'}
diff --git a/erpnext/buying/dashboard_fixtures.py b/erpnext/buying/dashboard_fixtures.py
index 0e2f78f..186bfb2 100644
--- a/erpnext/buying/dashboard_fixtures.py
+++ b/erpnext/buying/dashboard_fixtures.py
@@ -41,7 +41,7 @@
 			{ "chart": "Top Suppliers", "width": "Full"}
 		],
 		"cards": [
-			{ "card": "This Year Purchases"},
+			{ "card": "Annual Purchase"},
 			{ "card": "Purchase Orders to Receive"},
 			{ "card": "Purchase Orders to Bill"},
 			{ "card": "Active Suppliers"}
@@ -142,7 +142,7 @@
 def get_number_cards():
 	return [
 		{
-			"name": "This Year Purchases",
+			"name": "Annual Purchase",
 			"aggregate_function_based_on": "base_net_total",
 			"doctype": "Number Card",
 			"document_type": "Purchase Order",
@@ -155,7 +155,7 @@
 			]),
 			"function": "Sum",
 			"is_public": 1,
-			"label": _("This Year Purchases"),
+			"label": _("Annual Purchase"),
 			"owner": "Administrator",
 			"show_percentage_stats": 1,
 			"stats_time_interval": "Monthly"
diff --git a/erpnext/buying/desk_page/buying/buying.json b/erpnext/buying/desk_page/buying/buying.json
index ee18545..88f0a2b 100644
--- a/erpnext/buying/desk_page/buying/buying.json
+++ b/erpnext/buying/desk_page/buying/buying.json
@@ -55,7 +55,7 @@
  "idx": 0,
  "is_standard": 1,
  "label": "Buying",
- "modified": "2020-05-19 19:44:36.260982",
+ "modified": "2020-05-27 19:15:05.067756",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Buying",
@@ -66,7 +66,7 @@
  "shortcuts": [
   {
    "color": "#cef6d1",
-   "format": "{} available",
+   "format": "{} Available",
    "label": "Item",
    "link_to": "Item",
    "stats_filter": "{\n    \"disabled\": 0\n}",
@@ -82,7 +82,7 @@
   },
   {
    "color": "#ffe8cd",
-   "format": "{}  to Receive",
+   "format": "{}  To Receive",
    "label": "Purchase Order",
    "link_to": "Purchase Order",
    "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\":[\"in\", [\"To Receive\", \"To Receive and Bill\"]]\n}",
@@ -99,7 +99,7 @@
    "type": "Report"
   },
   {
-   "label": "Buying Dashboard",
+   "label": "Dashboard",
    "link_to": "Buying",
    "type": "Dashboard"
   }
diff --git a/erpnext/buying/module_onboarding/buying/buying.json b/erpnext/buying/module_onboarding/buying/buying.json
index 8c798b3..8fe2f38 100644
--- a/erpnext/buying/module_onboarding/buying/buying.json
+++ b/erpnext/buying/module_onboarding/buying/buying.json
@@ -19,7 +19,7 @@
  "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/buying",
  "idx": 0,
  "is_complete": 0,
- "modified": "2020-05-19 20:03:55.776080",
+ "modified": "2020-05-27 17:17:52.075947",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Buying",
@@ -49,6 +49,6 @@
  ],
  "subtitle": "Products, Purchases, Analysis and more.",
  "success_message": "The Buying Module is all set up!",
- "title": "Let's Setup the Buying Module.",
+ "title": "Let's Set Up the Buying Module.",
  "user_can_dismiss": 1
 }
\ No newline at end of file
diff --git a/erpnext/buying/report/requested_items_to_be_ordered/__init__.py b/erpnext/buying/report/requested_items_to_be_ordered/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/buying/report/requested_items_to_be_ordered/__init__.py
+++ /dev/null
diff --git a/erpnext/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.json b/erpnext/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.json
deleted file mode 100644
index bb11269..0000000
--- a/erpnext/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-    "add_total_row": 1,
-    "creation": "2013-05-13 16:10:02",
-    "disable_prepared_report": 0,
-    "disabled": 0,
-    "docstatus": 0,
-    "doctype": "Report",
-    "idx": 3,
-    "is_standard": "Yes",
-    "modified": "2019-04-18 19:02:03.099422",
-    "modified_by": "Administrator",
-    "module": "Buying",
-    "name": "Requested Items To Be Ordered",
-    "owner": "Administrator",
-    "prepared_report": 0,
-    "query": "select \n    mr.name as \"Material Request:Link/Material Request:120\",\n\tmr.transaction_date as \"Date:Date:100\",\n\tmr_item.item_code as \"Item Code:Link/Item:120\",\n\tsum(ifnull(mr_item.stock_qty, 0)) as \"Qty:Float:100\",\n\tifnull(mr_item.stock_uom, '') as \"UOM:Link/UOM:100\",\n\tsum(ifnull(mr_item.ordered_qty, 0)) as \"Ordered Qty:Float:100\", \n\t(sum(mr_item.stock_qty) - sum(ifnull(mr_item.ordered_qty, 0))) as \"Qty to Order:Float:100\",\n\tmr_item.item_name as \"Item Name::150\",\n\tmr_item.description as \"Description::200\",\n\tmr.company as \"Company:Link/Company:\"\nfrom\n\t`tabMaterial Request` mr, `tabMaterial Request Item` mr_item\nwhere\n\tmr_item.parent = mr.name\n\tand mr.material_request_type = \"Purchase\"\n\tand mr.docstatus = 1\n\tand mr.status != \"Stopped\"\ngroup by mr.name, mr_item.item_code\nhaving\n\tsum(ifnull(mr_item.ordered_qty, 0)) < sum(ifnull(mr_item.stock_qty, 0))\norder by mr.transaction_date asc",
-    "ref_doctype": "Purchase Order",
-    "report_name": "Requested Items To Be Ordered",
-    "report_type": "Query Report",
-    "roles": [
-     {
-      "role": "Stock User"
-     },
-     {
-      "role": "Purchase Manager"
-     },
-     {
-      "role": "Purchase User"
-     }
-    ]
-   }
\ No newline at end of file
diff --git a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.js b/erpnext/buying/report/requested_items_to_order/requested_items_to_order.js
index 21adb13..9555e82 100644
--- a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.js
+++ b/erpnext/buying/report/requested_items_to_order/requested_items_to_order.js
@@ -35,7 +35,7 @@
 			"fieldtype": "Link",
 			"width": "80",
 			"options": "Material Request",
-			"get_query": () =>{
+			"get_query": () => {
 				return {
 					filters: {
 						"docstatus": 1,
@@ -46,6 +46,18 @@
 			}
 		},
 		{
+			"fieldname": "item_code",
+			"label": __("Item"),
+			"fieldtype": "Link",
+			"width": "80",
+			"options": "Item",
+			"get_query": () => {
+				return {
+					query: "erpnext.controllers.queries.item_query"
+				}
+			}
+		},
+		{
 			"fieldname": "group_by_mr",
 			"label": __("Group by Material Request"),
 			"fieldtype": "Check",
diff --git a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.py b/erpnext/buying/report/requested_items_to_order/requested_items_to_order.py
index a021d3c..cca01b1 100644
--- a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.py
+++ b/erpnext/buying/report/requested_items_to_order/requested_items_to_order.py
@@ -44,6 +44,9 @@
 	if filters.get("material_request"):
 		conditions += " and mr.name = '{0}'".format(filters.get("material_request"))
 
+	if filters.get("item_code"):
+		conditions += " and mr_item.item_code = '{0}'".format(filters.get("item_code"))
+
 	return conditions
 
 def get_data(filters, conditions):
@@ -74,25 +77,41 @@
 
 	return data
 
+def update_qty_columns(row_to_update, data_row):
+	fields = ["qty", "ordered_qty", "qty_to_order"]
+	for field in fields:
+		row_to_update[field] += flt(data_row[field])
+
 def prepare_data(data, filters):
 	"""Prepare consolidated Report data and Chart data"""
-	material_request_map = {}
+	material_request_map, item_qty_map = {}, {}
 
 	for row in data:
-		if not row["material_request"] in material_request_map:
-			# create an entry with mr as key
-			row_copy = copy.deepcopy(row)
-			material_request_map[row["material_request"]] = row_copy
+		# item wise map for charts
+		if not row["item_code"] in item_qty_map:
+			item_qty_map[row["item_code"]] = {
+				"qty" : row["qty"],
+				"ordered_qty" : row["ordered_qty"],
+				"qty_to_order" : row["qty_to_order"]
+			}
 		else:
-			mr_row = material_request_map[row["material_request"]]
-			mr_row["required_date"] = min(getdate(mr_row["required_date"]), getdate(row["required_date"]))
+			item_entry = item_qty_map[row["item_code"]]
+			update_qty_columns(item_entry, row)
 
-			#sum numeric rows
-			fields = ["qty", "ordered_qty", "qty_to_order"]
-			for field in fields:
-					mr_row[field] = flt(mr_row[field]) + flt(row[field])
+		if filters.get("group_by_mr"):
+			# consolidated material request map for group by filter
+			if not row["material_request"] in material_request_map:
+				# create an entry with mr as key
+				row_copy = copy.deepcopy(row)
+				material_request_map[row["material_request"]] = row_copy
+			else:
+				mr_row = material_request_map[row["material_request"]]
+				mr_row["required_date"] = min(getdate(mr_row["required_date"]), getdate(row["required_date"]))
 
-	chart_data = prepare_chart_data(material_request_map)
+				#sum numeric columns
+				update_qty_columns(mr_row, row)
+
+	chart_data = prepare_chart_data(item_qty_map)
 
 	if filters.get("group_by_mr"):
 		data =[]
@@ -102,12 +121,15 @@
 
 	return data, chart_data
 
-def prepare_chart_data(data):
+def prepare_chart_data(item_data):
 	labels, qty_to_order, ordered_qty = [], [], []
 
-	for row in data:
-		mr_row = data[row]
-		labels.append(mr_row["material_request"])
+	if len(item_data) > 30:
+		item_data = dict(list(item_data.items())[:30])
+
+	for row in item_data:
+		mr_row = item_data[row]
+		labels.append(row)
 		qty_to_order.append(mr_row["qty_to_order"])
 		ordered_qty.append(mr_row["ordered_qty"])
 
diff --git a/erpnext/crm/module_onboarding/crm/crm.json b/erpnext/crm/module_onboarding/crm/crm.json
index 694763f..9b3d91e 100644
--- a/erpnext/crm/module_onboarding/crm/crm.json
+++ b/erpnext/crm/module_onboarding/crm/crm.json
@@ -16,7 +16,7 @@
  "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/CRM",
  "idx": 0,
  "is_complete": 0,
- "modified": "2020-05-20 12:53:47.029412",
+ "modified": "2020-05-27 11:33:09.941263",
  "modified_by": "Administrator",
  "module": "CRM",
  "name": "CRM",
diff --git a/erpnext/crm/onboarding_step/create_and_send_quotation/create_and_send_quotation.json b/erpnext/crm/onboarding_step/create_and_send_quotation/create_and_send_quotation.json
index a6edfd7..9201d77 100644
--- a/erpnext/crm/onboarding_step/create_and_send_quotation/create_and_send_quotation.json
+++ b/erpnext/crm/onboarding_step/create_and_send_quotation/create_and_send_quotation.json
@@ -8,12 +8,12 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 17:30:07.887411",
+ "modified": "2020-05-27 11:30:28.237263",
  "modified_by": "Administrator",
  "name": "Create and Send Quotation",
  "owner": "Administrator",
  "reference_document": "Quotation",
- "show_full_form": 0,
+ "show_full_form": 1,
  "title": "Create and Send Quotation",
- "validate_action": 0
+ "validate_action": 1
 }
\ No newline at end of file
diff --git a/erpnext/crm/onboarding_step/create_lead/create_lead.json b/erpnext/crm/onboarding_step/create_lead/create_lead.json
index 47a45d7..6ff0bd6 100644
--- a/erpnext/crm/onboarding_step/create_lead/create_lead.json
+++ b/erpnext/crm/onboarding_step/create_lead/create_lead.json
@@ -8,12 +8,12 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 17:28:36.441387",
+ "modified": "2020-05-27 11:30:59.493720",
  "modified_by": "Administrator",
  "name": "Create Lead",
  "owner": "Administrator",
  "reference_document": "Lead",
- "show_full_form": 0,
+ "show_full_form": 1,
  "title": "Create Lead",
- "validate_action": 0
+ "validate_action": 1
 }
\ No newline at end of file
diff --git a/erpnext/crm/onboarding_step/create_opportunity/create_opportunity.json b/erpnext/crm/onboarding_step/create_opportunity/create_opportunity.json
index 231cf17..9f996d9 100644
--- a/erpnext/crm/onboarding_step/create_opportunity/create_opportunity.json
+++ b/erpnext/crm/onboarding_step/create_opportunity/create_opportunity.json
@@ -15,5 +15,5 @@
  "reference_document": "Opportunity",
  "show_full_form": 0,
  "title": "Create Opportunity",
- "validate_action": 0
+ "validate_action": 1
 }
\ No newline at end of file
diff --git a/erpnext/crm/onboarding_step/introduction_to_crm/introduction_to_crm.json b/erpnext/crm/onboarding_step/introduction_to_crm/introduction_to_crm.json
index 552ade0..545a756 100644
--- a/erpnext/crm/onboarding_step/introduction_to_crm/introduction_to_crm.json
+++ b/erpnext/crm/onboarding_step/introduction_to_crm/introduction_to_crm.json
@@ -8,12 +8,12 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 17:28:16.448676",
+ "modified": "2020-05-27 11:28:07.452857",
  "modified_by": "Administrator",
  "name": "Introduction to CRM",
  "owner": "Administrator",
  "show_full_form": 0,
  "title": "Introduction to CRM",
- "validate_action": 0,
+ "validate_action": 1,
  "video_url": "https://www.youtube.com/watch?v=o9XCSZHJfpA"
 }
\ No newline at end of file
diff --git a/erpnext/hr/onboarding_step/create_holiday_list/create_holiday_list.json b/erpnext/hr/onboarding_step/create_holiday_list/create_holiday_list.json
index 25cb9fe..208e394 100644
--- a/erpnext/hr/onboarding_step/create_holiday_list/create_holiday_list.json
+++ b/erpnext/hr/onboarding_step/create_holiday_list/create_holiday_list.json
@@ -1,6 +1,6 @@
 {
  "action": "Create Entry",
- "creation": "2020-05-14 11:47:34.700174",
+ "creation": "2020-05-27 11:47:34.700174",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
@@ -13,7 +13,7 @@
  "name": "Create Holiday list",
  "owner": "Administrator",
  "reference_document": "Holiday List",
- "show_full_form": 0,
+ "show_full_form": 1,
  "title": "Create Holiday list",
  "validate_action": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/onboarding_step/create_leave_type/create_leave_type.json b/erpnext/hr/onboarding_step/create_leave_type/create_leave_type.json
index e8b97c2..8cbfc5c 100644
--- a/erpnext/hr/onboarding_step/create_leave_type/create_leave_type.json
+++ b/erpnext/hr/onboarding_step/create_leave_type/create_leave_type.json
@@ -1,6 +1,6 @@
 {
  "action": "Create Entry",
- "creation": "2020-05-20 11:17:31.119312",
+ "creation": "2020-05-27 11:17:31.119312",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
@@ -13,7 +13,7 @@
  "name": "Create Leave Type",
  "owner": "Administrator",
  "reference_document": "Leave Type",
- "show_full_form": 0,
+ "show_full_form": 1,
  "title": "Create Leave Type",
  "validate_action": 0
 }
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py
index e43b98a..c29d4ba 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.py
+++ b/erpnext/manufacturing/doctype/job_card/job_card.py
@@ -102,8 +102,11 @@
 		workstation_doc = frappe.get_cached_doc("Workstation", self.workstation)
 		if (not workstation_doc.working_hours or
 			cint(frappe.db.get_single_value("Manufacturing Settings", "allow_overtime"))):
-			row.remaining_time_in_mins -= time_diff_in_minutes(row.planned_end_time,
-				row.planned_start_time)
+			if get_datetime(row.planned_end_time) < get_datetime(row.planned_start_time):
+				row.planned_end_time = add_to_date(row.planned_start_time, minutes=row.time_in_mins)
+				row.remaining_time_in_mins = 0.0
+			else:
+				row.remaining_time_in_mins -= time_diff_in_minutes(row.planned_end_time, row.planned_start_time)
 
 			self.update_time_logs(row)
 			return
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.js b/erpnext/manufacturing/doctype/production_plan/production_plan.js
index 64c952b..1a64bc5 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.js
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.js
@@ -201,9 +201,9 @@
 				title: title,
 				fields: [
 					{
-						"fieldtype": "Table MultiSelect", "label": __("Source Warehouses"),
+						"fieldtype": "Table MultiSelect", "label": __("Source Warehouses (Optional)"),
 						"fieldname": "warehouses", "options": "Production Plan Material Request Warehouse",
-						"description": "System will pickup the materials from the selected warehouses",
+						"description": __("System will pickup the materials from the selected warehouses. If not specified, system will create material request for purchase."),
 						get_query: function () {
 							return {
 								filters: {
diff --git a/erpnext/manufacturing/report/bom_operations_time/bom_operations_time.py b/erpnext/manufacturing/report/bom_operations_time/bom_operations_time.py
index 1279011..e7d9265 100644
--- a/erpnext/manufacturing/report/bom_operations_time/bom_operations_time.py
+++ b/erpnext/manufacturing/report/bom_operations_time/bom_operations_time.py
@@ -103,7 +103,7 @@
 		"fieldtype": "Int",
 		"width": 140
 	}, {
-		"label": _("Subassembly BOM Count"),
+		"label": _("Sub-assembly BOM Count"),
 		"fieldname": "used_as_subassembly_items",
 		"fieldtype": "Int",
 		"width": 180
diff --git a/erpnext/manufacturing/report/job_card_summary/job_card_summary.js b/erpnext/manufacturing/report/job_card_summary/job_card_summary.js
index b7e3071..33953b1 100644
--- a/erpnext/manufacturing/report/job_card_summary/job_card_summary.js
+++ b/erpnext/manufacturing/report/job_card_summary/job_card_summary.js
@@ -13,17 +13,38 @@
 			reqd: 1
 		},
 		{
-			label: __("From Date"),
+			fieldname: "fiscal_year",
+			label: __("Fiscal Year"),
+			fieldtype: "Link",
+			options: "Fiscal Year",
+			default: frappe.defaults.get_user_default("fiscal_year"),
+			reqd: 1,
+			on_change: function(query_report) {
+				var fiscal_year = query_report.get_values().fiscal_year;
+				if (!fiscal_year) {
+					return;
+				}
+				frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
+					var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
+					frappe.query_report.set_filter_value({
+						from_date: fy.year_start_date,
+						to_date: fy.year_end_date
+					});
+				});
+			}
+		},
+		{
+			label: __("From Posting Date"),
 			fieldname:"from_date",
 			fieldtype: "Date",
-			default: frappe.datetime.add_months(frappe.datetime.get_today(), -12),
+			default: frappe.defaults.get_user_default("year_start_date"),
 			reqd: 1
 		},
 		{
-			label: __("To Date"),
+			label: __("To Posting Datetime"),
 			fieldname:"to_date",
 			fieldtype: "Date",
-			default: frappe.datetime.get_today(),
+			default: frappe.defaults.get_user_default("year_end_date"),
 			reqd: 1,
 		},
 		{
diff --git a/erpnext/manufacturing/report/job_card_summary/job_card_summary.py b/erpnext/manufacturing/report/job_card_summary/job_card_summary.py
index ae1e4f3..953d820 100644
--- a/erpnext/manufacturing/report/job_card_summary/job_card_summary.py
+++ b/erpnext/manufacturing/report/job_card_summary/job_card_summary.py
@@ -15,9 +15,12 @@
 	return columns, data, None, chart_data
 
 def get_data(filters):
-	query_filters = {"docstatus": ("<", 2)}
+	query_filters = {
+		"docstatus": ("=", 1),
+		"posting_date": ("between", [filters.from_date, filters.to_date])
+	}
 
-	fields = ["name", "status", "work_order", "production_item", "item_name",
+	fields = ["name", "status", "work_order", "production_item", "item_name", "posting_date",
 		"total_completed_qty", "workstation", "operation", "employee_name", "total_time_in_mins"]
 
 	for field in ["work_order", "workstation", "operation", "company"]:
@@ -30,12 +33,19 @@
 	if not data: return []
 
 	job_cards = [d.name for d in data]
+
+	job_card_time_filter = {
+		"docstatus": 1,
+		"parent": ("in", job_cards),
+	}
+
 	job_card_time_details = {}
 	for job_card_data in frappe.get_all("Job Card Time Log",
 		fields=["min(from_time) as from_time", "max(to_time) as to_time", "parent"],
-		filters={"docstatus": ("<", 2), "parent": ("in", job_cards)}, group_by="parent"):
+		filters=job_card_time_filter, group_by="parent", debug=1):
 		job_card_time_details[job_card_data.parent] = job_card_data
 
+	res = []
 	for d in data:
 		if d.status == "Material Transferred":
 			d.status = "Open"
@@ -43,8 +53,9 @@
 		if job_card_time_details.get(d.name):
 			d.from_time = job_card_time_details.get(d.name).from_time
 			d.to_time = job_card_time_details.get(d.name).to_time
+			res.append(d)
 
-	return data
+	return res
 
 def get_chart_data(job_card_details, filters):
 	labels, periodic_data = prepare_chart_data(job_card_details, filters)
@@ -86,10 +97,10 @@
 			labels.append(period)
 
 		for d in job_card_details:
-			if getdate(d.from_time) >= from_date and getdate(d.to_time) <= end_date:
+			if getdate(d.posting_date) > from_date and getdate(d.posting_date) <= end_date:
 				status = "Completed" if d.status == "Completed" else "Pending"
 
-				if periodic_data.get(status) and periodic_data.get(status).get(period):
+				if periodic_data.get(status).get(period):
 					periodic_data[status][period] += 1
 				else:
 					periodic_data[status][period] = 1
@@ -105,6 +116,12 @@
 			"options": "Job Card",
 			"width": 100
 		},
+		{
+			"label": _("Posting Date"),
+			"fieldname": "posting_date",
+			"fieldtype": "Date",
+			"width": 100
+		},
 	]
 
 	if not filters.get("status"):
diff --git a/erpnext/manufacturing/report/production_planning_report/production_planning_report.py b/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
index b5e6c6f..5ac3923 100644
--- a/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
+++ b/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
@@ -220,6 +220,9 @@
 				if item_details:
 					warehouses = [item_details["default_warehouse"]]
 
+			if self.filters.raw_material_warehouse:
+				warehouses = get_child_warehouses(self.filters.raw_material_warehouse)
+
 			d.remaining_qty = d.required_qty
 			self.pick_materials_from_warehouses(d, data, warehouses)
 
diff --git a/erpnext/manufacturing/report/work_order_summary/work_order_summary.js b/erpnext/manufacturing/report/work_order_summary/work_order_summary.js
index ec9fe35..2292865 100644
--- a/erpnext/manufacturing/report/work_order_summary/work_order_summary.js
+++ b/erpnext/manufacturing/report/work_order_summary/work_order_summary.js
@@ -13,17 +13,38 @@
 			reqd: 1
 		},
 		{
-			label: __("From Date"),
+			fieldname: "fiscal_year",
+			label: __("Fiscal Year"),
+			fieldtype: "Link",
+			options: "Fiscal Year",
+			default: frappe.defaults.get_user_default("fiscal_year"),
+			reqd: 1,
+			on_change: function(query_report) {
+				var fiscal_year = query_report.get_values().fiscal_year;
+				if (!fiscal_year) {
+					return;
+				}
+				frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
+					var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
+					frappe.query_report.set_filter_value({
+						from_date: fy.year_start_date,
+						to_date: fy.year_end_date
+					});
+				});
+			}
+		},
+		{
+			label: __("From Posting Date"),
 			fieldname:"from_date",
 			fieldtype: "Date",
-			default: frappe.datetime.add_months(frappe.datetime.get_today(), -12),
+			default: frappe.defaults.get_user_default("year_start_date"),
 			reqd: 1
 		},
 		{
-			label: __("To Date"),
+			label: __("To Posting Datetime"),
 			fieldname:"to_date",
 			fieldtype: "Date",
-			default: frappe.datetime.get_today(),
+			default: frappe.defaults.get_user_default("year_end_date"),
 			reqd: 1,
 		},
 		{
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 481cd35..1d2bb12 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -692,3 +692,4 @@
 erpnext.patches.v12_0.update_bom_in_so_mr
 execute:frappe.delete_doc("Report", "Department Analytics")
 execute:frappe.rename_doc("Desk Page", "Loan Management", "Loan", force=True)
+erpnext.patches.v13_0.delete_old_purchase_reports
\ No newline at end of file
diff --git a/erpnext/patches/v13_0/delete_old_purchase_reports.py b/erpnext/patches/v13_0/delete_old_purchase_reports.py
new file mode 100644
index 0000000..8271d2e
--- /dev/null
+++ b/erpnext/patches/v13_0/delete_old_purchase_reports.py
@@ -0,0 +1,15 @@
+# Copyright (c) 2019, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+
+import frappe
+
+def execute():
+	reports_to_delete = ["Requested Items To Be Ordered",
+		"Purchase Order Items To Be Received or Billed","Purchase Order Items To Be Received",
+		"Purchase Order Items To Be Billed"]
+
+	for report in reports_to_delete:
+		if frappe.db.exists("Report", report):
+			frappe.delete_doc("Report", report)
\ No newline at end of file
diff --git a/erpnext/stock/desk_page/stock/stock.json b/erpnext/stock/desk_page/stock/stock.json
index 4506664..9404292 100644
--- a/erpnext/stock/desk_page/stock/stock.json
+++ b/erpnext/stock/desk_page/stock/stock.json
@@ -33,7 +33,7 @@
   {
    "hidden": 0,
    "label": "Key Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Item Price\"\n        ],\n        \"doctype\": \"Item Price\",\n        \"is_query_report\": false,\n        \"label\": \"Item-wise Price List Rate\",\n        \"name\": \"Item-wise Price List Rate\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Stock Entry\"\n        ],\n        \"doctype\": \"Stock Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Stock Analytics\",\n        \"name\": \"Stock Analytics\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Delivery Note\"\n        ],\n        \"doctype\": \"Delivery Note\",\n        \"is_query_report\": true,\n        \"label\": \"Delivery Note Trends\",\n        \"name\": \"Delivery Note Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Receipt\"\n        ],\n        \"doctype\": \"Purchase Receipt\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Receipt Trends\",\n        \"name\": \"Purchase Receipt Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Delivery Note\"\n        ],\n        \"doctype\": \"Delivery Note\",\n        \"is_query_report\": true,\n        \"label\": \"Ordered Items To Be Delivered\",\n        \"name\": \"Ordered Items To Be Delivered\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Receipt\"\n        ],\n        \"doctype\": \"Purchase Receipt\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Order Items To Be Received\",\n        \"name\": \"Purchase Order Items To Be Received\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Bin\"\n        ],\n        \"doctype\": \"Bin\",\n        \"is_query_report\": true,\n        \"label\": \"Item Shortage Report\",\n        \"name\": \"Item Shortage Report\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Batch\"\n        ],\n        \"doctype\": \"Batch\",\n        \"is_query_report\": true,\n        \"label\": \"Batch-Wise Balance History\",\n        \"name\": \"Batch-Wise Balance History\",\n        \"type\": \"report\"\n    }\n]"
+   "links": "[\n    {\n        \"dependencies\": [\n            \"Item Price\"\n        ],\n        \"doctype\": \"Item Price\",\n        \"is_query_report\": false,\n        \"label\": \"Item-wise Price List Rate\",\n        \"name\": \"Item-wise Price List Rate\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Stock Entry\"\n        ],\n        \"doctype\": \"Stock Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Stock Analytics\",\n        \"name\": \"Stock Analytics\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Delivery Note\"\n        ],\n        \"doctype\": \"Delivery Note\",\n        \"is_query_report\": true,\n        \"label\": \"Delivery Note Trends\",\n        \"name\": \"Delivery Note Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Receipt\"\n        ],\n        \"doctype\": \"Purchase Receipt\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Receipt Trends\",\n        \"name\": \"Purchase Receipt Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Delivery Note\"\n        ],\n        \"doctype\": \"Delivery Note\",\n        \"is_query_report\": true,\n        \"label\": \"Ordered Items To Be Delivered\",\n        \"name\": \"Ordered Items To Be Delivered\",\n        \"type\": \"report\"\n    },\n   {\n         \"dependencies\": [\n            \"Purchase Order\"\n        ],\n        \"doctype\": \"Purchase Order\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Order Analysis\",\n        \"name\": \"Purchase Order Analysis\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Bin\"\n        ],\n        \"doctype\": \"Bin\",\n        \"is_query_report\": true,\n        \"label\": \"Item Shortage Report\",\n        \"name\": \"Item Shortage Report\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Batch\"\n        ],\n        \"doctype\": \"Batch\",\n        \"is_query_report\": true,\n        \"label\": \"Batch-Wise Balance History\",\n        \"name\": \"Batch-Wise Balance History\",\n        \"type\": \"report\"\n    }\n]"
   },
   {
    "hidden": 0,
@@ -58,7 +58,7 @@
  "idx": 0,
  "is_standard": 1,
  "label": "Stock",
- "modified": "2020-05-19 17:36:08.185652",
+ "modified": "2020-05-27 20:38:25.255323",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock",
@@ -69,7 +69,7 @@
  "shortcuts": [
   {
    "color": "#cef6d1",
-   "format": "{}  available",
+   "format": "{}  Available",
    "label": "Item",
    "link_to": "Item",
    "stats_filter": "{\n    \"disabled\" : 0\n}",
@@ -90,7 +90,7 @@
   },
   {
    "color": "#ffe8cd",
-   "format": "{} to Bill",
+   "format": "{} To Bill",
    "label": "Purchase Receipt",
    "link_to": "Purchase Receipt",
    "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"To Bill\"\n}",
@@ -98,7 +98,7 @@
   },
   {
    "color": "#ffe8cd",
-   "format": "{} to Bill",
+   "format": "{} To Bill",
    "label": "Delivery Note",
    "link_to": "Delivery Note",
    "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"To Bill\"\n}",
@@ -115,7 +115,7 @@
    "type": "Report"
   },
   {
-   "label": "Stock Dashboard",
+   "label": "Dashboard",
    "link_to": "Stock",
    "type": "Dashboard"
   }
diff --git a/erpnext/stock/report/purchase_order_items_to_be_received/__init__.py b/erpnext/stock/report/purchase_order_items_to_be_received/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/stock/report/purchase_order_items_to_be_received/__init__.py
+++ /dev/null
diff --git a/erpnext/stock/report/purchase_order_items_to_be_received/purchase_order_items_to_be_received.json b/erpnext/stock/report/purchase_order_items_to_be_received/purchase_order_items_to_be_received.json
deleted file mode 100644
index dfaa9ed..0000000
--- a/erpnext/stock/report/purchase_order_items_to_be_received/purchase_order_items_to_be_received.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "add_total_row": 1,
- "creation": "2013-02-22 18:01:55",
- "disable_prepared_report": 0,
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Report",
- "idx": 3,
- "is_standard": "Yes",
- "modified": "2019-04-01 22:12:05.573343",
- "modified_by": "Administrator",
- "module": "Stock",
- "name": "Purchase Order Items To Be Received",
- "owner": "Administrator",
- "prepared_report": 0,
- "query": "select \n    `tabPurchase Order`.`name` as \"Purchase Order:Link/Purchase Order:120\",\n    `tabPurchase Order`.`status` as \"Status:Data:120\",\n\t`tabPurchase Order`.`transaction_date` as \"Date:Date:100\",\n\t`tabPurchase Order Item`.`schedule_date` as \"Reqd by Date:Date:110\",\n\t`tabPurchase Order`.`supplier` as \"Supplier:Link/Supplier:120\",\n\t`tabPurchase Order`.`supplier_name` as \"Supplier Name::150\",\n\t`tabPurchase Order Item`.`project` as \"Project\",\n\t`tabPurchase Order Item`.item_code as \"Item Code:Link/Item:120\",\n\t`tabPurchase Order Item`.qty as \"Qty:Float:100\",\n\t`tabPurchase Order Item`.received_qty as \"Received Qty:Float:100\", \n\t(`tabPurchase Order Item`.qty - ifnull(`tabPurchase Order Item`.received_qty, 0)) as \"Qty to Receive:Float:100\",\n    `tabPurchase Order Item`.warehouse as \"Warehouse:Link/Warehouse:150\",\n\t`tabPurchase Order Item`.item_name as \"Item Name::150\",\n\t`tabPurchase Order Item`.description as \"Description::200\",\n    `tabPurchase Order Item`.brand as \"Brand::100\",\n\t`tabPurchase Order`.`company` as \"Company:Link/Company:\"\nfrom\n\t`tabPurchase Order`, `tabPurchase Order Item`\nwhere\n\t`tabPurchase Order Item`.`parent` = `tabPurchase Order`.`name`\n\tand `tabPurchase Order`.docstatus = 1\n\tand `tabPurchase Order`.status not in (\"Stopped\", \"Closed\")\n\tand ifnull(`tabPurchase Order Item`.received_qty, 0) < ifnull(`tabPurchase Order Item`.qty, 0)\norder by `tabPurchase Order`.transaction_date asc",
- "ref_doctype": "Purchase Receipt",
- "report_name": "Purchase Order Items To Be Received",
- "report_type": "Query Report",
- "roles": [
-  {
-   "role": "Stock Manager"
-  },
-  {
-   "role": "Stock User"
-  },
-  {
-   "role": "Purchase User"
-  },
-  {
-   "role": "Accounts User"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/stock/report/purchase_order_items_to_be_received_or_billed/__init__.py b/erpnext/stock/report/purchase_order_items_to_be_received_or_billed/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/stock/report/purchase_order_items_to_be_received_or_billed/__init__.py
+++ /dev/null
diff --git a/erpnext/stock/report/purchase_order_items_to_be_received_or_billed/purchase_order_items_to_be_received_or_billed.json b/erpnext/stock/report/purchase_order_items_to_be_received_or_billed/purchase_order_items_to_be_received_or_billed.json
deleted file mode 100644
index 48c0f42..0000000
--- a/erpnext/stock/report/purchase_order_items_to_be_received_or_billed/purchase_order_items_to_be_received_or_billed.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "add_total_row": 0,
- "creation": "2019-09-16 14:10:33.102865",
- "disable_prepared_report": 0,
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Report",
- "idx": 0,
- "is_standard": "Yes",
- "modified": "2019-09-21 15:19:55.710578",
- "modified_by": "Administrator",
- "module": "Stock",
- "name": "Purchase Order Items To Be Received or Billed",
- "owner": "Administrator",
- "prepared_report": 0,
- "query": "SELECT\n\t`poi_pri`.`purchase_order` as \"Purchase Order:Link/Purchase Order:120\",\n\t`poi_pri`.`status` as \"Status:Data:120\",\n\t`poi_pri`.`transaction_date` as \"Date:Date:100\",\n\t`poi_pri`.`schedule_date` as \"Reqd by Date:Date:110\",\n\t`poi_pri`.`supplier` as \"Supplier:Link/Supplier:120\",\n\t`poi_pri`.`supplier_name` as \"Supplier Name::150\",\n\t`poi_pri`.`item_code` as \"Item Code:Link/Item:120\",\n\t`poi_pri`.`qty` as \"Qty:Float:100\",\n\t`poi_pri`.`base_amount` as  \"Base Amount:Currency:100\",\n\t`poi_pri`.`received_qty` as \"Received Qty:Float:100\",\n\t`poi_pri`.`received_amount` as \"Received Qty Amount:Currency:100\",\n\t`poi_pri`.`qty_to_receive` as \"Qty to Receive:Float:100\",\n\t`poi_pri`.`amount_to_be_received` as \"Amount to Receive:Currency:100\",\n\t`poi_pri`.`billed_amount` as  \"Billed Amount:Currency:100\",\n\t`poi_pri`.`amount_to_be_billed` as  \"Amount To Be Billed:Currency:100\",\n\tSUM(`pii`.`qty`) AS \"Billed Qty:Float:100\",\n\t`poi_pri`.qty - SUM(`pii`.`qty`) AS \"Qty To Be Billed:Float:100\",\n\t`poi_pri`.`warehouse` as \"Warehouse:Link/Warehouse:150\",\n\t`poi_pri`.`item_name` as \"Item Name::150\",\n\t`poi_pri`.`description` as \"Description::200\",\n\t`poi_pri`.`brand` as \"Brand::100\",\n\t`poi_pri`.`project` as \"Project\",\n\t`poi_pri`.`company` as \"Company:Link/Company:\"\nFROM\n\t(SELECT\n\t\t`po`.`name` AS 'purchase_order',\n\t\t`po`.`status`,\n\t\t`po`.`company`,\n\t\t`poi`.`warehouse`,\n\t\t`poi`.`brand`,\n\t\t`poi`.`description`,\n\t\t`po`.`transaction_date`,\n\t\t`poi`.`schedule_date`,\n\t\t`po`.`supplier`,\n\t\t`po`.`supplier_name`,\n\t\t`poi`.`project`,\n\t\t`poi`.`item_code`,\n\t\t`poi`.`item_name`,\n\t\t`poi`.`qty`,\n\t\t`poi`.`base_amount`,\n\t\t`poi`.`received_qty`,\n\t\t(`poi`.billed_amt * ifnull(`po`.conversion_rate, 1)) as billed_amount,\n\t\t(`poi`.base_amount - (`poi`.billed_amt * ifnull(`po`.conversion_rate, 1))) as amount_to_be_billed,\n\t\t`poi`.`qty` - IFNULL(`poi`.`received_qty`, 0) AS 'qty_to_receive',\n\t\t(`poi`.`qty` - IFNULL(`poi`.`received_qty`, 0)) * `poi`.`rate` AS 'amount_to_be_received',\n\t\tSUM(`pri`.`amount`) AS 'received_amount',\n\t\t`poi`.`name` AS 'poi_name',\n\t\t`pri`.`name` AS 'pri_name'\n\tFROM\n\t\t`tabPurchase Order` po\n\t\tLEFT JOIN `tabPurchase Order Item` poi\n\t\tON `poi`.`parent` = `po`.`name`\n\t\tLEFT JOIN `tabPurchase Receipt Item` pri\n\t\tON `pri`.`purchase_order_item` = `poi`.`name`\n\t\t\tAND `pri`.`docstatus`=1\n\tWHERE\n\t\t`po`.`status` not in ('Stopped', 'Closed')\n\t\tAND `po`.`docstatus` = 1\n\t\tAND IFNULL(`poi`.`received_qty`, 0) < IFNULL(`poi`.`qty`, 0)\n\tGROUP BY `poi`.`name`\n\tORDER BY `po`.`transaction_date` ASC\n\t) poi_pri\n\tLEFT JOIN `tabPurchase Invoice Item` pii\n\tON `pii`.`po_detail` = `poi_pri`.`poi_name`\n\t\tAND `pii`.`docstatus`=1\nGROUP BY `poi_pri`.`poi_name`",
- "ref_doctype": "Purchase Order",
- "report_name": "Purchase Order Items To Be Received or Billed",
- "report_type": "Query Report",
- "roles": [
-  {
-   "role": "Purchase Manager"
-  },
-  {
-   "role": "Purchase User"
-  },
-  {
-   "role": "Stock User"
-  },
-  {
-   "role": "Stock Manager"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index ea96503..024aa6f 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -166,7 +166,7 @@
 		last_transaction_time = frappe.db.sql("""
 			select MAX(timestamp(posting_date, posting_time)) as posting_time
 			from `tabStock Ledger Entry`
-			where docstatus = 1 and fiscal_year = %s""", (fiscal_year))[0][0]
+			where docstatus = 1""")[0][0]
 
 		cur_doc_posting_datetime = "%s %s" % (self.posting_date, self.get("posting_time") or "00:00:00")