fix: Reserve and Unreserve buttons visibility in SO

This commit is contained in:
s-aga-r 2023-04-22 09:49:47 +05:30
parent b70273b988
commit cdb3181691
2 changed files with 18 additions and 22 deletions

View File

@ -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'));
}

View File

@ -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()