From ce5239132ce7be729710ac3e59c9f8540b265d84 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 26 Jun 2026 10:33:12 +0530 Subject: [PATCH 1/2] test: add coverage for Delayed Item Report report Co-Authored-By: Claude Opus 4.8 (1M context) --- .../test_delayed_item_report.py | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 erpnext/stock/report/delayed_item_report/test_delayed_item_report.py diff --git a/erpnext/stock/report/delayed_item_report/test_delayed_item_report.py b/erpnext/stock/report/delayed_item_report/test_delayed_item_report.py new file mode 100644 index 00000000000..c9c623d1e1e --- /dev/null +++ b/erpnext/stock/report/delayed_item_report/test_delayed_item_report.py @@ -0,0 +1,68 @@ +# Copyright (c) 2026, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +import frappe + +from erpnext.selling.doctype.sales_order.mapper import make_delivery_note +from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order +from erpnext.stock.doctype.item.test_item import make_item +from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry +from erpnext.stock.report.delayed_item_report.delayed_item_report import execute +from erpnext.tests.utils import ERPNextTestSuite + + +class TestDelayedItemReport(ERPNextTestSuite): + def run_report(self, **extra): + filters = frappe._dict( + { + "company": "_Test Company", + "based_on": "Delivery Note", + "from_date": "2026-06-01", + "to_date": "2026-06-30", + } + ) + filters.update(extra) + return execute(filters)[1] + + def test_late_delivery_shows_delay(self): + item = make_item(properties={"is_stock_item": 1, "is_sales_item": 1}).name + + make_stock_entry( + item_code=item, + qty=10, + to_warehouse="_Test Warehouse - _TC", + rate=100, + posting_date="2026-06-01", + company="_Test Company", + ) + + so = make_sales_order( + item_code=item, + qty=10, + rate=100, + transaction_date="2026-06-01", + company="_Test Company", + do_not_submit=True, + ) + so.delivery_date = "2026-06-05" + for row in so.items: + row.delivery_date = "2026-06-05" + so.submit() + + dn = make_delivery_note(so.name) + dn.posting_date = "2026-06-10" + dn.set_posting_time = 1 + dn.insert() + dn.submit() + + rows = self.run_report(sales_order=so.name) + + matching = [r for r in rows if r.get("name") == dn.name and r.get("item_code") == item] + self.assertTrue(matching, f"No report row found for DN {dn.name} / item {item}") + + row = matching[0] + self.assertEqual(row.get("sales_order"), so.name) + self.assertEqual(str(row.get("delivery_date")), "2026-06-05") + self.assertEqual(str(row.get("posting_date")), "2026-06-10") + # delayed_days = date_diff(actual posting_date, expected delivery_date) + self.assertEqual(row.get("delayed_days"), 5) From 6ceddd7a830286ee64a8f49544fe9f5ffa43ffb1 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 26 Jun 2026 13:26:24 +0530 Subject: [PATCH 2/2] test: reuse BootStrapTestData master data to reduce runtime Co-Authored-By: Claude Opus 4.8 (1M context) --- .../report/delayed_item_report/test_delayed_item_report.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/stock/report/delayed_item_report/test_delayed_item_report.py b/erpnext/stock/report/delayed_item_report/test_delayed_item_report.py index c9c623d1e1e..39a8d740803 100644 --- a/erpnext/stock/report/delayed_item_report/test_delayed_item_report.py +++ b/erpnext/stock/report/delayed_item_report/test_delayed_item_report.py @@ -5,7 +5,6 @@ import frappe from erpnext.selling.doctype.sales_order.mapper import make_delivery_note from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order -from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry from erpnext.stock.report.delayed_item_report.delayed_item_report import execute from erpnext.tests.utils import ERPNextTestSuite @@ -25,12 +24,12 @@ class TestDelayedItemReport(ERPNextTestSuite): return execute(filters)[1] def test_late_delivery_shows_delay(self): - item = make_item(properties={"is_stock_item": 1, "is_sales_item": 1}).name + item = "_Test Item" make_stock_entry( item_code=item, qty=10, - to_warehouse="_Test Warehouse - _TC", + to_warehouse="Stores - _TC", rate=100, posting_date="2026-06-01", company="_Test Company", @@ -40,6 +39,7 @@ class TestDelayedItemReport(ERPNextTestSuite): item_code=item, qty=10, rate=100, + warehouse="Stores - _TC", transaction_date="2026-06-01", company="_Test Company", do_not_submit=True,