diff --git a/custom/Espo/Custom/Resources/i18n/de_DE/CBeteiligte.json b/custom/Espo/Custom/Resources/i18n/de_DE/CBeteiligte.json index c9cf996e..746dea54 100644 --- a/custom/Espo/Custom/Resources/i18n/de_DE/CBeteiligte.json +++ b/custom/Espo/Custom/Resources/i18n/de_DE/CBeteiligte.json @@ -25,6 +25,9 @@ "betnr": "Advoware Identifikator", "advowareLastSync": "Advoware letzte Synchronisation", "syncStatus": "Sync-Status", + "advowareDeletedAt": "In Advoware gelöscht am", + "syncErrorMessage": "Sync-Fehler Details", + "syncRetryCount": "Sync-Wiederholungsversuche", "disgTyp": "Persönlichkeitstyp (nach DISG)" }, "links": { @@ -51,9 +54,12 @@ }, "tooltips": { "dateOfBirth": "Geburtsdatum des Beteiligten (nur bei natürlichen Personen)", - "betnr": "Eindeutige Beteiligten-Nummer aus Advoware", - "advowareLastSync": "Zeitpunkt der letzten Synchronisation mit Advoware", - "syncStatus": "Status der Synchronisation: clean = erfolgreich, unclean = Abweichungen, failed = Fehler", + "betnr": "Eindeutige Beteiligten-Nummer aus Advoware. Wird automatisch beim ersten Sync gesetzt.", + "advowareLastSync": "Zeitpunkt der letzten erfolgreichen Synchronisation mit Advoware", + "syncStatus": "Status der Synchronisation:\n\npending_sync = Warte auf Sync\nclean = Synchronisiert\ndirty = Geändert (zu syncen)\nsyncing = Sync läuft...\nfailed = Sync fehlgeschlagen\nconflict = Konflikt (EspoCRM wins)\ndeleted_in_advoware = In Advoware gelöscht", + "advowareDeletedAt": "Zeitpunkt wann Beteiligter in Advoware gelöscht wurde", + "syncErrorMessage": "Detaillierte Fehlermeldung bei Sync-Problemen", + "syncRetryCount": "Anzahl der bisherigen Wiederholungsversuche bei fehlgeschlagenem Sync", "rechtsform": "Rechtsform des Beteiligten (natürliche Person oder juristische Person)", "firmenname": "Name der Firma oder Organisation (nur bei juristischen Personen)", "handelsregisterNummer": "Nummer im Handelsregister (z.B. 12345)", @@ -62,9 +68,13 @@ }, "options": { "syncStatus": { + "pending_sync": "Warte auf Sync", "clean": "Synchronisiert", - "unclean": "Abweichungen", - "failed": "Fehlgeschlagen" + "dirty": "Geändert (zu syncen)", + "syncing": "Sync läuft...", + "failed": "Fehlgeschlagen", + "conflict": "Konflikt (EspoCRM wins)", + "deleted_in_advoware": "In Advoware gelöscht" }, "rechtsform": { "": "", diff --git a/custom/Espo/Custom/Resources/i18n/en_US/CBeteiligte.json b/custom/Espo/Custom/Resources/i18n/en_US/CBeteiligte.json index 857943bd..7f6ab50b 100644 --- a/custom/Espo/Custom/Resources/i18n/en_US/CBeteiligte.json +++ b/custom/Espo/Custom/Resources/i18n/en_US/CBeteiligte.json @@ -14,7 +14,13 @@ "kndigungenKuendiger": "Terminations (Terminating Party)", "kndigungenGekuendigte": "Terminations (Terminated Party)", "contactsBeteiligte": "Portal Users", - "dokumentesBeteiligte": "Documents" + "dokumentesBeteiligte": "Documents", + "betnr": "Advoware Participant No.", + "advowareLastSync": "Advoware Last Sync", + "syncStatus": "Sync Status", + "advowareDeletedAt": "Deleted in Advoware At", + "syncErrorMessage": "Sync Error Details", + "syncRetryCount": "Sync Retry Count" }, "links": { "meetings": "Meetings", @@ -37,5 +43,24 @@ }, "labels": { "Create CBeteiligte": "Create Beteiligte" + }, + "tooltips": { + "betnr": "Unique participant number from Advoware. Will be automatically set on first sync.", + "advowareLastSync": "Timestamp of last successful synchronization with Advoware", + "syncStatus": "Synchronization status:\n\npending_sync = Waiting for sync\nclean = Synchronized\ndirty = Changed (to be synced)\nsyncing = Sync in progress...\nfailed = Sync failed\nconflict = Conflict (EspoCRM wins)\ndeleted_in_advoware = Deleted in Advoware", + "advowareDeletedAt": "Timestamp when participant was deleted in Advoware", + "syncErrorMessage": "Detailed error message for sync problems", + "syncRetryCount": "Number of retry attempts for failed sync" + }, + "options": { + "syncStatus": { + "pending_sync": "Waiting for Sync", + "clean": "Synchronized", + "dirty": "Changed (to sync)", + "syncing": "Syncing...", + "failed": "Failed", + "conflict": "Conflict (EspoCRM wins)", + "deleted_in_advoware": "Deleted in Advoware" + } } } \ No newline at end of file diff --git a/custom/Espo/Custom/Resources/metadata/entityDefs/CBeteiligte.json b/custom/Espo/Custom/Resources/metadata/entityDefs/CBeteiligte.json index 0b95f379..d0f967de 100644 --- a/custom/Espo/Custom/Resources/metadata/entityDefs/CBeteiligte.json +++ b/custom/Espo/Custom/Resources/metadata/entityDefs/CBeteiligte.json @@ -121,6 +121,7 @@ "betnr": { "type": "int", "required": false, + "readOnly": true, "tooltip": true, "isCustom": true }, @@ -133,18 +134,49 @@ }, "syncStatus": { "type": "enum", - "required": false, + "required": true, + "readOnly": true, "options": [ + "pending_sync", "clean", - "unclean", - "failed" + "dirty", + "syncing", + "failed", + "conflict", + "deleted_in_advoware" ], "style": { + "pending_sync": "default", "clean": "success", - "unclean": "warning", - "failed": "danger" + "dirty": "warning", + "syncing": "primary", + "failed": "danger", + "conflict": "danger", + "deleted_in_advoware": "default" }, - "default": "clean", + "default": "pending_sync", + "tooltip": true, + "isCustom": true + }, + "advowareDeletedAt": { + "type": "datetime", + "required": false, + "readOnly": true, + "tooltip": true, + "isCustom": true + }, + "syncErrorMessage": { + "type": "text", + "required": false, + "readOnly": true, + "maxLength": 2000, + "tooltip": true, + "isCustom": true + }, + "syncRetryCount": { + "type": "int", + "required": false, + "readOnly": true, "tooltip": true, "isCustom": true }, @@ -362,6 +394,7 @@ ] }, "betnr": { + "unique": true, "columns": [ "betnr" ] @@ -377,6 +410,17 @@ "disgTyp", "deleted" ] + }, + "syncStatus": { + "columns": [ + "syncStatus", + "deleted" + ] + }, + "advowareDeletedAt": { + "columns": [ + "advowareDeletedAt" + ] } } } \ No newline at end of file diff --git a/data/config.php b/data/config.php index e40ee147..92185de2 100644 --- a/data/config.php +++ b/data/config.php @@ -357,7 +357,7 @@ return [ 0 => 'youtube.com', 1 => 'google.com' ], - 'microtime' => 1770433089.765727, + 'microtime' => 1770476882.65038, 'siteUrl' => 'https://crm.bitbylaw.com', 'fullTextSearchMinLength' => 4, 'webSocketUrl' => 'ws://api.bitbylaw.com:5000/espocrm/ws', diff --git a/data/state.php b/data/state.php index 81df1657..08c98324 100644 --- a/data/state.php +++ b/data/state.php @@ -1,7 +1,7 @@ 1770433089, - 'microtimeState' => 1770433089.766415, + 'cacheTimestamp' => 1770476882, + 'microtimeState' => 1770476882.807462, 'currencyRates' => [ 'EUR' => 1.0 ],