From cdb31816918c8d07344f9af4b7cdf43d0f2b959e Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Sat, 22 Apr 2023 09:49:47 +0530 Subject: [PATCH] fix: Reserve and Unreserve buttons visibility in SO --- .../doctype/sales_order/sales_order.js | 22 +++++++++---------- .../doctype/sales_order/sales_order.py | 18 +++++++-------- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 37c229417f..417e93b4b0 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -66,18 +66,16 @@ frappe.ui.form.on("Sales Order", { } if (frm.is_new()) { - frappe.db.get_single_value("Stock Settings", "enable_stock_reservation").then((value) => { - if (value) { - frappe.db.get_single_value("Stock Settings", "reserve_stock_on_sales_order_submission").then((value) => { - // If `Reserve Stock on Sales Order Submission` is enabled in Stock Settings, set Reserve Stock to 1 else 0. - frm.set_value("reserve_stock", value ? 1 : 0); - }) - } else { - // If `Stock Reservation` is disabled in Stock Settings, set Reserve Stock to 0 and read only. - frm.set_value("reserve_stock", 0); - frm.set_df_property("reserve_stock", "read_only", 1); + if (frm.doc.__onload && frm.doc.__onload.enable_stock_reservation) { + if (frm.doc.__onload.reserve_stock_on_so_submission) { + // If `Reserve Stock on Sales Order Submission` is enabled in Stock Settings, set Reserve Stock to 1 else 0. + frm.set_value("reserve_stock", value ? 1 : 0); } - }) + } else { + // If `Stock Reservation` is disabled in Stock Settings, set Reserve Stock to 0 and read only. + frm.set_value("reserve_stock", 0); + frm.set_df_property("reserve_stock", "read_only", 1); + } } } }, @@ -289,7 +287,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } // Stock Reservation > Reserve button will be only visible if the SO has unreserved stock. - if (this.frm.doc.__onload && this.frm.doc.__onload.has_unreserved_stock) { + if (this.frm.doc.__onload && this.frm.doc.__onload.enable_stock_reservation && this.frm.doc.__onload.has_unreserved_stock) { this.frm.add_custom_button(__('Reserve'), () => this.create_stock_reservation_entries(), __('Stock Reservation')); } diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index d6afd10ee1..6abb8edd87 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -33,6 +33,7 @@ from erpnext.stock.doctype.item.item import get_item_defaults from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import ( cancel_stock_reservation_entries, get_sre_reserved_qty_details_for_voucher, + has_reserved_stock, ) from erpnext.stock.get_item_details import get_default_bom, get_price_list_rate from erpnext.stock.stock_balance import get_reserved_qty, update_bin_qty @@ -49,16 +50,13 @@ class SalesOrder(SellingController): super(SalesOrder, self).__init__(*args, **kwargs) def onload(self) -> None: - if frappe.get_cached_value("Stock Settings", None, "enable_stock_reservation"): - from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import ( - has_reserved_stock, - ) - - if has_reserved_stock(self.doctype, self.name): - self.set_onload("has_reserved_stock", True) - - if self.has_unreserved_stock(): - self.set_onload("has_unreserved_stock", True) + stock_settings = frappe.get_doc("Stock Settings") + self.set_onload("enable_stock_reservation", stock_settings.enable_stock_reservation) + self.set_onload( + "reserve_stock_on_so_submission", stock_settings.reserve_stock_on_sales_order_submission + ) + self.set_onload("has_reserved_stock", has_reserved_stock(self.doctype, self.name)) + self.set_onload("has_unreserved_stock", self.has_unreserved_stock()) def validate(self): super(SalesOrder, self).validate()