From b879c491b0cc5b175eafb2605c09b5193e29ce29 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Tue, 11 Aug 2026 17:53:47 +0530 Subject: [PATCH] fix: set auto reserve stock flag before packing list generation enable_auto_reserve_stock ran at the end of validate, after make_packing_list. On a new Sales Order saved with auto_reserve_stock enabled, packed item rows were built while the parent reserve_stock flag was still unset, so they never inherited it. Since the stamping in packed_item.py is gated on doc.is_new(), later saves could not repair the rows either; only the client-side toggle could. Move the auto-enable before packing list generation so packed rows are stamped on first save. --- erpnext/selling/doctype/sales_order/sales_order.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 784feff8ed7..d7a255f2791 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -238,6 +238,9 @@ class SalesOrder(SellingController): validate_coupon_code(self.coupon_code) + if not self.get("is_subcontracted"): + SalesOrderStockReservation(self).enable_auto_reserve_stock() + make_packing_list(self) self.validate_with_previous_doc() @@ -247,8 +250,6 @@ class SalesOrder(SellingController): StatusService(self).set_default_statuses() self.reset_default_field_value("set_warehouse", "items", "warehouse") - if not self.get("is_subcontracted"): - SalesOrderStockReservation(self).enable_auto_reserve_stock() def set_has_unit_price_items(self): """