Merge pull request #48471 from mihir-kandoi/st43209

fix: sort available batches based on expiry when merging SLEs with SABB and those without
This commit is contained in:
Mihir Kandoi
2025-07-08 19:47:44 +05:30
committed by GitHub
2 changed files with 17 additions and 2 deletions

View File

@@ -305,8 +305,18 @@ class TestBatch(IntegrationTestCase):
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

@@ -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)