From 292a0b57b9c7a0b12a6a08e53dbb75757b3189dd Mon Sep 17 00:00:00 2001 From: bsiggel Date: Sun, 25 Jan 2026 11:41:57 +0100 Subject: [PATCH] Refactor termination and rental object entities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Removed the "Kündigungen" field from the German and English rental object JSON files. - Updated the termination JSON files to reflect new field names and structure, including renaming "kuendigungsart" to "beendigungsTatbestand" and "kuendigungsgrund" to "kuendigungsgrund" with updated options. - Deleted the old "CKuendigung" entity definition and related metadata, consolidating functionality into "CKndigung". - Adjusted the service logic to accommodate the new structure, ensuring proper linking of landlords and tenants. - Updated dynamic visibility logic for fields based on conditions related to termination reasons and delivery methods. - Cleaned up metadata definitions for both termination and rental object entities, removing unnecessary relationships and fields. - Incremented cache and microtime values in the configuration file. --- .../Resources/i18n/de_DE/CKndigung.json | 59 +-- .../Resources/i18n/de_DE/CKuendigung.json | 94 ----- .../Resources/i18n/de_DE/CMietobjekt.json | 1 - .../Resources/i18n/en_US/CKndigung.json | 59 +-- .../Resources/i18n/en_US/CKuendigung.json | 94 ----- .../Resources/i18n/en_US/CMietobjekt.json | 1 - .../layouts/CKndigung/bottomPanelsDetail.json | 12 +- .../Resources/layouts/CKndigung/detail.json | 40 +-- .../metadata/clientDefs/CKndigung.json | 41 ++- .../metadata/clientDefs/CKuendigung.json | 55 --- .../metadata/entityDefs/CKndigung.json | 99 +++-- .../metadata/entityDefs/CKuendigung.json | 338 ------------------ .../metadata/entityDefs/CMietobjekt.json | 8 - .../entityDefs/CVmhMietverhltnis.json | 8 - .../metadata/scopes/CKuendigung.json | 11 - .../Custom/Services/CVmhMietverhltnis.php | 60 +--- data/config.php | 4 +- 17 files changed, 173 insertions(+), 811 deletions(-) delete mode 100644 custom/Espo/Custom/Resources/i18n/de_DE/CKuendigung.json delete mode 100644 custom/Espo/Custom/Resources/i18n/en_US/CKuendigung.json delete mode 100644 custom/Espo/Custom/Resources/metadata/clientDefs/CKuendigung.json delete mode 100644 custom/Espo/Custom/Resources/metadata/entityDefs/CKuendigung.json delete mode 100644 custom/Espo/Custom/Resources/metadata/scopes/CKuendigung.json diff --git a/custom/Espo/Custom/Resources/i18n/de_DE/CKndigung.json b/custom/Espo/Custom/Resources/i18n/de_DE/CKndigung.json index adca8af6..94aa015c 100644 --- a/custom/Espo/Custom/Resources/i18n/de_DE/CKndigung.json +++ b/custom/Espo/Custom/Resources/i18n/de_DE/CKndigung.json @@ -5,9 +5,8 @@ "tasks": "Aufgaben", "collaborators": "Mitarbeiter", "vmhMietverhltnises": "Mietverhältnisse", - "mietobjekte": "Mietobjekte", - "kuendiger": "Kündigende (Vermieter)", - "gekuendigte": "Gekündigte (Mieter)", + "kuendiger": "Vermieter", + "gekuendigte": "Mieter", "dokumenteskuendigung": "Dokumente", "contactsKuendigung": "Portal-Freigaben" }, @@ -17,7 +16,6 @@ }, "fields": { "name": "Name", - "description": "Beschreibung", "assignedUser": "Zugewiesen", "teams": "Teams", "createdAt": "Erstellt am", @@ -30,39 +28,36 @@ "betnr": "Betreuernummer", "advowareLastSync": "Letzter Sync", "syncStatus": "Sync Status", - "kuendigungsart": "Kündigungsart", + "beendigungsTatbestand": "Beendigungstatbestand", "kuendigungsgrund": "Kündigungsgrund", "kuendigungsgrundDetails": "Kündigungsgrund Details", "kuendigungsdatum": "Kündigungsdatum", "zustelldatum": "Zustelldatum", - "kuendigungsfrist": "Kündigungsfrist", "beendigungstermin": "Beendigungstermin", "status": "Status", "zustellart": "Zustellart", - "reaktionMieter": "Reaktion Mieter", - "notizen": "Notizen", - "rueckstandMiete": "Rückstand Miete", - "rueckstandNebenkosten": "Rückstand Nebenkosten", - "sonstigeForderungen": "Sonstige Forderungen", - "aussergerichtlicheGebuehren13": "Außergerichtliche Gebühren (1,3)" + "sendungsverfolgungsnummer": "Sendungsverfolgungsnummer", + "mietrueckstand": "Mietrückstand", + "vorzeitigeRaeumungZulaessig": "Vorzeitige Räumung zulässig", + "beschreibungBesorgnisgrund": "Beschreibung Besorgnisgrund" }, "options": { - "kuendigungsart": { - "Ordentlich": "Ordentlich", - "Ausserordentlich": "Außerordentlich", - "Fristlos": "Fristlos", - "AufgabeerklärungMieter": "Aufgabeerklärung Mieter" + "beendigungsTatbestand": { + "Kündigung Vermieter": "Kündigung Vermieter", + "Kündigung Mieter": "Kündigung Mieter", + "Aufhebungsvertrag": "Aufhebungsvertrag", + "Befristung": "Befristung", + "ZVG Zuschlagsbeschluss": "ZVG Zuschlagsbeschluss" }, "kuendigungsgrund": { - "Zahlungsverzug": "Zahlungsverzug", - "Pflichtverletzung": "Pflichtverletzung", + "Mietrückstand": "Mietrückstand", "Eigenbedarf": "Eigenbedarf", + "Fehlverhalten": "Fehlverhalten", "Verwertung": "Verwertung", - "VerhaltensbedingteLaermruhestoerung": "Verhaltensbedingte Lärm-/Ruhestörung", - "BeschaedigungSubstanz": "Beschädigung der Substanz", - "UnerlaubteUntervermietung": "Unerlaubte Untervermietung", - "StoerendeGeschaeftsfuehrung": "Störende Geschäftsführung", - "Sonstiges": "Sonstiges" + "ZVG Eigenbedarf": "ZVG Eigenbedarf", + "573a Abs. 1 (nicht mehr als 2 Whng.)": "573a Abs. 1 (nicht mehr als 2 Wohnungen)", + "573a Abs. 2 (Einliegerwohnung)": "573a Abs. 2 (Einliegerwohnung)", + "GewerbeOrdentlich": "Gewerbe Ordentlich" }, "status": { "Entwurf": "Entwurf", @@ -76,9 +71,13 @@ "zustellart": { "Einschreiben": "Einschreiben", "Persoenlich": "Persönlich", - "Gerichtsvollzieher": "Gerichtsvollzieher", - "Oeffentlich": "Öffentlich", - "Sonstiges": "Sonstiges" + "Bote": "Bote", + "Brief": "Brief" + }, + "vorzeitigeRaeumungZulaessig": { + "Nein": "Nein", + "JaKeinWohnraum257ZPO": "Ja, Kein Wohnraum, § 257 ZPO", + "JaBesorgnisgrund259ZPO": "Ja, Besorgnis, § 259 ZPO" }, "syncStatus": { "clean": "Synchronisiert", @@ -89,6 +88,10 @@ "tooltips": { "advowareAktenzeichen": "Aktenzeichen aus Advoware für die Synchronisation", "betnr": "Betreuernummer aus Advoware", - "syncStatus": "Status der Synchronisation mit Advoware" + "syncStatus": "Status der Synchronisation mit Advoware", + "sendungsverfolgungsnummer": "Sendungsverfolgungsnummer für Einschreiben", + "mietrueckstand": "Gesamthöhe des Mietrückstands (nur bei Kündigungsgrund Mietrückstand)", + "vorzeitigeRaeumungZulaessig": "Ist eine vorzeitige Räumung nach § 257 oder § 259 ZPO zulässig?", + "beschreibungBesorgnisgrund": "Beschreibung des Besorgnisgrunds für vorzeitige Räumung nach § 259 ZPO" } } \ No newline at end of file diff --git a/custom/Espo/Custom/Resources/i18n/de_DE/CKuendigung.json b/custom/Espo/Custom/Resources/i18n/de_DE/CKuendigung.json deleted file mode 100644 index 91cb2258..00000000 --- a/custom/Espo/Custom/Resources/i18n/de_DE/CKuendigung.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "fields": { - "kuendigungsdatum": "Kündigungsdatum", - "kuendigungsfrist": "Kündigungsfrist / Auszugsdatum", - "kuendigungsgrund": "Kündigungsgrund", - "kuendigungsart": "Kündigungsart", - "kuendigenderPartei": "Kündigende Partei", - "status": "Status", - "zustellungsdatum": "Zustellungsdatum", - "zustellungsart": "Zustellungsart", - "rueckstandsbetrag": "Rückstandsbetrag", - "monateMietrückstand": "Monate Mietrückstand", - "schonfristGewaehrt": "Schonfrist gewährt", - "schonfristDatum": "Schonfrist Datum", - "besorgnisNichtRechtzeitigerAuszug": "Besorgnis nicht rechtzeitiger Auszug", - "anmerkungen": "Anmerkungen", - "vmhMietverhltnis": "Mietverhältnis", - "mietobjekt": "Mietobjekt", - "vermieter": "Vermieter", - "mieter": "Mieter", - "dokumenteKuendigung": "Dokumente", - "contactsKuendigung": "Freigegebene Nutzer" - }, - "links": { - "vmhMietverhltnis": "Mietverhältnis", - "mietobjekt": "Mietobjekt", - "vermieter": "Vermieter", - "mieter": "Mieter", - "dokumenteKuendigung": "Dokumente", - "contactsKuendigung": "Freigegebene Nutzer", - "meetings": "Besprechungen", - "calls": "Anrufe", - "tasks": "Aufgaben", - "emails": "E-Mails", - "collaborators": "Mitarbeiter" - }, - "labels": { - "Create CKuendigung": "Kündigung erstellen" - }, - "options": { - "kuendigungsgrund": { - "Mietrückstand": "Mietrückstand", - "Eigenbedarf": "Eigenbedarf", - "Fehlverhalten": "Fehlverhalten", - "Verwertung": "Verwertung", - "ZVG Eigenbedarf": "ZVG Eigenbedarf", - "573a Abs. 1 (nicht mehr als 2 Whng.)": "§573a Abs. 1 (nicht mehr als 2 Wohnungen)", - "573a Abs. 2 (Einliegerwohnung)": "§573a Abs. 2 (Einliegerwohnung)", - "GewerbeOrdentlich": "Gewerbe ordentlich", - "Sonstige": "Sonstige" - }, - "kuendigungsart": { - "Ordentlich": "Ordentlich", - "Außerordentlich (fristlos)": "Außerordentlich (fristlos)", - "Außerordentlich (mit sozialer Frist)": "Außerordentlich (mit sozialer Frist)" - }, - "kuendigenderPartei": { - "Vermieter": "Vermieter", - "Mieter": "Mieter" - }, - "status": { - "Entwurf": "Entwurf", - "Versendet": "Versendet", - "Zugestellt": "Zugestellt", - "Anerkannt": "Anerkannt", - "Bestritten": "Bestritten", - "Vollzogen": "Vollzogen", - "Widerrufen": "Widerrufen" - }, - "zustellungsart": { - "Persönlich": "Persönlich", - "Einschreiben": "Einschreiben", - "Gerichtlicher Zustellungsbevollmächtigter": "Gerichtlicher Zustellungsbevollmächtigter", - "E-Mail (sofern vereinbart)": "E-Mail (sofern vereinbart)", - "Sonstige": "Sonstige" - } - }, - "tooltips": { - "kuendigungsdatum": "Datum, an dem die Kündigung ausgesprochen wurde", - "kuendigungsfrist": "Datum, bis zu dem das Mietverhältnis beendet sein soll (Auszugsdatum)", - "kuendigungsgrund": "Rechtlicher Grund für die Kündigung (kann mehrere sein)", - "kuendigungsart": "Art der Kündigung: ordentlich mit Frist, außerordentlich fristlos oder mit sozialer Frist", - "kuendigenderPartei": "Welche Partei kündigt das Mietverhältnis", - "status": "Aktueller Bearbeitungsstatus der Kündigung", - "zustellungsdatum": "Datum, an dem die Kündigung dem Empfänger zugestellt wurde", - "zustellungsart": "Art der Zustellung (z.B. persönlich, Einschreiben)", - "rueckstandsbetrag": "Gesamtbetrag des Mietrückstands (bei Kündigung wegen Mietrückstand)", - "monateMietrückstand": "Anzahl der Monate, für die Mietrückstand besteht", - "schonfristGewaehrt": "Wurde eine Schonfrist nach § 569 Abs. 3 Nr. 2 BGB gewährt?", - "schonfristDatum": "Bis zu welchem Datum läuft die Schonfrist?", - "besorgnisNichtRechtzeitigerAuszug": "Besteht die Besorgnis, dass der Mieter nicht rechtzeitig auszieht? (Relevant für § 940a ZPO)", - "anmerkungen": "Zusätzliche Hinweise und Anmerkungen zur Kündigung" - } -} diff --git a/custom/Espo/Custom/Resources/i18n/de_DE/CMietobjekt.json b/custom/Espo/Custom/Resources/i18n/de_DE/CMietobjekt.json index b9d58133..9638c128 100644 --- a/custom/Espo/Custom/Resources/i18n/de_DE/CMietobjekt.json +++ b/custom/Espo/Custom/Resources/i18n/de_DE/CMietobjekt.json @@ -14,7 +14,6 @@ "contact2mietobjekt": "Kontakte", "vmhRumungsklages": "Räumungsklagen", "mietinkassos": "Mietinkasso", - "kndigungen": "Kündigungen", "contactsMietobjekt": "Freigegebene Nutzer", "dokumentesMietobjekt": "Dokumente" }, diff --git a/custom/Espo/Custom/Resources/i18n/en_US/CKndigung.json b/custom/Espo/Custom/Resources/i18n/en_US/CKndigung.json index f34c66b9..dfc102d9 100644 --- a/custom/Espo/Custom/Resources/i18n/en_US/CKndigung.json +++ b/custom/Espo/Custom/Resources/i18n/en_US/CKndigung.json @@ -1,7 +1,6 @@ { "fields": { "name": "Name", - "description": "Description", "assignedUser": "Assigned User", "teams": "Teams", "createdAt": "Created At", @@ -14,21 +13,18 @@ "betnr": "Case Number", "advowareLastSync": "Last Sync", "syncStatus": "Sync Status", - "kuendigungsart": "Termination Type", + "beendigungsTatbestand": "Termination Event", "kuendigungsgrund": "Termination Reason", "kuendigungsgrundDetails": "Termination Reason Details", "kuendigungsdatum": "Termination Date", "zustelldatum": "Delivery Date", - "kuendigungsfrist": "Notice Period", "beendigungstermin": "End Date", "status": "Status", "zustellart": "Delivery Method", - "reaktionMieter": "Tenant Response", - "notizen": "Notes", - "rueckstandMiete": "Rent Arrears", - "rueckstandNebenkosten": "Utility Arrears", - "sonstigeForderungen": "Other Claims", - "aussergerichtlicheGebuehren13": "Extrajudicial Fees (1.3)" + "sendungsverfolgungsnummer": "Tracking Number", + "mietrueckstand": "Rent Arrears", + "vorzeitigeRaeumungZulaessig": "Early Eviction Permitted", + "beschreibungBesorgnisgrund": "Description of Concern" }, "links": { "meetings": "Meetings", @@ -36,9 +32,8 @@ "tasks": "Tasks", "collaborators": "Collaborators", "vmhMietverhltnises": "Tenancies", - "mietobjekte": "Properties", - "kuendiger": "Terminating Party (Landlord)", - "gekuendigte": "Terminated Party (Tenant)", + "kuendiger": "Landlord", + "gekuendigte": "Tenant", "dokumenteskuendigung": "Documents", "contactsKuendigung": "Portal Access" }, @@ -47,22 +42,22 @@ "CKndigung": "Termination" }, "options": { - "kuendigungsart": { - "Ordentlich": "Regular", - "Ausserordentlich": "Extraordinary", - "Fristlos": "Immediate", - "AufgabeerklärungMieter": "Tenant Surrender" + "beendigungsTatbestand": { + "Kündigung Vermieter": "Termination by Landlord", + "Kündigung Mieter": "Termination by Tenant", + "Aufhebungsvertrag": "Termination Agreement", + "Befristung": "Fixed-term Expiry", + "ZVG Zuschlagsbeschluss": "Forced Sale Award" }, "kuendigungsgrund": { - "Zahlungsverzug": "Payment Default", - "Pflichtverletzung": "Breach of Contract", + "Mietrückstand": "Rent Arrears", "Eigenbedarf": "Owner's Need", + "Fehlverhalten": "Misconduct", "Verwertung": "Exploitation", - "VerhaltensbedingteLaermruhestoerung": "Behavioral - Noise/Disturbance", - "BeschaedigungSubstanz": "Property Damage", - "UnerlaubteUntervermietung": "Unauthorized Subletting", - "StoerendeGeschaeftsfuehrung": "Disruptive Business Operations", - "Sonstiges": "Other" + "ZVG Eigenbedarf": "Forced Sale Owner's Need", + "573a Abs. 1 (nicht mehr als 2 Whng.)": "573a Par. 1 (no more than 2 units)", + "573a Abs. 2 (Einliegerwohnung)": "573a Par. 2 (granny flat)", + "GewerbeOrdentlich": "Commercial Regular" }, "status": { "Entwurf": "Draft", @@ -76,9 +71,13 @@ "zustellart": { "Einschreiben": "Registered Mail", "Persoenlich": "Personal Delivery", - "Gerichtsvollzieher": "Bailiff", - "Oeffentlich": "Public Notice", - "Sonstiges": "Other" + "Bote": "Courier", + "Brief": "Mail" + }, + "vorzeitigeRaeumungZulaessig": { + "Nein": "No", + "JaKeinWohnraum257ZPO": "Yes, Non-Residential, § 257 ZPO", + "JaBesorgnisgrund259ZPO": "Yes, Concern, § 259 ZPO" }, "syncStatus": { "clean": "Synchronized", @@ -89,6 +88,10 @@ "tooltips": { "advowareAktenzeichen": "File number from Advoware for synchronization", "betnr": "Case number from Advoware", - "syncStatus": "Synchronization status with Advoware" + "syncStatus": "Synchronization status with Advoware", + "sendungsverfolgungsnummer": "Tracking number for registered mail", + "mietrueckstand": "Total amount of rent arrears (only for termination reason rent arrears)", + "vorzeitigeRaeumungZulaessig": "Is early eviction permitted under § 257 or § 259 ZPO?", + "beschreibungBesorgnisgrund": "Description of the concern for early eviction under § 259 ZPO" } } diff --git a/custom/Espo/Custom/Resources/i18n/en_US/CKuendigung.json b/custom/Espo/Custom/Resources/i18n/en_US/CKuendigung.json deleted file mode 100644 index 860d3ae9..00000000 --- a/custom/Espo/Custom/Resources/i18n/en_US/CKuendigung.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "fields": { - "kuendigungsdatum": "Termination Date", - "kuendigungsfrist": "Notice Period / Move-out Date", - "kuendigungsgrund": "Termination Reason", - "kuendigungsart": "Termination Type", - "kuendigenderPartei": "Terminating Party", - "status": "Status", - "zustellungsdatum": "Delivery Date", - "zustellungsart": "Delivery Method", - "rueckstandsbetrag": "Arrears Amount", - "monateMietrückstand": "Months of Arrears", - "schonfristGewaehrt": "Grace Period Granted", - "schonfristDatum": "Grace Period Date", - "besorgnisNichtRechtzeitigerAuszug": "Concern of Delayed Move-out", - "anmerkungen": "Notes", - "vmhMietverhltnis": "Rental Agreement", - "mietobjekt": "Property", - "vermieter": "Landlords", - "mieter": "Tenants", - "dokumenteKuendigung": "Documents", - "contactsKuendigung": "Shared Users" - }, - "links": { - "vmhMietverhltnis": "Rental Agreement", - "mietobjekt": "Property", - "vermieter": "Landlords", - "mieter": "Tenants", - "dokumenteKuendigung": "Documents", - "contactsKuendigung": "Shared Users", - "meetings": "Meetings", - "calls": "Calls", - "tasks": "Tasks", - "emails": "Emails", - "collaborators": "Collaborators" - }, - "labels": { - "Create CKuendigung": "Create Termination" - }, - "options": { - "kuendigungsgrund": { - "Mietrückstand": "Rent Arrears", - "Eigenbedarf": "Personal Use", - "Fehlverhalten": "Misconduct", - "Verwertung": "Utilization", - "ZVG Eigenbedarf": "Foreclosure Personal Use", - "573a Abs. 1 (nicht mehr als 2 Whng.)": "§573a Para. 1 (max 2 units)", - "573a Abs. 2 (Einliegerwohnung)": "§573a Para. 2 (granny flat)", - "GewerbeOrdentlich": "Commercial Regular", - "Sonstige": "Other" - }, - "kuendigungsart": { - "Ordentlich": "Regular", - "Außerordentlich (fristlos)": "Extraordinary (without notice)", - "Außerordentlich (mit sozialer Frist)": "Extraordinary (with social grace period)" - }, - "kuendigenderPartei": { - "Vermieter": "Landlord", - "Mieter": "Tenant" - }, - "status": { - "Entwurf": "Draft", - "Versendet": "Sent", - "Zugestellt": "Delivered", - "Anerkannt": "Acknowledged", - "Bestritten": "Disputed", - "Vollzogen": "Completed", - "Widerrufen": "Revoked" - }, - "zustellungsart": { - "Persönlich": "Personal", - "Einschreiben": "Registered Mail", - "Gerichtlicher Zustellungsbevollmächtigter": "Court Process Server", - "E-Mail (sofern vereinbart)": "E-Mail (if agreed)", - "Sonstige": "Other" - } - }, - "tooltips": { - "kuendigungsdatum": "Date when the termination was issued", - "kuendigungsfrist": "Date by which the tenancy should end (move-out date)", - "kuendigungsgrund": "Legal reason(s) for termination", - "kuendigungsart": "Type of termination: regular with notice period, extraordinary without notice, or with social grace period", - "kuendigenderPartei": "Which party terminates the tenancy", - "status": "Current processing status of the termination", - "zustellungsdatum": "Date when the termination was delivered to the recipient", - "zustellungsart": "Method of delivery (e.g., personal, registered mail)", - "rueckstandsbetrag": "Total amount of rent arrears (for termination due to rent arrears)", - "monateMietrückstand": "Number of months for which rent is in arrears", - "schonfristGewaehrt": "Was a grace period granted according to § 569 Para. 3 No. 2 BGB?", - "schonfristDatum": "Until what date does the grace period run?", - "besorgnisNichtRechtzeitigerAuszug": "Is there concern that the tenant will not move out on time? (Relevant for § 940a ZPO)", - "anmerkungen": "Additional notes and comments about the termination" - } -} diff --git a/custom/Espo/Custom/Resources/i18n/en_US/CMietobjekt.json b/custom/Espo/Custom/Resources/i18n/en_US/CMietobjekt.json index 33210f1a..fc630b1c 100644 --- a/custom/Espo/Custom/Resources/i18n/en_US/CMietobjekt.json +++ b/custom/Espo/Custom/Resources/i18n/en_US/CMietobjekt.json @@ -20,7 +20,6 @@ "contact2mietobjekt": "Contacts", "vmhRumungsklages": "Eviction Lawsuits", "mietinkassos": "Rent Collection", - "kndigungen": "Terminations", "contactsMietobjekt": "Portal Users", "dokumentesMietobjekt": "Documents" }, diff --git a/custom/Espo/Custom/Resources/layouts/CKndigung/bottomPanelsDetail.json b/custom/Espo/Custom/Resources/layouts/CKndigung/bottomPanelsDetail.json index 811e3850..2752f09c 100644 --- a/custom/Espo/Custom/Resources/layouts/CKndigung/bottomPanelsDetail.json +++ b/custom/Espo/Custom/Resources/layouts/CKndigung/bottomPanelsDetail.json @@ -23,7 +23,7 @@ "_tabBreak_1": { "index": 2, "tabBreak": true, - "tabLabel": "Kündigende" + "tabLabel": "Vermieter" }, "kuendiger": { "index": 3 @@ -31,7 +31,7 @@ "_tabBreak_2": { "index": 4, "tabBreak": true, - "tabLabel": "Gekündigte" + "tabLabel": "Mieter" }, "gekuendigte": { "index": 5 @@ -51,13 +51,5 @@ }, "dokumenteskuendigung": { "index": 9 - }, - "_tabBreak_5": { - "index": 10, - "tabBreak": true, - "tabLabel": "Mietobjekte" - }, - "mietobjekte": { - "index": 11 } } diff --git a/custom/Espo/Custom/Resources/layouts/CKndigung/detail.json b/custom/Espo/Custom/Resources/layouts/CKndigung/detail.json index b836cf98..bf4ce53e 100644 --- a/custom/Espo/Custom/Resources/layouts/CKndigung/detail.json +++ b/custom/Espo/Custom/Resources/layouts/CKndigung/detail.json @@ -9,7 +9,7 @@ "name": "name" }, { - "name": "kuendigungsart" + "name": "beendigungsTatbestand" }, { "name": "status" @@ -26,21 +26,19 @@ "name": "kuendigungsdatum" }, { - "name": "zustelldatum" - }, - { - "name": "zustellart" + "name": "beendigungstermin" } ], [ { - "name": "kuendigungsfrist" + "name": "zustellart" }, { - "name": "beendigungstermin" + "name": "zustelldatum" }, - {}, - {} + { + "name": "sendungsverfolgungsnummer" + } ], [ { @@ -50,44 +48,30 @@ ] }, { - "label": "Finanzielle Forderungen", + "label": "Mietrückstand", "style": "default", "tabBreak": false, "rows": [ [ { - "name": "rueckstandMiete" - }, - { - "name": "rueckstandNebenkosten" - }, - { - "name": "sonstigeForderungen" - }, - { - "name": "aussergerichtlicheGebuehren13" + "name": "mietrueckstand" } ] ] }, { - "label": "Notizen & Reaktion", + "label": "Vorzeitige Räumung", "style": "default", "tabBreak": false, "rows": [ [ { - "name": "reaktionMieter" + "name": "vorzeitigeRaeumungZulaessig" } ], [ { - "name": "notizen" - } - ], - [ - { - "name": "description" + "name": "beschreibungBesorgnisgrund" } ] ] diff --git a/custom/Espo/Custom/Resources/metadata/clientDefs/CKndigung.json b/custom/Espo/Custom/Resources/metadata/clientDefs/CKndigung.json index 4a1513ab..992f95a8 100644 --- a/custom/Espo/Custom/Resources/metadata/clientDefs/CKndigung.json +++ b/custom/Espo/Custom/Resources/metadata/clientDefs/CKndigung.json @@ -34,15 +34,48 @@ ] }, "iconClass": "fas fa-file-contract", + "dynamicLogic": { + "fields": { + "sendungsverfolgungsnummer": { + "visible": { + "conditionGroup": [ + { + "type": "equals", + "attribute": "zustellart", + "value": "Einschreiben" + } + ] + } + }, + "mietrueckstand": { + "visible": { + "conditionGroup": [ + { + "type": "contains", + "attribute": "kuendigungsgrund", + "value": "Mietrückstand" + } + ] + } + }, + "beschreibungBesorgnisgrund": { + "visible": { + "conditionGroup": [ + { + "type": "equals", + "attribute": "vorzeitigeRaeumungZulaessig", + "value": "JaBesorgnisgrund259ZPO" + } + ] + } + } + } + }, "relationshipPanels": { "vmhMietverhltnises": { "layout": null, "selectPrimaryFilterName": null }, - "mietobjekte": { - "layout": null, - "selectPrimaryFilterName": null - }, "kuendiger": { "layout": null, "selectPrimaryFilterName": null diff --git a/custom/Espo/Custom/Resources/metadata/clientDefs/CKuendigung.json b/custom/Espo/Custom/Resources/metadata/clientDefs/CKuendigung.json deleted file mode 100644 index c0b48d8d..00000000 --- a/custom/Espo/Custom/Resources/metadata/clientDefs/CKuendigung.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "controller": "controllers/record", - "boolFilterList": [ - "onlyMy" - ], - "iconClass": "fas fa-file-contract", - "sidePanels": { - "detail": [ - { - "name": "activities", - "reference": "activities" - }, - { - "name": "history", - "reference": "history" - }, - { - "name": "tasks", - "reference": "tasks" - } - ] - }, - "bottomPanels": { - "detail": [ - { - "name": "activities", - "reference": "activities", - "disabled": true - }, - { - "name": "history", - "reference": "history", - "disabled": true - } - ] - }, - "relationshipPanels": { - "vermieter": { - "layout": null, - "selectPrimaryFilterName": null - }, - "mieter": { - "layout": null, - "selectPrimaryFilterName": null - }, - "dokumenteKuendigung": { - "layout": null, - "selectPrimaryFilterName": null - }, - "contactsKuendigung": { - "layout": null, - "selectPrimaryFilterName": "portalUsers" - } - } -} diff --git a/custom/Espo/Custom/Resources/metadata/entityDefs/CKndigung.json b/custom/Espo/Custom/Resources/metadata/entityDefs/CKndigung.json index c95347c5..b78d066b 100644 --- a/custom/Espo/Custom/Resources/metadata/entityDefs/CKndigung.json +++ b/custom/Espo/Custom/Resources/metadata/entityDefs/CKndigung.json @@ -90,32 +90,40 @@ "tooltip": true, "isCustom": true }, - "kuendigungsart": { + "beendigungsTatbestand": { "type": "enum", - "required": false, + "required": true, "options": [ - "Ordentlich", - "Ausserordentlich", - "Fristlos", - "AufgabeerklärungMieter" + "Kündigung Vermieter", + "Kündigung Mieter", + "Aufhebungsvertrag", + "Befristung", + "ZVG Zuschlagsbeschluss" ], - "default": "Ordentlich", + "style": { + "Kündigung Vermieter": null, + "Kündigung Mieter": null, + "Aufhebungsvertrag": null, + "Befristung": null, + "ZVG Zuschlagsbeschluss": null + }, + "default": "Kündigung Vermieter", "isCustom": true }, "kuendigungsgrund": { - "type": "enum", + "type": "multiEnum", "required": false, "options": [ - "Zahlungsverzug", - "Pflichtverletzung", + "Mietrückstand", "Eigenbedarf", + "Fehlverhalten", "Verwertung", - "VerhaltensbedingteLaermruhestoerung", - "BeschaedigungSubstanz", - "UnerlaubteUntervermietung", - "StoerendeGeschaeftsfuehrung", - "Sonstiges" + "ZVG Eigenbedarf", + "573a Abs. 1 (nicht mehr als 2 Whng.)", + "573a Abs. 2 (Einliegerwohnung)", + "GewerbeOrdentlich" ], + "tooltip": true, "isCustom": true }, "kuendigungsgrundDetails": { @@ -165,44 +173,41 @@ "options": [ "Einschreiben", "Persoenlich", - "Gerichtsvollzieher", - "Oeffentlich", - "Sonstiges" + "Bote", + "Brief" ], "isCustom": true }, - "reaktionMieter": { + "sendungsverfolgungsnummer": { + "type": "varchar", + "required": false, + "maxLength": 100, + "tooltip": true, + "isCustom": true + }, + "vorzeitigeRaeumungZulaessig": { + "type": "enum", + "required": false, + "options": [ + "Nein", + "JaKeinWohnraum257ZPO", + "JaBesorgnisgrund259ZPO" + ], + "default": "Nein", + "tooltip": true, + "isCustom": true + }, + "beschreibungBesorgnisgrund": { "type": "text", "required": false, + "tooltip": true, "isCustom": true }, - "notizen": { - "type": "text", - "required": false, - "isCustom": true - }, - "rueckstandMiete": { - "type": "currency", - "required": false, - "default": 0, - "isCustom": true - }, - "rueckstandNebenkosten": { - "type": "currency", - "required": false, - "default": 0, - "isCustom": true - }, - "sonstigeForderungen": { - "type": "currency", - "required": false, - "default": 0, - "isCustom": true - }, - "aussergerichtlicheGebuehren13": { + "mietrueckstand": { "type": "currency", "required": false, "default": 0, + "tooltip": true, "isCustom": true } }, @@ -254,14 +259,6 @@ "audited": false, "isCustom": true }, - "mietobjekte": { - "type": "hasMany", - "relationName": "cMietobjektKuendigung", - "foreign": "kndigungen", - "entity": "CMietobjekt", - "audited": false, - "isCustom": true - }, "freigeschalteteNutzer": { "type": "belongsTo", "foreign": "cKndigungen", diff --git a/custom/Espo/Custom/Resources/metadata/entityDefs/CKuendigung.json b/custom/Espo/Custom/Resources/metadata/entityDefs/CKuendigung.json deleted file mode 100644 index 44176db2..00000000 --- a/custom/Espo/Custom/Resources/metadata/entityDefs/CKuendigung.json +++ /dev/null @@ -1,338 +0,0 @@ -{ - "fields": { - "name": { - "type": "varchar", - "required": true, - "pattern": "$noBadCharacters" - }, - "description": { - "type": "text" - }, - "createdAt": { - "type": "datetime", - "readOnly": true - }, - "modifiedAt": { - "type": "datetime", - "readOnly": true - }, - "createdBy": { - "type": "link", - "readOnly": true, - "view": "views/fields/user" - }, - "modifiedBy": { - "type": "link", - "readOnly": true, - "view": "views/fields/user" - }, - "assignedUser": { - "type": "link", - "required": false, - "view": "views/fields/assigned-user" - }, - "teams": { - "type": "linkMultiple", - "view": "views/fields/teams" - }, - "collaborators": { - "type": "linkMultiple", - "view": "views/fields/collaborators", - "maxCount": 30, - "fieldManagerParamList": [ - "readOnly", - "readOnlyAfterCreate", - "audited", - "autocompleteOnEmpty", - "maxCount", - "inlineEditDisabled", - "tooltipText" - ] - }, - "kuendigungsdatum": { - "type": "date", - "required": true, - "tooltip": true, - "isCustom": true - }, - "kuendigungsfrist": { - "type": "date", - "required": true, - "after": "kuendigungsdatum", - "tooltip": true, - "isCustom": true - }, - "kuendigungsgrund": { - "type": "multiEnum", - "required": true, - "options": [ - "Mietrückstand", - "Eigenbedarf", - "Fehlverhalten", - "Verwertung", - "ZVG Eigenbedarf", - "573a Abs. 1 (nicht mehr als 2 Whng.)", - "573a Abs. 2 (Einliegerwohnung)", - "GewerbeOrdentlich", - "Sonstige" - ], - "default": ["Mietrückstand"], - "tooltip": true, - "isCustom": true - }, - "kuendigungsart": { - "type": "enum", - "required": true, - "options": [ - "Ordentlich", - "Außerordentlich (fristlos)", - "Außerordentlich (mit sozialer Frist)" - ], - "style": { - "Ordentlich": "success", - "Außerordentlich (fristlos)": "danger", - "Außerordentlich (mit sozialer Frist)": "warning" - }, - "default": "Ordentlich", - "tooltip": true, - "isCustom": true - }, - "kuendigenderPartei": { - "type": "enum", - "required": true, - "options": [ - "Vermieter", - "Mieter" - ], - "style": { - "Vermieter": "primary", - "Mieter": "info" - }, - "default": "Vermieter", - "tooltip": true, - "isCustom": true - }, - "status": { - "type": "enum", - "required": true, - "options": [ - "Entwurf", - "Versendet", - "Zugestellt", - "Anerkannt", - "Bestritten", - "Vollzogen", - "Widerrufen" - ], - "style": { - "Entwurf": null, - "Versendet": "warning", - "Zugestellt": "info", - "Anerkannt": "success", - "Bestritten": "danger", - "Vollzogen": "success", - "Widerrufen": null - }, - "default": "Entwurf", - "tooltip": true, - "isCustom": true - }, - "zustellungsdatum": { - "type": "date", - "required": false, - "tooltip": true, - "isCustom": true - }, - "zustellungsart": { - "type": "enum", - "required": false, - "options": [ - "Persönlich", - "Einschreiben", - "Gerichtlicher Zustellungsbevollmächtigter", - "E-Mail (sofern vereinbart)", - "Sonstige" - ], - "tooltip": true, - "isCustom": true - }, - "rueckstandsbetrag": { - "type": "currency", - "required": false, - "onlyDefaultCurrency": true, - "conversionDisabled": true, - "min": 0, - "decimal": true, - "tooltip": true, - "isCustom": true - }, - "monateMietrückstand": { - "type": "int", - "required": false, - "min": 0, - "tooltip": true, - "isCustom": true - }, - "schonfristGewaehrt": { - "type": "bool", - "default": false, - "tooltip": true, - "isCustom": true - }, - "schonfristDatum": { - "type": "date", - "required": false, - "tooltip": true, - "isCustom": true - }, - "besorgnisNichtRechtzeitigerAuszug": { - "type": "bool", - "default": false, - "tooltip": true, - "isCustom": true - }, - "anmerkungen": { - "type": "text", - "required": false, - "isCustom": true - }, - "vmhMietverhltnis": { - "type": "link", - "required": false, - "isCustom": true - }, - "mietobjekt": { - "type": "link", - "required": false, - "isCustom": true - } - }, - "links": { - "createdBy": { - "type": "belongsTo", - "entity": "User" - }, - "modifiedBy": { - "type": "belongsTo", - "entity": "User" - }, - "assignedUser": { - "type": "belongsTo", - "entity": "User" - }, - "teams": { - "type": "hasMany", - "entity": "Team", - "relationName": "entityTeam", - "layoutRelationshipsDisabled": true - }, - "collaborators": { - "type": "hasMany", - "entity": "User", - "relationName": "entityCollaborator", - "layoutRelationshipsDisabled": true - }, - "meetings": { - "type": "hasMany", - "entity": "Meeting", - "foreign": "parent" - }, - "calls": { - "type": "hasMany", - "entity": "Call", - "foreign": "parent" - }, - "tasks": { - "type": "hasChildren", - "entity": "Task", - "foreign": "parent" - }, - "emails": { - "type": "hasChildren", - "entity": "Email", - "foreign": "parent", - "layoutRelationshipsDisabled": true - }, - "vmhMietverhltnis": { - "type": "belongsTo", - "foreign": "kuendigungen", - "entity": "CVmhMietverhltnis", - "audited": false, - "isCustom": true - }, - "mietobjekt": { - "type": "belongsTo", - "foreign": "kuendigungen", - "entity": "CMietobjekt", - "audited": false, - "isCustom": true - }, - "vermieter": { - "type": "hasMany", - "relationName": "cBeteiligteKuendigungVermieter", - "foreign": "kuendigungenVermieter", - "entity": "CBeteiligte", - "audited": false, - "isCustom": true - }, - "mieter": { - "type": "hasMany", - "relationName": "cBeteiligteKuendigungMieter", - "foreign": "kuendigungenMieter", - "entity": "CBeteiligte", - "audited": false, - "isCustom": true - }, - "dokumenteKuendigung": { - "type": "hasMany", - "relationName": "cDokumenteKuendigung", - "foreign": "kuendigungDokumente", - "entity": "CDokumente", - "audited": false, - "isCustom": true - }, - "contactsKuendigung": { - "type": "hasMany", - "relationName": "cKuendigungContact", - "foreign": "cKuendigungContact", - "entity": "Contact", - "audited": false, - "isCustom": true - } - }, - "collection": { - "orderBy": "createdAt", - "order": "desc", - "textFilterFields": [ - "name" - ], - "fullTextSearch": false, - "countDisabled": false - }, - "indexes": { - "name": { - "columns": [ - "name", - "deleted" - ] - }, - "assignedUser": { - "columns": [ - "assignedUserId", - "deleted" - ] - }, - "createdAt": { - "columns": [ - "createdAt", - "deleted" - ] - }, - "kuendigungsdatum": { - "columns": [ - "kuendigungsdatum", - "deleted" - ] - } - } -} diff --git a/custom/Espo/Custom/Resources/metadata/entityDefs/CMietobjekt.json b/custom/Espo/Custom/Resources/metadata/entityDefs/CMietobjekt.json index b54e7cd8..c653ac24 100644 --- a/custom/Espo/Custom/Resources/metadata/entityDefs/CMietobjekt.json +++ b/custom/Espo/Custom/Resources/metadata/entityDefs/CMietobjekt.json @@ -157,14 +157,6 @@ "entity": "CMietinkasso", "audited": false, "isCustom": true - }, - "kndigungen": { - "type": "hasMany", - "relationName": "cMietobjektKuendigung", - "foreign": "mietobjekte", - "entity": "CKndigung", - "audited": false, - "isCustom": true } }, "collection": { diff --git a/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json b/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json index 7894b005..e6ba3874 100644 --- a/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json +++ b/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json @@ -288,14 +288,6 @@ "entity": "CMietobjekt", "audited": false, "isCustom": true - }, - "kuendigungen": { - "type": "hasMany", - "relationName": "cKuendigungVmhMietverhltnis", - "foreign": "vmhMietverhltnis", - "entity": "CKuendigung", - "audited": false, - "isCustom": true } }, "collection": { diff --git a/custom/Espo/Custom/Resources/metadata/scopes/CKuendigung.json b/custom/Espo/Custom/Resources/metadata/scopes/CKuendigung.json deleted file mode 100644 index 5dbb02da..00000000 --- a/custom/Espo/Custom/Resources/metadata/scopes/CKuendigung.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "entity": true, - "layouts": true, - "tab": true, - "acl": true, - "customizable": true, - "type": "BasePlus", - "module": "Custom", - "object": true, - "isCustom": true -} diff --git a/custom/Espo/Custom/Services/CVmhMietverhltnis.php b/custom/Espo/Custom/Services/CVmhMietverhltnis.php index e23fcc0b..b5f01676 100644 --- a/custom/Espo/Custom/Services/CVmhMietverhltnis.php +++ b/custom/Espo/Custom/Services/CVmhMietverhltnis.php @@ -426,59 +426,34 @@ class CVmhMietverhltnis extends \Espo\Services\Record ->getRelation($kuendigung, 'vmhMietverhltnises') ->relate($mietverhaeltnis); - // 7. Get and link Mietobjekt - $mietobjekt = $this->entityManager - ->getRepository('CVmhMietverhltnis') - ->getRelation($mietverhaeltnis, 'vmhMietobjekt') - ->findOne(); - - if ($mietobjekt) { - $kuendigungRepo - ->getRelation($kuendigung, 'mietobjekte') - ->relate($mietobjekt); - } - - // 8. Get Vermieter (Kündigende) from Mietverhältnis + // 7. Get Vermieter from Mietverhältnis $vermieterBeteiligte = $this->entityManager ->getRepository('CVmhMietverhltnis') ->getRelation($mietverhaeltnis, 'vmhbeteiligtevermieter') ->find(); foreach ($vermieterBeteiligte as $vermieter) { - // Link as Kündigende + // Link as Kuendiger (Vermieter) $kuendigungRepo ->getRelation($kuendigung, 'kuendiger') ->relate($vermieter); } - // 9. Get Mieter (Gekündigte) from Mietverhältnis + // 8. Get Mieter from Mietverhältnis (NUR Mieter, NICHT sonstige Bewohner!) $mieterBeteiligte = $this->entityManager ->getRepository('CVmhMietverhltnis') ->getRelation($mietverhaeltnis, 'vmhbeteiligtemieter') ->find(); foreach ($mieterBeteiligte as $mieter) { - // Link as Gekündigte + // Link as Gekuendigte (Mieter) $kuendigungRepo ->getRelation($kuendigung, 'gekuendigte') ->relate($mieter); } - // 9b. Get Sonstige Bewohner (auch Gekündigte) from Mietverhältnis - $sonstigeBewohner = $this->entityManager - ->getRepository('CVmhMietverhltnis') - ->getRelation($mietverhaeltnis, 'sonstigebesitzervmhmietverhltnis') - ->find(); - - foreach ($sonstigeBewohner as $bewohner) { - // Link as Gekündigte - $kuendigungRepo - ->getRelation($kuendigung, 'gekuendigte') - ->relate($bewohner); - } - - // 10. Copy all documents from Mietverhältnis, Mietobjekt and Beteiligte - // 10a. Dokumente vom Mietverhältnis + // 9. Copy all documents from Mietverhältnis and Beteiligte + // 9a. Dokumente vom Mietverhältnis $dokumenteMV = $this->entityManager ->getRepository('CVmhMietverhltnis') ->getRelation($mietverhaeltnis, 'dokumentesvmhMietverhltnisse') @@ -490,25 +465,10 @@ class CVmhMietverhltnis extends \Espo\Services\Record ->relate($dokument); } - // 10b. Dokumente vom Mietobjekt - if ($mietobjekt) { - $dokumenteMO = $this->entityManager - ->getRepository('CMietobjekt') - ->getRelation($mietobjekt, 'dokumentesMietobjekt') - ->find(); - - foreach ($dokumenteMO as $dokument) { - $kuendigungRepo - ->getRelation($kuendigung, 'dokumenteskuendigung') - ->relate($dokument); - } - } - - // 10c. Dokumente von allen Beteiligten (Vermieter + Mieter + Sonstige) + // 9b. Dokumente von allen Beteiligten (Vermieter + Mieter) $alleBeteiligte = array_merge( iterator_to_array($vermieterBeteiligte), - iterator_to_array($mieterBeteiligte), - iterator_to_array($sonstigeBewohner) + iterator_to_array($mieterBeteiligte) ); foreach ($alleBeteiligte as $beteiligter) { @@ -524,7 +484,7 @@ class CVmhMietverhltnis extends \Espo\Services\Record } } - // 11. Copy portal contacts from Mietverhältnis (nur vom Mietverhältnis!) + // 10. Copy portal contacts from Mietverhältnis (nur vom Mietverhältnis!) $portalContacts = $this->entityManager ->getRepository('CVmhMietverhltnis') ->getRelation($mietverhaeltnis, 'contactsMietverhltnis') @@ -536,7 +496,7 @@ class CVmhMietverhltnis extends \Espo\Services\Record ->relate($contact); } - // 12. Commit transaction + // 11. Commit transaction $this->entityManager->getTransactionManager()->commit(); return [ diff --git a/data/config.php b/data/config.php index 0f8fa1d1..dda5be80 100644 --- a/data/config.php +++ b/data/config.php @@ -360,8 +360,8 @@ return [ 0 => 'youtube.com', 1 => 'google.com' ], - 'cacheTimestamp' => 1769255131, - 'microtime' => 1769255131.563756, + 'cacheTimestamp' => 1769337671, + 'microtime' => 1769337671.657132, 'siteUrl' => 'https://crm.bitbylaw.com', 'fullTextSearchMinLength' => 4, 'appTimestamp' => 1768843902,