nexterp_custom/api.py aktualisiert

This commit is contained in:
2026-06-06 19:50:17 +02:00
parent 5763b0ef9e
commit 906ea5d775
+20 -12
View File
@@ -4,7 +4,8 @@ from frappe import _
@frappe.whitelist() @frappe.whitelist()
def sync_custom_fields_to_woocommerce(item_code): def sync_custom_fields_to_woocommerce(item_code):
"""Sync Custom Fields vom Item nach WooCommerce ACF""" """Sync Custom Fields vom Item nach WooCommerce ACF
Liest die Zuordnungen dynamisch aus dem DocType 'WooCommerce ACF Mapping'"""
if not item_code: if not item_code:
frappe.throw(_("Kein Item Code angegeben")) frappe.throw(_("Kein Item Code angegeben"))
@@ -18,13 +19,20 @@ def sync_custom_fields_to_woocommerce(item_code):
frappe.msgprint(_("Item hat keine verknüpften WooCommerce Server"), indicator="orange") frappe.msgprint(_("Item hat keine verknüpften WooCommerce Server"), indicator="orange")
return False return False
# Hier die Felder definieren: ERPNext-Feld : ACF-Feld # Dynamisches Mapping aus dem DocType laden
field_mapping = { field_mapping = {}
"custom_zustand2": "zustand2", mappings = frappe.get_all("WooCommerce ACF Mapping",
# Weitere Felder hier hinzufügen: filters={"enabled": 1},
# "custom_mein_feld": "mein_feld", fields=["erp_field", "acf_field"])
# "custom_preisstufe": "preisstufe",
} for m in mappings:
if m.erp_field and m.acf_field:
field_mapping[m.erp_field] = m.acf_field
if not field_mapping:
frappe.msgprint(_("Keine aktivierten Mappings im DocType 'WooCommerce ACF Mapping' gefunden"),
indicator="orange")
return False
success_count = 0 success_count = 0
errors = [] errors = []
@@ -75,20 +83,20 @@ def sync_custom_fields_to_woocommerce(item_code):
success_count += 1 success_count += 1
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
error_msg = "API-Fehler fuer Produkt {}: {}".format(wc_link.woocommerce_id, str(e)) error_msg = "API-Fehler für Produkt {}: {}".format(wc_link.woocommerce_id, str(e))
errors.append(error_msg) errors.append(error_msg)
frappe.log_error(error_msg, "WooCommerce ACF Sync") frappe.log_error(error_msg, "WooCommerce ACF Sync")
except Exception as e: except Exception as e:
error_msg = "Unerwarteter Fehler fuer Item {} / WC-ID {}: {}".format(item_code, wc_link.woocommerce_id, str(e)) error_msg = "Unerwarteter Fehler für Item {} / WC-ID {}: {}".format(item_code, wc_link.woocommerce_id, str(e))
errors.append(error_msg) errors.append(error_msg)
frappe.log_error(error_msg, "WooCommerce ACF Sync") frappe.log_error(error_msg, "WooCommerce ACF Sync")
# Zusammenfassung # Zusammenfassung
if success_count > 0: if success_count > 0:
msg = "Custom Fields fuer {} WooCommerce-Produkt(e) erfolgreich synchronisiert".format(success_count) msg = "Custom Fields für {} WooCommerce-Produkt(e) erfolgreich synchronisiert".format(success_count)
if errors: if errors:
msg += " ({} Fehler)".format(len(errors)) msg += " ({} Fehler aufgetreten)".format(len(errors))
frappe.msgprint(msg, alert=True, indicator="green") frappe.msgprint(msg, alert=True, indicator="green")
return True return True
else: else: