fix: clear validation message when default groups/company aren't set
Creating customers/suppliers/bank accounts from unmapped rows fell back
to "All Customer Groups" / "All Territories" / "All Supplier Groups",
which don't exist on localized sites, producing ERPNext's cryptic
"Could not find Customer Group: All Customer Groups". Creation now
validates upfront and returns a clear message ("Set a Default Customer
Group on Kapital Bank Settings ...") before touching any records — also
for Territory, Supplier Group, and Company/Bank when creating Bank
Accounts from account/card mappings.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
cc7dfbeda8
commit
aae3dfacfb
|
|
@ -658,6 +658,16 @@ 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.
|
||||
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."}
|
||||
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."}
|
||||
|
||||
created = 0
|
||||
for mapping, kb_customer in unmapped:
|
||||
try:
|
||||
|
|
@ -668,16 +678,8 @@ def create_unmapped_customers(settings_name=None):
|
|||
party = frappe.new_doc("Customer")
|
||||
party.customer_name = customer_name
|
||||
party.customer_type = "Company"
|
||||
|
||||
customer_group = mapping.customer_group or doc.default_customer_group
|
||||
if not customer_group or not frappe.db.exists("Customer Group", customer_group):
|
||||
customer_group = "All Customer Groups"
|
||||
party.customer_group = customer_group
|
||||
|
||||
territory = mapping.territory or doc.default_territory or "All Territories"
|
||||
if not frappe.db.exists("Territory", territory):
|
||||
territory = "All Territories"
|
||||
party.territory = territory
|
||||
party.customer_group = mapping.customer_group or doc.default_customer_group
|
||||
party.territory = mapping.territory or doc.default_territory
|
||||
|
||||
if kb_customer.tax_id:
|
||||
party.tax_id = kb_customer.tax_id
|
||||
|
|
@ -733,6 +735,11 @@ def create_unmapped_suppliers(settings_name=None):
|
|||
if not unmapped:
|
||||
return {"success": True, "created_count": 0, "message": "No unmapped suppliers in table to create"}
|
||||
|
||||
for mapping, _kb_supplier in unmapped:
|
||||
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."}
|
||||
|
||||
created = 0
|
||||
for mapping, kb_supplier in unmapped:
|
||||
try:
|
||||
|
|
@ -743,11 +750,7 @@ def create_unmapped_suppliers(settings_name=None):
|
|||
party = frappe.new_doc("Supplier")
|
||||
party.supplier_name = supplier_name
|
||||
party.supplier_type = "Company"
|
||||
|
||||
supplier_group = mapping.supplier_group or doc.default_supplier_group
|
||||
if not supplier_group or not frappe.db.exists("Supplier Group", supplier_group):
|
||||
supplier_group = "All Supplier Groups"
|
||||
party.supplier_group = supplier_group
|
||||
party.supplier_group = mapping.supplier_group or doc.default_supplier_group
|
||||
|
||||
if kb_supplier.tax_id:
|
||||
party.tax_id = kb_supplier.tax_id
|
||||
|
|
@ -859,6 +862,14 @@ def create_unmapped_accounts(settings_name=None):
|
|||
default_bank = doc.default_bank
|
||||
default_company = doc.default_company
|
||||
|
||||
# Bank Account requires both Company and Bank — surface a clear message
|
||||
# instead of ERPNext's mandatory-field error mid-creation.
|
||||
if any(not frappe.db.exists("Bank Account", {"bank_account_no": r.iban}) for r in unmapped):
|
||||
if not default_company:
|
||||
return {"success": False, "message": "Set a Default Company on Kapital Bank Settings before creating Bank Accounts."}
|
||||
if not default_bank:
|
||||
return {"success": False, "message": "Set a Default Bank on Kapital Bank Settings before creating Bank Accounts."}
|
||||
|
||||
created = 0
|
||||
for row in unmapped:
|
||||
try:
|
||||
|
|
@ -978,6 +989,12 @@ def create_unmapped_cards(settings_name=None):
|
|||
default_bank = doc.default_bank
|
||||
default_company = doc.default_company
|
||||
|
||||
if any(not frappe.db.exists("Bank Account", {"bank_account_no": r.account_number}) for r in unmapped):
|
||||
if not default_company:
|
||||
return {"success": False, "message": "Set a Default Company on Kapital Bank Settings before creating Bank Accounts."}
|
||||
if not default_bank:
|
||||
return {"success": False, "message": "Set a Default Bank on Kapital Bank Settings before creating Bank Accounts."}
|
||||
|
||||
created = 0
|
||||
for row in unmapped:
|
||||
try:
|
||||
|
|
|
|||
Loading…
Reference in New Issue