From e3269039d3e14ed030a65fe8d7bf7e96f4396955 Mon Sep 17 00:00:00 2001 From: Afshan Date: Tue, 7 Jul 2020 18:01:37 +0530 Subject: [PATCH 1/4] feat: added columns to get complete analysis for material request --- .../requested_items_to_order.py | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) 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 cca01b104a..e0cd63237d 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 @@ -59,8 +59,11 @@ def get_data(filters, conditions): sum(ifnull(mr_item.stock_qty, 0)) as qty, ifnull(mr_item.stock_uom, '') as uom, sum(ifnull(mr_item.ordered_qty, 0)) as ordered_qty, - (sum(mr_item.stock_qty) - sum(ifnull(mr_item.ordered_qty, 0))) as qty_to_order, + sum(ifnull(mr_item.received_qty, 0)) as received_qty, + (sum(ifnull(mr_item.stock_qty, 0)) - sum(ifnull(mr_item.received_qty, 0))) as pending_qty, + (sum(ifnull(mr_item.stock_qty, 0)) - sum(ifnull(mr_item.ordered_qty, 0))) as qty_to_order, mr_item.item_name as item_name, + mr_item.description as "description", mr.company as company from `tabMaterial Request` mr, `tabMaterial Request Item` mr_item @@ -78,7 +81,7 @@ def get_data(filters, conditions): return data def update_qty_columns(row_to_update, data_row): - fields = ["qty", "ordered_qty", "qty_to_order"] + fields = ["qty", "ordered_qty", "received_qty", "pending_qty", "qty_to_order"] for field in fields: row_to_update[field] += flt(data_row[field]) @@ -92,7 +95,9 @@ def prepare_data(data, filters): item_qty_map[row["item_code"]] = { "qty" : row["qty"], "ordered_qty" : row["ordered_qty"], - "qty_to_order" : row["qty_to_order"] + "received_qty": row["received_qty"], + "pending_qty": row["pending_qty"], + "qty_to_order" : row["qty_to_order"], } else: item_entry = item_qty_map[row["item_code"]] @@ -122,7 +127,7 @@ def prepare_data(data, filters): return data, chart_data def prepare_chart_data(item_data): - labels, qty_to_order, ordered_qty = [], [], [] + labels, qty_to_order, ordered_qty, received_qty, pending_qty = [], [], [], [], [] if len(item_data) > 30: item_data = dict(list(item_data.items())[:30]) @@ -132,6 +137,8 @@ def prepare_chart_data(item_data): labels.append(row) qty_to_order.append(mr_row["qty_to_order"]) ordered_qty.append(mr_row["ordered_qty"]) + received_qty.append(mr_row["received_qty"]) + pending_qty.append(mr_row["pending_qty"]) chart_data = { "data" : { @@ -144,6 +151,14 @@ def prepare_chart_data(item_data): { 'name': _('Ordered Qty'), 'values': ordered_qty + }, + { + 'name': _('Received Qty'), + 'values': received_qty + }, + { + 'name': _('Pending Qty'), + 'values': pending_qty } ] }, @@ -193,7 +208,13 @@ def get_columns(filters): "width": 100 }, { - "label": _("UOM"), + "label": _("Description"), + "fieldname": "description", + "fieldtype": "Data", + "width": 200 + }, + { + "label": _("Stock UOM"), "fieldname": "uom", "fieldtype": "Data", "width": 100, @@ -201,7 +222,7 @@ def get_columns(filters): columns.extend([ { - "label": _("Qty"), + "label": _("Stock Qty"), "fieldname": "qty", "fieldtype": "Float", "width": 120, @@ -214,6 +235,20 @@ def get_columns(filters): "width": 120, "convertible": "qty" }, + { + "label": _("Received Qty"), + "fieldname": "received_qty", + "fieldtype": "Float", + "width": 120, + "convertible": "qty" + }, + { + "label": _("Pending Qty"), + "fieldname": "pending_qty", + "fieldtype": "Float", + "width": 120, + "convertible": "qty" + }, { "label": _("Qty to Order"), "fieldname": "qty_to_order", From dca8a1d69db1c26d2ca70e198c152201f14f4f58 Mon Sep 17 00:00:00 2001 From: Afshan Date: Fri, 10 Jul 2020 14:26:21 +0530 Subject: [PATCH 2/4] renamed "pending qty" to "qty to recieved" --- .../requested_items_to_order.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) 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 e0cd63237d..faf67c9f7f 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 @@ -60,7 +60,7 @@ def get_data(filters, conditions): ifnull(mr_item.stock_uom, '') as uom, sum(ifnull(mr_item.ordered_qty, 0)) as ordered_qty, sum(ifnull(mr_item.received_qty, 0)) as received_qty, - (sum(ifnull(mr_item.stock_qty, 0)) - sum(ifnull(mr_item.received_qty, 0))) as pending_qty, + (sum(ifnull(mr_item.stock_qty, 0)) - sum(ifnull(mr_item.received_qty, 0))) as qty_to_receive, (sum(ifnull(mr_item.stock_qty, 0)) - sum(ifnull(mr_item.ordered_qty, 0))) as qty_to_order, mr_item.item_name as item_name, mr_item.description as "description", @@ -81,7 +81,7 @@ def get_data(filters, conditions): return data def update_qty_columns(row_to_update, data_row): - fields = ["qty", "ordered_qty", "received_qty", "pending_qty", "qty_to_order"] + fields = ["qty", "ordered_qty", "received_qty", "qty_to_receive", "qty_to_order"] for field in fields: row_to_update[field] += flt(data_row[field]) @@ -96,7 +96,7 @@ def prepare_data(data, filters): "qty" : row["qty"], "ordered_qty" : row["ordered_qty"], "received_qty": row["received_qty"], - "pending_qty": row["pending_qty"], + "qty_to_receive": row["qty_to_receive"], "qty_to_order" : row["qty_to_order"], } else: @@ -127,7 +127,7 @@ def prepare_data(data, filters): return data, chart_data def prepare_chart_data(item_data): - labels, qty_to_order, ordered_qty, received_qty, pending_qty = [], [], [], [], [] + labels, qty_to_order, ordered_qty, received_qty, qty_to_receive = [], [], [], [], [] if len(item_data) > 30: item_data = dict(list(item_data.items())[:30]) @@ -138,7 +138,7 @@ def prepare_chart_data(item_data): qty_to_order.append(mr_row["qty_to_order"]) ordered_qty.append(mr_row["ordered_qty"]) received_qty.append(mr_row["received_qty"]) - pending_qty.append(mr_row["pending_qty"]) + qty_to_receive.append(mr_row["qty_to_receive"]) chart_data = { "data" : { @@ -157,8 +157,8 @@ def prepare_chart_data(item_data): 'values': received_qty }, { - 'name': _('Pending Qty'), - 'values': pending_qty + 'name': _('Qty to Receive'), + 'values': qty_to_receive } ] }, @@ -243,8 +243,8 @@ def get_columns(filters): "convertible": "qty" }, { - "label": _("Pending Qty"), - "fieldname": "pending_qty", + "label": _("Qty to Receive"), + "fieldname": "qty_to_receive", "fieldtype": "Float", "width": 120, "convertible": "qty" From 0863beec92340e3606fa9ba7ca5b0abb56b97216 Mon Sep 17 00:00:00 2001 From: Afshan Date: Fri, 10 Jul 2020 15:14:01 +0530 Subject: [PATCH 3/4] created new report named "requested_items_to_order_and_receive" removed report "requested_items_to_order" also wrote a patch for deleting old report from table "tabReport" --- .../__init__.py | 0 .../requested_items_to_order_and_receive.js} | 2 +- .../requested_items_to_order_and_receive.json} | 8 ++++---- .../requested_items_to_order_and_receive.py} | 0 erpnext/patches.txt | 1 + .../v12_0/delete_report_requested_items_to_order.py | 7 +++++++ 6 files changed, 13 insertions(+), 5 deletions(-) rename erpnext/buying/report/{requested_items_to_order => requested_items_to_order_and_receive}/__init__.py (100%) rename erpnext/buying/report/{requested_items_to_order/requested_items_to_order.js => requested_items_to_order_and_receive/requested_items_to_order_and_receive.js} (96%) rename erpnext/buying/report/{requested_items_to_order/requested_items_to_order.json => requested_items_to_order_and_receive/requested_items_to_order_and_receive.json} (71%) rename erpnext/buying/report/{requested_items_to_order/requested_items_to_order.py => requested_items_to_order_and_receive/requested_items_to_order_and_receive.py} (100%) create mode 100644 erpnext/patches/v12_0/delete_report_requested_items_to_order.py diff --git a/erpnext/buying/report/requested_items_to_order/__init__.py b/erpnext/buying/report/requested_items_to_order_and_receive/__init__.py similarity index 100% rename from erpnext/buying/report/requested_items_to_order/__init__.py rename to erpnext/buying/report/requested_items_to_order_and_receive/__init__.py diff --git a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.js b/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js similarity index 96% rename from erpnext/buying/report/requested_items_to_order/requested_items_to_order.js rename to erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js index 9555e8252a..d727584d0a 100644 --- a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.js +++ b/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js @@ -2,7 +2,7 @@ // For license information, please see license.txt /* eslint-disable */ -frappe.query_reports["Requested Items to Order"] = { +frappe.query_reports["Requested Items to Order and Receive"] = { "filters": [ { "fieldname": "company", diff --git a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.json b/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.json similarity index 71% rename from erpnext/buying/report/requested_items_to_order/requested_items_to_order.json rename to erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.json index 4a0578be4b..cb158f50e2 100644 --- a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.json +++ b/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.json @@ -1,21 +1,21 @@ { "add_total_row": 1, - "creation": "2020-05-04 20:23:57.750719", + "creation": "2020-07-10 14:28:21.041310", "disable_prepared_report": 0, "disabled": 0, "docstatus": 0, "doctype": "Report", "idx": 0, "is_standard": "Yes", - "modified": "2020-05-05 13:05:51.723951", + "modified": "2020-07-10 14:28:21.041310", "modified_by": "Administrator", "module": "Buying", - "name": "Requested Items to Order", + "name": "Requested Items to Order and Receive", "owner": "Administrator", "prepared_report": 0, "query": "", "ref_doctype": "Material Request", - "report_name": "Requested Items to Order", + "report_name": "Requested Items to Order and Receive", "report_type": "Script Report", "roles": [ { diff --git a/erpnext/buying/report/requested_items_to_order/requested_items_to_order.py b/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py similarity index 100% rename from erpnext/buying/report/requested_items_to_order/requested_items_to_order.py rename to erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index c7a7abf819..9cd586a220 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -707,3 +707,4 @@ erpnext.patches.v13_0.move_doctype_reports_and_notification_from_hr_to_payroll # erpnext.patches.v13_0.move_payroll_setting_separately_from_hr_settings #22-06-2020 erpnext.patches.v13_0.check_is_income_tax_component #22-06-2020 erpnext.patches.v12_0.add_taxjar_integration_field +erpnext.patches.v12_0.delete_report_requested_items_to_order diff --git a/erpnext/patches/v12_0/delete_report_requested_items_to_order.py b/erpnext/patches/v12_0/delete_report_requested_items_to_order.py new file mode 100644 index 0000000000..0296d47bde --- /dev/null +++ b/erpnext/patches/v12_0/delete_report_requested_items_to_order.py @@ -0,0 +1,7 @@ +import frappe + +def execute(): + frappe.db.sql(""" + DELETE FROM `tabReport` + WHERE name = 'Requested Items to Order' + """) \ No newline at end of file From 6b9acf4476c23673b840cc48ef338a7dd9123a8b Mon Sep 17 00:00:00 2001 From: Afshan Date: Wed, 22 Jul 2020 16:00:18 +0530 Subject: [PATCH 4/4] updated patch to delete auto email reports and moved patch to v13 from v12 --- erpnext/patches.txt | 2 +- .../v12_0/delete_report_requested_items_to_order.py | 7 ------- .../v13_0/delete_report_requested_items_to_order.py | 12 ++++++++++++ 3 files changed, 13 insertions(+), 8 deletions(-) delete mode 100644 erpnext/patches/v12_0/delete_report_requested_items_to_order.py create mode 100644 erpnext/patches/v13_0/delete_report_requested_items_to_order.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 782234069a..da390f54fd 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -708,5 +708,5 @@ erpnext.patches.v13_0.move_doctype_reports_and_notification_from_hr_to_payroll # erpnext.patches.v13_0.move_payroll_setting_separately_from_hr_settings #22-06-2020 erpnext.patches.v13_0.check_is_income_tax_component #22-06-2020 erpnext.patches.v12_0.add_taxjar_integration_field -erpnext.patches.v12_0.delete_report_requested_items_to_order +erpnext.patches.v13_0.delete_report_requested_items_to_order erpnext.patches.v12_0.update_item_tax_template_company diff --git a/erpnext/patches/v12_0/delete_report_requested_items_to_order.py b/erpnext/patches/v12_0/delete_report_requested_items_to_order.py deleted file mode 100644 index 0296d47bde..0000000000 --- a/erpnext/patches/v12_0/delete_report_requested_items_to_order.py +++ /dev/null @@ -1,7 +0,0 @@ -import frappe - -def execute(): - frappe.db.sql(""" - DELETE FROM `tabReport` - WHERE name = 'Requested Items to Order' - """) \ No newline at end of file diff --git a/erpnext/patches/v13_0/delete_report_requested_items_to_order.py b/erpnext/patches/v13_0/delete_report_requested_items_to_order.py new file mode 100644 index 0000000000..94a9fa85a8 --- /dev/null +++ b/erpnext/patches/v13_0/delete_report_requested_items_to_order.py @@ -0,0 +1,12 @@ +import frappe + +def execute(): + """ Check for one or multiple Auto Email Reports and delete """ + auto_email_reports = frappe.db.get_values("Auto Email Report", {"report": "Requested Items to Order"}, ["name"]) + for auto_email_report in auto_email_reports: + frappe.delete_doc("Auto Email Report", auto_email_report[0]) + + frappe.db.sql(""" + DELETE FROM `tabReport` + WHERE name = 'Requested Items to Order' + """) \ No newline at end of file