feat: add `Status` and `Delivered Qty` fields in `Stock Reservation Entry`
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 4736031..dcd7b1f 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 50a05bc..ed2c4a6 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 @@
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 @@
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 0000000..992c566
--- /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