mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-21 22:19:18 +00:00
feat: add Status and Delivered Qty fields in Stock Reservation Entry
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
"voucher_detail_no",
|
"voucher_detail_no",
|
||||||
"section_break_11",
|
"section_break_11",
|
||||||
"reserved_qty",
|
"reserved_qty",
|
||||||
|
"delivered_qty",
|
||||||
"column_break_17",
|
"column_break_17",
|
||||||
"valuation_rate",
|
"valuation_rate",
|
||||||
"section_break_21",
|
"section_break_21",
|
||||||
@@ -25,6 +26,7 @@
|
|||||||
"stock_uom",
|
"stock_uom",
|
||||||
"project",
|
"project",
|
||||||
"column_break_26",
|
"column_break_26",
|
||||||
|
"status",
|
||||||
"is_cancelled"
|
"is_cancelled"
|
||||||
],
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
@@ -197,12 +199,26 @@
|
|||||||
"print_width": "150px",
|
"print_width": "150px",
|
||||||
"read_only": 1,
|
"read_only": 1,
|
||||||
"width": "150px"
|
"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,
|
"hide_toolbar": 1,
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2023-03-20 11:17:35.898760",
|
"modified": "2023-03-20 18:52:46.414108",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Stock Reservation Entry",
|
"name": "Stock Reservation Entry",
|
||||||
|
|||||||
@@ -16,6 +16,13 @@ class StockReservationEntry(TransactionBase):
|
|||||||
validate_disabled_warehouse(self.warehouse)
|
validate_disabled_warehouse(self.warehouse)
|
||||||
validate_warehouse_company(self.warehouse, self.company)
|
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):
|
def validate_mandatory(self):
|
||||||
mandatory = [
|
mandatory = [
|
||||||
"item_code",
|
"item_code",
|
||||||
@@ -32,5 +39,15 @@ class StockReservationEntry(TransactionBase):
|
|||||||
if not self.get(d):
|
if not self.get(d):
|
||||||
frappe.throw(_("{0} is required").format(self.meta.get_label(d)))
|
frappe.throw(_("{0} is required").format(self.meta.get_label(d)))
|
||||||
|
|
||||||
def on_cancel(self):
|
def update_status(self, status=None, update_modified=True):
|
||||||
frappe.db.set_value(self.doctype, self.name, "is_cancelled", 1)
|
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)
|
||||||
|
|||||||
@@ -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];
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user