Enhance EspoCRM entities and layouts with new relationships, fields, and troubleshooting sections; update README.md for clarity and add new layout files for CAdressen and CBeteiligte.
This commit is contained in:
121
README.md
121
README.md
@@ -75,6 +75,11 @@ Alle Dateien sind im JSON-Format. Die KI muss gültiges JSON parsen und schreibe
|
|||||||
Links: Beziehungen (belongsTo für 1:1, hasMany für 1:N, etc.).
|
Links: Beziehungen (belongsTo für 1:1, hasMany für 1:N, etc.).
|
||||||
Collection: Für Listen-Views (Sortierung, Filter).
|
Collection: Für Listen-Views (Sortierung, Filter).
|
||||||
Auslösen: Hinzufügen eines Felds triggert bei Rebuild eine Datenbankänderung (neue Spalte in der Tabelle). Beziehungen erstellen Middle-Tables bei Many-to-Many.
|
Auslösen: Hinzufügen eines Felds triggert bei Rebuild eine Datenbankänderung (neue Spalte in der Tabelle). Beziehungen erstellen Middle-Tables bei Many-to-Many.
|
||||||
|
**WICHTIG - Bidirektionale Relationships**: Bei hasMany-Relationships (z. B. viele Contacts zu einer Entität) müssen **beide Seiten** definiert werden:
|
||||||
|
- In Entität A: Link mit `relationName` und `foreign` (zeigt auf Link-Namen in Entität B)
|
||||||
|
- In Entität B (z. B. Contact): Link mit **derselben** `relationName` und `foreign` (zeigt auf Link-Namen in Entität A)
|
||||||
|
- Beispiel: `CVmhMietverhltnis` hat Link `contactsMietverhltnis` mit relationName `cVmhMietverhltnisContact`; `Contact` hat Link `cVmhMietverhltnisesContact` mit derselben relationName und foreign `contactsMietverhltnis`.
|
||||||
|
- Fehlt eine Seite, gibt EspoCRM 404-Fehler "Link does not exist" zurück.
|
||||||
docs.espocrm.com
|
docs.espocrm.com
|
||||||
|
|
||||||
clientDefs/{EntityType}.json (Format-Beispiel):
|
clientDefs/{EntityType}.json (Format-Beispiel):
|
||||||
@@ -169,7 +174,7 @@ Zukünftige Ziele:
|
|||||||
- Die KI soll über APIs/Webhooks angebunden werden, ohne EspoCRMs Core zu modifizieren, um Stabilität zu wahren.
|
- Die KI soll über APIs/Webhooks angebunden werden, ohne EspoCRMs Core zu modifizieren, um Stabilität zu wahren.
|
||||||
- **Erweiterte Features**: Mehrsprachigkeit, Mandanten-Isolation für mehrere Kanzlei-Teams, Integration mit externen Systemen (z. B. Gerichts-APIs, Buchhaltung).
|
- **Erweiterte Features**: Mehrsprachigkeit, Mandanten-Isolation für mehrere Kanzlei-Teams, Integration mit externen Systemen (z. B. Gerichts-APIs, Buchhaltung).
|
||||||
|
|
||||||
Die KI kann diese Ziele unterstützen, indem sie JSON-Strukturen analysiert, Änderungen vorschlägt (z. B. neue Felder für Compliance) und Workflows modelliert. Das System soll skalierbar, GDPR-konform und benutzerfreundlich sein, um die Effizienz in der Rechtsbranche zu steigern.
|
Die KI kann diese Ziele unterstützen, indem sie JSON-Strukturen analysiert, Änderungen vorschlägt (z. B. neue Felder für Compliance) und Workflows modelliert. Das System soll skalierbar und benutzerfreundlich sein, um die Effizienz in der Rechtsbranche zu steigern.
|
||||||
|
|
||||||
6. Bearbeitung von Entitäten und Layouts
|
6. Bearbeitung von Entitäten und Layouts
|
||||||
|
|
||||||
@@ -221,3 +226,117 @@ Um die Entwicklung und Wartung zu erleichtern, wurden benutzerdefinierte Scripts
|
|||||||
- Sichere Backups vor Lösch- oder Edit-Operationen.
|
- Sichere Backups vor Lösch- oder Edit-Operationen.
|
||||||
- Für komplexe Änderungen die EspoCRM-UI verwenden.
|
- Für komplexe Änderungen die EspoCRM-UI verwenden.
|
||||||
- Execute simuliert nur einfache Aktionen; für vollständige Ausführung EspoCRM-API nutzen.
|
- Execute simuliert nur einfache Aktionen; für vollständige Ausführung EspoCRM-API nutzen.
|
||||||
|
|
||||||
|
## 8. Troubleshooting
|
||||||
|
|
||||||
|
### 404-Fehler "Link does not exist"
|
||||||
|
- **Symptom**: HTTP 404-Fehler in Logs: "Link does not exist" beim Versuch, eine Relationship anzuzeigen oder zu verknüpfen.
|
||||||
|
- **Ursache**: Bei hasMany-Relationships fehlt die Definition auf einer Seite der Beziehung. EspoCRM benötigt bidirektionale Link-Definitionen.
|
||||||
|
- **Lösung**:
|
||||||
|
- Prüfe beide entityDefs-Dateien (z.B. `CBeteiligte.json` UND `Contact.json`).
|
||||||
|
- Stelle sicher, dass beide Seiten den Link mit derselben `relationName` definieren.
|
||||||
|
- Das `foreign`-Attribut muss jeweils auf den Link-Namen der Gegenseite zeigen.
|
||||||
|
- Beispiel:
|
||||||
|
```json
|
||||||
|
// In CBeteiligte.json:
|
||||||
|
"contactsBeteiligte": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteContact",
|
||||||
|
"foreign": "cBeteiligteContact",
|
||||||
|
"entity": "Contact"
|
||||||
|
}
|
||||||
|
|
||||||
|
// In Contact.json:
|
||||||
|
"cBeteiligteContact": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteContact",
|
||||||
|
"foreign": "contactsBeteiligte",
|
||||||
|
"entity": "CBeteiligte"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
- Nach Korrektur: `docker exec espocrm php /var/www/html/command.php Rebuild` ausführen.
|
||||||
|
|
||||||
|
### 500-Fehler bei Layout-Änderungen
|
||||||
|
- **Symptom**: HTTP 500-Fehler beim Versuch, Layouts in der EspoCRM-UI zu bearbeiten (z.B. "Permission denied for custom/Espo/Custom/Resources/layouts/...").
|
||||||
|
- **Ursache**: Das `custom/`-Verzeichnis gehört `root:root`, aber der EspoCRM-Container läuft als `www-data`-User, der keine Schreibrechte hat.
|
||||||
|
- **Lösung**:
|
||||||
|
- Führe auf dem Host aus: `chown -R www-data:www-data /var/lib/docker/volumes/vmh-espocrm_espocrm/_data/custom`
|
||||||
|
- Dies gibt `www-data` Schreibrechte für Custom-Dateien.
|
||||||
|
- **Prävention**: Stelle sicher, dass neue Custom-Dateien mit korrekten Berechtigungen erstellt werden (z.B. via Docker-Container als `www-data`).
|
||||||
|
|
||||||
|
### Allgemeine Tipps
|
||||||
|
- Nach Änderungen immer `docker exec espocrm php /var/www/html/command.php Rebuild` ausführen.
|
||||||
|
- Logs prüfen: `tail -n 100 /var/lib/docker/volumes/vmh-espocrm_espocrm/_data/data/logs/espo-YYYY-MM-DD.log`
|
||||||
|
- Bei Relationship-Problemen: Logs nach "404" und "Link does not exist" durchsuchen: `tail -n 500 /var/lib/docker/volumes/vmh-espocrm_espocrm/_data/data/logs/espo-$(date +%Y-%m-%d).log | grep -A 3 "404\|Link does not exist"`
|
||||||
|
- Bei DB-Problemen: Custom-Scripts wie `workflow_manager.php` verwenden.
|
||||||
|
|
||||||
|
## 9. Portal-Freigabe-System
|
||||||
|
|
||||||
|
Um Entitäten für Portalnutzer (Contact-Entität) freizugeben, wurde ein konsistentes Freigabe-System implementiert:
|
||||||
|
|
||||||
|
### Implementierte Portal-Relationships:
|
||||||
|
- **CVmhMietverhltnis** → `contactsMietverhltnis` (relationName: `cVmhMietverhltnisContact`)
|
||||||
|
- **CBeteiligte** → `contactsBeteiligte` (relationName: `cBeteiligteContact`)
|
||||||
|
- **CMietobjekt** → `contactsMietobjekt` (relationName: `cMietobjektContactPortal`)
|
||||||
|
- **CAdressen** → `contactsAdressen` (relationName: `cAdressenContact`)
|
||||||
|
- **CVmhRumungsklage** → `contactsRumungsklage` (relationName: `cVmhRumungsklageContact`)
|
||||||
|
|
||||||
|
### Pattern für neue Portal-Relationships:
|
||||||
|
|
||||||
|
1. **entityDefs der Hauptentität** (z.B. `CBeteiligte.json`):
|
||||||
|
```json
|
||||||
|
"contactsBeteiligte": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteContact",
|
||||||
|
"foreign": "cBeteiligteContact",
|
||||||
|
"entity": "Contact",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **entityDefs von Contact** (`Contact.json`):
|
||||||
|
```json
|
||||||
|
"cBeteiligteContact": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteContact",
|
||||||
|
"foreign": "contactsBeteiligte",
|
||||||
|
"entity": "CBeteiligte",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **clientDefs der Hauptentität** (`CBeteiligte.json`):
|
||||||
|
```json
|
||||||
|
"relationshipPanels": {
|
||||||
|
"contactsBeteiligte": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": "portalUsers"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **bottomPanelsDetail Layout** (Tab-Ansicht):
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"_tabBreak_0": {
|
||||||
|
"index": 0,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Freigabe für"
|
||||||
|
},
|
||||||
|
"contactsBeteiligte": {
|
||||||
|
"dynamicLogicVisible": null,
|
||||||
|
"style": "warning",
|
||||||
|
"dynamicLogicStyled": null,
|
||||||
|
"sticked": true,
|
||||||
|
"index": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Wichtige Hinweise:
|
||||||
|
- `selectPrimaryFilterName: "portalUsers"` filtert automatisch auf Portal-User
|
||||||
|
- Tab "Freigabe für" sollte immer der erste Tab im Bottom-Panel sein (index: 0)
|
||||||
|
- Style "warning" hebt das Panel visuell hervor
|
||||||
|
- Nach Änderungen immer Rebuild durchführen und beide Seiten der Relationship definieren
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
{
|
{
|
||||||
"labels": {
|
"labels": {
|
||||||
"Create CAdressen": "Adressen erstellen"
|
"Create CAdressen": "Adressen erstellen"
|
||||||
|
},
|
||||||
|
"fields": {
|
||||||
|
"isActive": "Aktiv"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,12 @@
|
|||||||
},
|
},
|
||||||
"links": {
|
"links": {
|
||||||
"calls": "Anrufe",
|
"calls": "Anrufe",
|
||||||
"tasks": "Aufgaben"
|
"tasks": "Aufgaben",
|
||||||
|
"vmhvermieterbeteiligte": "Vermieter",
|
||||||
|
"vmhmieterbeteiligte": "Mieter",
|
||||||
|
"vmhMietverhltnisesSonstigeBesitzer": "Sonstige Bewohner",
|
||||||
|
"vmhRumungsklagesKlaeger": "Kläger",
|
||||||
|
"vmhRumungsklagesBeklagte": "Beklagte"
|
||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"Create CBeteiligte": "Beteiligte erstellen"
|
"Create CBeteiligte": "Beteiligte erstellen"
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
"fields": {
|
||||||
|
"portalUser": "Portalnutzer"
|
||||||
|
},
|
||||||
"links": {
|
"links": {
|
||||||
"calls": "Anrufe",
|
"calls": "Anrufe",
|
||||||
"tasks": "Aufgaben"
|
"tasks": "Aufgaben"
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
"adresseCountry": "Adresse Country",
|
"adresseCountry": "Adresse Country",
|
||||||
"adressePostalCode": "Adresse Postal Code",
|
"adressePostalCode": "Adresse Postal Code",
|
||||||
"adresseMap": "Adresse Map",
|
"adresseMap": "Adresse Map",
|
||||||
|
"isActive": "Active",
|
||||||
"autoapplymietverhaltnisportaluser": "Portalnutzer von Mietverhältnis übernehmen",
|
"autoapplymietverhaltnisportaluser": "Portalnutzer von Mietverhältnis übernehmen",
|
||||||
"advowareindexid": "Advoware_index_id"
|
"advowareindexid": "Advoware_index_id"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"_delimiter_": {
|
||||||
|
"disabled": true
|
||||||
|
},
|
||||||
|
"activities": {
|
||||||
|
"disabled": true
|
||||||
|
},
|
||||||
|
"history": {
|
||||||
|
"disabled": true
|
||||||
|
},
|
||||||
|
"_tabBreak_0": {
|
||||||
|
"index": 0,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Freigegebene Nutzer"
|
||||||
|
},
|
||||||
|
"contactsAdressen": {
|
||||||
|
"dynamicLogicVisible": null,
|
||||||
|
"style": "warning",
|
||||||
|
"dynamicLogicStyled": null,
|
||||||
|
"sticked": true,
|
||||||
|
"index": 1
|
||||||
|
},
|
||||||
|
"_tabBreak_1": {
|
||||||
|
"index": 2,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Beteiligte"
|
||||||
|
},
|
||||||
|
"beteiligte": {
|
||||||
|
"index": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
24
custom/Espo/Custom/Resources/layouts/CAdressen/detail.json
Normal file
24
custom/Espo/Custom/Resources/layouts/CAdressen/detail.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"rows": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "name"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "isActive"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "adresse"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "adresseMap"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"style": "default",
|
||||||
|
"label": "Overview"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -8,10 +8,57 @@
|
|||||||
"history": {
|
"history": {
|
||||||
"disabled": true
|
"disabled": true
|
||||||
},
|
},
|
||||||
|
"_tabBreak_0": {
|
||||||
|
"index": 0,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Freigegebene Nutzer"
|
||||||
|
},
|
||||||
|
"contactsBeteiligte": {
|
||||||
|
"dynamicLogicVisible": null,
|
||||||
|
"style": "warning",
|
||||||
|
"dynamicLogicStyled": null,
|
||||||
|
"sticked": true,
|
||||||
|
"index": 1
|
||||||
|
},
|
||||||
|
"_tabBreak_1": {
|
||||||
|
"index": 2,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Mietverhältnisse"
|
||||||
|
},
|
||||||
"vmhvermieterbeteiligte": {
|
"vmhvermieterbeteiligte": {
|
||||||
"index": 0
|
"index": 3
|
||||||
|
},
|
||||||
|
"vmhmieterbeteiligte": {
|
||||||
|
"index": 4
|
||||||
|
},
|
||||||
|
"vmhMietverhltnisesSonstigeBesitzer": {
|
||||||
|
"index": 5
|
||||||
|
},
|
||||||
|
"_tabBreak_2": {
|
||||||
|
"index": 6,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Adressen"
|
||||||
},
|
},
|
||||||
"adressens": {
|
"adressens": {
|
||||||
"index": 1
|
"index": 7
|
||||||
|
},
|
||||||
|
"_tabBreak_3": {
|
||||||
|
"index": 8,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Räumungsklagen"
|
||||||
|
},
|
||||||
|
"vmhRumungsklagesKlaeger": {
|
||||||
|
"index": 9
|
||||||
|
},
|
||||||
|
"vmhRumungsklagesBeklagte": {
|
||||||
|
"index": 10
|
||||||
|
},
|
||||||
|
"_tabBreak_4": {
|
||||||
|
"index": 11,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Dokumente"
|
||||||
|
},
|
||||||
|
"dokumentesBeteiligte": {
|
||||||
|
"index": 12
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "name",
|
||||||
|
"width": 20,
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "adresseStreet",
|
||||||
|
"width": 25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "adresseCity",
|
||||||
|
"width": 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "adresseCountry",
|
||||||
|
"width": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "isActive",
|
||||||
|
"width": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "createdAt",
|
||||||
|
"width": 10,
|
||||||
|
"align": "right"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -2,10 +2,40 @@
|
|||||||
"_delimiter_": {
|
"_delimiter_": {
|
||||||
"disabled": true
|
"disabled": true
|
||||||
},
|
},
|
||||||
|
"_tabBreak_1": {
|
||||||
|
"index": 0,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Freigegebene Nutzer"
|
||||||
|
},
|
||||||
|
"contactsMietobjekt": {
|
||||||
|
"dynamicLogicVisible": null,
|
||||||
|
"style": "warning",
|
||||||
|
"dynamicLogicStyled": null,
|
||||||
|
"sticked": true,
|
||||||
|
"index": 1
|
||||||
|
},
|
||||||
|
"_tabBreak_2": {
|
||||||
|
"index": 2,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Kontakte"
|
||||||
|
},
|
||||||
"contact2mietobjekt": {
|
"contact2mietobjekt": {
|
||||||
"index": 0
|
"index": 3
|
||||||
|
},
|
||||||
|
"_tabBreak_3": {
|
||||||
|
"index": 4,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Mietverhältnisse"
|
||||||
},
|
},
|
||||||
"vmhMietverhltnises2Mietobjekt": {
|
"vmhMietverhltnises2Mietobjekt": {
|
||||||
"index": 1
|
"index": 5
|
||||||
|
},
|
||||||
|
"_tabBreak_4": {
|
||||||
|
"index": 6,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Dokumente"
|
||||||
|
},
|
||||||
|
"dokumentesMietobjekt": {
|
||||||
|
"index": 7
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"_tabBreak_2": {
|
"_tabBreak_2": {
|
||||||
"index": 0,
|
"index": 0,
|
||||||
"tabBreak": true,
|
"tabBreak": true,
|
||||||
"tabLabel": "Mandantenportal"
|
"tabLabel": "Freigegebene Nutzer"
|
||||||
},
|
},
|
||||||
"contactsMietverhltnis": {
|
"contactsMietverhltnis": {
|
||||||
"dynamicLogicVisible": null,
|
"dynamicLogicVisible": null,
|
||||||
|
|||||||
@@ -8,21 +8,57 @@
|
|||||||
"history": {
|
"history": {
|
||||||
"disabled": true
|
"disabled": true
|
||||||
},
|
},
|
||||||
"_tabBreak_1": {
|
"_tabBreak_0": {
|
||||||
"index": 0,
|
"index": 0,
|
||||||
"tabBreak": true,
|
"tabBreak": true,
|
||||||
"tabLabel": "Allgemein"
|
"tabLabel": "Freigegebene Nutzer"
|
||||||
},
|
},
|
||||||
"stream": {
|
"contactsRumungsklage": {
|
||||||
"sticked": false,
|
"dynamicLogicVisible": null,
|
||||||
|
"style": "warning",
|
||||||
|
"dynamicLogicStyled": null,
|
||||||
|
"sticked": true,
|
||||||
"index": 1
|
"index": 1
|
||||||
},
|
},
|
||||||
"_tabBreak_0": {
|
"_tabBreak_1": {
|
||||||
"index": 2,
|
"index": 2,
|
||||||
"tabBreak": true,
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Kläger"
|
||||||
|
},
|
||||||
|
"klaeger": {
|
||||||
|
"index": 3
|
||||||
|
},
|
||||||
|
"_tabBreak_2": {
|
||||||
|
"index": 4,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Beklagte"
|
||||||
|
},
|
||||||
|
"beklagte": {
|
||||||
|
"index": 5
|
||||||
|
},
|
||||||
|
"_tabBreak_3": {
|
||||||
|
"index": 6,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Mietverhältnisse"
|
||||||
|
},
|
||||||
|
"vmhMietverhltnises": {
|
||||||
|
"index": 7
|
||||||
|
},
|
||||||
|
"_tabBreak_4": {
|
||||||
|
"index": 8,
|
||||||
|
"tabBreak": true,
|
||||||
"tabLabel": "Dokumente"
|
"tabLabel": "Dokumente"
|
||||||
},
|
},
|
||||||
"dokumentesvmhraumungsklage": {
|
"dokumentesvmhraumungsklage": {
|
||||||
"index": 3
|
"index": 9
|
||||||
|
},
|
||||||
|
"_tabBreak_5": {
|
||||||
|
"index": 10,
|
||||||
|
"tabBreak": true,
|
||||||
|
"tabLabel": "Stream"
|
||||||
|
},
|
||||||
|
"stream": {
|
||||||
|
"sticked": false,
|
||||||
|
"index": 11
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,18 @@
|
|||||||
"beteiligte": {
|
"beteiligte": {
|
||||||
"layout": null,
|
"layout": null,
|
||||||
"selectPrimaryFilterName": null
|
"selectPrimaryFilterName": null
|
||||||
|
},
|
||||||
|
"contactsAdressen": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": "portalUsers"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"detailActionList": [
|
||||||
|
{
|
||||||
|
"label": "View Map",
|
||||||
|
"action": "viewMap",
|
||||||
|
"acl": "read"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"addressField": "adresse"
|
||||||
}
|
}
|
||||||
@@ -38,15 +38,18 @@
|
|||||||
"relationshipPanels": {
|
"relationshipPanels": {
|
||||||
"vmhvermieterbeteiligte": {
|
"vmhvermieterbeteiligte": {
|
||||||
"layout": null,
|
"layout": null,
|
||||||
"selectPrimaryFilterName": null
|
"selectPrimaryFilterName": null,
|
||||||
|
"title": "Vermieter"
|
||||||
},
|
},
|
||||||
"vmhmieterbeteiligte": {
|
"vmhmieterbeteiligte": {
|
||||||
"layout": null,
|
"layout": null,
|
||||||
"selectPrimaryFilterName": null
|
"selectPrimaryFilterName": null,
|
||||||
|
"title": "Mieter"
|
||||||
},
|
},
|
||||||
"vmhMietverhltnisesSonstigeBesitzer": {
|
"vmhMietverhltnisesSonstigeBesitzer": {
|
||||||
"layout": null,
|
"layout": null,
|
||||||
"selectPrimaryFilterName": null
|
"selectPrimaryFilterName": null,
|
||||||
|
"title": "Sonstige Bewohner"
|
||||||
},
|
},
|
||||||
"adressens": {
|
"adressens": {
|
||||||
"layout": null,
|
"layout": null,
|
||||||
@@ -55,6 +58,24 @@
|
|||||||
"calls1": {
|
"calls1": {
|
||||||
"layout": null,
|
"layout": null,
|
||||||
"selectPrimaryFilterName": "planned"
|
"selectPrimaryFilterName": "planned"
|
||||||
|
},
|
||||||
|
"contactsBeteiligte": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": "portalUsers"
|
||||||
|
},
|
||||||
|
"vmhRumungsklagesKlaeger": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": null,
|
||||||
|
"title": "Kläger"
|
||||||
|
},
|
||||||
|
"vmhRumungsklagesBeklagte": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": null,
|
||||||
|
"title": "Beklagte"
|
||||||
|
},
|
||||||
|
"dokumentesBeteiligte": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,14 @@
|
|||||||
"contact2mietobjekt": {
|
"contact2mietobjekt": {
|
||||||
"layout": null,
|
"layout": null,
|
||||||
"selectPrimaryFilterName": "portalUsers"
|
"selectPrimaryFilterName": "portalUsers"
|
||||||
|
},
|
||||||
|
"contactsMietobjekt": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": "portalUsers"
|
||||||
|
},
|
||||||
|
"dokumentesMietobjekt": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -50,6 +50,22 @@
|
|||||||
"dokumentesvmhraumungsklage": {
|
"dokumentesvmhraumungsklage": {
|
||||||
"layout": "listRaeumungsKl",
|
"layout": "listRaeumungsKl",
|
||||||
"selectPrimaryFilterName": null
|
"selectPrimaryFilterName": null
|
||||||
|
},
|
||||||
|
"contactsRumungsklage": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": "portalUsers"
|
||||||
|
},
|
||||||
|
"klaeger": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": null
|
||||||
|
},
|
||||||
|
"beklagte": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": null
|
||||||
|
},
|
||||||
|
"vmhMietverhltnises": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"kanbanViewMode": false,
|
"kanbanViewMode": false,
|
||||||
|
|||||||
@@ -45,6 +45,11 @@
|
|||||||
"type": "address",
|
"type": "address",
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
},
|
},
|
||||||
|
"isActive": {
|
||||||
|
"type": "bool",
|
||||||
|
"default": true,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
"autoapplymietverhaltnisportaluser": {
|
"autoapplymietverhaltnisportaluser": {
|
||||||
"notNull": true,
|
"notNull": true,
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
@@ -84,6 +89,14 @@
|
|||||||
"entity": "CBeteiligte",
|
"entity": "CBeteiligte",
|
||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"contactsAdressen": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cAdressenContact",
|
||||||
|
"foreign": "cAdressenContact",
|
||||||
|
"entity": "Contact",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"collection": {
|
"collection": {
|
||||||
|
|||||||
@@ -169,6 +169,38 @@
|
|||||||
"entity": "Call",
|
"entity": "Call",
|
||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"contactsBeteiligte": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteContact",
|
||||||
|
"foreign": "cBeteiligteContact",
|
||||||
|
"entity": "Contact",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"vmhRumungsklagesKlaeger": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteVmhRumungsklageKlaeger",
|
||||||
|
"foreign": "klaeger",
|
||||||
|
"entity": "CVmhRumungsklage",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"vmhRumungsklagesBeklagte": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteVmhRumungsklageBeklagte",
|
||||||
|
"foreign": "beklagte",
|
||||||
|
"entity": "CVmhRumungsklage",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"dokumentesBeteiligte": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteDokumente",
|
||||||
|
"foreign": "beteiligte2dokumente",
|
||||||
|
"entity": "CDokumente",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"collection": {
|
"collection": {
|
||||||
|
|||||||
@@ -135,6 +135,22 @@
|
|||||||
"entity": "CVmhRumungsklage",
|
"entity": "CVmhRumungsklage",
|
||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"beteiligte2dokumente": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteDokumente",
|
||||||
|
"foreign": "dokumentesBeteiligte",
|
||||||
|
"entity": "CBeteiligte",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"mietobjekt2dokumente": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cMietobjektDokumente",
|
||||||
|
"foreign": "dokumentesMietobjekt",
|
||||||
|
"entity": "CMietobjekt",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"collection": {
|
"collection": {
|
||||||
|
|||||||
@@ -106,6 +106,22 @@
|
|||||||
"entity": "Contact",
|
"entity": "Contact",
|
||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"contactsMietobjekt": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cMietobjektContactPortal",
|
||||||
|
"foreign": "cMietobjekteContactPortal",
|
||||||
|
"entity": "Contact",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"dokumentesMietobjekt": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cMietobjektDokumente",
|
||||||
|
"foreign": "mietobjekt2dokumente",
|
||||||
|
"entity": "CDokumente",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"collection": {
|
"collection": {
|
||||||
|
|||||||
@@ -129,6 +129,30 @@
|
|||||||
"entity": "CDokumente",
|
"entity": "CDokumente",
|
||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"contactsRumungsklage": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cVmhRumungsklageContact",
|
||||||
|
"foreign": "cVmhRumungsklageContact",
|
||||||
|
"entity": "Contact",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"klaeger": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteVmhRumungsklageKlaeger",
|
||||||
|
"foreign": "vmhRumungsklagesKlaeger",
|
||||||
|
"entity": "CBeteiligte",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"beklagte": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteVmhRumungsklageBeklagte",
|
||||||
|
"foreign": "vmhRumungsklagesBeklagte",
|
||||||
|
"entity": "CBeteiligte",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"collection": {
|
"collection": {
|
||||||
|
|||||||
@@ -53,6 +53,38 @@
|
|||||||
"entity": "CMietobjekt",
|
"entity": "CMietobjekt",
|
||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"cBeteiligteContact": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cBeteiligteContact",
|
||||||
|
"foreign": "contactsBeteiligte",
|
||||||
|
"entity": "CBeteiligte",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"cMietobjekteContactPortal": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cMietobjektContactPortal",
|
||||||
|
"foreign": "contactsMietobjekt",
|
||||||
|
"entity": "CMietobjekt",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"cAdressenContact": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cAdressenContact",
|
||||||
|
"foreign": "contactsAdressen",
|
||||||
|
"entity": "CAdressen",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"cVmhRumungsklageContact": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cVmhRumungsklageContact",
|
||||||
|
"foreign": "contactsRumungsklage",
|
||||||
|
"entity": "CVmhRumungsklage",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
|
|||||||
@@ -349,8 +349,8 @@ return [
|
|||||||
0 => 'youtube.com',
|
0 => 'youtube.com',
|
||||||
1 => 'google.com'
|
1 => 'google.com'
|
||||||
],
|
],
|
||||||
'cacheTimestamp' => 1768843902,
|
'cacheTimestamp' => 1768912371,
|
||||||
'microtime' => 1768843902.115102,
|
'microtime' => 1768912371.141233,
|
||||||
'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