fix: `fg_item_qty` in non-subcontracted PO
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 4c10b48..5a4168a 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -207,31 +207,36 @@
)
def validate_fg_item_for_subcontracting(self):
- if self.is_subcontracted and not self.is_old_subcontracting_flow:
+ if self.is_subcontracted:
+ if not self.is_old_subcontracting_flow:
+ for item in self.items:
+ if not item.fg_item:
+ frappe.throw(
+ _("Row #{0}: Finished Good Item is not specified for service item {1}").format(
+ item.idx, item.item_code
+ )
+ )
+ else:
+ if not frappe.get_value("Item", item.fg_item, "is_sub_contracted_item"):
+ frappe.throw(
+ _(
+ "Row #{0}: Finished Good Item {1} must be a sub-contracted item for service item {2}"
+ ).format(item.idx, item.fg_item, item.item_code)
+ )
+ elif not frappe.get_value("Item", item.fg_item, "default_bom"):
+ frappe.throw(
+ _("Row #{0}: Default BOM not found for FG Item {1}").format(item.idx, item.fg_item)
+ )
+ if not item.fg_item_qty:
+ frappe.throw(
+ _("Row #{0}: Finished Good Item Qty is not specified for service item {0}").format(
+ item.idx, item.item_code
+ )
+ )
+ else:
for item in self.items:
- if not item.fg_item:
- frappe.throw(
- _("Row #{0}: Finished Good Item is not specified for service item {1}").format(
- item.idx, item.item_code
- )
- )
- else:
- if not frappe.get_value("Item", item.fg_item, "is_sub_contracted_item"):
- frappe.throw(
- _(
- "Row #{0}: Finished Good Item {1} must be a sub-contracted item for service item {2}"
- ).format(item.idx, item.fg_item, item.item_code)
- )
- elif not frappe.get_value("Item", item.fg_item, "default_bom"):
- frappe.throw(
- _("Row #{0}: Default BOM not found for FG Item {1}").format(item.idx, item.fg_item)
- )
- if not item.fg_item_qty:
- frappe.throw(
- _("Row #{0}: Finished Good Item Qty is not specified for service item {0}").format(
- item.idx, item.item_code
- )
- )
+ item.set("fg_item", None)
+ item.set("fg_item_qty", 0)
def get_schedule_dates(self):
for d in self.get("items"):