mirror of
https://github.com/frappe/erpnext.git
synced 2026-02-18 17:15:04 +00:00
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:
@@ -305,8 +305,18 @@ class TestBatch(FrappeTestCase):
|
|||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
get_batch_qty(item_code="ITEM-BATCH-2", warehouse="_Test Warehouse - _TC"),
|
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,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -2148,6 +2148,9 @@ def get_auto_batch_nos(kwargs):
|
|||||||
picked_batches,
|
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"):
|
if not kwargs.get("do_not_check_future_batches") and available_batches and kwargs.get("posting_date"):
|
||||||
filter_zero_near_batches(available_batches, kwargs)
|
filter_zero_near_batches(available_batches, kwargs)
|
||||||
|
|
||||||
@@ -2247,6 +2250,7 @@ def get_available_batches(kwargs):
|
|||||||
batch_ledger.batch_no,
|
batch_ledger.batch_no,
|
||||||
batch_ledger.warehouse,
|
batch_ledger.warehouse,
|
||||||
Sum(batch_ledger.qty).as_("qty"),
|
Sum(batch_ledger.qty).as_("qty"),
|
||||||
|
batch_table.expiry_date,
|
||||||
)
|
)
|
||||||
.where(batch_table.disabled == 0)
|
.where(batch_table.disabled == 0)
|
||||||
.where(stock_ledger_entry.is_cancelled == 0)
|
.where(stock_ledger_entry.is_cancelled == 0)
|
||||||
@@ -2537,6 +2541,7 @@ def get_stock_ledgers_batches(kwargs):
|
|||||||
stock_ledger_entry.item_code,
|
stock_ledger_entry.item_code,
|
||||||
Sum(stock_ledger_entry.actual_qty).as_("qty"),
|
Sum(stock_ledger_entry.actual_qty).as_("qty"),
|
||||||
stock_ledger_entry.batch_no,
|
stock_ledger_entry.batch_no,
|
||||||
|
batch_table.expiry_date,
|
||||||
)
|
)
|
||||||
.where((stock_ledger_entry.is_cancelled == 0) & (stock_ledger_entry.batch_no.isnotnull()))
|
.where((stock_ledger_entry.is_cancelled == 0) & (stock_ledger_entry.batch_no.isnotnull()))
|
||||||
.groupby(stock_ledger_entry.batch_no, stock_ledger_entry.warehouse)
|
.groupby(stock_ledger_entry.batch_no, stock_ledger_entry.warehouse)
|
||||||
|
|||||||
Reference in New Issue
Block a user