feat: maintain Reserved Stock
in Bin
This commit is contained in:
parent
98d6cdd53c
commit
f52916a2c3
@ -148,6 +148,17 @@ class Bin(Document):
|
||||
self.set_projected_qty()
|
||||
self.db_set("projected_qty", self.projected_qty, update_modified=True)
|
||||
|
||||
def update_reserved_stock(self):
|
||||
"""Update `Reserved Stock` on change in Reserved Qty of Stock Reservation Entry"""
|
||||
|
||||
from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
|
||||
get_sre_reserved_qty_for_item_and_warehouse,
|
||||
)
|
||||
|
||||
reserved_stock = get_sre_reserved_qty_for_item_and_warehouse(self.item_code, self.warehouse)
|
||||
|
||||
self.db_set("reserved_stock", flt(reserved_stock), update_modified=True)
|
||||
|
||||
|
||||
def on_doctype_update():
|
||||
frappe.db.add_unique("Bin", ["item_code", "warehouse"], constraint_name="unique_item_warehouse")
|
||||
|
@ -365,6 +365,9 @@ class DeliveryNote(SellingController):
|
||||
# Update Stock Reservation Entry `Status` based on `Delivered Qty`.
|
||||
sre_doc.update_status()
|
||||
|
||||
# Update Reserved Stock in Bin.
|
||||
sre_doc.update_reserved_stock_in_bin()
|
||||
|
||||
qty_to_deliver -= qty_can_be_deliver
|
||||
|
||||
if self._action == "cancel":
|
||||
@ -427,6 +430,9 @@ class DeliveryNote(SellingController):
|
||||
# Update Stock Reservation Entry `Status` based on `Delivered Qty`.
|
||||
sre_doc.update_status()
|
||||
|
||||
# Update Reserved Stock in Bin.
|
||||
sre_doc.update_reserved_stock_in_bin()
|
||||
|
||||
qty_to_undelivered -= qty_can_be_undelivered
|
||||
|
||||
def validate_against_stock_reservation_entries(self):
|
||||
|
@ -9,6 +9,8 @@ from frappe.model.document import Document
|
||||
from frappe.query_builder.functions import Sum
|
||||
from frappe.utils import cint, flt
|
||||
|
||||
from erpnext.stock.utils import get_or_make_bin
|
||||
|
||||
|
||||
class StockReservationEntry(Document):
|
||||
def validate(self) -> None:
|
||||
@ -31,6 +33,7 @@ class StockReservationEntry(Document):
|
||||
self.update_reserved_qty_in_voucher()
|
||||
self.update_reserved_qty_in_pick_list()
|
||||
self.update_status()
|
||||
self.update_reserved_stock_in_bin()
|
||||
|
||||
def on_update_after_submit(self) -> None:
|
||||
self.can_be_updated()
|
||||
@ -40,12 +43,14 @@ class StockReservationEntry(Document):
|
||||
self.validate_reservation_based_on_serial_and_batch()
|
||||
self.update_reserved_qty_in_voucher()
|
||||
self.update_status()
|
||||
self.update_reserved_stock_in_bin()
|
||||
self.reload()
|
||||
|
||||
def on_cancel(self) -> None:
|
||||
self.update_reserved_qty_in_voucher()
|
||||
self.update_reserved_qty_in_pick_list()
|
||||
self.update_status()
|
||||
self.update_reserved_stock_in_bin()
|
||||
|
||||
def validate_amended_doc(self) -> None:
|
||||
"""Raises an exception if document is amended."""
|
||||
@ -341,6 +346,13 @@ class StockReservationEntry(Document):
|
||||
update_modified=update_modified,
|
||||
)
|
||||
|
||||
def update_reserved_stock_in_bin(self) -> None:
|
||||
"""Updates `Reserved Stock` in Bin."""
|
||||
|
||||
bin_name = get_or_make_bin(self.item_code, self.warehouse)
|
||||
bin_doc = frappe.get_cached_doc("Bin", bin_name)
|
||||
bin_doc.update_reserved_stock()
|
||||
|
||||
def update_status(self, status: str = None, update_modified: bool = True) -> None:
|
||||
"""Updates status based on Voucher Qty, Reserved Qty and Delivered Qty."""
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user