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
{
// Hole oder generiere Aktennummer
// Hole Aktennummer aus Kündigung (falls vorhanden)
$aktennummer = $kuendigung->get('aktennr');
if (!$aktennummer) {
$aktennummer = time();
}
// Hole oder generiere Aktenzeichen
$aktenzeichen = $kuendigung->get('advowareAktenzeichen');
if (!$aktenzeichen) {
$aktenzeichen = 'AZ-' . date('Y-m-d-His');
}
// Generiere Aktenzeichen (wird in CAdvowareAkten gespeichert)
$aktenzeichen = 'AZ-' . date('Y-m-d-His');
// Erstelle AdvowareAkte
$akteData = [
@@ -117,8 +114,11 @@ class CreateAdvowareAkte implements AfterSave
$kuendigung->set('advowareAktenId', $akte->getId());
$this->entityManager->saveEntity($kuendigung, ['silent' => true, 'skipHooks' => true]);
// Synchronisiere Aktennummer zurück zur Kündigung
$this->syncAktennummer($kuendigung, $akte);
// Synchronisiere Aktennummer zurück zur Kündigung (falls leer war)
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()}");
} else {
@@ -128,21 +128,11 @@ class CreateAdvowareAkte implements AfterSave
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')) {
$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]);
$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)
$entity->set('advowareAktenId', $advowareAkteId);
// Synchronisiere Aktennummer und Aktenzeichen
$needsUpdate = false;
// Synchronisiere nur Aktennummer (Aktenzeichen kommt über Beziehung)
if (!$entity->get('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
$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 {
$GLOBALS['log']->info("CKuendigung SyncAdvowareAkte: Räumungsklage {$foreignEntity->getId()} has no AdvowareAkte yet");

View File

@@ -34,7 +34,7 @@
"modifiedBy": "Geändert von",
"freigeschalteteNutzer": "Freigeschaltete Nutzer",
"collaborators": "Mitarbeiter",
"advowareAktenzeichen": "Advoware Aktenzeichen",
"advowareAkten": "Advoware Akte",
"aktennr": "Advoware Identifikator",
"advowareLastSync": "Letzter Sync",
"syncStatus": "Sync Status",
@@ -106,7 +106,6 @@
}
},
"tooltips": {
"advowareAktenzeichen": "Aktenzeichen aus Advoware für die Synchronisation",
"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",
"sendungsverfolgungsnummer": "Sendungsverfolgungsnummer für Einschreiben",

View File

@@ -9,7 +9,7 @@
"modifiedBy": "Modified By",
"freigeschalteteNutzer": "Authorized Users",
"collaborators": "Collaborators",
"advowareAktenzeichen": "Advoware File Number",
"advowareAkten": "Advoware File",
"aktennr": "Case Number",
"advowareLastSync": "Last Sync",
"syncStatus": "Sync Status",
@@ -105,7 +105,6 @@
}
},
"tooltips": {
"advowareAktenzeichen": "File number from Advoware for synchronization",
"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",
"sendungsverfolgungsnummer": "Tracking number for registered mail",

View File

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

View File

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

View File

@@ -428,19 +428,13 @@ class CVmhRumungsklage extends \Espo\Services\Record
// 2. If no existing Akte found, create new one
if (!$advowareAkte) {
// Collect Aktennummer and Aktenzeichen from Kündigungen
// Collect Aktennummer from Kündigungen (Aktenzeichen wird neu generiert)
$aktennummer = null;
$aktenzeichen = null;
foreach ($alleKuendigungen as $kuendigung) {
if (!$aktennummer && $kuendigung->get('aktennr')) {
$aktennummer = $kuendigung->get('aktennr');
}
if (!$aktenzeichen && $kuendigung->get('advowareAktenzeichen')) {
$aktenzeichen = $kuendigung->get('advowareAktenzeichen');
}
if ($aktennummer && $aktenzeichen) {
break; // Found both
break; // Use first found
}
}
@@ -448,9 +442,9 @@ class CVmhRumungsklage extends \Espo\Services\Record
if (!$aktennummer) {
$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
$advowareAkteData = [