feat(CPuls): Enhance CPuls entity with new fields, tooltips, and options; add localization for German and English

- Added new fields to CPuls entity including status, syncStatus, kiAnalyse, and others.
- Implemented localization for CPuls in German (de_DE) and English (en_US).
- Introduced new API actions for team activation and completion of CPuls.
- Created hooks to update team statistics and manage document counts.
- Added new entity definitions and metadata for CPulsTeamZuordnung and Team.
- Implemented validation logic in formulas to prevent completion of unclean Puls.
- Updated layouts for detail and list views of CPuls.
- Enhanced user entity with absence tracking fields.
- Added scopes for CPuls and CPulsTeamZuordnung.
This commit is contained in:
2026-02-13 10:09:19 +01:00
parent 0faf1c0657
commit e1a963ffab
22 changed files with 1073 additions and 374 deletions

View File

@@ -3,10 +3,97 @@
"name": {
"type": "varchar",
"required": true,
"pattern": "$noBadCharacters"
"maxLength": 255,
"trim": true,
"isCustom": true
},
"description": {
"type": "text"
"status": {
"type": "enum",
"options": [
"Neu",
"In Verarbeitung",
"Bereit",
"In Review",
"Teilweise abgeschlossen",
"Abgeschlossen"
],
"default": "Neu",
"required": true,
"isCustom": true,
"style": {
"Neu": "default",
"In Verarbeitung": "primary",
"Bereit": "success",
"In Review": "warning",
"Teilweise abgeschlossen": "info",
"Abgeschlossen": "success"
}
},
"syncStatus": {
"type": "enum",
"options": ["clean", "unclean"],
"default": "unclean",
"required": true,
"isCustom": true,
"tooltip": true
},
"kiAnalyse": {
"type": "text",
"isCustom": true,
"tooltip": true
},
"zusammenfassung": {
"type": "varchar",
"maxLength": 500,
"isCustom": true,
"tooltip": true
},
"anzahlDokumente": {
"type": "int",
"readOnly": true,
"notStorable": false,
"isCustom": true
},
"anzahlTeamsAktiv": {
"type": "int",
"readOnly": true,
"notStorable": false,
"isCustom": true
},
"anzahlTeamsAbgeschlossen": {
"type": "int",
"readOnly": true,
"notStorable": false,
"isCustom": true
},
"finalisiert": {
"type": "bool",
"default": false,
"readOnly": true,
"isCustom": true,
"tooltip": true
},
"finalisierungsGrund": {
"type": "enum",
"options": [
"Erstes Team",
"Manuell",
"Automatisch"
],
"readOnly": true,
"isCustom": true,
"tooltip": true
},
"finalisiertAm": {
"type": "datetime",
"readOnly": true,
"isCustom": true
},
"finalisiertVon": {
"type": "link",
"entity": "User",
"readOnly": true,
"isCustom": true
},
"createdAt": {
"type": "datetime",
@@ -18,25 +105,43 @@
},
"createdBy": {
"type": "link",
"readOnly": true,
"view": "views/fields/user"
"entity": "User",
"readOnly": true
},
"modifiedBy": {
"type": "link",
"readOnly": true,
"view": "views/fields/user"
"entity": "User",
"readOnly": true
},
"assignedUser": {
"type": "link",
"required": false,
"view": "views/fields/assigned-user"
"entity": "User",
"isCustom": true
},
"teams": {
"type": "linkMultiple",
"view": "views/fields/teams"
"isCustom": true
}
},
"links": {
"parent": {
"type": "belongsToParent",
"entityList": [
"CVmhRumungsklage",
"CMietinkasso",
"CKuendigung"
]
},
"dokumente": {
"type": "hasMany",
"entity": "CDokumente",
"foreign": "puls"
},
"teamZuordnungen": {
"type": "hasMany",
"entity": "CPulsTeamZuordnung",
"foreign": "puls"
},
"createdBy": {
"type": "belongsTo",
"entity": "User"
@@ -49,62 +154,37 @@
"type": "belongsTo",
"entity": "User"
},
"finalisiertVon": {
"type": "belongsTo",
"entity": "User"
},
"teams": {
"type": "hasMany",
"entity": "Team",
"relationName": "entityTeam",
"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",
"relationName": "EntityTeam",
"layoutRelationshipsDisabled": true
}
},
"collection": {
"orderBy": "createdAt",
"order": "desc"
"order": "desc",
"textFilterFields": ["name", "zusammenfassung"]
},
"indexes": {
"name": {
"columns": [
"name",
"deleted"
]
"parent": {
"columns": ["parentType", "parentId"]
},
"assignedUser": {
"columns": [
"assignedUserId",
"deleted"
]
"status": {
"columns": ["status"]
},
"syncStatus": {
"columns": ["syncStatus"]
},
"finalisiert": {
"columns": ["finalisiert"]
},
"createdAt": {
"columns": [
"createdAt"
]
},
"createdAtId": {
"unique": true,
"columns": [
"createdAt",
"id"
]
"columns": ["createdAt"]
}
}
}