Add new fields for rental details and update localization; enhance layout for better visibility
This commit is contained in:
89
README.md
89
README.md
@@ -380,6 +380,16 @@ sudo find custom/ -type d -exec chmod 775 {} \;
|
|||||||
- [ ] Formula in `formula/`, **NICHT** in `entityDefs/`
|
- [ ] Formula in `formula/`, **NICHT** in `entityDefs/`
|
||||||
- [ ] Nach Erstellung: `./custom/scripts/check_and_rebuild.sh`
|
- [ ] 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:**
|
**Bei Layout-Änderungen:**
|
||||||
- [ ] Keine `false` oder leere Objekte in Rows
|
- [ ] Keine `false` oder leere Objekte in Rows
|
||||||
- [ ] Width nur in List-Layouts verwenden
|
- [ ] 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**
|
- `foreign` zeigt auf den Link-Namen der **Gegenseite**
|
||||||
- Fehlt eine Seite → **"404 Link does not exist"-Fehler**
|
- 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
|
### clientDefs/{EntityType}.json
|
||||||
|
|
||||||
**Format-Beispiel:**
|
**Format-Beispiel:**
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
"besorgnisNichtRechtzeitigerAuszug": "Besorgnis nicht rechtzeitiger Auszug",
|
"besorgnisNichtRechtzeitigerAuszug": "Besorgnis nicht rechtzeitiger Auszug",
|
||||||
"beendigungsTatbestand": "Beendet durch",
|
"beendigungsTatbestand": "Beendet durch",
|
||||||
"vertragsdatum": "Vertragsdatum",
|
"vertragsdatum": "Vertragsdatum",
|
||||||
|
"kaltmiete": "Kaltmiete",
|
||||||
|
"bKVorauszahlung": "BK-Vorauszahlung",
|
||||||
|
"bKPauschale": "BK-Pauschale",
|
||||||
|
"warmmiete": "Warmmiete",
|
||||||
"vmhRumungsklages": "Räumungsklagen",
|
"vmhRumungsklages": "Räumungsklagen",
|
||||||
"mietinkassos": "Mietinkasso",
|
"mietinkassos": "Mietinkasso",
|
||||||
"vmhbeteiligtevermieter": "Vermieter",
|
"vmhbeteiligtevermieter": "Vermieter",
|
||||||
@@ -17,6 +21,12 @@
|
|||||||
"vmhMietobjekt2Mietverhltnis": "Mietobjekte (veraltet)",
|
"vmhMietobjekt2Mietverhltnis": "Mietobjekte (veraltet)",
|
||||||
"vmhMietobjekt": "Mietobjekt"
|
"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": {
|
"links": {
|
||||||
"calls": "Anrufe",
|
"calls": "Anrufe",
|
||||||
"tasks": "Aufgaben",
|
"tasks": "Aufgaben",
|
||||||
|
|||||||
@@ -8,6 +8,10 @@
|
|||||||
"auszugsfrist": "Move-out Deadline",
|
"auszugsfrist": "Move-out Deadline",
|
||||||
"besorgnisNichtRechtzeitigerAuszug": "Concern About Late Move-out",
|
"besorgnisNichtRechtzeitigerAuszug": "Concern About Late Move-out",
|
||||||
"beendigungsTatbestand": "Terminated By",
|
"beendigungsTatbestand": "Terminated By",
|
||||||
|
"kaltmiete": "Base Rent",
|
||||||
|
"bKVorauszahlung": "Utilities Advance",
|
||||||
|
"bKPauschale": "Utilities Flat Rate",
|
||||||
|
"warmmiete": "Total Rent",
|
||||||
"vmhbeteiligtevermieter": "Landlords",
|
"vmhbeteiligtevermieter": "Landlords",
|
||||||
"vmhbeteiligtemieter": "Tenants",
|
"vmhbeteiligtemieter": "Tenants",
|
||||||
"contactsMietverhltnis": "Portal Users",
|
"contactsMietverhltnis": "Portal Users",
|
||||||
|
|||||||
@@ -57,5 +57,31 @@
|
|||||||
"noteText": null,
|
"noteText": null,
|
||||||
"noteStyle": "info",
|
"noteStyle": "info",
|
||||||
"customLabel": "Beendigung"
|
"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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -130,6 +130,47 @@
|
|||||||
"before": "auszugsfrist",
|
"before": "auszugsfrist",
|
||||||
"isCustom": true
|
"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": {
|
"vmhMietobjekt": {
|
||||||
"type": "link",
|
"type": "link",
|
||||||
"required": false,
|
"required": false,
|
||||||
|
|||||||
@@ -359,8 +359,8 @@ return [
|
|||||||
0 => 'youtube.com',
|
0 => 'youtube.com',
|
||||||
1 => 'google.com'
|
1 => 'google.com'
|
||||||
],
|
],
|
||||||
'cacheTimestamp' => 1769206135,
|
'cacheTimestamp' => 1769206320,
|
||||||
'microtime' => 1769206135.340303,
|
'microtime' => 1769206320.164239,
|
||||||
'siteUrl' => 'https://crm.bitbylaw.com',
|
'siteUrl' => 'https://crm.bitbylaw.com',
|
||||||
'fullTextSearchMinLength' => 4,
|
'fullTextSearchMinLength' => 4,
|
||||||
'appTimestamp' => 1768843902,
|
'appTimestamp' => 1768843902,
|
||||||
|
|||||||
Reference in New Issue
Block a user