fix: prevent reuse of serial no in manufacture and repack entry

This commit is contained in:
Rohit Waghchaure
2025-11-05 15:09:50 +05:30
parent 689eee767d
commit 48b537dc8c
3 changed files with 81 additions and 6 deletions

View File

@@ -419,12 +419,7 @@ class SerialBatchBundle:
self.update_serial_no_status_warehouse(self.sle, serial_nos)
def update_serial_no_status_warehouse(self, sle, serial_nos):
warehouse = sle.warehouse if sle.actual_qty > 0 else None
if isinstance(serial_nos, str):
serial_nos = [serial_nos]
def get_status_for_serial_nos(self, sle):
status = "Inactive"
if sle.actual_qty < 0:
status = "Delivered"
@@ -438,6 +433,23 @@ class SerialBatchBundle:
]:
status = "Consumed"
if sle.is_cancelled == 1 and (
sle.voucher_type in ["Purchase Invoice", "Purchase Receipt"] or status == "Consumed"
):
status = "Inactive"
return status
def update_serial_no_status_warehouse(self, sle, serial_nos):
warehouse = sle.warehouse if sle.actual_qty > 0 else None
if isinstance(serial_nos, str):
serial_nos = [serial_nos]
status = "Active"
if not warehouse:
status = self.get_status_for_serial_nos(sle)
customer = None
if sle.voucher_type in ["Sales Invoice", "Delivery Note"] and sle.actual_qty < 0:
customer = frappe.get_cached_value(sle.voucher_type, sle.voucher_no, "customer")