Merge pull request #35525 from s-aga-r/FIX-STOCK-RESERVATION-TEST-CASE

fix(test): `test_stock_reservation_against_sales_order`
This commit is contained in:
Sagar Sharma 2023-06-01 19:41:12 +05:30 committed by GitHub
commit ebf03a51f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 14 deletions

View File

@ -1890,11 +1890,11 @@ class TestSalesOrder(FrappeTestCase):
) )
from erpnext.stock.doctype.stock_reservation_entry.test_stock_reservation_entry import ( from erpnext.stock.doctype.stock_reservation_entry.test_stock_reservation_entry import (
create_items, create_items,
create_material_receipts, create_material_receipt,
) )
items_details, warehouse = create_items(), "_Test Warehouse - _TC" items_details, warehouse = create_items(), "_Test Warehouse - _TC"
create_material_receipts(items_details, warehouse, qty=10) se = create_material_receipt(items_details, warehouse, qty=10)
item_list = [] item_list = []
for item_code, properties in items_details.items(): for item_code, properties in items_details.items():
@ -1932,8 +1932,10 @@ class TestSalesOrder(FrappeTestCase):
self.assertEqual(item.stock_reserved_qty, sre_details[0].reserved_qty) self.assertEqual(item.stock_reserved_qty, sre_details[0].reserved_qty)
self.assertEqual(sre_details[0].status, "Partially Reserved") self.assertEqual(sre_details[0].status, "Partially Reserved")
se.cancel()
# Test - 3: Stock should be fully Reserved if the Available Qty to Reserve is greater than the Un-reserved Qty. # Test - 3: Stock should be fully Reserved if the Available Qty to Reserve is greater than the Un-reserved Qty.
create_material_receipts(items_details, warehouse, qty=100) create_material_receipt(items_details, warehouse, qty=110)
so.create_stock_reservation_entries() so.create_stock_reservation_entries()
so.load_from_db() so.load_from_db()

View File

@ -5,6 +5,7 @@ import frappe
from frappe.tests.utils import FrappeTestCase, change_settings from frappe.tests.utils import FrappeTestCase, change_settings
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
from erpnext.stock.doctype.stock_entry.stock_entry import StockEntry
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
from erpnext.stock.utils import get_stock_balance from erpnext.stock.utils import get_stock_balance
@ -12,7 +13,7 @@ from erpnext.stock.utils import get_stock_balance
class TestStockReservationEntry(FrappeTestCase): class TestStockReservationEntry(FrappeTestCase):
def setUp(self) -> None: def setUp(self) -> None:
self.items = create_items() self.items = create_items()
create_material_receipts(self.items) create_material_receipt(self.items)
def tearDown(self) -> None: def tearDown(self) -> None:
return super().tearDown() return super().tearDown()
@ -269,19 +270,36 @@ def create_items() -> dict:
return items return items
def create_material_receipts( def create_material_receipt(
items: dict, warehouse: str = "_Test Warehouse - _TC", qty: float = 100 items: dict, warehouse: str = "_Test Warehouse - _TC", qty: float = 100
) -> None: ) -> StockEntry:
se = frappe.new_doc("Stock Entry")
se.purpose = "Material Receipt"
se.company = "_Test Company"
cost_center = frappe.get_value("Company", se.company, "cost_center")
expense_account = frappe.get_value("Company", se.company, "stock_adjustment_account")
for item in items.values(): for item in items.values():
if item.is_stock_item: se.append(
make_stock_entry( "items",
item_code=item.item_code, {
qty=qty, "item_code": item.item_code,
to_warehouse=warehouse, "t_warehouse": warehouse,
rate=item.valuation_rate, "qty": qty,
purpose="Material Receipt", "basic_rate": item.valuation_rate or 100,
"conversion_factor": 1.0,
"transfer_qty": qty,
"cost_center": cost_center,
"expense_account": expense_account,
},
) )
se.set_stock_entry_type()
se.insert()
se.submit()
return se
def cancel_all_stock_reservation_entries() -> None: def cancel_all_stock_reservation_entries() -> None:
sre_list = frappe.db.get_all("Stock Reservation Entry", filters={"docstatus": 1}, pluck="name") sre_list = frappe.db.get_all("Stock Reservation Entry", filters={"docstatus": 1}, pluck="name")