getId() . '-' . $foreignEntity->getId() . '-sync-akte'; if (isset(self::$processing[$key])) { return; } self::$processing[$key] = true; try { // $entity = CKuendigung // $foreignEntity = CVmhRumungsklage // Hole AdvowareAkte von der Räumungsklage (hasOne relationship - get via field) $advowareAkteId = $foreignEntity->get('advowareAktenId'); if ($advowareAkteId) { $advowareAkte = $this->entityManager->getEntity('CAdvowareAkten', $advowareAkteId); if ($advowareAkte) { $GLOBALS['log']->info("CKuendigung SyncAdvowareAkte: Found AdvowareAkte {$advowareAkte->getId()} on Räumungsklage {$foreignEntity->getId()}"); // Prüfe ob Kündigung bereits eine andere Akte hat $existingAktenId = $entity->get('advowareAktenId'); if ($existingAktenId && $existingAktenId !== $advowareAkteId) { $GLOBALS['log']->warning("CKuendigung SyncAdvowareAkte: Kündigung already has different AdvowareAkte {$existingAktenId}, will replace with {$advowareAkteId}"); } // Verknüpfe AdvowareAkte mit Kündigung (belongsTo relationship - set field directly) $entity->set('advowareAktenId', $advowareAkteId); // Synchronisiere nur Aktennummer (Aktenzeichen kommt über Beziehung) if (!$entity->get('aktennr') && $advowareAkte->get('aktennummer')) { $entity->set('aktennr', $advowareAkte->get('aktennummer')); } // Save once with all changes $this->entityManager->saveEntity($entity, ['silent' => true, 'skipHooks' => true]); $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"); } } catch (\Exception $e) { $GLOBALS['log']->error('CKuendigung SyncAdvowareAkte Error: ' . $e->getMessage()); } finally { unset(self::$processing[$key]); } } }