Refactor AdvowareAkte ↔ CDokumente relationship from junction table to direct n:1 relationship
- Removed CAdvowareAktenCDokumente junction table and associated service. - Updated CDokumente entity to include foreign key cAdvowareAktenId and related fields. - Changed relationship in CDokumente from hasMany to belongsTo. - Updated CAdvowareAkten to reflect new direct relationship. - Implemented CDokumente service with duplicateDocument method for document duplication. - Refactored hooks to support new relationship and document propagation. - Removed obsolete API routes related to the junction table. - Added i18n translations for new fields and updated tooltips. - Document flow and auto-linking logic enhanced for better integration with Advoware. - Validation checks passed, and no data migration needed.
This commit is contained in:
@@ -267,7 +267,10 @@ class CVmhRumungsklage extends \Espo\Services\Record
|
||||
// 7. Collect all documents from Mietverhältnisse, Kündigungen, Mietobjekte and Beteiligte
|
||||
$alleLinkedDokumente = [];
|
||||
|
||||
// 7a. Dokumente from all Mietverhältnisse
|
||||
// Get CDokumente service for duplication
|
||||
$dokumenteService = $this->injectableFactory->create(\Espo\Custom\Services\CDokumente::class);
|
||||
|
||||
// 7a. Dokumente from all Mietverhältnisse - DUPLICATE instead of relate
|
||||
foreach ($alleMietverhaeltnisse as $mv) {
|
||||
$dokumenteMV = $this->entityManager
|
||||
->getRepository('CVmhMietverhltnis')
|
||||
@@ -277,14 +280,21 @@ class CVmhRumungsklage extends \Espo\Services\Record
|
||||
foreach ($dokumenteMV as $dokument) {
|
||||
if (!in_array($dokument->getId(), $alleLinkedDokumente)) {
|
||||
$alleLinkedDokumente[] = $dokument->getId();
|
||||
$raeumungsklagenRepo
|
||||
->getRelation($raeumungsklage, 'dokumentesvmhraumungsklage')
|
||||
->relate($dokument);
|
||||
|
||||
// Duplicate document instead of relate
|
||||
try {
|
||||
$duplicatedDoc = $dokumenteService->duplicateDocument($dokument->getId());
|
||||
$raeumungsklagenRepo
|
||||
->getRelation($raeumungsklage, 'dokumentesvmhraumungsklage')
|
||||
->relate($duplicatedDoc);
|
||||
} catch (\Exception $e) {
|
||||
$GLOBALS['log']->error('Failed to duplicate document from Mietverhältnis: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 7b. Dokumente from all Kündigungen
|
||||
// 7b. Dokumente from all Kündigungen - DUPLICATE instead of relate
|
||||
foreach ($alleKuendigungen as $kuendigung) {
|
||||
$dokumenteKuendigung = $this->entityManager
|
||||
->getRepository('CKuendigung')
|
||||
@@ -294,14 +304,21 @@ class CVmhRumungsklage extends \Espo\Services\Record
|
||||
foreach ($dokumenteKuendigung as $dokument) {
|
||||
if (!in_array($dokument->getId(), $alleLinkedDokumente)) {
|
||||
$alleLinkedDokumente[] = $dokument->getId();
|
||||
$raeumungsklagenRepo
|
||||
->getRelation($raeumungsklage, 'dokumentesvmhraumungsklage')
|
||||
->relate($dokument);
|
||||
|
||||
// Duplicate document instead of relate
|
||||
try {
|
||||
$duplicatedDoc = $dokumenteService->duplicateDocument($dokument->getId());
|
||||
$raeumungsklagenRepo
|
||||
->getRelation($raeumungsklage, 'dokumentesvmhraumungsklage')
|
||||
->relate($duplicatedDoc);
|
||||
} catch (\Exception $e) {
|
||||
$GLOBALS['log']->error('Failed to duplicate document from Kündigung: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 7c. Dokumente from all Mietobjekte
|
||||
// 7c. Dokumente from all Mietobjekte - DUPLICATE instead of relate
|
||||
foreach ($alleMietobjekte as $mietobjekt) {
|
||||
$dokumenteMO = $this->entityManager
|
||||
->getRepository('CMietobjekt')
|
||||
@@ -311,14 +328,21 @@ class CVmhRumungsklage extends \Espo\Services\Record
|
||||
foreach ($dokumenteMO as $dokument) {
|
||||
if (!in_array($dokument->getId(), $alleLinkedDokumente)) {
|
||||
$alleLinkedDokumente[] = $dokument->getId();
|
||||
$raeumungsklagenRepo
|
||||
->getRelation($raeumungsklage, 'dokumentesvmhraumungsklage')
|
||||
->relate($dokument);
|
||||
|
||||
// Duplicate document instead of relate
|
||||
try {
|
||||
$duplicatedDoc = $dokumenteService->duplicateDocument($dokument->getId());
|
||||
$raeumungsklagenRepo
|
||||
->getRelation($raeumungsklage, 'dokumentesvmhraumungsklage')
|
||||
->relate($duplicatedDoc);
|
||||
} catch (\Exception $e) {
|
||||
$GLOBALS['log']->error('Failed to duplicate document from Mietobjekt: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 7d. Dokumente from all Beteiligte
|
||||
// 7d. Dokumente from all Beteiligte - DUPLICATE instead of relate
|
||||
$alleBeteiligte = array_merge($alleVermieter, $alleMieter, $alleSonstigeBewohner);
|
||||
foreach ($alleBeteiligte as $beteiligter) {
|
||||
$dokumenteBet = $this->entityManager
|
||||
@@ -329,9 +353,16 @@ class CVmhRumungsklage extends \Espo\Services\Record
|
||||
foreach ($dokumenteBet as $dokument) {
|
||||
if (!in_array($dokument->getId(), $alleLinkedDokumente)) {
|
||||
$alleLinkedDokumente[] = $dokument->getId();
|
||||
$raeumungsklagenRepo
|
||||
->getRelation($raeumungsklage, 'dokumentesvmhraumungsklage')
|
||||
->relate($dokument);
|
||||
|
||||
// Duplicate document instead of relate
|
||||
try {
|
||||
$duplicatedDoc = $dokumenteService->duplicateDocument($dokument->getId());
|
||||
$raeumungsklagenRepo
|
||||
->getRelation($raeumungsklage, 'dokumentesvmhraumungsklage')
|
||||
->relate($duplicatedDoc);
|
||||
} catch (\Exception $e) {
|
||||
$GLOBALS['log']->error('Failed to duplicate document from Beteiligter: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user