From 875fc72842bca81810f2997e28c70d33522457e2 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 1 Jul 2026 19:29:16 +0530 Subject: [PATCH] test: flag an SLE whose balance is out of sync with the FIFO queue --- ...eue_vs_qty_after_transaction_comparison.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/test_fifo_queue_vs_qty_after_transaction_comparison.py b/erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/test_fifo_queue_vs_qty_after_transaction_comparison.py index 8f1b32f1209..f930edad2df 100644 --- a/erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/test_fifo_queue_vs_qty_after_transaction_comparison.py +++ b/erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/test_fifo_queue_vs_qty_after_transaction_comparison.py @@ -28,6 +28,29 @@ class TestFifoQueueVsQtyAfterTransactionComparison(ERPNextTestSuite): item_codes = [row.get("item_code") for row in data if row] self.assertNotIn(item, item_codes) + def test_queue_out_of_sync_is_flagged(self): + item = "_Test Item 2" + warehouse = "Stores - _TC" + frappe.db.set_value("Item", item, "valuation_method", "FIFO") + + entry = make_stock_entry( + item_code=item, to_warehouse=warehouse, qty=10, rate=100, posting_date="2026-06-01" + ) + sle = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_no": entry.name, "item_code": item, "warehouse": warehouse}, + "name", + ) + + # corrupt the running balance so it no longer matches the FIFO queue (the queue holds 10, + # but the stored qty_after_transaction now claims 7) + frappe.db.set_value("Stock Ledger Entry", sle, "qty_after_transaction", 7, update_modified=False) + + data = self.run_report({"company": "_Test Company", "item_code": item, "warehouse": warehouse}) + + flagged = {row.get("name") for row in data if row} + self.assertIn(sle, flagged) + def test_requires_a_filter(self): with self.assertRaises(frappe.ValidationError): self.run_report({"company": "_Test Company"})