diff --git a/bitbylaw/services/espocrm_mapper.py b/bitbylaw/services/espocrm_mapper.py index d2d27509..41e14987 100644 --- a/bitbylaw/services/espocrm_mapper.py +++ b/bitbylaw/services/espocrm_mapper.py @@ -140,10 +140,11 @@ class BeteiligteMapper: if zusatz: espo_data['zusatz'] = zusatz - # GEBURTSDATUM + # GEBURTSDATUM (nur Datum-Teil ohne Zeit) geburtsdatum = advo_entity.get('geburtsdatum') if geburtsdatum: - espo_data['dateOfBirth'] = geburtsdatum + # Advoware gibt '2001-01-05T00:00:00', EspoCRM will nur '2001-01-05' + espo_data['dateOfBirth'] = geburtsdatum.split('T')[0] if 'T' in geburtsdatum else geburtsdatum # HINWEIS: handelsRegisterNummer und registergericht werden NICHT gemappt # Advoware ignoriert diese Felder im PUT (trotz Swagger Schema) @@ -151,6 +152,9 @@ class BeteiligteMapper: logger.debug(f"Mapped to EspoCRM STAMMDATEN: name={espo_data.get('name')}") + # WICHTIG: Entferne None-Werte (EspoCRM mag keine expliziten None bei required fields) + espo_data = {k: v for k, v in espo_data.items() if v is not None} + return espo_data @staticmethod diff --git a/bitbylaw/steps/vmh/beteiligte_sync_event_step.py b/bitbylaw/steps/vmh/beteiligte_sync_event_step.py index 06793a7d..c45ca4fc 100644 --- a/bitbylaw/steps/vmh/beteiligte_sync_event_step.py +++ b/bitbylaw/steps/vmh/beteiligte_sync_event_step.py @@ -259,6 +259,13 @@ async def handle_update(entity_id, betnr, espo_entity, espocrm, advoware, sync_u elif isinstance(put_result, dict): new_rowid = put_result.get('rowId') + # Schreibe neue rowId zurück nach EspoCRM + if new_rowid: + await espocrm.update_entity('CBeteiligte', entity_id, { + 'advowareRowId': new_rowid + }) + context.logger.info(f"📝 rowId in EspoCRM aktualisiert: {new_rowid[:20]}...") + await sync_utils.release_sync_lock( entity_id, 'clean', diff --git a/bitbylaw/types.d.ts b/bitbylaw/types.d.ts index f9b8e460..26fe1fa5 100644 --- a/bitbylaw/types.d.ts +++ b/bitbylaw/types.d.ts @@ -12,7 +12,7 @@ declare module 'motia' { } interface Handlers { - 'VMH Beteiligte Sync': EventHandler + 'VMH Beteiligte Sync Handler': EventHandler 'VMH Webhook Beteiligte Update': ApiRouteHandler, unknown, { topic: 'vmh.beteiligte.update'; data: never }> 'VMH Webhook Beteiligte Delete': ApiRouteHandler, unknown, { topic: 'vmh.beteiligte.delete'; data: never }> 'VMH Webhook Beteiligte Create': ApiRouteHandler, unknown, { topic: 'vmh.beteiligte.create'; data: never }>