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()
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."""
if isinstance(doc, str):
if isinstance(doc, str | dict):
doc = parse_json(doc)
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)
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 = (
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):
frappe.msgprint(
_("Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.").format(
if idx:
msg = _("Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.").format(
idx, frappe.bold(item_code), frappe.bold(warehouse)
),
title=_("Stock Reservation"),
indicator="orange",
)
)
else:
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):
available_qty = get_stock_balance(item_code, warehouse)