Merge pull request #57668 from Shllokkk/reserve-stock-accept-dict-doc

fix: allow reserving stock from work order dialog
This commit is contained in:
Shllokkk
2026-07-31 21:15:49 +05:30
committed by GitHub
2 changed files with 12 additions and 9 deletions

View File

@@ -546,10 +546,10 @@ class WorkOrderStockReservation:
@frappe.whitelist() @frappe.whitelist()
def make_stock_reservation_entries( def make_stock_reservation_entries(
doc: str | Document, items: str | list | None = None, is_transfer: bool = True, notify: bool = False doc: str | dict, items: str | list | None = None, is_transfer: bool = True, notify: bool = False
): ):
"""Whitelisted entry point: verify Work Order write access, then reserve stock.""" """Whitelisted entry point: verify Work Order write access, then reserve stock."""
if isinstance(doc, str): if isinstance(doc, str | dict):
doc = parse_json(doc) doc = parse_json(doc)
doc = frappe.get_doc("Work Order", doc.get("name")) doc = frappe.get_doc("Work Order", doc.get("name"))

View File

@@ -1199,7 +1199,7 @@ class StockReservation:
self.available_qty_to_reserve = self.get_available_qty_to_reserve(item_code, warehouse) self.available_qty_to_reserve = self.get_available_qty_to_reserve(item_code, warehouse)
if not self.available_qty_to_reserve: if not self.available_qty_to_reserve:
self.throw_stock_not_exists_error(item.idx, item_code, warehouse) self.throw_stock_not_exists_error(item.get("idx"), item_code, warehouse)
self.qty_to_be_reserved = ( self.qty_to_be_reserved = (
qty if self.available_qty_to_reserve >= qty else self.available_qty_to_reserve qty if self.available_qty_to_reserve >= qty else self.available_qty_to_reserve
@@ -1259,13 +1259,16 @@ class StockReservation:
) )
def throw_stock_not_exists_error(self, idx, item_code, warehouse): def throw_stock_not_exists_error(self, idx, item_code, warehouse):
frappe.msgprint( if idx:
_("Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.").format( msg = _("Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.").format(
idx, frappe.bold(item_code), frappe.bold(warehouse) idx, frappe.bold(item_code), frappe.bold(warehouse)
), )
title=_("Stock Reservation"), else:
indicator="orange", msg = _("Stock not available to reserve for the Item {0} in Warehouse {1}.").format(
) frappe.bold(item_code), frappe.bold(warehouse)
)
frappe.msgprint(msg, title=_("Stock Reservation"), indicator="orange")
def get_available_qty_to_reserve(self, item_code, warehouse, ignore_sre=None): def get_available_qty_to_reserve(self, item_code, warehouse, ignore_sre=None):
available_qty = get_stock_balance(item_code, warehouse) available_qty = get_stock_balance(item_code, warehouse)