fix: sort available batches based on expiry when merging SLEs with SABB and those without (backport #48471) (#48473)

* fix: sort available batches based on expiry

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
This commit is contained in:
mergify[bot]
2025-07-08 21:23:30 +05:30
committed by GitHub
parent 524619e0b4
commit 7a4c8d81e2
2 changed files with 17 additions and 2 deletions

View File

@@ -305,8 +305,18 @@ class TestBatch(FrappeTestCase):
self.assertEqual(
get_batch_qty(item_code="ITEM-BATCH-2", warehouse="_Test Warehouse - _TC"),
[
{"batch_no": "batch a", "qty": 90.0, "warehouse": "_Test Warehouse - _TC"},
{"batch_no": "batch b", "qty": 90.0, "warehouse": "_Test Warehouse - _TC"},
{
"batch_no": "batch a",
"qty": 90.0,
"warehouse": "_Test Warehouse - _TC",
"expiry_date": None,
},
{
"batch_no": "batch b",
"qty": 90.0,
"warehouse": "_Test Warehouse - _TC",
"expiry_date": None,
},
],
)

View File

@@ -2148,6 +2148,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)
@@ -2247,6 +2250,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)
@@ -2537,6 +2541,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)