Add AdvowareAkte and AIKnowledge creation for Kündigungen; synchronize between Kündigungen and Räumungsklagen; update localization and metadata files

This commit is contained in:
2026-03-23 21:29:26 +01:00
parent 672645673f
commit ea4738d9eb
19 changed files with 502 additions and 18 deletions

View File

@@ -129,6 +129,9 @@ class CVmhMietverhltnis extends \Espo\Services\Record
->relate($bewohner);
}
// 9c. Create AdvowareAkte and AIKnowledge (BEFORE document duplication!)
$this->createAdvowareAkteAndAIKnowledge($mietinkasso, $mietinkassoRepo);
// 10. Copy all documents from Mietverhältnis, Mietobjekt and Beteiligte
// Get CDokumente service for duplication
$dokumenteService = $this->injectableFactory->create(\Espo\Custom\Services\CDokumente::class);
@@ -367,6 +370,68 @@ class CVmhMietverhltnis extends \Espo\Services\Record
}
}
/**
* Create AdvowareAkte and AIKnowledge for Mietinkasso
*
* @param object $mietinkasso The created Mietinkasso entity
* @param object $mietinkassoRepo Repository for relations
*/
private function createAdvowareAkteAndAIKnowledge($mietinkasso, $mietinkassoRepo): void
{
// 1. Create AdvowareAkte
$aktennummer = time(); // Simple timestamp-based generation
$aktenzeichen = 'AZ-' . date('Y-m-d-His');
$advowareAkteData = [
'name' => 'Advoware Akte - ' . $mietinkasso->get('name'),
'aktennummer' => $aktennummer,
'aktenzeichen' => $aktenzeichen,
'syncStatus' => 'unclean',
'assignedUserId' => $mietinkasso->get('assignedUserId')
];
// Copy teams
$teamsIds = $mietinkasso->getLinkMultipleIdList('teams');
if (!empty($teamsIds)) {
$advowareAkteData['teamsIds'] = $teamsIds;
}
$advowareAkte = $this->entityManager->createEntity('CAdvowareAkten', $advowareAkteData);
if ($advowareAkte) {
// Link AdvowareAkte to Mietinkasso (hasOne relationship - set field directly)
$mietinkasso->set('advowareAktenId', $advowareAkte->getId());
$this->entityManager->saveEntity($mietinkasso);
$GLOBALS['log']->info("CVmhMietverhltnis: Created and linked AdvowareAkte for Mietinkasso: {$advowareAkte->getId()}");
} else {
$GLOBALS['log']->error('CVmhMietverhltnis: Failed to create AdvowareAkte for Mietinkasso');
}
// 2. Create AIKnowledge
$aiKnowledgeData = [
'name' => 'AI Knowledge - ' . $mietinkasso->get('name'),
'aktivierungsstatus' => 'deactivated',
'syncStatus' => 'unclean',
'assignedUserId' => $mietinkasso->get('assignedUserId')
];
// Copy teams
if (!empty($teamsIds)) {
$aiKnowledgeData['teamsIds'] = $teamsIds;
}
$aiKnowledge = $this->entityManager->createEntity('CAIKnowledge', $aiKnowledgeData);
if ($aiKnowledge) {
// Link AIKnowledge to Mietinkasso (hasOne relationship - set field directly)
$mietinkasso->set('aIKnowledgeId', $aiKnowledge->getId());
$this->entityManager->saveEntity($mietinkasso);
$GLOBALS['log']->info("CVmhMietverhltnis: Created and linked AIKnowledge for Mietinkasso: {$aiKnowledge->getId()}");
} else {
$GLOBALS['log']->error('CVmhMietverhltnis: Failed to create AIKnowledge for Mietinkasso');
}
}
/**
* Log action to source entity stream
*