From 0d1332942ca783da76345e17273bdbdf3c2fc76b Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Mon, 20 Mar 2023 19:01:18 +0530 Subject: [PATCH] feat: add `Status` and `Delivered Qty` fields in `Stock Reservation Entry` --- .../stock_reservation_entry.json | 18 +++++++++++++++- .../stock_reservation_entry.py | 21 +++++++++++++++++-- .../stock_reservation_entry_list.js | 14 +++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry_list.js diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json index 47360319c6..dcd7b1f2e6 100644 --- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json +++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json @@ -18,6 +18,7 @@ "voucher_detail_no", "section_break_11", "reserved_qty", + "delivered_qty", "column_break_17", "valuation_rate", "section_break_21", @@ -25,6 +26,7 @@ "stock_uom", "project", "column_break_26", + "status", "is_cancelled" ], "fields": [ @@ -197,12 +199,26 @@ "print_width": "150px", "read_only": 1, "width": "150px" + }, + { + "fieldname": "status", + "fieldtype": "Select", + "hidden": 1, + "label": "Status", + "options": "\nSubmitted\nPartially Delivered\nDelivered\nCancelled", + "read_only": 1 + }, + { + "fieldname": "delivered_qty", + "fieldtype": "Float", + "label": "Delivered Qty", + "read_only": 1 } ], "hide_toolbar": 1, "index_web_pages_for_search": 1, "links": [], - "modified": "2023-03-20 11:17:35.898760", + "modified": "2023-03-20 18:52:46.414108", "modified_by": "Administrator", "module": "Stock", "name": "Stock Reservation Entry", diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py index 50a05bce45..ed2c4a610c 100644 --- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py +++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py @@ -16,6 +16,13 @@ class StockReservationEntry(TransactionBase): validate_disabled_warehouse(self.warehouse) validate_warehouse_company(self.warehouse, self.company) + def on_submit(self): + self.update_status() + + def on_cancel(self): + frappe.db.set_value(self.doctype, self.name, "is_cancelled", 1) + self.update_status() + def validate_mandatory(self): mandatory = [ "item_code", @@ -32,5 +39,15 @@ class StockReservationEntry(TransactionBase): if not self.get(d): frappe.throw(_("{0} is required").format(self.meta.get_label(d))) - def on_cancel(self): - frappe.db.set_value(self.doctype, self.name, "is_cancelled", 1) + def update_status(self, status=None, update_modified=True): + if not status: + if self.is_cancelled: + status = "Cancelled" + elif self.reserved_qty == self.delivered_qty: + status = "Delivered" + elif self.delivered_qty and self.reserved_qty > self.delivered_qty: + status = "Partially Delivered" + else: + status = "Submitted" + + frappe.db.set_value(self.doctype, self.name, "status", status, update_modified=update_modified) diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry_list.js b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry_list.js new file mode 100644 index 0000000000..992c566989 --- /dev/null +++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry_list.js @@ -0,0 +1,14 @@ +// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.listview_settings['Stock Reservation Entry'] = { + get_indicator: function (doc) { + const status_colors = { + 'Submitted': 'blue', + 'Partially Delivered': 'purple', + 'Delivered': 'green', + 'Cancelled': 'red', + }; + return [__(doc.status), status_colors[doc.status], 'status,=,' + doc.status]; + }, +}; \ No newline at end of file