nexterp_custom/api.py aktualisiert
This commit is contained in:
+20
-12
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user