feat: Enhance sync conflict detection and resolution logic in BeteiligteSync class

This commit is contained in:
2026-02-07 20:04:58 +00:00
parent 101f290293
commit 3d3014750f
2 changed files with 41 additions and 33 deletions

View File

@@ -30,8 +30,9 @@ class BeteiligteMapper:
"""
logger.debug(f"Mapping EspoCRM → Advoware STAMMDATEN: {espo_entity.get('id')}")
# Bestimme ob Person oder Firma
is_firma = bool(espo_entity.get('firmenname'))
# Bestimme ob Person oder Firma (über firmenname-Feld)
firmenname = espo_entity.get('firmenname')
is_firma = bool(firmenname and firmenname.strip())
rechtsform = espo_entity.get('rechtsform', '')
# Basis-Struktur (nur Stammdaten, keine Kontaktdaten!)
@@ -41,11 +42,11 @@ class BeteiligteMapper:
# NAME: Person vs. Firma
if is_firma:
# Firma: name = firmenname
advo_data['name'] = espo_entity.get('firmenname', '')
# Firma: Lese von firmenname-Feld
advo_data['name'] = firmenname
advo_data['vorname'] = None
else:
# Person: name = lastName, vorname = firstName
# Natürliche Person: Lese von lastName/firstName
advo_data['name'] = espo_entity.get('lastName', '')
advo_data['vorname'] = espo_entity.get('firstName', '')
@@ -100,17 +101,19 @@ class BeteiligteMapper:
'advowareRowId': advo_entity.get('rowId'), # Änderungserkennung
}
# NAME: Person vs. Firma
# NAME: Person vs. Firma (EspoCRM blendet lastName/firstName aus bei Firmen)
if is_person:
# Person
# Natürliche Person → lastName/firstName verwenden
espo_data['firstName'] = vorname
espo_data['lastName'] = advo_entity.get('name', '')
espo_data['name'] = f"{vorname} {advo_entity.get('name', '')}".strip()
espo_data['firmenname'] = None
espo_data['firmenname'] = None # Firma-Feld leer lassen
else:
# Firma
espo_data['firmenname'] = advo_entity.get('name', '')
espo_data['name'] = advo_entity.get('name', '')
# Firma → firmenname verwenden (EspoCRM zeigt dann nur dieses Feld)
firma_name = advo_entity.get('name', '')
espo_data['firmenname'] = firma_name
espo_data['name'] = firma_name
# lastName/firstName nicht setzen (EspoCRM blendet sie aus bei Firmen)
espo_data['firstName'] = None
espo_data['lastName'] = None