From ebe8d867320acba992e5b5519bf5091c52a93b3b Mon Sep 17 00:00:00 2001 From: bsiggel Date: Fri, 23 Jan 2026 23:13:12 +0100 Subject: [PATCH] Add new fields for rental details and update localization; enhance layout for better visibility --- README.md | 89 +++++++++++++++++++ .../i18n/de_DE/CVmhMietverhltnis.json | 10 +++ .../i18n/en_US/CVmhMietverhltnis.json | 4 + .../layouts/CVmhMietverhltnis/detail.json | 26 ++++++ .../entityDefs/CVmhMietverhltnis.json | 41 +++++++++ data/config.php | 4 +- 6 files changed, 172 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 443845fd..c512b1e1 100644 --- a/README.md +++ b/README.md @@ -380,6 +380,16 @@ sudo find custom/ -type d -exec chmod 775 {} \; - [ ] Formula in `formula/`, **NICHT** in `entityDefs/` - [ ] Nach Erstellung: `./custom/scripts/check_and_rebuild.sh` +**Bei Hinzufügen neuer Felder:** +- [ ] Felder in entityDefs definieren mit korrektem Typ und Optionen +- [ ] Felder zu relevanten Layouts hinzufügen (detail.json, list.json, etc.) +- [ ] Felder sinnvoll gruppieren (eigenes Panel oder bestehendes Panel) +- [ ] Labels in i18n/**de_DE** vollständig (fields UND links) +- [ ] Labels in i18n/**en_US** vollständig (Fallback-Sprache!) +- [ ] Tooltips in i18n hinzufügen falls erforderlich +- [ ] Nach Änderung: `./custom/scripts/check_and_rebuild.sh` +- [ ] Browser Hard Refresh (Ctrl+Shift+R) durchführen + **Bei Layout-Änderungen:** - [ ] Keine `false` oder leere Objekte in Rows - [ ] Width nur in List-Layouts verwenden @@ -511,6 +521,85 @@ Bei hasMany-Relationships müssen **BEIDE Seiten** definiert werden: - `foreign` zeigt auf den Link-Namen der **Gegenseite** - Fehlt eine Seite → **"404 Link does not exist"-Fehler** +**Vollständiger Prozess beim Hinzufügen neuer Felder:** + +Neue Felder in einer Entity erfordern Änderungen in **drei Bereichen**: + +1. **entityDefs/{Entity}.json** - Feld-Definition +2. **layouts/{Entity}/*.json** - Sichtbarkeit in UI +3. **i18n/{Sprache}/{Entity}.json** - Beschriftungen + +**Schritt-für-Schritt-Anleitung:** + +**1. Feld in entityDefs definieren:** +```json +// custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json +{ + "fields": { + "kaltmiete": { + "type": "currency", + "required": true, + "onlyDefaultCurrency": true, + "min": 1, + "decimal": true, + "tooltip": true, + "isCustom": true + } + } +} +``` + +**2. Feld zu Layouts hinzufügen:** +```json +// custom/Espo/Custom/Resources/layouts/CVmhMietverhltnis/detail.json +[ + { + "rows": [ + [ + {"name": "kaltmiete"}, + {"name": "warmmiete"} + ] + ], + "customLabel": "Miethöhe", + "noteText": "Erfassen Sie die Miethöhe in ihren einzelnen Bestandteilen", + "noteStyle": "info" + } +] +``` + +**3. Labels in ALLEN Sprachen definieren:** +```json +// custom/Espo/Custom/Resources/i18n/de_DE/CVmhMietverhltnis.json +{ + "fields": { + "kaltmiete": "Kaltmiete" + }, + "tooltips": { + "kaltmiete": "Monatliche Kaltmiete ohne Betriebskosten" + } +} + +// custom/Espo/Custom/Resources/i18n/en_US/CVmhMietverhltnis.json +{ + "fields": { + "kaltmiete": "Base Rent" + } +} +``` + +**Wichtig:** +- ✅ **IMMER** de_DE UND en_US pflegen (en_US ist Fallback!) +- ✅ Tooltips nur wenn `"tooltip": true` im entityDef gesetzt +- ✅ Bei Link-Feldern Labels in `fields` UND `links` definieren +- ✅ Nach Änderungen: `./custom/scripts/check_and_rebuild.sh` + +**Typische Layout-Typen:** +- `detail.json` - Detail-Ansicht (Panels mit Rows) +- `list.json` - Listen-Ansicht (Spalten mit Width) +- `listSmall.json` - Kompakte Listen-Ansicht +- `detailSmall.json` - Seitenleisten-Ansicht +- `filters.json` - Filter-Felder + ### clientDefs/{EntityType}.json **Format-Beispiel:** diff --git a/custom/Espo/Custom/Resources/i18n/de_DE/CVmhMietverhltnis.json b/custom/Espo/Custom/Resources/i18n/de_DE/CVmhMietverhltnis.json index aab89807..4d8cb015 100644 --- a/custom/Espo/Custom/Resources/i18n/de_DE/CVmhMietverhltnis.json +++ b/custom/Espo/Custom/Resources/i18n/de_DE/CVmhMietverhltnis.json @@ -7,6 +7,10 @@ "besorgnisNichtRechtzeitigerAuszug": "Besorgnis nicht rechtzeitiger Auszug", "beendigungsTatbestand": "Beendet durch", "vertragsdatum": "Vertragsdatum", + "kaltmiete": "Kaltmiete", + "bKVorauszahlung": "BK-Vorauszahlung", + "bKPauschale": "BK-Pauschale", + "warmmiete": "Warmmiete", "vmhRumungsklages": "Räumungsklagen", "mietinkassos": "Mietinkasso", "vmhbeteiligtevermieter": "Vermieter", @@ -17,6 +21,12 @@ "vmhMietobjekt2Mietverhltnis": "Mietobjekte (veraltet)", "vmhMietobjekt": "Mietobjekt" }, + "tooltips": { + "kaltmiete": "Monatliche Kaltmiete ohne Betriebskosten", + "bKVorauszahlung": "Monatliche Betriebskosten-Vorauszahlung", + "bKPauschale": "Monatliche Betriebskosten-Pauschale", + "warmmiete": "Summe aus Kaltmiete + BK-Vorauszahlung + BK-Pauschale" + }, "links": { "calls": "Anrufe", "tasks": "Aufgaben", diff --git a/custom/Espo/Custom/Resources/i18n/en_US/CVmhMietverhltnis.json b/custom/Espo/Custom/Resources/i18n/en_US/CVmhMietverhltnis.json index f3142f78..f47e5b7a 100644 --- a/custom/Espo/Custom/Resources/i18n/en_US/CVmhMietverhltnis.json +++ b/custom/Espo/Custom/Resources/i18n/en_US/CVmhMietverhltnis.json @@ -8,6 +8,10 @@ "auszugsfrist": "Move-out Deadline", "besorgnisNichtRechtzeitigerAuszug": "Concern About Late Move-out", "beendigungsTatbestand": "Terminated By", + "kaltmiete": "Base Rent", + "bKVorauszahlung": "Utilities Advance", + "bKPauschale": "Utilities Flat Rate", + "warmmiete": "Total Rent", "vmhbeteiligtevermieter": "Landlords", "vmhbeteiligtemieter": "Tenants", "contactsMietverhltnis": "Portal Users", diff --git a/custom/Espo/Custom/Resources/layouts/CVmhMietverhltnis/detail.json b/custom/Espo/Custom/Resources/layouts/CVmhMietverhltnis/detail.json index b435be8a..c7ca1a79 100644 --- a/custom/Espo/Custom/Resources/layouts/CVmhMietverhltnis/detail.json +++ b/custom/Espo/Custom/Resources/layouts/CVmhMietverhltnis/detail.json @@ -57,5 +57,31 @@ "noteText": null, "noteStyle": "info", "customLabel": "Beendigung" + }, + { + "rows": [ + [ + { + "name": "kaltmiete" + }, + { + "name": "bKVorauszahlung" + }, + { + "name": "bKPauschale" + }, + { + "name": "warmmiete" + } + ] + ], + "dynamicLogicVisible": null, + "style": "primary", + "dynamicLogicStyled": null, + "tabBreak": false, + "hidden": false, + "noteText": "Erfassen Sie die Miethöhe in ihren einzelnen Bestandteilen", + "noteStyle": "info", + "customLabel": "Miethöhe" } ] \ No newline at end of file diff --git a/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json b/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json index 7a3c7352..f2ab8020 100644 --- a/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json +++ b/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhMietverhltnis.json @@ -130,6 +130,47 @@ "before": "auszugsfrist", "isCustom": true }, + "kaltmiete": { + "type": "currency", + "required": true, + "onlyDefaultCurrency": true, + "conversionDisabled": true, + "min": 1, + "decimal": true, + "tooltip": true, + "isCustom": true + }, + "bKVorauszahlung": { + "type": "currency", + "required": false, + "onlyDefaultCurrency": true, + "conversionDisabled": true, + "default": 0, + "min": 0, + "decimal": true, + "tooltip": true, + "isCustom": true + }, + "bKPauschale": { + "type": "currency", + "required": false, + "default": 0, + "min": 0, + "decimal": true, + "tooltip": true, + "isCustom": true, + "onlyDefaultCurrency": true + }, + "warmmiete": { + "type": "currency", + "onlyDefaultCurrency": true, + "conversionDisabled": true, + "decimal": true, + "isCustom": true, + "readOnly": true, + "required": false, + "tooltip": true + }, "vmhMietobjekt": { "type": "link", "required": false, diff --git a/data/config.php b/data/config.php index 447d17e4..9938961a 100644 --- a/data/config.php +++ b/data/config.php @@ -359,8 +359,8 @@ return [ 0 => 'youtube.com', 1 => 'google.com' ], - 'cacheTimestamp' => 1769206135, - 'microtime' => 1769206135.340303, + 'cacheTimestamp' => 1769206320, + 'microtime' => 1769206320.164239, 'siteUrl' => 'https://crm.bitbylaw.com', 'fullTextSearchMinLength' => 4, 'appTimestamp' => 1768843902,