55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
|
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors
|
||
|
# See license.txt
|
||
|
from random import randint
|
||
|
|
||
|
import frappe
|
||
|
from frappe.tests.utils import FrappeTestCase, change_settings
|
||
|
from frappe.utils.data import today
|
||
|
|
||
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||
|
from erpnext.stock.doctype.stock_reservation_entry.test_stock_reservation_entry import (
|
||
|
cancel_all_stock_reservation_entries,
|
||
|
create_items,
|
||
|
create_material_receipt,
|
||
|
)
|
||
|
from erpnext.stock.report.reserved_stock.reserved_stock import get_data as reserved_stock_report
|
||
|
|
||
|
|
||
|
class TestReservedStock(FrappeTestCase):
|
||
|
def setUp(self) -> None:
|
||
|
super().setUp()
|
||
|
self.stock_qty = 100
|
||
|
self.warehouse = "_Test Warehouse - _TC"
|
||
|
|
||
|
def tearDown(self) -> None:
|
||
|
cancel_all_stock_reservation_entries()
|
||
|
return super().tearDown()
|
||
|
|
||
|
@change_settings(
|
||
|
"Stock Settings",
|
||
|
{
|
||
|
"allow_negative_stock": 0,
|
||
|
"enable_stock_reservation": 1,
|
||
|
"auto_reserve_serial_and_batch": 1,
|
||
|
"pick_serial_and_batch_based_on": "FIFO",
|
||
|
},
|
||
|
)
|
||
|
def test_reserved_stock_report(self):
|
||
|
items_details = create_items()
|
||
|
create_material_receipt(items_details, self.warehouse, qty=self.stock_qty)
|
||
|
|
||
|
for item_code, properties in items_details.items():
|
||
|
so = make_sales_order(
|
||
|
item_code=item_code, qty=randint(11, 100), warehouse=self.warehouse, uom=properties.stock_uom
|
||
|
)
|
||
|
so.create_stock_reservation_entries()
|
||
|
|
||
|
data = reserved_stock_report(
|
||
|
filters={
|
||
|
"company": so.company,
|
||
|
"from_date": today(),
|
||
|
"to_date": today(),
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(len(data), len(items_details))
|