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.).
|
||||
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.
|
||||
**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
|
||||
|
||||
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.
|
||||
- **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
|
||||
|
||||
@@ -221,3 +226,117 @@ Um die Entwicklung und Wartung zu erleichtern, wurden benutzerdefinierte Scripts
|
||||
- Sichere Backups vor Lösch- oder Edit-Operationen.
|
||||
- Für komplexe Änderungen die EspoCRM-UI verwenden.
|
||||
- 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": {
|
||||
"Create CAdressen": "Adressen erstellen"
|
||||
},
|
||||
"fields": {
|
||||
"isActive": "Aktiv"
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,12 @@
|
||||
},
|
||||
"links": {
|
||||
"calls": "Anrufe",
|
||||
"tasks": "Aufgaben"
|
||||
"tasks": "Aufgaben",
|
||||
"vmhvermieterbeteiligte": "Vermieter",
|
||||
"vmhmieterbeteiligte": "Mieter",
|
||||
"vmhMietverhltnisesSonstigeBesitzer": "Sonstige Bewohner",
|
||||
"vmhRumungsklagesKlaeger": "Kläger",
|
||||
"vmhRumungsklagesBeklagte": "Beklagte"
|
||||
},
|
||||
"labels": {
|
||||
"Create CBeteiligte": "Beteiligte erstellen"
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"fields": {
|
||||
"portalUser": "Portalnutzer"
|
||||
},
|
||||
"links": {
|
||||
"calls": "Anrufe",
|
||||
"tasks": "Aufgaben"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
"adresseCountry": "Adresse Country",
|
||||
"adressePostalCode": "Adresse Postal Code",
|
||||
"adresseMap": "Adresse Map",
|
||||
"isActive": "Active",
|
||||
"autoapplymietverhaltnisportaluser": "Portalnutzer von Mietverhältnis übernehmen",
|
||||
"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": {
|
||||
"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": {
|
||||
"index": 0
|
||||
"index": 3
|
||||
},
|
||||
"vmhmieterbeteiligte": {
|
||||
"index": 4
|
||||
},
|
||||
"vmhMietverhltnisesSonstigeBesitzer": {
|
||||
"index": 5
|
||||
},
|
||||
"_tabBreak_2": {
|
||||
"index": 6,
|
||||
"tabBreak": true,
|
||||
"tabLabel": "Adressen"
|
||||
},
|
||||
"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_": {
|
||||
"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": {
|
||||
"index": 0
|
||||
"index": 3
|
||||
},
|
||||
"_tabBreak_3": {
|
||||
"index": 4,
|
||||
"tabBreak": true,
|
||||
"tabLabel": "Mietverhältnisse"
|
||||
},
|
||||
"vmhMietverhltnises2Mietobjekt": {
|
||||
"index": 1
|
||||
"index": 5
|
||||
},
|
||||
"_tabBreak_4": {
|
||||
"index": 6,
|
||||
"tabBreak": true,
|
||||
"tabLabel": "Dokumente"
|
||||
},
|
||||
"dokumentesMietobjekt": {
|
||||
"index": 7
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@
|
||||
"_tabBreak_2": {
|
||||
"index": 0,
|
||||
"tabBreak": true,
|
||||
"tabLabel": "Mandantenportal"
|
||||
"tabLabel": "Freigegebene Nutzer"
|
||||
},
|
||||
"contactsMietverhltnis": {
|
||||
"dynamicLogicVisible": null,
|
||||
|
||||
@@ -8,21 +8,57 @@
|
||||
"history": {
|
||||
"disabled": true
|
||||
},
|
||||
"_tabBreak_1": {
|
||||
"_tabBreak_0": {
|
||||
"index": 0,
|
||||
"tabBreak": true,
|
||||
"tabLabel": "Allgemein"
|
||||
"tabLabel": "Freigegebene Nutzer"
|
||||
},
|
||||
"stream": {
|
||||
"sticked": false,
|
||||
"contactsRumungsklage": {
|
||||
"dynamicLogicVisible": null,
|
||||
"style": "warning",
|
||||
"dynamicLogicStyled": null,
|
||||
"sticked": true,
|
||||
"index": 1
|
||||
},
|
||||
"_tabBreak_0": {
|
||||
"_tabBreak_1": {
|
||||
"index": 2,
|
||||
"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"
|
||||
},
|
||||
"dokumentesvmhraumungsklage": {
|
||||
"index": 3
|
||||
"index": 9
|
||||
},
|
||||
"_tabBreak_5": {
|
||||
"index": 10,
|
||||
"tabBreak": true,
|
||||
"tabLabel": "Stream"
|
||||
},
|
||||
"stream": {
|
||||
"sticked": false,
|
||||
"index": 11
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,18 @@
|
||||
"beteiligte": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": null
|
||||
},
|
||||
"contactsAdressen": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": "portalUsers"
|
||||
}
|
||||
},
|
||||
"detailActionList": [
|
||||
{
|
||||
"label": "View Map",
|
||||
"action": "viewMap",
|
||||
"acl": "read"
|
||||
}
|
||||
],
|
||||
"addressField": "adresse"
|
||||
}
|
||||
@@ -38,15 +38,18 @@
|
||||
"relationshipPanels": {
|
||||
"vmhvermieterbeteiligte": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": null
|
||||
"selectPrimaryFilterName": null,
|
||||
"title": "Vermieter"
|
||||
},
|
||||
"vmhmieterbeteiligte": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": null
|
||||
"selectPrimaryFilterName": null,
|
||||
"title": "Mieter"
|
||||
},
|
||||
"vmhMietverhltnisesSonstigeBesitzer": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": null
|
||||
"selectPrimaryFilterName": null,
|
||||
"title": "Sonstige Bewohner"
|
||||
},
|
||||
"adressens": {
|
||||
"layout": null,
|
||||
@@ -55,6 +58,24 @@
|
||||
"calls1": {
|
||||
"layout": null,
|
||||
"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": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": "portalUsers"
|
||||
},
|
||||
"contactsMietobjekt": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": "portalUsers"
|
||||
},
|
||||
"dokumentesMietobjekt": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": null
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,22 @@
|
||||
"dokumentesvmhraumungsklage": {
|
||||
"layout": "listRaeumungsKl",
|
||||
"selectPrimaryFilterName": null
|
||||
},
|
||||
"contactsRumungsklage": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": "portalUsers"
|
||||
},
|
||||
"klaeger": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": null
|
||||
},
|
||||
"beklagte": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": null
|
||||
},
|
||||
"vmhMietverhltnises": {
|
||||
"layout": null,
|
||||
"selectPrimaryFilterName": null
|
||||
}
|
||||
},
|
||||
"kanbanViewMode": false,
|
||||
|
||||
@@ -45,6 +45,11 @@
|
||||
"type": "address",
|
||||
"isCustom": true
|
||||
},
|
||||
"isActive": {
|
||||
"type": "bool",
|
||||
"default": true,
|
||||
"isCustom": true
|
||||
},
|
||||
"autoapplymietverhaltnisportaluser": {
|
||||
"notNull": true,
|
||||
"type": "bool",
|
||||
@@ -84,6 +89,14 @@
|
||||
"entity": "CBeteiligte",
|
||||
"audited": false,
|
||||
"isCustom": true
|
||||
},
|
||||
"contactsAdressen": {
|
||||
"type": "hasMany",
|
||||
"relationName": "cAdressenContact",
|
||||
"foreign": "cAdressenContact",
|
||||
"entity": "Contact",
|
||||
"audited": false,
|
||||
"isCustom": true
|
||||
}
|
||||
},
|
||||
"collection": {
|
||||
|
||||
@@ -169,6 +169,38 @@
|
||||
"entity": "Call",
|
||||
"audited": false,
|
||||
"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": {
|
||||
|
||||
@@ -135,6 +135,22 @@
|
||||
"entity": "CVmhRumungsklage",
|
||||
"audited": false,
|
||||
"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": {
|
||||
|
||||
@@ -106,6 +106,22 @@
|
||||
"entity": "Contact",
|
||||
"audited": false,
|
||||
"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": {
|
||||
|
||||
@@ -129,6 +129,30 @@
|
||||
"entity": "CDokumente",
|
||||
"audited": false,
|
||||
"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": {
|
||||
|
||||
@@ -53,6 +53,38 @@
|
||||
"entity": "CMietobjekt",
|
||||
"audited": false,
|
||||
"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": {
|
||||
|
||||
@@ -349,8 +349,8 @@ return [
|
||||
0 => 'youtube.com',
|
||||
1 => 'google.com'
|
||||
],
|
||||
'cacheTimestamp' => 1768843902,
|
||||
'microtime' => 1768843902.115102,
|
||||
'cacheTimestamp' => 1768912371,
|
||||
'microtime' => 1768912371.141233,
|
||||
'siteUrl' => 'https://crm.bitbylaw.com',
|
||||
'fullTextSearchMinLength' => 4,
|
||||
'appTimestamp' => 1768843902,
|
||||
|
||||
Reference in New Issue
Block a user