test(blanket_order): cover over-ordering aggregated across rows

The over-order check sums the same item across multiple order rows. Add a
test where one item is split into two Sales Order rows against the same
blanket order and together exceed its quantity.
This commit is contained in:
Nabin Hait
2026-06-22 14:23:41 +05:30
parent b4c9827318
commit afed7884d4

View File

@@ -91,6 +91,29 @@ class TestBlanketOrder(ERPNextTestSuite):
frappe.db.set_single_value("Buying Settings", "blanket_order_allowance", 10)
po.submit()
def test_blanket_order_over_order_aggregated_across_rows(self):
# the over-order check should sum the same item across multiple order rows
frappe.db.set_single_value("Selling Settings", "blanket_order_allowance", 0)
bo = make_blanket_order(blanket_order_type="Selling", quantity=100)
frappe.flags.args.doctype = "Sales Order"
so = make_order(bo.name)
so.currency = get_company_currency(so.company)
so.delivery_date = today()
so.items[0].qty = 60
so.append(
"items",
{
"item_code": so.items[0].item_code,
"qty": 50, # 60 + 50 = 110 > 100 blanket qty
"rate": so.items[0].rate,
"delivery_date": today(),
"against_blanket_order": 1,
"blanket_order": bo.name,
},
)
self.assertRaises(frappe.ValidationError, so.submit)
def test_party_item_code(self):
item_doc = make_item("_Test Item 1 for Blanket Order")
item_code = item_doc.name