mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-01 15:47:06 +00:00
test: quantity handling in the supplier selection dialog
Asserts the requested quantity reaches the Purchase Order item and that rows without a supplier, or with a quantity that is zero, negative or beyond the pending quantity, are rejected.
This commit is contained in:
@@ -1302,7 +1302,7 @@ class TestMaterialRequest(ERPNextTestSuite):
|
|||||||
self.assertEqual([d["item_code"] for d in items], [with_supplier, without_supplier])
|
self.assertEqual([d["item_code"] for d in items], [with_supplier, without_supplier])
|
||||||
self.assertEqual(items[0]["supplier"], "_Test Supplier")
|
self.assertEqual(items[0]["supplier"], "_Test Supplier")
|
||||||
self.assertFalse(items[1]["supplier"])
|
self.assertFalse(items[1]["supplier"])
|
||||||
self.assertEqual(items[0]["qty"], 10)
|
self.assertEqual(items[0]["pending_qty"], 10)
|
||||||
|
|
||||||
def test_make_purchase_order_sets_supplier(self):
|
def test_make_purchase_order_sets_supplier(self):
|
||||||
mr = make_material_request_for_items(["_Test Item"])
|
mr = make_material_request_for_items(["_Test Item"])
|
||||||
@@ -1320,8 +1320,13 @@ class TestMaterialRequest(ERPNextTestSuite):
|
|||||||
purchase_orders = make_purchase_orders_by_supplier(
|
purchase_orders = make_purchase_orders_by_supplier(
|
||||||
mr.name,
|
mr.name,
|
||||||
[
|
[
|
||||||
{"material_request_item": item.name, "item_code": item.item_code, "supplier": supplier}
|
{
|
||||||
for item, supplier in zip(mr.items, suppliers, strict=True)
|
"material_request_item": item.name,
|
||||||
|
"item_code": item.item_code,
|
||||||
|
"qty": qty,
|
||||||
|
"supplier": supplier,
|
||||||
|
}
|
||||||
|
for item, supplier, qty in zip(mr.items, suppliers, [10, 10, 4], strict=True)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1332,18 +1337,24 @@ class TestMaterialRequest(ERPNextTestSuite):
|
|||||||
self.assertEqual([d.item_code for d in first.items], item_codes[:2])
|
self.assertEqual([d.item_code for d in first.items], item_codes[:2])
|
||||||
self.assertEqual(second.supplier, "_Test Supplier 1")
|
self.assertEqual(second.supplier, "_Test Supplier 1")
|
||||||
self.assertEqual([d.item_code for d in second.items], item_codes[2:])
|
self.assertEqual([d.item_code for d in second.items], item_codes[2:])
|
||||||
|
self.assertEqual(second.items[0].qty, 4)
|
||||||
|
self.assertEqual(second.items[0].stock_qty, 4)
|
||||||
|
|
||||||
def test_make_purchase_orders_by_supplier_without_supplier(self):
|
def test_make_purchase_orders_by_supplier_invalid_rows(self):
|
||||||
from erpnext.stock.doctype.material_request.mapper import make_purchase_orders_by_supplier
|
from erpnext.stock.doctype.material_request.mapper import make_purchase_orders_by_supplier
|
||||||
|
|
||||||
mr = make_material_request_for_items(["_Test Item"])
|
mr = make_material_request_for_items(["_Test Item"])
|
||||||
|
row = {
|
||||||
|
"material_request_item": mr.items[0].name,
|
||||||
|
"item_code": "_Test Item",
|
||||||
|
"qty": 10,
|
||||||
|
"supplier": "_Test Supplier",
|
||||||
|
}
|
||||||
|
|
||||||
self.assertRaises(
|
for invalid in [{"supplier": None}, {"qty": 0}, {"qty": -5}, {"qty": 11}]:
|
||||||
frappe.ValidationError,
|
self.assertRaises(
|
||||||
make_purchase_orders_by_supplier,
|
frappe.ValidationError, make_purchase_orders_by_supplier, mr.name, [row | invalid]
|
||||||
mr.name,
|
)
|
||||||
[{"material_request_item": mr.items[0].name, "item_code": "_Test Item", "supplier": None}],
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def create_item_with_default_supplier(item_code, supplier):
|
def create_item_with_default_supplier(item_code, supplier):
|
||||||
|
|||||||
Reference in New Issue
Block a user