From 4d784b8fc7e4324d2f67efe3885a7cb650f4b878 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Tue, 8 Jul 2025 17:52:19 +0530 Subject: [PATCH] fix: sort available batches based on expiry --- .../serial_and_batch_bundle/serial_and_batch_bundle.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py index c9dc82fc612..c680e8a78fa 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py @@ -2222,6 +2222,9 @@ def get_auto_batch_nos(kwargs): picked_batches, ) + if kwargs.based_on == "Expiry": + available_batches = sorted(available_batches, key=lambda x: (x.expiry_date or "9999-12-31")) + if not kwargs.get("do_not_check_future_batches") and available_batches and kwargs.get("posting_date"): filter_zero_near_batches(available_batches, kwargs) @@ -2321,6 +2324,7 @@ def get_available_batches(kwargs): batch_ledger.batch_no, batch_ledger.warehouse, Sum(batch_ledger.qty).as_("qty"), + batch_table.expiry_date, ) .where(batch_table.disabled == 0) .where(stock_ledger_entry.is_cancelled == 0) @@ -2611,6 +2615,7 @@ def get_stock_ledgers_batches(kwargs): stock_ledger_entry.item_code, Sum(stock_ledger_entry.actual_qty).as_("qty"), stock_ledger_entry.batch_no, + batch_table.expiry_date, ) .where((stock_ledger_entry.is_cancelled == 0) & (stock_ledger_entry.batch_no.isnotnull())) .groupby(stock_ledger_entry.batch_no, stock_ledger_entry.warehouse)