Refactor CreateAdvowareAkte and SyncAdvowareAkte to synchronize only Aktennummer; update localization keys for advowareAktenzeichen; adjust microtime values in config and state files

This commit is contained in:
2026-03-23 21:41:01 +01:00
parent ea4738d9eb
commit cb3da68673
9 changed files with 24 additions and 62 deletions

View File

@@ -83,17 +83,14 @@ class CreateAdvowareAkte implements AfterSave
private function createNewAkte(Entity $kuendigung): void private function createNewAkte(Entity $kuendigung): void
{ {
// Hole oder generiere Aktennummer // Hole Aktennummer aus Kündigung (falls vorhanden)
$aktennummer = $kuendigung->get('aktennr'); $aktennummer = $kuendigung->get('aktennr');
if (!$aktennummer) { if (!$aktennummer) {
$aktennummer = time(); $aktennummer = time();
} }
// Hole oder generiere Aktenzeichen // Generiere Aktenzeichen (wird in CAdvowareAkten gespeichert)
$aktenzeichen = $kuendigung->get('advowareAktenzeichen'); $aktenzeichen = 'AZ-' . date('Y-m-d-His');
if (!$aktenzeichen) {
$aktenzeichen = 'AZ-' . date('Y-m-d-His');
}
// Erstelle AdvowareAkte // Erstelle AdvowareAkte
$akteData = [ $akteData = [
@@ -117,8 +114,11 @@ class CreateAdvowareAkte implements AfterSave
$kuendigung->set('advowareAktenId', $akte->getId()); $kuendigung->set('advowareAktenId', $akte->getId());
$this->entityManager->saveEntity($kuendigung, ['silent' => true, 'skipHooks' => true]); $this->entityManager->saveEntity($kuendigung, ['silent' => true, 'skipHooks' => true]);
// Synchronisiere Aktennummer zurück zur Kündigung // Synchronisiere Aktennummer zurück zur Kündigung (falls leer war)
$this->syncAktennummer($kuendigung, $akte); if (!$kuendigung->get('aktennr') && $akte->get('aktennummer')) {
$kuendigung->set('aktennr', $akte->get('aktennummer'));
$this->entityManager->saveEntity($kuendigung, ['silent' => true, 'skipHooks' => true]);
}
$GLOBALS['log']->info("CKuendigung CreateAdvowareAkte: Created new AdvowareAkte: {$akte->getId()}"); $GLOBALS['log']->info("CKuendigung CreateAdvowareAkte: Created new AdvowareAkte: {$akte->getId()}");
} else { } else {
@@ -128,21 +128,11 @@ class CreateAdvowareAkte implements AfterSave
private function syncAktennummer(Entity $kuendigung, Entity $akte): void private function syncAktennummer(Entity $kuendigung, Entity $akte): void
{ {
$needsUpdate = false; // Synchronisiere nur Aktennummer (nicht Aktenzeichen, das ist in der Beziehung)
if (!$kuendigung->get('aktennr') && $akte->get('aktennummer')) { if (!$kuendigung->get('aktennr') && $akte->get('aktennummer')) {
$kuendigung->set('aktennr', $akte->get('aktennummer')); $kuendigung->set('aktennr', $akte->get('aktennummer'));
$needsUpdate = true;
}
if (!$kuendigung->get('advowareAktenzeichen') && $akte->get('aktenzeichen')) {
$kuendigung->set('advowareAktenzeichen', $akte->get('aktenzeichen'));
$needsUpdate = true;
}
if ($needsUpdate) {
$this->entityManager->saveEntity($kuendigung, ['silent' => true, 'skipHooks' => true]); $this->entityManager->saveEntity($kuendigung, ['silent' => true, 'skipHooks' => true]);
$GLOBALS['log']->info("CKuendigung CreateAdvowareAkte: Synchronized Aktennummer/Aktenzeichen"); $GLOBALS['log']->info("CKuendigung CreateAdvowareAkte: Synchronized Aktennummer");
} }
} }
} }

View File

@@ -62,22 +62,14 @@ class SyncAdvowareAkte implements AfterRelate
// Verknüpfe AdvowareAkte mit Kündigung (belongsTo relationship - set field directly) // Verknüpfe AdvowareAkte mit Kündigung (belongsTo relationship - set field directly)
$entity->set('advowareAktenId', $advowareAkteId); $entity->set('advowareAktenId', $advowareAkteId);
// Synchronisiere Aktennummer und Aktenzeichen // Synchronisiere nur Aktennummer (Aktenzeichen kommt über Beziehung)
$needsUpdate = false;
if (!$entity->get('aktennr') && $advowareAkte->get('aktennummer')) { if (!$entity->get('aktennr') && $advowareAkte->get('aktennummer')) {
$entity->set('aktennr', $advowareAkte->get('aktennummer')); $entity->set('aktennr', $advowareAkte->get('aktennummer'));
$needsUpdate = true;
}
if (!$entity->get('advowareAktenzeichen') && $advowareAkte->get('aktenzeichen')) {
$entity->set('advowareAktenzeichen', $advowareAkte->get('aktenzeichen'));
$needsUpdate = true;
} }
// Save once with all changes // Save once with all changes
$this->entityManager->saveEntity($entity, ['silent' => true, 'skipHooks' => true]); $this->entityManager->saveEntity($entity, ['silent' => true, 'skipHooks' => true]);
$GLOBALS['log']->info("CKuendigung SyncAdvowareAkte: Successfully linked AdvowareAkte and synchronized fields to Kündigung"); $GLOBALS['log']->info("CKuendigung SyncAdvowareAkte: Successfully linked AdvowareAkte and synchronized Aktennummer to Kündigung");
} }
} else { } else {
$GLOBALS['log']->info("CKuendigung SyncAdvowareAkte: Räumungsklage {$foreignEntity->getId()} has no AdvowareAkte yet"); $GLOBALS['log']->info("CKuendigung SyncAdvowareAkte: Räumungsklage {$foreignEntity->getId()} has no AdvowareAkte yet");

View File

@@ -34,7 +34,7 @@
"modifiedBy": "Geändert von", "modifiedBy": "Geändert von",
"freigeschalteteNutzer": "Freigeschaltete Nutzer", "freigeschalteteNutzer": "Freigeschaltete Nutzer",
"collaborators": "Mitarbeiter", "collaborators": "Mitarbeiter",
"advowareAktenzeichen": "Advoware Aktenzeichen", "advowareAkten": "Advoware Akte",
"aktennr": "Advoware Identifikator", "aktennr": "Advoware Identifikator",
"advowareLastSync": "Letzter Sync", "advowareLastSync": "Letzter Sync",
"syncStatus": "Sync Status", "syncStatus": "Sync Status",
@@ -106,7 +106,6 @@
} }
}, },
"tooltips": { "tooltips": {
"advowareAktenzeichen": "Aktenzeichen aus Advoware für die Synchronisation",
"aktennr": "Eindeutige Kündigungs-Nummer aus Advoware", "aktennr": "Eindeutige Kündigungs-Nummer aus Advoware",
"syncStatus": "Status der Advoware-Synchronisation: pending_sync = Warte auf Sync, clean = erfolgreich synchronisiert, unclean = Änderungen ausstehend, failed = Fehler, no_sync = Nicht synchronisiert", "syncStatus": "Status der Advoware-Synchronisation: pending_sync = Warte auf Sync, clean = erfolgreich synchronisiert, unclean = Änderungen ausstehend, failed = Fehler, no_sync = Nicht synchronisiert",
"sendungsverfolgungsnummer": "Sendungsverfolgungsnummer für Einschreiben", "sendungsverfolgungsnummer": "Sendungsverfolgungsnummer für Einschreiben",

View File

@@ -9,7 +9,7 @@
"modifiedBy": "Modified By", "modifiedBy": "Modified By",
"freigeschalteteNutzer": "Authorized Users", "freigeschalteteNutzer": "Authorized Users",
"collaborators": "Collaborators", "collaborators": "Collaborators",
"advowareAktenzeichen": "Advoware File Number", "advowareAkten": "Advoware File",
"aktennr": "Case Number", "aktennr": "Case Number",
"advowareLastSync": "Last Sync", "advowareLastSync": "Last Sync",
"syncStatus": "Sync Status", "syncStatus": "Sync Status",
@@ -105,7 +105,6 @@
} }
}, },
"tooltips": { "tooltips": {
"advowareAktenzeichen": "File number from Advoware for synchronization",
"aktennr": "Case number from Advoware", "aktennr": "Case number from Advoware",
"syncStatus": "Advoware synchronization status: pending_sync = Waiting for sync, clean = successfully synchronized, unclean = changes pending, failed = error, no_sync = Not synchronized", "syncStatus": "Advoware synchronization status: pending_sync = Waiting for sync, clean = successfully synchronized, unclean = changes pending, failed = error, no_sync = Not synchronized",
"sendungsverfolgungsnummer": "Tracking number for registered mail", "sendungsverfolgungsnummer": "Tracking number for registered mail",

View File

@@ -15,7 +15,7 @@
"name": "status" "name": "status"
}, },
{ {
"name": "advowareAktenzeichen" "name": "advowareAkten"
} }
], ],
[ [

View File

@@ -52,14 +52,6 @@
"tooltipText" "tooltipText"
] ]
}, },
"advowareAktenzeichen": {
"type": "varchar",
"required": false,
"maxLength": 100,
"tooltip": true,
"isCustom": true,
"copyToClipboard": true
},
"aktennr": { "aktennr": {
"type": "int", "type": "int",
"required": false, "required": false,
@@ -421,11 +413,7 @@
"aktennr" "aktennr"
] ]
}, },
"advowareAktenzeichen": {
"columns": [
"advowareAktenzeichen"
]
},
"status": { "status": {
"columns": [ "columns": [
"status", "status",

View File

@@ -428,19 +428,13 @@ class CVmhRumungsklage extends \Espo\Services\Record
// 2. If no existing Akte found, create new one // 2. If no existing Akte found, create new one
if (!$advowareAkte) { if (!$advowareAkte) {
// Collect Aktennummer and Aktenzeichen from Kündigungen // Collect Aktennummer from Kündigungen (Aktenzeichen wird neu generiert)
$aktennummer = null; $aktennummer = null;
$aktenzeichen = null;
foreach ($alleKuendigungen as $kuendigung) { foreach ($alleKuendigungen as $kuendigung) {
if (!$aktennummer && $kuendigung->get('aktennr')) { if (!$aktennummer && $kuendigung->get('aktennr')) {
$aktennummer = $kuendigung->get('aktennr'); $aktennummer = $kuendigung->get('aktennr');
} break; // Use first found
if (!$aktenzeichen && $kuendigung->get('advowareAktenzeichen')) {
$aktenzeichen = $kuendigung->get('advowareAktenzeichen');
}
if ($aktennummer && $aktenzeichen) {
break; // Found both
} }
} }
@@ -448,9 +442,9 @@ class CVmhRumungsklage extends \Espo\Services\Record
if (!$aktennummer) { if (!$aktennummer) {
$aktennummer = time(); // Simple timestamp-based generation $aktennummer = time(); // Simple timestamp-based generation
} }
if (!$aktenzeichen) {
$aktenzeichen = 'AZ-' . date('Y-m-d-His'); // Always generate new Aktenzeichen
} $aktenzeichen = 'AZ-' . date('Y-m-d-His');
// Create new AdvowareAkte // Create new AdvowareAkte
$advowareAkteData = [ $advowareAkteData = [

View File

@@ -360,7 +360,7 @@ return [
0 => 'youtube.com', 0 => 'youtube.com',
1 => 'google.com' 1 => 'google.com'
], ],
'microtime' => 1774297547.393199, 'microtime' => 1774298143.136788,
'siteUrl' => 'https://crm.bitbylaw.com', 'siteUrl' => 'https://crm.bitbylaw.com',
'fullTextSearchMinLength' => 4, 'fullTextSearchMinLength' => 4,
'webSocketUrl' => 'ws://api.bitbylaw.com:5000/espocrm/ws', 'webSocketUrl' => 'ws://api.bitbylaw.com:5000/espocrm/ws',

View File

@@ -1,7 +1,7 @@
<?php <?php
return [ return [
'cacheTimestamp' => 1774297547, 'cacheTimestamp' => 1774298143,
'microtimeState' => 1774297547.570899, 'microtimeState' => 1774298143.319113,
'currencyRates' => [ 'currencyRates' => [
'EUR' => 1.0 'EUR' => 1.0
], ],