diff --git a/kapital_bank/bank_api.py b/kapital_bank/bank_api.py index 625ee3a..0a56b27 100644 --- a/kapital_bank/bank_api.py +++ b/kapital_bank/bank_api.py @@ -658,15 +658,19 @@ def create_unmapped_customers(settings_name=None): if not unmapped: return {"success": True, "created_count": 0, "message": "No unmapped customers in table to create"} - # Validate config upfront — clearer than ERPNext's cryptic - # "Could not find Customer Group" thrown deep inside party creation. + # Validate config upfront — clearer than ERPNext's errors thrown deep inside + # party creation ("Could not find Customer Group" / "Cannot select a Group type"). for mapping, _kb_customer in unmapped: group = mapping.customer_group or doc.default_customer_group if not group or not frappe.db.exists("Customer Group", group): return {"success": False, "message": "Set a Default Customer Group on Kapital Bank Settings (or a Customer Group on each customer mapping row) before creating customers."} + if frappe.db.get_value("Customer Group", group, "is_group"): + return {"success": False, "message": f"Customer Group '{group}' is a group node — pick a leaf (non-group) Customer Group."} territory = mapping.territory or doc.default_territory if not territory or not frappe.db.exists("Territory", territory): return {"success": False, "message": "Set a Default Territory on Kapital Bank Settings (or a Territory on each customer mapping row) before creating customers."} + if frappe.db.get_value("Territory", territory, "is_group"): + return {"success": False, "message": f"Territory '{territory}' is a group node — pick a leaf (non-group) Territory."} created = 0 for mapping, kb_customer in unmapped: @@ -739,6 +743,8 @@ def create_unmapped_suppliers(settings_name=None): group = mapping.supplier_group or doc.default_supplier_group if not group or not frappe.db.exists("Supplier Group", group): return {"success": False, "message": "Set a Default Supplier Group on Kapital Bank Settings (or a Supplier Group on each supplier mapping row) before creating suppliers."} + if frappe.db.get_value("Supplier Group", group, "is_group"): + return {"success": False, "message": f"Supplier Group '{group}' is a group node — pick a leaf (non-group) Supplier Group."} created = 0 for mapping, kb_supplier in unmapped: