fix: validation for `Non-Stock` item in Sales Order Reservation
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 13310f9..d6afd10 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -538,9 +538,22 @@
sre_count = 0
reserved_qty_details = get_sre_reserved_qty_details_for_voucher("Sales Order", self.name)
for item in self.get("items"):
+ # Skip if `Reserved Stock` is not checked for the item.
if not item.get("reserve_stock"):
continue
+ # Skip if Non-Stock Item.
+ if not frappe.get_cached_value("Item", item.item_code, "is_stock_item"):
+ frappe.msgprint(
+ _("Row #{0}: Stock cannot be reserved for a non-stock Item {1}").format(
+ item.idx, frappe.bold(item.item_code)
+ ),
+ title=_("Stock Reservation"),
+ indicator="yellow",
+ )
+ item.db_set("reserve_stock", 0)
+ continue
+
unreserved_qty = get_unreserved_qty(item, reserved_qty_details)
# Stock is already reserved for the item, notify the user and skip the item.