-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #32280 from s-aga-r/refactor/report/item-shortage-…
…report refactor: rewrite `Item Shortage Report` queries in QB
- Loading branch information
Showing
2 changed files
with
79 additions
and
39 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
51 changes: 51 additions & 0 deletions
51
erpnext/stock/report/item_shortage_report/test_item_shortage_report.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors | ||
# For license information, please see license.txt | ||
|
||
import frappe | ||
from frappe.tests.utils import FrappeTestCase | ||
|
||
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.report.item_shortage_report.item_shortage_report import ( | ||
execute as item_shortage_report, | ||
) | ||
|
||
|
||
class TestItemShortageReport(FrappeTestCase): | ||
def test_item_shortage_report(self): | ||
item = make_item().name | ||
so = make_sales_order(item_code=item) | ||
|
||
reserved_qty, projected_qty = frappe.db.get_value( | ||
"Bin", | ||
{ | ||
"item_code": item, | ||
"warehouse": so.items[0].warehouse, | ||
}, | ||
["reserved_qty", "projected_qty"], | ||
) | ||
self.assertEqual(reserved_qty, so.items[0].qty) | ||
self.assertEqual(projected_qty, -(so.items[0].qty)) | ||
|
||
filters = { | ||
"company": so.company, | ||
} | ||
report_data = item_shortage_report(filters)[1] | ||
item_code_list = [row.get("item_code") for row in report_data] | ||
self.assertIn(item, item_code_list) | ||
|
||
filters = { | ||
"company": so.company, | ||
"warehouse": [so.items[0].warehouse], | ||
} | ||
report_data = item_shortage_report(filters)[1] | ||
item_code_list = [row.get("item_code") for row in report_data] | ||
self.assertIn(item, item_code_list) | ||
|
||
filters = { | ||
"company": so.company, | ||
"warehouse": ["Work In Progress - _TC"], | ||
} | ||
report_data = item_shortage_report(filters)[1] | ||
item_code_list = [row.get("item_code") for row in report_data] | ||
self.assertNotIn(item, item_code_list) |