Compare commits

...

31 Commits

Author SHA1 Message Date
2d411fe9f8 rm
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m15s
2026-01-27 14:37:25 +01:00
8c1c671b1d correction faute ortho rdv 2026-01-27 14:33:25 +01:00
c6ac4d4fb4 Ajout des rdv au manuel user
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m16s
2026-01-27 14:04:52 +01:00
294fdb8d90 Refine headings and add missing sections in Chill configuration documentation
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m19s
2026-01-26 17:11:43 +01:00
5fcc2818a2 Add default project code style configuration for IDEA
Some checks are pending
continuous-integration/drone/push Build is running
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 3m36s
2026-01-26 15:53:08 +01:00
e79fda02fb Update IDEA module configuration to exclude additional folders and set Python-specific settings 2026-01-26 15:53:07 +01:00
afb65adb2f Update README to include user and administrator manuals overview and revise instructions 2026-01-26 15:53:07 +01:00
48721f01a6 Add detailed configuration documentation for Chill administration 2026-01-26 15:53:06 +01:00
9b97544e5e Update user/docs/exports.md
Some checks failed
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 5m0s
continuous-integration/drone/push Build is failing
2025-12-15 15:06:36 +00:00
f760cb0b34 Update user/docs/exports.md
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 1m46s
2025-12-08 10:56:24 +00:00
4d208a0363 Update user/docs/exports.md
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Failing after 2m37s
2025-12-08 10:32:47 +00:00
0b2359478a Update user/docs/exports.md
Some checks failed
Build and Push MkDocs Docker Image / build-and-push (push) Failing after 4m36s
continuous-integration/drone/push Build is failing
2025-12-08 10:16:36 +00:00
ef7510c53d Ajout tâches pour vscodium pour servir mkdocs
Some checks failed
continuous-integration/drone/push Build is failing
2025-10-02 15:11:25 +02:00
34345486cd rajout evenements
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m32s
2025-10-02 14:26:35 +02:00
98d5859f5c Ajout de la gestion des droits dans l'admin
Some checks failed
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 4m31s
continuous-integration/drone/push Build is failing
2025-10-02 14:04:11 +02:00
625fd8b432 Fix typo
Some checks failed
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 3m25s
continuous-integration/drone/push Build is failing
2025-07-07 10:11:25 +02:00
nobohan
f8b61c8238 Correction typo + détail adresse pour template parcours
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m24s
2025-07-01 15:03:49 +02:00
ab18192529 Enhance Git LFS handling in MKDocs Docker workflow
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m27s
2025-07-01 10:22:26 +02:00
0eaddce399 Clean up redundant VCS mapping in IDEA configuration 2025-07-01 10:22:21 +02:00
fd13038b2f Enable Git LFS support in checkout step of MKDocs Docker workflow
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Failing after 2m33s
2025-07-01 10:16:31 +02:00
500cc24618 idea config 2025-07-01 10:16:24 +02:00
beab98d36e Remove debug content
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m21s
2025-06-30 23:39:54 +02:00
7a021838f1 Transforme les divs de pandoc en admonition
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m18s
2025-06-30 23:36:44 +02:00
95dadee345 Add links to dedicated sections in generation-document
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m8s
add link to the dedicated section

add link to the dedicated section
2025-06-30 22:25:35 +02:00
4c330d7b87 Publier la documentation de Chill en ligne après chaque mise à jour (#14)
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m40s
Reviewed-on: #14
Co-authored-by: Julien Fastré <julien.fastre@champs-libres.coop>
Co-committed-by: Julien Fastré <julien.fastre@champs-libres.coop>
2025-06-30 16:16:24 +00:00
f531de0351 Merge pull request 'Update documentation for gender to use GenderEntity in generation of docs' (#10) from docgen-gender-documentation into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #10
2024-11-25 17:29:47 +00:00
f556e446fa Add a not about deprecation of person's gender key
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-25 17:28:53 +00:00
6c748eb1fe Update documentation for gender to use GenderEntity in generation of docs
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-25 17:01:05 +00:00
ad64d60721 précisions sur statut du parcours
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-10 14:21:52 +01:00
d71934b6d8 carte des entités et des relations un-à-plusieurs
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-07 21:47:23 +01:00
73d5e35809 nouveaux filtres dans les échanges 2023-11-07 21:47:19 +01:00
139 changed files with 2659 additions and 233 deletions

View File

@@ -0,0 +1,103 @@
name: Build and Push MkDocs Docker Image
on:
push:
branches:
- main
- master
paths:
- 'Dockerfile'
- 'user/**'
- 'admin/**'
- '.gitea/workflows/**'
workflow_dispatch:
jobs:
build-and-push:
runs-on: cth-ubuntu-latest
env:
REGISTRY: ${{ vars.REGISTRY }}
IMAGE: ${{ vars.IMAGE }}
IMAGE_NAME: ${{ vars.REGISTRY }}/${{ vars.IMAGE }}:${{ github.sha }}
KUBE_CA: ${{ vars.KUBE_CA }}
KUBE_SERVER: ${{ vars.KUBE_SERVER }}
REGISTRY_USERNAME: ${{ vars.REGISTRY_USERNAME }}
NAMESPACE: ${{ vars.NAMESPACE }}
DEPLOYMENT_NAME: ${{ vars.DEPLOYMENT_NAME }}
CONTAINER: ${{ vars.CONTAINER }}
steps:
- name: Checkout code
uses: https://github.com/actions/checkout@v4
with:
persist-credentials: 'true' # Optional; should be the default
- name: Checkout lfs
run: |
git lfs install --local
AUTH=$(git config --local http.${{ github.server_url }}/.extraheader)
git config --local --unset http.${{ github.server_url }}/.extraheader
git config --local http.${{ github.server_url }}/${{ github.repository }}.git/info/lfs/objects/batch.extraheader "$AUTH"
git lfs pull
- name: Set up Docker Buildx
uses: https://github.com/docker/setup-buildx-action@v3
- name: Log in to Docker registry
uses: https://github.com/docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Build and push
id: build-push
uses: https://github.com/docker/build-push-action@v5
with:
context: .
file: Dockerfile
push: true
tags: '${{ env.IMAGE_NAME }}'
- name: Install kubectl
run: |
curl -LO "https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
- name: Set up kubeconfig
env:
KUBE_SERVER: ${{ env.KUBE_SERVER }} # e.g. https://<API_ENDPOINT>
KUBE_CA: ${{ env.KUBE_CA }} # base64 encoded, or fetched via kubectl config view
KUBE_TOKEN: ${{ secrets.KUBE_TOKEN }} # Token generated via 'kubectl create token'
run: |
mkdir -p ~/.kube
cat <<EOF > ~/.kube/config
apiVersion: v1
kind: Config
clusters:
- name: default-cluster
cluster:
server: "$KUBE_SERVER"
certificate-authority-data: "$KUBE_CA"
contexts:
- name: default-context
context:
cluster: default-cluster
user: gitea-actions
current-context: default-context
users:
- name: gitea-actions
user:
token: "$KUBE_TOKEN"
EOF
- name: Patch Deployment Image
env:
NAMESPACE: ${{ env.NAMESPACE }}
DEPLOYMENT: ${{ env.DEPLOYMENT_NAME }}
CONTAINER: ${{ env.CONTAINER }}
run: |
echo "deploy new tag: $TAG_IMAGE"
kubectl -n ${NAMESPACE} set image deployment/${DEPLOYMENT} ${CONTAINER}=${IMAGE_NAME}

2
.gitignore vendored
View File

@@ -1,2 +1,4 @@
build/*
*-manual.pdf
.venv/
**/*.pyc

8
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

View File

@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

69
.idea/manuals.iml generated Normal file
View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
<excludeFolder url="file://$MODULE_DIR$/admin/site" />
<excludeFolder url="file://$MODULE_DIR$/admin/site/assets" />
<excludeFolder url="file://$MODULE_DIR$/admin/site/generation-documents" />
<excludeFolder url="file://$MODULE_DIR$/admin/site/img" />
<excludeFolder url="file://$MODULE_DIR$/admin/site/known-limits" />
<excludeFolder url="file://$MODULE_DIR$/admin/site/search" />
<excludeFolder url="file://$MODULE_DIR$/admin/site/start" />
<excludeFolder url="file://$MODULE_DIR$/user/site" />
<excludeFolder url="file://$MODULE_DIR$/user/site/00000-toc" />
<excludeFolder url="file://$MODULE_DIR$/user/site/English" />
<excludeFolder url="file://$MODULE_DIR$/user/site/_a-classer" />
<excludeFolder url="file://$MODULE_DIR$/user/site/activite" />
<excludeFolder url="file://$MODULE_DIR$/user/site/adresses" />
<excludeFolder url="file://$MODULE_DIR$/user/site/aside_activities" />
<excludeFolder url="file://$MODULE_DIR$/user/site/assets" />
<excludeFolder url="file://$MODULE_DIR$/user/site/concept" />
<excludeFolder url="file://$MODULE_DIR$/user/site/document" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports_accompanying_period" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports_accompanying_period_work" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports_accompanying_period_work_evaluation" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports_activity" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports_aside_activity" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports_calendar" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports_household" />
<excludeFolder url="file://$MODULE_DIR$/user/site/exports_person" />
<excludeFolder url="file://$MODULE_DIR$/user/site/homepage" />
<excludeFolder url="file://$MODULE_DIR$/user/site/img" />
<excludeFolder url="file://$MODULE_DIR$/user/site/interface" />
<excludeFolder url="file://$MODULE_DIR$/user/site/intro" />
<excludeFolder url="file://$MODULE_DIR$/user/site/map" />
<excludeFolder url="file://$MODULE_DIR$/user/site/menage" />
<excludeFolder url="file://$MODULE_DIR$/user/site/notes_privées" />
<excludeFolder url="file://$MODULE_DIR$/user/site/notifications" />
<excludeFolder url="file://$MODULE_DIR$/user/site/nouveautes" />
<excludeFolder url="file://$MODULE_DIR$/user/site/parcours" />
<excludeFolder url="file://$MODULE_DIR$/user/site/parcours_a_trier" />
<excludeFolder url="file://$MODULE_DIR$/user/site/person" />
<excludeFolder url="file://$MODULE_DIR$/user/site/person-vendee" />
<excludeFolder url="file://$MODULE_DIR$/user/site/reassigner_parcours" />
<excludeFolder url="file://$MODULE_DIR$/user/site/search" />
<excludeFolder url="file://$MODULE_DIR$/user/site/social_actions" />
<excludeFolder url="file://$MODULE_DIR$/user/site/tasks" />
<excludeFolder url="file://$MODULE_DIR$/user/site/thirdparty" />
<excludeFolder url="file://$MODULE_DIR$/user/site/workflows" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">
<option name="format" value="PLAIN" />
<option name="myDocStringFormat" value="Plain" />
</component>
<component name="TemplatesService">
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/pandoc/cl/templates" />
</list>
</option>
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="py.test" />
</component>
</module>

7
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.10 (manuals)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (manuals)" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/manuals.iml" filepath="$PROJECT_DIR$/.idea/manuals.iml" />
</modules>
</component>
</project>

8
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/pandoc/cl" vcs="Git" />
<mapping directory="$PROJECT_DIR$/pandoc/template" vcs="Git" />
</component>
</project>

34
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,34 @@
{
// Fichier : .vscode/tasks.json
"version": "2.0.0",
"tasks": [
{
"label": "Serve user docs",
"type": "shell",
"command": "../.venv/bin/mkdocs",
"args": [
"serve",
"-a",
"localhost:3000"
],
"options": {
"cwd": "${workspaceFolder}/user"
},
"problemMatcher": []
},
{
"label": "Serve admin docs",
"type": "shell",
"command": "../.venv/bin/mkdocs",
"args": [
"serve",
"-a",
"localhost:3001"
],
"options": {
"cwd": "${workspaceFolder}/admin"
},
"problemMatcher": []
}
]
}

1
CODEOWNERS Normal file
View File

@@ -0,0 +1 @@
.gitea/workflows/.* @julienfastre @juminet @LenaertsJ

29
Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# -------- Stage 1: Build the documentation using mkdocs --------
FROM python:3.13-slim AS builder
# add pandoc to image
COPY --from=pandoc/minimal:3 /usr/local/bin/pandoc /usr/local/bin/pandoc
RUN chmod +x /usr/local/bin/pandoc
WORKDIR /build
# Install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY mkdocs/ mkdocs/
COPY pandoc/filters pandoc/filters
COPY user/ user/
COPY admin/ admin/
RUN cd user && mkdocs build --clean && cd ..
RUN cd admin && mkdocs build --clean && cd ..
# -------- Stage 2: Serve the built documentation with nginx --------
FROM nginx:alpine
# Copy the built site from the builder stage
COPY --from=builder /build/admin/site /usr/share/nginx/html/admin
COPY --from=builder /build/user/site /usr/share/nginx/html/user

View File

@@ -1,5 +1,11 @@
Manuels Vendée
==============
Manuels utilisateurs
====================
Manuel utilisateur et administrateur de Chill.
Les manuels sont écrits en mkdocs, avec la possibilité de les exporter aussi en pdf.
[Schéma de fonctionnement de la compilation](https://mermaidchart.com/play?utm_source=mermaid_live_editor&utm_medium=share#pako:eNp1UVFq20AQvcowEEipY0uWEllCCBorJh81GBIotOrHShrbItKuWe0mbo1_e4DeoufoTXqSjqSkMYHux7Kzb997M28PWKiSMMJ1rZ6KrdAG7tNMAq8PXzK8U1YX1EJpoRHSUh3nepLEebIU-qFUTxLew0rIUhXxJE8y_AoDd9jPzmC-paaSsEoXz6JwcZHANUuzyCsTzmn_-1dhDUHJdlpZU0k-1MLQ_h3rDuzrnp32jWlTEUS98gv81vX2fvnx1PaGicuHVBUtnBeq4Yk6s3inKWl4mgJa0o8UT7oLUPYUyW1VlwPy2s5Nr7pg1VVtN2w4gXVVG00wuPRhzZV8JN1WSnK3_0sO_vz4-QZ8lhhiHfwWvd_t6fh3FUf2ifJh1u4hjnCjqxIjoy2NsCHdiK7EQyeSoeFsKMOIjyWtha1Nhpk8Mm0n5Gelmhcmf8Jmi9Fa1C1XdlfyX6SV2GjR_LvVxBHqubLSYHTph70IRgfcYzT1Z2MvmAXezHc8b-p4I_yGkeu4Y3fmcu2Gjj8Nr8LjCL_3ts44uHRDlxHfC4JpcOUd_wK6KszT)
## LFS
@@ -9,30 +15,21 @@ Ensure that `git lfs` is installed on your system. You can install git lfs with
Since you install it on your machine, no further step is required.
## Compilation
## Installation
`docker-compose` est utilisé pour compiler le manuel.
Commande:
```bash
docker-compose up
```
Le fichier généré est `user-manual.pdf` et `admin-manual.pdf`
Les manuels sont générés avec pandoc, et mkdocs.
Si vous avez une (bonne) version de pandoc sur votre PC, on peut faire sans docker avec:
## Rédaction
### Espace insécable
Pour insérer un espace insécable, utiliser `CTRL + SHIFT + U`, et taper le code `00A0`, puis entrée pour valider.
### "Admonitions"
```bash
bash build-pandoc.sh
bash build-pandoc.sh pdf admin
```
` bash build-pandoc.sh` est par défaut équivalent à `bash build-pandoc.sh pdf user`.
### Utilisateur
L'utilisateur qui exécute la compilation est, par défaut, l'utilisateur ayant l'id `1000`.
## Dépendances latex

1
admin/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
site/*

View File

@@ -0,0 +1,470 @@
# Configuration de Chill
Ce document balaie les principaux éléments de configuration de Chill, un logiciel d'accompagnement social. Chill est conçu pour être flexible et adaptable à différents contextes institutionnels, mais nécessite une configuration appropriée pour fonctionner efficacement.
Cette section couvre les aspects clés de la configuration de Chill, y compris les paramètres généraux, les paramètres de sécurité, les paramètres de base de données et les paramètres d'intégration avec d'autres systèmes.
::: {.note}
Cette documentation ne s'attarde que sur les configurations disponibles depuis l'interface d'administration.
Il existe d'autres options qui affectent le comportement de Chill, mais elles nécessitent une configuration manuelle ou une expertise technique avancée. Elles sont disponibles dans la configuration technique.
:::
## Caractéristiques générales pour tous les éléments
### Notion de actif / inactif
Chaque élément peut être indiqué comme actif ou inactif : dans ce cas, il n'apparait plus dans l'interface graphique de l'usager.
::: {.note}
Parfois, la notion de "actif" ou "inactif" est indiquée par une date de désactivation, ce qui permet de programmer une désactivation dans le futur.
:::
Lorsqu'une configuration est devenue obsolète ou a été introduite en erreur, il est nécessaire de la désactiver (donc de la placer comme "inactive"). En effet, les éléments ne peuvent pas être supprimés: ils peuvent être utilisés par certains enregistrements dans le logiciel, et la supprimer pourrait rendre les données incohérentes.
::: {.note}
Il est possible de supprimer les éléments inactifs **via une intervention sur la base de donnée directement**. Cela permet de vérifier les contraintes, et éventuellement, d'indiquer une configuration de remplacement là où l'ancienne donnée a été utilisée.
:::
### Notion d'ordre d'apparition
La plupart des éléments peuvent être triés, pour apparaitre dans un certain ordre dans l'interface graphique.
Dans ce cas, un élément numérique peut être ajouté. Cet "ordre de tri" peut comporter plusieurs chiffres après la virgule, de sorte qu'il soit possible d'insérer des éléments sans devoir modifier tous les autres éléments.
Ainsi, par exemple, la liste des problématiques pourrait être la suivante:
| Nom de la problématique | Ordre de tri |
|---------------------------------|-------------:|
| Logement | 1.0 |
| Santé | 2.0 |
| Insertion socio-professionnelle | 3.0 |
Puis, il sera possible d'ajouter une problématique "scolarité" entre le "logement" et "santé" sans modifier les autres éléments:
| Nom de la problématique | Ordre de tri |
|---------------------------------|-------------:|
| Logement | 1.0 |
| Scolarité | 1.5 |
| Santé | 2.0 |
| Insertion socio-professionnelle | 3.0 |
## Configuration liée aux parcours
### Origine des parcours
Les utilisateurs peuvent indiquer, pour chaque parcours, son motif d'ouverture, en choisissant parmi la liste préparée par l'administrateur.
#### Impact statistiques
Les statistiques sur les parcours (nombre de parcours, nombre d'usager concernés par parcours, etc.) peuvent être regroupés ou filtrés en fonction du motif d'ouverture.
#### Caractéristiques
Les origines des parcours comportent les caractéristiques suivantes:
- un nom, décliné dans les différentes langues disponibles dans Chill;
### Motifs de cloture
Lors de la clotûre d'un parcours, les utilisateurs doivent indiquer le motif de la cloture.
#### Impact statistiques
Les statistiques sur les parcours peuvent être regroupés ou filtrés en fonction du motif de cloture.
Les parcours cloturés au moyen d'un motif "annulé" sont exclus des statistiques.
#### Caractéristiques
- un nom, décliné dans les différentes langues disponibles dans Chill;
- un ordre de tri;
- une option spécifique qui permet de considérer comme "annulés" les parcours qui sont clotûrés par ce motif. Cela permet, par exemple, de distinguer les parcours effectifs de ceux qui auraient été créés par erreur, et ne doivent pas être considérés dans les statistiques.
#### Arborescence des motifs
Les motifs de cloture peuvent être organisés en "arbre": l'on peut renseigner une relation parent / enfant dans les motifs.
Dans ce cas, seuls les motifs "enfants" peuvent être choisis par les utilisateurs.
Il est par contre possible d'effectuer des filtres statistiques à partir des motifs "parents".
### Problématiques sociales
#### Pour les utilisateurs
Les problématiques sociales permettent de caractériser les parcours d'accompagnement. Les utilisateurs indiquent les problématiques :
- au sein des parcours;
- éventuellement, pour les échanges. Lorsqu'un utilisateur coche une problématique dans un échange, elle est ajoutée automatiquement au parcours.
#### Impact statistiques
Les problématiques sociales sont utilisées pour calculer des statistiques sur les parcours d'accompagnement. Elles permettent de suivre l'évolution des problématiques traitées et d'identifier les problématiques les plus fréquentes.
Il est possible de comptabiliser le nombre de parcours pour chaque problématique, du nombre d'échanges associés à l'une ou l'autre problématique, ainsi que d'effectuer des filtres à partir de ces problématiques.
#### Caractéristiques des problématiques
##### Arborescences des problématiques sociales
Les problématiques peuvent être organisées en "arbre" : il peut exister des problématiques parents et des problématiques enfants. Les problématiques parents sont plus généralistes.
Les utilisateurs peuvent choisir des problématiques enfants ou parents, indistinctement. Cependant, lorsqu'une problématique enfant est choisie dans l'interface, la problématique parente est automatiquement enlevée: ce comportement vise à conserver uniquement les problématiques les plus fines, celles qui caractérisent le plus précisément le parcours.
::: {.note }
Il est possible de ne configurer qu'un seul niveau de problématique, et de ne pas créer de problématiques "enfants". Cela est tout à fait acceptable et permet de simplifier la gestion de la configuration.
:::
##### Autres caractéristiques
Les caractéristiques ont les propriétés suivantes :
- un nom, qui peut être renseigné dans les différentes langues;
- un ordre d'apparition, qui permet d'ordonner les problématiques dans l'interface.
Pour les problématiques enfants, l'ordre d'apparition est d'abord celui de la problématique parente.
Cela permet de maintenir une cohérence dans l'ordre d'apparition des problématiques dans l'interface.
### Types d'actions d'accompagnement
Les actions d'accompagnement permettent de saisir le travail social d'un parcours. Il enregistre les actions réalisées par les intervenants pour aider les personnes accompagnées à résoudre les difficultés de leur situation sociale.
Chaque action d'accompagnement est liée à une problématique sociale et peut être associée à un échange. Les actions d'accompagnement peuvent être utilisées pour suivre l'évolution du parcours d'accompagnement et pour évaluer l'efficacité des interventions.
Exemple d'action d'accompagnement :
- "Obtenir une aide financière"
- "Trouver un logement stable"
- "Obtenir les droits à l'aide médicale"
#### Pour les utilisateurs
Les utilisateurs créent les actions d'accompagnement dans le parcours:
- soit manuellement;
- soit en les attachant à un échange.
#### Impact statistiques
Il est possible de générer des statistiques à partir des actions d'accompagnement.
Des exports permettent de dénombrer le nombre d'action entreprise, ou le nombre de parcours qui comportent cette action.
#### Caractéristiques
##### Notion de problématique parent / enfant
Les actions peuvent être présentées en "arbre": des actions "parentes" peuvent comporter des actions "enfants".
##### Autres caractéristiques
Les actions d'accompagnement ont les propriétés suivantes :
- un nom, qui peut être renseigné dans les différentes langues;
- un ordre d'apparition, qui permet d'ordonner les actions d'accompagnement dans l'interface.
Pour les actions d'accompagnement enfants, l'ordre d'apparition est d'abord celui de l'action d'accompagnement parente.
Cela permet de maintenir une cohérence dans l'ordre d'apparition des actions d'accompagnement dans l'interface.
- les problématiques sont associées à des évaluations, des objectifs, et des résultats (voir ci-dessous).
### Types d'évaluation ("Évaluation, formulaire, courriers")
Les évaluations sont associées à une, ou plusieurs, actions d'accompagnement.
Elles sont utilisées pour enregistrer un formulaire, un courrier, ou d'autres élements qui sont remplis ou échangés dans le cadre d'une action.
Par exemple, l'action "Obtenir une aide financière" peut comporter une ou plusieurs évaluations de type "Formulaire d'inscription à une agence immobilière sociale", ou "demande de logement social".
Des gabarits de documents peuvent être associés à l'évaluation. L'association est créée à partir de la gestion des gabarits de documents.
#### Caractéristiques
Les évaluations comportent les caractéristiques suivantes:
- un nom, disponible dans les langues d'installation de Chill;
- éventuellement un lien internet, lorsque le formulaire est disponible sur internet. Cela permet d'afficher le lien aux utilisateurs, qui peuvent alors s'y rendre directement;
- un délai, exprimés en jours / semaines / mois. Ce délai est utilisé pour calculer automatiquement la date d'échéance de la réalisation de l'évaluation à partir de sa date de début;
- un délai de notification, qui permet d'afficher un rappel quelques jours, semaines ou mois avant la date d'échéance.
::: {.note}
La date d'échéance, et le délai de notification peuvent être modifiés par l'utilisateur, individuellement pour chaque évaluation enregistrée.
:::
### Objectifs, Résultats
Pour chaque type d'action d'accompagnement, il est possible de lui associer :
- des objectifs (il est possible alors d'ajouter également un résultat);
- des résultats (sans objectif);
::: {.note}
Il est donc possible d'indiquer, dans une action :
- soit des résultats, directement depuis l'action, sans indiquer d'objectif au préalable;
- soit des objectifs, sans y indiquer des résultats;
- soit des objectifs, avec des éventuels résultats.
:::
## Configuration liée aux échanges
Les échanges sont des moments de communication entre les intervenants et les personnes accompagnées (ou leur entourage). Mis ensemble, ils constituent la chronologie du parcours.
Les échanges peuvent être associés à des problématiques, et à des actions d'accompagnement.
::: {.note}
Les échanges sont généralement enregistrés au sein des parcours d'accompagnement.
Selon la configuration souhaitée, les échanges peuvent être créés également (ou exclusivement) dans des dossiers d'usager.
:::
### Types d'échanges, et catégories de types d'échanges
Les types d'échanges déterminent la caractéristique "physique" de l'échange. Ils expliquent le contexte matériel, ou institutionnel de l'échange.
Il peut s'agir, par exemple, d'une rencontre physique dans les bureaux du service, d'une visite à domicile, d'un échange d'email ou d'un rendez-vous auprès d'un association extérieure, etc.
Le type d'échange définit les éléments de l'échange qui peuvent être enregistrés. Par exemple, la question "durée du déplacement" peut n'être rendue disponible que pour les types d'échanges qui impliquent un déplacement ("visite à domicile", "rendez-vous auprès d'une association externe", etc.).
#### Pour les utilisateurs
Au moment de créer un échange, chaque utilisateur doit choisir un type d'échange. En fonction du type d'échange choisi, l'utilisateur dispose ensuite d'un formulaire adapté à ce type d'échange.
Une fois créé, ce type d'échange ne peut plus être modifié.
#### Impact statistique
Chill permet de générer des statistiques sur les échanges, notamment le nombre d'échanges groupés par type d'échange ou catégories de types d'échange.
#### Caractéristiques des types d'échanges
Chaque échange peut être associé à une catégorie de types d'échanges, qui permet de les regrouper dans l'interface.
Les échanges peuvent être ordonnés via leur propriété "ordre de tri".
Pour chaque type d'échange, il est possible d'indiquer quels éléments sont affichés à l'utilisateur, ou doivent être remplis par l'utilisateur, pour chaque échange:
- les usagers impliqués dans l'échange;
- les utilisateurs impliqués dans l'échange;
- les tiers impliqués dans l'échange;
- la date de l'échange;
- le lieu de l'échange;
- la durée de l'échange;
- la durée de déplacement;
- la présence de l'usager (voir ci-dessous);
- les sujets abordés;
- une note générale sur l'échange;
- une note privée sur l'échange;
- les documents attachés à l'échange;
- le fait que l'échange soit urgent, ou non;
- les problématiques et les actions associées à l'échange;
Pour chacun de ces éléments, le titre par défaut peut être adapté.
### Présence aux échanges
En fonction du type d'échange, la présence de l'usager peut être caractérisée.
Il peut s'agir, par exemple, de déterminer si l'usager est correctement présent, où s'il est absent ou excusé.
#### Impact statistiques
Les statistiques sur les échanges (nombre d'échange, durée moyenne des échanges, etc.) peuvent être regroupés ou filtrés en fonction de la présence aux échanges.
### Sujets des échanges
Pour chaque échange, il est possible d'indiquer un ou plusieurs sujets abordés parmi une liste déroulante. Cela constitue un moyen simple de documenter l'échange.
#### Impact statistiques
Les statistiques sur les échanges peuvent être regroupés ou filtrés en fonction des sujets abordés.
## Configuration liée aux rendez-vous
### Motifs d'annulation des rendez-vous
Lors de l'annulation d'un rendez-vous, un motif d'annulation doit être indiqué.
#### Impact statistique
Les statistiques sur les rendez-vous peuvent être regroupés ou filtrés en fonction des motifs d'annulation.
#### Caractéristiques
- un nom, décliné dans les différentes langues disponibles dans Chill;
- une propriété "annulé par", qui permet d'indiquer que les rendez-vous ont été annulé à la demande de l'usager, d'un utilisateur, ou d'une autre partie.
Lors de la génération de statistiques, cela permet d'isoler qui est responsable de l'annulation du rendez-vous.
## Configuration liée aux ménages
Dans Chill, le concept de "ménage" associe plusieurs usagers qui vivent sous le même toit.
Un ménage "donne" l'adresse du domicile à l'usager; autrement dit, le domicile n'est pas enregistré dans le dossier de l'usager, mais dans celui de son ménage. Cela permet d'indiquer un déménagement (mais aussi d'autres caractéristiques, comme la situation familiale) pour tous les usagers associés au ménage.
Il existe cependant des exceptions à ce comportement, qui peuvent être renseignée via la position dans le ménage: les "positions dans le ménage" comportent une caractéristique spécifique, appelée "membre du ménage", décrite ci-après.
::: {.warning}
Le domicile est unique. En conséquence, les usagers qui partagent l'adresse du ménage (l'option "membre du ménage" est cochée) ne peuvent être présents que dans un seul ménage à la fois.
:::
### Position dans le ménage
Lorsqu'un usager est associé au ménage, une position peut lui être indiquée.
Cela peut être, classiquement:
- un adulte dans le ménage;
- un enfant dans le ménage;
- un enfant en dehors du ménage.
#### Caractéristiques des positions dans le ménage
Chaque position dans le ménage dispose des caractéristiques suivantes:
- un nom, décliné dans les différentes langues disponibles dans Chill;
- une option "peut être titulaire", qui indique que, pour cette position, la case "titulaire du ménage" est disponible. Typiquement, il s'agira des adultes dans le ménage;
- une option "membre du ménage":
- lorsqu'elle est cochée, les usagers associés à ce ménage partagent la même adresse, ainsi que d'autres caractéristiques comme la composition familiale. Ils ne peuvent être membre que d'une seul ménage simultanément.
- lorsqu'elle est décochée, les usagers ne partagent pas la même adresse. Ils peuvent être membre de plusieurs ménages simultanément.
::: {.warning}
Lorsque l'option "membre du ménage" est modifiée, les usagers associés préalablement à ce ménage ne sont pas impactés. Il est nécessaire d'intervenir sur la base de donnée pour modifier l'adresse des usagers.
En effet, au moment d'ajouter une contrainte "membre du ménage", il faudra vérifier que les usagers associés à ce ménage au travers de cette position ne sont pas simultanément membres d'un autre ménage.
Cette vérification pouvant être fastidieuse, il est recommandé de désactiver l'ancienne configuration et d'en créer une nouvelle, plutôt que de modifier la configuration existante.
:::
### Composition familiale
La composition familiale de chaque ménage peut être précisée manuellement.
#### Impact statistique
Des statistiques peuvent être générée à partir de la composition familiale du ménage de l'usager: regroupement ou filtre par composition familiale.
#### Caractéristiques
Les caractéristiques de la composition familiale sont:
- un nom, décliné dans les différentes langues disponibles dans Chill.
### Types de relation
Un usager peut être lié à un autre usager par une relation. Chaque relation peut être typée, pour indiquer, par exemple, qu'il s'agit d'une relation de parentalité, de fraternité, etc.
Un "graphe des relations" peut être affiché dans Chill.
### Caractéristiques
Les relations relient deux usagers. Elles disposent d'un sens (du parent vers l'enfant, ou de l'enfant vers le parent, par exemple).
Les types de relations sont donc:
- un premier membre (renseigné dans chaque langue);
- un deuxième membre (également renseigné dans chaque langue).
Il peut donc s'agir, par exemple, du "parent" pour le premier membre, et de l'enfant pour le second. Ou, lorsqu'il s'agit de relation de fraternité, de "frère / sœur" pour le premier, et également de "frère / sœur" pour le second.
::: {.note}
Pour plus de simplicité, il est conseillé de configurer le nom des membres dans les différents genres disponibles. Par exemple, il est préférable de configurer une relation de type "parent / enfant" plutôt que "père / fille", puis "père / fils", "mère / fille", "mère / fils".
Cela permet de simplifier les statistiques et la génération des documents, et évite aussi de trop charger l'interface graphique.
:::
## Configuration liée aux budgets
Le budget de l'usager peut être renseigné tant dans le dossier de l'usager (dépenses qui sont propres à l'usager) que dans le dossier du ménage (dépenses qui sont partagées entre les membres du ménage).
### Types de ressources et types de charges
Les types de ressources et les types de charges sont configurables dans Chill. Ils permettent de catégoriser les dépenses et les revenus de l'usager et du ménage.
#### Caractéristiques
Les types de ressources et les types de charges disposent:
- d'un nom, décliné dans les différentes langues disponibles dans Chill;
- d'un ordre d'apparition, qui permet de trier les éléments dans l'interface;
- d'une clé d'identification. Cette clé permet d'identifier la ressource lors de la génération de document.
<!--
## Configuration liées aux événements
TODO
## Utilisateurs et permissions
TODO
-->
## Configuration des documents
La configuration des documents est détaillée dans un document dédié.
## Configuration liée aux usagers
### État civil
L'état civil est indiqué dans le dossier des usagers.
#### Caractéristiques
Les états civils disposent des caractéristiques suivantes:
- un nom, qui peut être indiqué dans les différentes langues de Chill;
### Types de personnes ressources
Les utilisateurs peuvent renseigner des personnes ressources dans le dossier des usagers: des personnes qu'il peut être utile de connaitre pour traiter le dossier, ou interagir avec l'usager, par exemple.
Ces personnes ressources peuvent être caractérisées par un type. Notons que ce type n'est pas obligatoire.
#### Caractéristiques
Les personnes ressources disposent des caractéristiques suivantes:
- un nom, qui peut être traduit dans les différents langues de Chill.
-
## Configuration générale
### Civilités
Les civilités sont associés à différentes entités, et notamment:
- les usagers;
- les tiers;
- les utilisateurs.
#### Caractéristiques
Chaque civilité comporte les propriétés suivantes:
- un nom, qui peut être indiqué dans les différentes langues de Chill;
- une abbréviation, qui peut être indiquée dans les différentes langues de Chill. Par exemple, "Monsieur" correspondra à "M." comme abbréviation.
- un ordre d'apparition, qui permet d'indiquer les plus fréquentes en premier.
### Genres
Différents genres peuvent être renseignés dans le logiciel.
#### Caractéristiques
Les genres disposent des caractéristiques suivantes:
- un nom, qui peut être indiqué dans les différentes langues de Chill;
- un ordre d'apparition, qui permet d'indiquer les plus fréquents en premier;
- le genre à choisir dans des traductions spécifiques, de sorte que le logiciel puisse féminiser certaines traductions (par exemple, choisir entre "né le", "née le", et "né·e le");
- une icône spécifique, à choisir parmi la liste indiquée.

View File

@@ -1,4 +1,3 @@
# Génération de documents
L'administrateur fonctionnel prépare la génération des documents.
@@ -50,7 +49,7 @@ Le document est préparé de manière habituelle: le texte y est écrit, le logo
Le travail de préparation consiste à préciser les endroits où ces informations doivent être insérées: des champs spécifiques.
::: .note
::: {.note}
Le fonctionnement de la génération de document est assez semblable au "publi-postage": des champs sont définis dans le document, et le logiciel de traitement de texte vient les remplacer par ceux provenant d'une base de donnée.
@@ -139,16 +138,16 @@ Les options disponibles dépendent du contexte.
Par exemple, pour un courrier généré dans un contexte "parcours", l'utilisateur pourra choisir un usager du parcours pour un courrier; l'administrateur indiquera qu'il s'agira du "destinataire" du courrier. Tandis que pour un formulaire officiel, l'administrateur configurera un "demandeur" et "co-demandeur", et ce sont ces libellés qui s'afficheront.
## Variables par contexte
## Variables par contexte
### Pour tous les contextes { #sec:gendoc:champs-documents }
### Pour tous les contextes { #sec:gendoc-champs-documents }
#### Variables
#### Variables { #sec:entity-variables-all-context }
* `creator`: (User) le créateur;
* `createdAt` (Date): la date et l'heure de création;
* `createdAtDate` (Date): la date de la création (sans l'heure). Utilisable pour indiquer la date d'un courrier, par exemple;
* `location` (Location): le lieu sélectionné par le créateur, au moment de la génération **ou** celui choisi par l'étape 1.
* `creator`: ([User](#sec:entity-user)) le créateur;
* `createdAt` ([Date](#sec:entity-date)): la date et l'heure de création;
* `createdAtDate` ([Date](#sec:entity-date)): la date de la création (sans l'heure). Utilisable pour indiquer la date d'un courrier, par exemple;
* `location` ([Location](#sec:entity-location)): le lieu sélectionné par le créateur, au moment de la génération **ou** celui choisi par l'étape 1.
### Document générés pour un parcours
@@ -161,15 +160,15 @@ Les administrateurs fonctionnels peuvent activer les paramètres suivants:
* un champ "usager principal du parcours", qui permet, cette fois, de choisir parmi les usagers concernés par le parcours, les interlocuteurs privilégiés qui sont des usagers (à l'exclusion des tiers), et les personnes ressources associées à un usager concerné du parcours (à l'exclusion des ressources tiers et "texte libre");
* un champ "tiers", qui permet de choisir un tiers parmi les tiers "personnes ressources" du parcours, ou le demandeur du parcours (s'il s'agit d'un tiers);
#### Variables
#### Variables { #sec:entity-variables-accompanying-period }
Le document présente:
* une variable `course`, de type `AccompanyingPeriod`;
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type `ThirdParty`, uniquement si l'administrateur fonctionnel l'a configuré.
* une variable `course`, de type [`AccompanyingPeriod`](#sec:entity-accompanyingperiod);
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type [`Person`](#sec:entity-user), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type [Person](#sec:entity-user), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type [Person](#sec:entity-user), avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type [`ThirdParty`](#sec:entity-thirdparty), uniquement si l'administrateur fonctionnel l'a configuré.
### Document générés pour un parcours, contexte "liste des activités"
@@ -177,38 +176,38 @@ Le contexte présente les mêmes variables et paramètre que les documents gén
La variable suivante est ajoutée:
* `activities` (liste de Activity): Liste d'activités, variant "light". Aucun filtre n'est appliqué sur les échanges récupérés.
* `activities` (liste de [Activity](#sec:entity-activity)): Liste d'activités, variant "light". Aucun filtre n'est appliqué sur les échanges récupérés.
### Document générés pour une évaluation
Le document présente:
* une variable `evaluation` de type `AccompanyingPeriodWorkEvaluation`: l'évaluation concernée;
* une variable `work` de type `AccompanyingPeriodWork`: l'action d'accompagnement au sein de laquelle l'évaluation est générée;
* une variable `course`, de type `AccompanyingPeriod`: le parcours au sein duquel l'évaluation est générée;
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type `ThirdParty`, uniquement si l'administrateur fonctionnel l'a configuré.
* une variable `evaluation` de type [`AccompanyingPeriodWorkEvaluation`](#sec:entity-accompanyingperiodworkevaluation): l'évaluation concernée;
* une variable `work` de type [`AccompanyingPeriodWork`](#sec:entity-accompanyingperiodwork): l'action d'accompagnement au sein de laquelle l'évaluation est générée;
* une variable `course`, de type [`AccompanyingPeriod`](#sec:entity-accompanyingperiod): le parcours au sein duquel l'évaluation est générée;
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type [`Person`](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type [`ThirdParty`](#sec:entity-thirdparty), uniquement si l'administrateur fonctionnel l'a configuré.
### Document générés pour un échange
Le document présente:
* une variable `activity`, de type `Activity`: l'évaluation concernée
* une variable `course`, de type `AccompanyingPeriod`: le parcours concerné, à condition que l'échange ait été créé dans un contexte parcours
* une variable `person`, de type `Person`: la personne concernée, à condition que l'échange ait été créée dans un contexte d'usager.
* une variable `activity`, de type [`Activity`](#sec:entity-activity): l'évaluation concernée
* une variable `course`, de type [`AccompanyingPeriod`](#sec:entity-accompanyingperiod): le parcours concerné, à condition que l'échange ait été créé dans un contexte parcours
* une variable `person`, de type [`Person`](#sec:entity-person): la personne concernée, à condition que l'échange ait été créée dans un contexte d'usager.
Il est possible également d'injecter des dossiers d'usagers, parmi ceux associés **à l'échange** (l'utilisateur peut choisir parmis les usagers de l'échange, et pas les usagers concernés du parcours).
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type [`Person`](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
### Documents générés dans le dossier d'une personne: contexte "personne basique"
* une variable `person`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type `ThirdParty`, uniquement si l'administrateur fonctionnel l'a configuré.
* une variable `person`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type [`ThirdParty`](#sec:entity-thirdparty), uniquement si l'administrateur fonctionnel l'a configuré.
### Documents générés dans le dossier d'une personne: contexte "personne avec un tiers"
@@ -218,155 +217,155 @@ Cela peut être utile pour, par exemple, générer un courrier vers un tiers dé
Les variables disponibles sont les suivantes:
* une variable `person`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`.
* une variable `thirdParty`, de type `ThirdParty`;
* une variable `person`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`.
* une variable `thirdParty`, de type [`ThirdParty`](#sec:entity-thirdparty);
### Document générés dans un contexte "rendez-vous"
Les champs suivant sont disponibles:
* une variable `calendar` (Calendar), qui contient les données du rendez-vous;
* une variable `mainPerson` (Person), la personne principale parmi les personnes participant au rendez-vous. Cette variable n'est présente que si l'administrateur fonctionnel l'a configurée.
* une variable `thirdParty` (ThirdParty): un tiers participant au rendez-vous. Cette variable n'est présente que si l'administrateur fonctionnel l'a configurée.
* une variable `calendar` ([Calendar](#sec:entity-calendar)), qui contient les données du rendez-vous;
* une variable `mainPerson` ([Person](#sec:entity-person)), la personne principale parmi les personnes participant au rendez-vous. Cette variable n'est présente que si l'administrateur fonctionnel l'a configurée.
* une variable `thirdParty` ([ThirdParty](#sec:entity-thirdparty)): un tiers participant au rendez-vous. Cette variable n'est présente que si l'administrateur fonctionnel l'a configurée.
## Principes liés au variables
## Champs par objet { #sec:gendoc-champs-objets }
### AccompanyingPeriod (Parcours)
### AccompanyingPeriod (Parcours) { #sec:entity-accompanyingperiod }
* `id` (texte): l'identifiant du parcours
* `type` (texte): toujours égal à `accompanying_course`
* `type` (texte): toujours égal à `accompanying-course`
* `isNull`: (bool) renvoie `true` si est une entité nulle (toutes les variables sont vides);
* `closingDate` (Date): date de clotûre;
* `closingDate` ([Date](#sec:entity-date)): date de clotûre;
* `confidential` (bool): `true` si confidentiel;
* `confidentialText` (texte): "Confidentiel" si le parcours est confidentiel, texte vide sinon;
* `createdAt` (Date): date de création;
* `createdBy` (User): utilisateur ayant créé le parcours;
* `createdAt` ([Date](#sec:entity-date)): date de création;
* `createdBy` ([User](#sec:entity-user)): utilisateur ayant créé le parcours;
* `emergency` (bool): `true` si parcours en urgence;
* `emergencyText` (texte): "Urgent" si le parcours est urgent, texte vide sinon;
* `openingDate` (texte): la date de confirmation du parcours;
* `origin` (AccompanyingPeriodOrigin): l'origine du parcours;
* `origin` ([AccompanyingPeriodOrigin](#sec:entity-accompanyingperiodorigin)): l'origine du parcours;
* `originText` (texte): Le titre de l'origine, directement utilisable dans le document;
* `participations` (liste de AccompanyingPeriodParticipation): les participations du parcours, actuelles **et anciennes**;
* `currentParticipations` (liste de AccompanyingPeriodParticipation): les participations actuelles du parcours;
* `participations` (liste de [AccompanyingPeriodParticipation](#sec:entity-accompanyingperiodparticipation)): les participations du parcours, actuelles **et anciennes**;
* `currentParticipations` (liste de [AccompanyingPeriodParticipation](#sec:entity-accompanyingperiodparticipation)): les participations actuelles du parcours;
* `requestorAnonymous` (bool): `true` si le demandeur du parcours est anonyme;
* `hasRequestor` (bool): `true` si le parcours a un demandeur (il peut être un tiers ou une personne);
* `requestorKind` (texte): `person` si le demandeur est une personne, `thirdparty` si c'est un tiers;
* `requestorPerson` (Person): demandeur, si le demandeur est une personne;
* `requestorPerson` ([Person](#sec:entity-person)): demandeur, si le demandeur est une personne;
* `hasRequestorPerson` (bool): `true` si le demandeur est une personne;
* `requestorThirdParty` (ThirdParty): demandeur, si le demandeur est un tiers;
* `requestorThirdParty` ([ThirdParty](#sec:entity-thirdparty)): demandeur, si le demandeur est un tiers;
* `hasRequestorThirdParty` (bool): `true` si le demandeur est un tiers;
* `resources` (liste de AccompanyingPeriodResource): les ressources du parcours;
* `scopes` (liste de Scope): services associés au parcours;
* `resources` (liste de [AccompanyingPeriodResource](#sec:entity-accompanyingperiodresource)): les ressources du parcours;
* `scopes` (liste de [Scope](#sec:entity-scope)): services associés au parcours;
* `scopesText` (texte): titre des services associés au parcours, séparés par une virgule;
* `socialIssues` (liste de SocialIssues): problématiques sociales associées au parcours;
* `socialIssues` (liste de [SocialIssue](#sec:entity-socialissue)): problématiques sociales associées au parcours;
* `socialIssuesText` (texte): Liste des problématiques sociales, séparées par une virgule;
* `intensity` (texte): texte traduit de l'intensité: "ponctuel" ou "régulier";
* `step` (texte): texte traduit de l'étape du parcours: "Brouillon", ou "En cours";
* `isClosed` (bool): `true` si le parcours est fermé (la date de clotûre est renseignée);
* `closingMotiveText` (texte): titre du motif de clotûre;
* `closingMotive` (ClosingMotive): motif de clotûre
* `ref` (User): référent du parcours;
* `closingMotive` ([ClosingMotive](#sec:entity-closingmotive)): motif de clotûre
* `ref` ([User](#sec:entity-user)): référent du parcours;
* `hasRef` (bool): `true` si un référent est désigné;
* `hasLocation` (bool): `true` si un parcours a une localisation;
* `hasLocationPerson` (bool): `true` si un parcours a une localisation auprès d'un personne. `false` si c'est une localisation temporaire;
* `location` (Adresse): l'adresse de localisation du parcours
* `locationPerson` (Person): l'utilisateur qui localise le parcours (s'il y en a un, peut être vide);
* `administrativeLocation` (Location): localisation administrative du parcours;
* `location` ([Address](#sec:entity-address)): l'adresse de localisation du parcours
* `locationPerson` ([Person](#sec:entity-person)): l'utilisateur qui localise le parcours (s'il y en a un, peut être vide);
* `administrativeLocation` ([Location](#sec:entity-location)): localisation administrative du parcours;
* `hasAdministrativeLocation` (bool): `true` si une localisation administrative est définie;
* `works` (liste de AccompanyingPeriodWork): liste des actions d'accompagnement créées dans le cadre de ce parcours;
* `comments` (liste de AccompanyingPeriodComment): liste des commentaires;
* `pinnedComment` (AccompanyingPeriodComment): commentaire épinglé;
* `works` (liste de [AccompanyingPeriodWork](#sec:entity-accompanyingperiodwork)): liste des actions d'accompagnement créées dans le cadre de ce parcours;
* `comments` (liste de [AccompanyingPeriodComment](#sec:entity-accompanyingperiodcomment)): liste des commentaires;
* `pinnedComment` ([AccompanyingPeriodComment](#sec:entity-accompanyingperiodcomment)): commentaire épinglé;
### AccompanyingPeriodComment (Commentaire du parcours)
### AccompanyingPeriodComment (Commentaire du parcours) { #sec:entity-accompanyingperiodcomment }
* `id` (int): identifiant
* `content` (texte): contenu du commentaire
* `createdAt` (Date): date de création
* `creator` (User): Créateur du commentaire
* `createdAt` ([Date](#sec:entity-date)): date de création
* `creator` ([User](#sec:entity-user)): Créateur du commentaire
### AccompanyingPeriodOrigin (Origine du parcours)
### AccompanyingPeriodOrigin (Origine du parcours) { #sec:entity-accompanyingperiodorigin }
* `id` (int): identifiant;
* `label` (texte): libellé de l'origine;
### AccompanyingPeriodParticipation (Participation à un parcours)
### AccompanyingPeriodParticipation (Participation à un parcours) { #sec:entity-accompanyingperiodparticipation }
Cet objet effectue la jointure entre les parcours et les usagers concernés à un parcours. Elle permet d'avoir accès à des informations supplémentaires, comme la date de début et l'éventuelle date de fin de la participation à un parcours.
* `id` (int): identifiant
* `person` (Person): usager associé au parcours;
* `startDate` (Date): date de début;
* `endDate` (Date): date de fin. Vide si la participation est toujours en cours;
* `person` ([Person](#sec:entity-person)): usager associé au parcours;
* `startDate` ([Date](#sec:entity-date)): date de début;
* `endDate` ([Date](#sec:entity-date)): date de fin. Vide si la participation est toujours en cours;
### AccompanyingPeriodResource (Interlocuteur privilégiés dans un parcours)
### AccompanyingPeriodResource (Interlocuteur privilégiés dans un parcours) { #sec:entity-accompanyingperiodresource }
* `id` (int): identifiant;
* `person` (Person): usager ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est un tiers);
* `thirdParty` (ThirdParty): tiers ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est une personne);
* `person` ([Person](#sec:entity-person)): usager ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est un tiers);
* `thirdParty` ([ThirdParty](#sec:entity-thirdparty)): tiers ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est une personne);
* `comment` (texte): commentaire associé à la personne ressource.
### AccompanyingPeriodWork (Action d'accompagnement)
### AccompanyingPeriodWork (Action d'accompagnement) { #sec:entity-accompanyingperiodwork }
* `id` (texte): l'identifiant de l'action;
* `note` (texte): la note;
* `persons` (liste de Person): liste des usagers concernés par l'action
* `results` (liste de Result): liste des résultats directement associé au parcours (résultats sans objectifs)
* `socialAction` (SocialAction): type d'action sociale;
* `startDate` (Date): la date de début de l'action (vide si inexistant)
* `endDate` (Date): la date de début de l'action (vide si inexistant)
* `thirdParties` (liste de ThirdParty): les tiers associés à l'action comme tiers intervenants;
* `updatedBy` (User): utilisateur ayant fait la mise à jour;
* `updatedAt` (Date): date de mise à jour;
* `handlingThierParty` (ThirdParty): tiers traitant;
* `goals` (AccompanyingPeriodWorkGoal): objectifs
* `createdBy` (Date): date de mise à jour;
* `createdAt` (User): utilisateur ayant fait la mise à jour;
* `persons` (liste de [Person](#sec:entity-person)): liste des usagers concernés par l'action
* `results` (liste de [Result](#sec:entity-result)): liste des résultats directement associé au parcours (résultats sans objectifs)
* `socialAction` ([SocialAction](#sec:entity-socialaction)): type d'action sociale;
* `startDate` ([Date](#sec:entity-date)): la date de début de l'action (vide si inexistant)
* `endDate` ([Date](#sec:entity-date)): la date de début de l'action (vide si inexistant)
* `thirdParties` (liste de [ThirdParty](#sec:entity-thirdparty)): les tiers associés à l'action comme tiers intervenants;
* `updatedBy` ([User](#sec:entity-user)): utilisateur ayant fait la mise à jour;
* `updatedAt` ([Date](#sec:entity-date)): date de mise à jour;
* `handlingThierParty` ([ThirdParty](#sec:entity-thirdparty)): tiers traitant;
* `goals` ([AccompanyingPeriodWorkGoal](#sec:entity-accompanyingperiodworkgoal)): objectifs
* `createdBy` ([Date](#sec:entity-date)): date de mise à jour;
* `createdAt` ([User](#sec:entity-user)): utilisateur ayant fait la mise à jour;
* `createdAutomatically` (bool): `true` si l'action a été créée automatiquement (par exemple, en créant un échange);
* `evaluations` (AccompanyingPeriodWorkEvaluation): liste des évaluations générées;
* `referrers` (liste de User): liste des agents traitants;
* `evaluations` ([AccompanyingPeriodWorkEvaluation](#sec:entity-accompanyingperiodworkevaluation)): liste des évaluations générées;
* `referrers` (liste de [User](#sec:entity-user)): liste des agents traitants;
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement)
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement) { #sec:entity-accompanyingperiodworkevaluation }
* `id` (texte): l'identifiant de l'évaluation;
* `type` (texte): le libellé de l'évaluation;
* `startDate` (Date): la date de début de l'évaluation;
* `startDate` ([Date](#sec:entity-date)): la date de début de l'évaluation;
* `endDate` (Date) la date de fin de l'évaluation;
* `maxDate` (Date): la date d'échéance de l'évaluation;
* `maxDate` ([Date](#sec:entity-date)): la date d'échéance de l'évaluation;
* `comment` (texte): le commentaire de l'évaluation;
* `createdBy` (User): le créateur de l'évaluation;
* `createdAt` (Date): la date de création de l'évaluation;
* `evaluation` (Evaluation): le type d'évaluation;
* `createdBy` ([User](#sec:entity-user)): le créateur de l'évaluation;
* `createdAt` ([Date](#sec:entity-date)): la date de création de l'évaluation;
* `evaluation` ([Evaluation](#sec:entity-evaluation)): le type d'évaluation;
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement)
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement) { #sec:entity-accompanyingperiodworkgoal }
* `id` (texte): identifiant
* `goal` (Goal): objectif d'une action
* `results` (liste de Result): liste des résultats
* `goal` ([Goal](#sec:entity-goal)): objectif d'une action
* `results` (liste de [Result](#sec:entity-result)): liste des résultats
### Activity (échange)
### Activity (échange) { #sec:entity-activity }
* `id` (int): identifiant;
* `activityType` (ActivityType): Type d'échange
* `attendee` (ActivityPresence): Présence à l'échange
* `comment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `date` (Date): Date de l'échange
* `activityType` ([ActivityType](#sec:entity-activitytype)): Type d'échange
* `attendee` ([ActivityPresence](#sec:entity-activitypresence)): Présence à l'échange
* `comment` ([Comment](#sec:entity-comment)): Commentaire (avec la date de la dernière mise à jour)
* `date` ([Date](#sec:entity-date)): Date de l'échange
* `durationTimeMinute` (int): Durée de l'échange, en minutes
* `emergency` (bool): True si en urgence
* `location` (Location): Lieu de l'échange
* `reasons` (liste de ActivityReason): Sujets de l'échange (pas utilisé en Vendée)
* `scope` (Scope): Service (pas utilisé en Vendée)
* `location` ([Location](#sec:entity-location)): Lieu de l'échange
* `reasons` (liste de [ActivityReason](#sec:entity-activityreason)): Sujets de l'échange (pas utilisé en Vendée)
* `scope` ([Scope](#sec:entity-scope)): Service (pas utilisé en Vendée)
* `sentReceived` (text): sera `received` si reçu, et `sent` si envoyé;
* `socialActions` (liste de SocialAction): liste d'actions sociales associées
* `socialIssues` (liste de SocialIssue): liste de problématiques sociales associées
* `thirdParties` (liste de ThirdParty): liste de tiers associés
* `socialActions` (liste de [SocialAction](#sec:entity-socialaction)): liste d'actions sociales associées
* `socialIssues` (liste de [SocialIssue](#sec:entity-socialissue)): liste de problématiques sociales associées
* `thirdParties` (liste de [ThirdParty](#sec:entity-thirdparty)): liste de tiers associés
* `travelTimeMinute` (int): durée du trajet en minutes
* `user` (User): l'utilisateur pour lequel l'échange a été créé;
* `users` (liste de Users): les utilisateurs qui sont associés à l'échange.
* `user` ([User](#sec:entity-user)): l'utilisateur pour lequel l'échange a été créé;
* `users` (liste de [User](#sec:entity-user)): les utilisateurs qui sont associés à l'échange.
#### variant `light`
@@ -379,36 +378,38 @@ Ce variant comporte les mêmes attributs, avec les différences suivantes:
* le champ `reasons` n'est pas présent;
* le champ `comment` est également présenté avec le variant `light`.
### ActivityType (Type d'activité)
### ActivityReason (Sujet d'activité) { #sec:entity-activityreason }
### ActivityType (Type d'activité) { #sec:entity-activitytype }
Type d'activité.
* `id` (int): identifiant;
* `name` (texte): libellé
### ActivityPresence (Présence à l'échange)
### ActivityPresence (Présence à l'échange) { #sec:entity-activitypresence }
Présence à l'échange
* `id` (int): identifiant;
* `name` (texte): libellé
### Address (Une adresse)
### Address (Une adresse) { #sec:entity-address }
* `address_id` (int): l'identifiant de l'adresse;
* `address-id` (int): l'identifiant de l'adresse;
* `text` (texte): une chaine de caractère représentant l'adresse complète;
* `street` (texte): le nom de la rue (exemple: "RUE DES ÉGLANTIERS");
* `streetNumber` (texte): le numéro de police;
* `postcode` (PostCode): le code postal;
* `country` (Country): le pays de l'adresse;
* `postcode` ([PostCode](#sec:entity-postcode)): le code postal;
* `country` ([Country](#sec:entity-country)): le pays de l'adresse;
* `floor` (texte): l'étage;
* `corridor` (texte): le couloir;
* `flat` (texte): l'appartement;
* `buildingName` (texte): le nom du bâtiment / résidence;
* `distribution` (texte): service particulier de distribution;
* `extra` (texte): champs extras
* `validFrom` (Date): date de début de validité;
* `validTo` (Date): date de fin de validité (vide si toujours valide);
* `validFrom` ([Date](#sec:entity-date)): date de début de validité;
* `validTo` ([Date](#sec:entity-date)): date de fin de validité (vide si toujours valide);
* `lines` (liste de texte): les lignes de l'adresses, comme elles devraient être formatées dans une adresses
Il est possible de représenter l'adresse au format postal en effectuant une boucle sur les lignes. Par exemple, pour l'adresse d'une personne (chaque ligne est un "renvoi > substituant" dans l'exemple ci-dessous):
@@ -419,13 +420,13 @@ line
/for
```
### Comment (Commentaire)
### Comment (Commentaire) { #sec:entity-comment }
Certains champs commentaire enregistrent également l'utilisateur qui a effectué la dernière mise à jour, et la date de celle-ci, en plus du commentaire en tant que tel. Ces champs ont les attributs suivants:
* `comment` (texte): le commentaire en tant que tel;
* `date` (Date): la date de la dernière modification;
* `user` (User): l'utilisateur qui a effectué la dernière modification;
* `date` ([Date](#sec:entity-date)): la date de la dernière modification;
* `user` ([User](#sec:entity-user)): l'utilisateur qui a effectué la dernière modification;
#### Variant `light`
@@ -436,101 +437,110 @@ Dans le variant `light`,
Seul le champ `comment` est donc disponible.
### Calendar (Rendez-vous) { #sec:entity-calendar}
### Civility (Civilité)
* id (int): identifiant
### Civility (Civilité) { #sec:entity-civility }
* `abbreviation` (texte): abbréviation;
* `id` (int): identifiant (utile pour des comparaisons);
* `name` (texte): titre, label de la civilité;
### ClosingMotive (Motif de cloture)
### ClosingMotive (Motif de cloture) { #sec:entity-closingmotive }
* `id` (int): identifiant;
* `name` (texte): libellé
### Country (Pays)
### Country (Pays) { #sec:entity-country }
* `id` (int): identifiant
* `name` (texte): nom du pays
* `code` (texte): deux lettres du code ISO pays
### Date (Date)
### Date (Date) { #sec:entity-date }
* `short` (texte): la date au format dd/mm/yyyy, vide si la date est absente;
* `long` (texte): la date au format jour mois années: 15 août 1980, vide si al date est absente;
### Evaluation (type d'évaluation)
### Evaluation (type d'évaluation) { #sec:entity-evaluation }
* `id` (texte): l'identifiant du type d'évaluation;
* `title` (texte): le titre du type d'évaluation;
### Goal (objectif d'une action)
### Goal (objectif d'une action) { #sec:entity-goal }
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### Household (Ménage)
### GenderEntity (Genre) { #sec:entity-genderentity }
* `label` (texte): label du genre;
* `id` (int): identifiant (utile pour des comparaisons);
* `genderTranslation` (texte): utilisation grammaticale;
### Household (Ménage) { #sec:entity-household }
* `id` (int): l'identifiant du ménage;
* `current_address` (Adress) : adresse actuelle du ménage
* `current_composition` (HouseholdComposition): Composition **actuelle** du ménage
* `currentMembers` (liste de HouseholdMember): liste des membres **actuels** du ménage;
* `members` (liste de HouseholdMember): liste des membres du ménages. Cette liste inclut également les anciens membres;
* `current-address` (Adress) : adresse actuelle du ménage
* `current-composition` ([HouseholdComposition](#sec:entity-householdcomposition)): Composition **actuelle** du ménage
* `currentMembers` (liste de [HouseholdMember](#sec:entity-householdmember)): liste des membres **actuels** du ménage;
* `members` (liste de [HouseholdMember](#sec:entity-householdmember)): liste des membres du ménages. Cette liste inclut également les anciens membres;
* `waitingForBirth` (bool): `true` si une naissance est attendue;
* `waitingForBirthDate` (Date): date de la naissance attendue;
* `waitingForBirthDate` ([Date](#sec:entity-date)): date de la naissance attendue;
### HouseholdComposition
### HouseholdComposition { #sec:entity-householdcomposition }
La composition du ménage entre deux dates. Cette entité associe une `HouseholdCompositionType` avec une date de début et une date de fin
* `id` (int): L'identifiant de la composition
* `startDate` (Date): date de début de validité de la composition du ménage;
* `endDate` (Date): date de fin de validité de la composition du ménage (vide si actif)
* `startDate` ([Date](#sec:entity-date)): date de début de validité de la composition du ménage;
* `endDate` ([Date](#sec:entity-date)): date de fin de validité de la composition du ménage (vide si actif)
* `numberOfChildren` (int): nombre d'enfants
* `householdCompositionType` (HouseholdCompositionType): Type de composition choisie, entre deux dates
* `householdCompositionType` ([HouseholdCompositionType](#sec:entity-householdcompositiontype)): Type de composition choisie, entre deux dates
### HouseholdCompositionType
### HouseholdCompositionType { #sec:entity-householdcompositiontype }
* `id` (int): L'identifiant du type de composition
* `label` (texte): Le libellé de la composition
### HouseholdMember (Membre d'un ménage)
### HouseholdMember (Membre d'un ménage) { #sec:entity-householdmember }
* `comment` (texte): texte du commentaire;
* `id` (int): identifiant de la participation au ménage;
* `endDate` (Date): date de fin de participation au ménage;
* `endDate` ([Date](#sec:entity-date)): date de fin de participation au ménage;
* `holder` (bool): `true` si le participant est titulaire;
* `person` (Person): l'usager qui est membre du ménage;
* `position` (HouseholdPosition): la position du membre dans le ménage;
* `startDate` (Date): date de début de participation au ménage;
* `person` ([Person](#sec:entity-person)): l'usager qui est membre du ménage;
* `position` ([HouseholdPosition](#sec:entity-householdposition)): la position du membre dans le ménage;
* `startDate` ([Date](#sec:entity-date)): date de début de participation au ménage;
### HouseholdPosition (Position du membre dans le ménage)
### HouseholdPosition (Position du membre dans le ménage) { #sec:entity-householdposition }
* `id` (int): identifiant de la position;
* `label` (texte): label de la position dans le ménage;
### Location (lieu)
### Location (lieu) { #sec:entity-location }
* `id` (int): identifant;
* `name` (texte): nom;
* `address` (Address): adresse du lieu;
* `address` ([Address](#sec:entity-address)): adresse du lieu;
* `phonenumber1` (texte): numéro de téléphone;
* `phonenumber2` (texte): numéro de téléphone;
* `email` (email): email
* `locationType` (LocationType): le type de lieu
* `locationType` ([LocationType](#sec:entity-locationtype)): le type de lieu
### LocationType (type de lieu)
### LocationType (type de lieu) { #sec:entity-locationtype }
* `id` (int): identifant;
* `title` (texte): titre du type de lieu;
### Person (Personne, usager)
### Person (Personne, usager) { #sec:entity-person }
* `id` (texte): Identifiant du dossier usager;
* `isNull` (bool): `true` si le dossier usager est vide;
* `civility` (Civility): Civilité
* `civility` ([Civility](#sec:entity-civility)): Civilité
* `firstName` (texte): Prénom
* `lastName` (texte): Nom
* `altNames` (texte): noms supplémentaire (nom de naissance, …)
@@ -538,10 +548,10 @@ La composition du ménage entre deux dates. Cette entité associe une `Household
* `birthdate` (Date)
* `age`: (int) age de la personne;
* `deathdate` (Date)
* `gender` (texte): genre (texte traduit);
* `genderEntity` ([GenderEntity](#sec:entity-genderentity)): Genre;
* `maritalStatus` (texte): représentation textuelle de l'état civil;
* `maritalStatusDate` (Date): date à la quelle le statut de l'état civil a été mis à jour;
* `maritalStatusComment` (Comment): Commentaire sur l'état civil (avec la date de la dernière mise à jour)
* `maritalStatusDate` ([Date](#sec:entity-date)): date à la quelle le statut de l'état civil a été mis à jour;
* `maritalStatusComment` ([Comment](#sec:entity-comment)): Commentaire sur l'état civil (avec la date de la dernière mise à jour)
* `email` (texte): adresse email
* `firstPhoneNumber` (texte): soit le numéro de mobile s'il existe, soit le numéro fixe s'il existe, sinon vide;
* `fixPhoneNumber` (texte): le numéro de téléphone fixe;
@@ -550,16 +560,19 @@ La composition du ménage entre deux dates. Cette entité associe une `Household
* `placeOfBirth (texte): le lieu de naissance
* `memo` (texte): le mémo
* `numberOfChildren` (texte): le nombre d'enfants
* `address` (Adresse): l'adresse actuelle
* `resources` (PersonResource): les personnes ressources, ajoutées depuis le dossier de l'usager.
* `address` ([Adresse](#sec:entity-address)): l'adresse actuelle
* `resources` ([PersonResource](#sec:entity-personresource)): les personnes ressources, ajoutées depuis le dossier de l'usager.
**Note**: La clé `gender` est dépréciée. Merci d'utiliser `GenderEntity`.
#### variant `household`
* `household` (Household): le ménage actuel de l'usager;
* `household` ([Household](#sec:entity-household)): le ménage actuel de l'usager;
#### variant `relations`
* `relations` (liste de Relationship): les relations (filiations) de l'usager;
* `relations` (liste de [Relationship](#sec:entity-relationship)): les relations (filiations) de l'usager;
#### variant `budget`
@@ -586,7 +599,7 @@ Pour chaque ligne de budget, la somme de toutes les lignes de budget du même ty
On verra donc apparaitre non seulement les frais payés par chaque usager (pour leur abonnement individuel au téléphone mobile, par exemple), mais également la somme payée par le ménage (pour le téléphone fixe ou l'accès à internet).
Enfin, seules les lignes _actives_ **au moment de la génération du document** sont prises en compte. Ainsi, par exemple, si un CDI a expiré la veille de la génération, son montant ne sera pas pris en compte.
Enfin, seules les lignes -actives- **au moment de la génération du document** sont prises en compte. Ainsi, par exemple, si un CDI a expiré la veille de la génération, son montant ne sera pas pris en compte.
Le calcul du caractère actif d'une ligne est effectué comme suit:
@@ -602,7 +615,7 @@ Les attributs suivants sont disponibles, pour chaque objet `Person` qui a un var
* `budget.household.resources.<clé du type de ligne de budget>` (Ligne de budget): une ligne de budget pour la ressource dont la clé est indiquée par `<clé du type de ligne de budget>`. La liste des clés est à obtenir auprès de l'administrateur technique. Les lignes de budget de tous les usagers actuels du ménages sont globalisées, ainsi que les lignes de budget associées directement au dossier ménage;
* `budget.household.charges.<clé du type de ligne de budget>` (Ligne de budget): une ligne de budget pour la charge dont la clé est indiquée par `<clé du type de ligne de budget>`. La liste des clés est à obtenir auprès de l'administrateur technique. Les lignes de budget de tous les usagers actuels du ménages sont globalisées, ainsi que les lignes de budget associées directement au dossier ménage;
### PersonResource (Ressources associée à l'usager)
### PersonResource (Ressources associée à l'usager) { #sec:entity-personresource }
Pour rappel, les ressources peuvent être:
@@ -614,71 +627,72 @@ Pour rappel, les ressources peuvent être:
* `comment` (Comment)
* `freeText` (texte): commentaire, quand la personne ressources un texte libre
* `id` (int)
* `kind` (PersonResourceKind): le type de personne ressources (voisin, etc.)
* `thirdParty` (ThirdParty): le tiers, quand la ressources est liée à un tiers
* `person` (Person): l'usager, quand la ressources liée à un autre usager
* `kind` ([PersonResourceKind](#sec:entity-personresourcekind)): le type de personne ressources (voisin, etc.)
* `thirdParty` ([ThirdParty](#sec:entity-thirdparty)): le tiers, quand la ressources est liée à un tiers
* `person` ([Person](#sec:entity-person)): l'usager, quand la ressources liée à un autre usager
* `resourceKind` (texte): un discriminateur qui permet de vérifier si la ressources est lié à un usager (alors égal à `person`, un tiers (`thirdparty`) ou un texte libre (`freetext`). A utiliser dans les conditions dans les documents.
### PersonResourceKind (Type de personne ressource)
### PersonResourceKind (Type de personne ressource) { #sec:entity-personresourcekind }
* `id` (int)
* `title` (texte)
### Postcode (Code Postal)
### Postcode (Code Postal) { #sec:entity-postcode }
* `id` (int): identifiant
* `name` (texte): localité
* `code` (texte): code postal
### Relationship (relations (filiations) entre usagers)
### Relationship (relations (filiations) entre usagers) { #sec:entity-relationship }
Pour faciliter l'usager, les relations sont toujours représentée à partir d'un usager d'origine.
Les variables présentent le nom de la relation (`text`), et la personne avec qui la relation est formée (`opposite`).
* `id` (int): identifant;
* `fromPerson` (Person): personne d'origine;
* `toPerson` (Person): personne de destination;
* `fromPerson` ([Person](#sec:entity-person)): personne d'origine;
* `toPerson` ([Person](#sec:entity-person)): personne de destination;
* `text` (texte): le titre ou le titre inversé de la `Relation`, selon l'usager d'origine;
* `opposite` (Person): l'usager avec qui la relation est formée;
* `opposite` ([Person](#sec:entity-person)): l'usager avec qui la relation est formée;
* `relationId` (int): identifiant du lien de filiation;
**Note**: la différence entre `fromPerson` et `toPerson` est arbitraire.
### Result (résultat d'une action)
### Result (résultat d'une action) { #sec:entity-result }
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### Scope (service) { #sec:entity-scope }
### SocialAction (type d'action d'accompagnement)
### SocialAction (type d'action d'accompagnement) { #sec:entity-socialaction }
* `id` (texte): identifiant
* `text` (texte): texte, avec les parents inclus, séparés par un ` > `;
* `title`: titre du type d'action, sans les parents;
### Social Issue (problématique sociale)
### SocialIssue (problématique sociale) {#sec:entity-socialissue}
* `name`: le nom de la problématique seule
* `text`: le nom de la problématique et des problématiques parentes
### ThirdParty (Tiers)
### ThirdParty (Tiers) { #sec:entity-thirdparty }
* `id` (int): identifiant du tiers;
* `acronym` (text): acronyme;
* `address` (Adress): adresse du tiers
* `categories` (liste de ThirdPartyCategory): liste des catégories;
* `civility` (Civility): civilité
* `address` ([Adress](#sec:entity-address)): adresse du tiers
* `categories` (liste de [ThirdPartyCategory](#sec:entity-thirdpartycategory)): liste des catégories;
* `civility` ([Civility](#sec:entity-civility)): civilité
* `contactDataAnonymous` (bool): `true` si le tiers est anonyme;
* `email` (texte): email;
* `name` (texte): nom du tiers;
* `firstname` (texte): Prénom du tiers;
* `parent` (ThirdParty): tiers parent (pour les contacts)
* `parent` ([ThirdParty](#sec:entity-thirdparty)): tiers parent (pour les contacts)
* `profession` (ThirdPartyProfession)
* `telephone` (texte): numéro de téléphone du tiers
* `kind` (texte): permet de distinguer les personnes morales, les contacts et les personnes physiques (voir ci-après)
* `child` (bool) vaut TRUE s'il existe un parent (contact), false sinon;
* `parent` (ThirdParty): s'il s'agit d'un contact d'une personne morale, contient la fiche d'une personne morale
* `parent` ([ThirdParty](#sec:entity-thirdparty)): s'il s'agit d'un contact d'une personne morale, contient la fiche d'une personne morale
`kind` vaut:
@@ -687,19 +701,19 @@ Les variables présentent le nom de la relation (`text`), et la personne avec qu
* `child` lorsuq'il s'agit d'un contact d'une personne morale
* `contact` lorsqu'il s'agit d'une personne **physique** (à ne pas confondre avec un contact d'une personne morale)
### ThirdPartyCategory (catégorie de tiers)
### ThirdPartyCategory (catégorie de tiers) { #sec:entity-thirdpartycategory }
* `id` (int): identifiant
* `name` (texte)
### ThirdPartyProfession (profession du tiers)
### ThirdPartyProfession (profession du tiers) { #sec:entity-thirdpartyprofession }
* `id` (int): identifiant
* `name` (texte)
### User (Utilisateur) { #sec:gendoc-var-user }
### User (Utilisateur) { #sec:entity-user }
* `id` (int): identifant
* `type` (texte): vaut toujours `user`
@@ -707,13 +721,13 @@ Les variables présentent le nom de la relation (`text`), et la personne avec qu
* `email` (texte): l'email de l'utilisateur
* `text` (texte): le libellé complet de l'utilisateur (avec son métier et son service entre parenthèse);
* `label` (texte): le libellé de l'utilisateur, tel qu'il est enregistré par l'administrateur fonctionnel
* `main_scope` (Scope): service principal
* `user_job` (UserJob): métier principal
* `current_location` (Location): lieu de l'utilisateur, celui actuellement choisi par l'utilisateur par le menu "utilisateur";
* `main_location` (Location): localisation de l'utilisateur définie par l'administrateur fonctionnel (parfois appelé "résidence administrative"). L'utilisateur ne peut pas la modifier lui-même;
* `civility` (Civility): la civilité de l'utilisateur;
* `main-scope` ([Scope](#sec:entity-scope)): service principal
* `user-job` ([UserJob](#sec:entity-userjob)): métier principal
* `current-location` ([Location](#sec:entity-location)): lieu de l'utilisateur, celui actuellement choisi par l'utilisateur par le menu "utilisateur";
* `main-location` ([Location](#sec:entity-location)): localisation de l'utilisateur définie par l'administrateur fonctionnel (parfois appelé "résidence administrative"). L'utilisateur ne peut pas la modifier lui-même;
* `civility` ([Civility](#sec:entity-civility)): la civilité de l'utilisateur;
### UserJob (Métier)
### UserJob (Métier) { #sec:entity-userjob }
* `id` (int): identifiant
* `label` (texte): nom du métier

View File

@@ -0,0 +1,3 @@
# Gestion des droits des utilisateurs
TODO

3
admin/docs/index.md Normal file
View File

@@ -0,0 +1,3 @@
# Documentation administrateur
En construction.

48
admin/mkdocs.yml Normal file
View File

@@ -0,0 +1,48 @@
---
site_name: "Manuel administrateur Chill"
site_url: https://manuel.chill.social/admin
repo_url: https://gitea.champs-libres.be/Chill-project/manuals
repo_name: Chill-project/manuals
theme:
name: material
features:
- content.code.copy
- content.code.select
- content.code.annotate
nav:
- Accueil: index.md
- Élements à configurer: configuration-chill-big-picture.md
- Génération de document: generation-documents.md
- Gestion des droits: gestion-des-droits.md
hooks:
- ../mkdocs/hooks/pandoc-to-mkdocs.py
markdown_extensions:
- tables
- markdown_include.include
# code layout
- pymdownx.highlight:
anchor_linenums: true
line_spans: __span
pygments_lang_class: true
use_pygments: true
linenums: true
- pymdownx.inlinehilite
- pymdownx.snippets
- pymdownx.superfences
# admonition
- admonition
- pymdownx.details
- pymdownx.superfences
# use emojis
- attr_list
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
# footnotes
- footnotes
# https://squidfunk.github.io/mkdocs-material/reference/formatting/?h=key#adding-keyboard-keys
- pymdownx.critic
- pymdownx.caret
- pymdownx.keys
- pymdownx.mark
- pymdownx.tilde

View File

@@ -4,7 +4,8 @@ set -e
# enter the current directory
cd "$(dirname $0)"
export PANDOC_DIR="/pandoc/cl"
export PANDOC_DIR="$(pwd)/pandoc/cl"
export OUTPUT_DIR="$(pwd)"
if [ -z $1 ]; then
@@ -51,31 +52,31 @@ if [ $kind = 'user' ]; then
# exports_household.md
elif [ $kind = 'admin' ]; then
export files="
start.md
configuration-chill-big-picture.md
generation-documents.md
"
# start.md
else
echo "kind '$kind' is not valid";
exit 1;
fi
cd $kind
export PDF_TEMPLATE="$(pwd)/eisvogel.latex"
cd $kind/docs
export ARGS="
--from markdown
--number-sections
--resource-path ./.
--metadata-file ./metadata.yaml
`#--lua-filter "../${PANDOC_DIR}/format-link.lua`
"
export PDF_TEMPLATE="./../pandoc/template/eisvogel.tex"
export LATEX_ARGS="
--metadata=footer-left:$(date +%d-%m-%Y)
--template "${PDF_TEMPLATE}"
--lua-filter "../${PANDOC_DIR}/boxes.lua"
--template ${PDF_TEMPLATE}
--lua-filter "${PANDOC_DIR}/boxes.lua"
"
if [ $target = "latex" ]; then
pandoc $ARGS $LATEX_ARGS \
--to latex \
@@ -84,18 +85,7 @@ elif [ $target = "pdf" ]; then
pandoc $ARGS $LATEX_ARGS \
--to pdf \
--pdf-engine xelatex \
-o "./../$kind-manual.pdf" \
-o "${OUTPUT_DIR}/$kind-manual.pdf" \
$files
elif [ $target = "html" ]; then
# check target directory exists
if [ ! -d "./../build/html" ]; then
echo "create build/html directory"
mkdir -p "./../build/html"
fi
pandoc $ARGS \
--to html \
-o ./../build/html/index.html \
$files
fi

1037
eisvogel.latex Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
import subprocess
import os
def on_page_markdown(markdown: str, page, config, files) -> str | None:
# Récupère le dossier où se trouve mkdocs.yaml
base_dir = os.path.dirname(config.config_file_path)
# Construit le chemin absolu du filtre lua relatif à mkdocs.yaml
lua_filter_path = os.path.normpath(os.path.join(base_dir, '../pandoc/filters/admonitionTransformer.lua'))
# Prépare la commande avec le chemin correct pour le filtre
cmd = [
"pandoc",
f"--lua-filter={lua_filter_path}",
"--to", "markdown"
]
try:
# Appelle le script bash/commande via subprocess, en passant le markdown via stdin
result = subprocess.run(
cmd,
input=markdown.encode('utf-8'),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True
)
# Retourne la sortie standard (stdout) décodée
return result.stdout.decode('utf-8')
except subprocess.CalledProcessError as e:
print("Erreur lors de l'exécution du script bash :", e.stderr.decode('utf-8'))
return None

View File

@@ -0,0 +1,27 @@
-- admonition.lua
-- Filtre Pandoc : transforme les divs en admonitions type "!!! note"
function Div(div)
if div.classes ~= nil and #div.classes > 0 then
local class = div.classes[1]
-- Génère le préfixe admonition
local admonition_header = pandoc.Plain{pandoc.Str("!!! " .. class)}
local contents = {}
-- Pour chaque bloc de contenu, ajoute une indentation de 4 espaces à chaque ligne
for _, blk in ipairs(div.content) do
local s = pandoc.write(pandoc.Pandoc({blk}), "markdown")
-- Ajoute une indentation de 4 espaces sur chaque ligne non vide
s = s:gsub("([^\n]+)", " %1")
table.insert(contents, pandoc.RawBlock("markdown", s))
end
-- Construit la nouvelle sequence de blocs : en-tête + contenus
local blocks = {admonition_header}
for _, blk in ipairs(contents) do
table.insert(blocks, blk)
end
return blocks
end
end

View File

@@ -0,0 +1,11 @@
::: { .note }
Ceci est une note
:::
::: { .warning }
Ceci est un warning
:::

3
requirements.txt Normal file
View File

@@ -0,0 +1,3 @@
mkdocs
markdown-include
mkdocs-material

2
user/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
site/*

2
user/docs/evenements.md Normal file
View File

@@ -0,0 +1,2 @@
en construction

View File

@@ -4,6 +4,18 @@
# Exports
Chill permet d'exporter un grand nombre de données sous différentes formes (listes ou tableaux), en fonction de différents univers (export des parcours, export des accompagnements, etc) et utilisant différents filtres ou regroupements (agrégateurs).
Il est donc très important d'identifier au préalable le type de statistiques que l'on souhaite exporter.
- Choix nr 1: dans quel univers? dans l'onglet 'liste des exports", les exports sont regroupés par bloc: export des actions d'accompagnement, export des parcours, export des échanges, etc. Il est important de choisir celui qui correspond.
- Choix nr 2: quel type d'export? une liste ou un tableau? Chaque export a un titre et une note explicative qu'il est important de lire pour faire le bon choix.
- Choix nr 3: quels filtres et quels agrégateurs? Les filtres réduisent les résultats tandis que les agrégateurs les regroupent.
## Fonctionnement général et concepts
### Listes ou tableaux
Chill permet d'exporter les données sous différentes formes:
- des listes;
@@ -13,7 +25,6 @@ Les listes peuvent être filtrées selon différents paramètres: âge de l'usag
Les tableaux reprennent un indicateur (par exemple: nombre de parcours, nombre d'usager, durée moyenne des échanges), dont les données servant de base au calcul de cet indicateur peut également être filtré, mais aussi regroupé selon différents paramètres (exemple: statut du parcours, type d'échange, etc.). Ces exports ressemblent donc aux "tableaux croisés dynamiques" disponibles dans les logiciels de tableur.
## Fonctionnement général et concepts
### Export d'indicateurs
@@ -25,7 +36,7 @@ Les exports fonctionnent comme des tableaux croisés:
- des filtres permettent de ne retenir qu'une partie des données.
Exemple de filtre: uniquement les parcours urgent, les usagers de plus de 18 ans, etc.
Exemple de filtre: uniquement les parcours urgents, les usagers de plus de 18 ans, etc.
- des regroupements créent des "classes statistiques" et permettent d'aggréger les données dans ces classes.
@@ -41,17 +52,28 @@ Les filtres des exports d'indicateurs sont disponibles pour les listes: il est d
[^grouping-non-sense]: Les regroupements ne sont pas, eux disponibles: ils n'ont pas de sens dans ce contexte.
### Sauvegarde des exports configurés
### Sauvegarde des exports enregistrés
Lorsqu'un export est configuré, il peut être sauvegardé par l'utilisateur. Ce dernier lui indique donc un titre et une description. L'export peut alors être re-joué plusieurs fois à partir des exports sauvegardés.
Lorsqu'un export est configuré, il peut être sauvegardé par l'utilisateur. Ce dernier lui indique donc un titre et une description. L'export peut alors être re-joué plusieurs fois à partir de l'onglet "Exports enregistrés".
![Sélecteur qui permet d'accéder à la liste des exports enregistrés](img/export_select_saved_exports.png)
Les exports enregistrés peuvent être modifiés et sauvegardés sous un autre nom.
### Modification des exports enregistrés
Les exports enregistrés peuvent être modifiés. Il existe 2 modifications possibles:
- soit la modification du titre et de la description uniquement
- soit la modification des filtres et des regroupements
Pour modifier le titre et la description, cliquez sur "Actions", ensuite "Modifier le titre et la description"
Pour modifier les filtres et les regroupements, cliquez sur "Actions" ensuite sur "Modifier les filtres et les regroupements". Attention que dans ce cas, la description ne se met pas automatiquement à jour avec les nouveaux filtres/regroupements. Il faudra mettre la description à jour vous-même.
### Partage des exports enregistrés
Il est également possible de partager un export enregistré avec un autre utilisateur. Pour ce faire, il suffit à partir de l'onglet "Exports enregistrés" de cliquer sur "Action", ensuite sur "Modifier le titre et la description", puis sur le symbole "+Partage". L'export partagé sera reconnaissable à un petit label jaune "Partagé" en-dessous de son nom.
### Filtres
Les filtres permettent donc de filtrer les données avant l'export.
Les filtres permettent donc de filtrer les données avant l'export. Ils réduisent le nombre de résultats obtenus.
Ils peuvent être additionnés les uns aux autres: activer deux filtres lors d'un export filtrera les données pour ne retenir que les données qui correspondent aux deux filtres combinés.
@@ -59,7 +81,7 @@ Certains filtres demandent des paramètres pour être complétés.
### Regroupements
Les regroupements permettent de créer des classes statistiques pour regrouper les indicateurs.
Les regroupements permettent de créer des classes statistiques pour regrouper les indicateurs. Ils aggrégent les données par colonne.
Typiquement, chaque regroupement va ajouter une colonne dans le résultat, indiquant la nature de la donnée regroupée. Par exemple, le genre des usagers comptabilisés, le nom du référent du parcours, etc.
@@ -76,7 +98,7 @@ Dans ce cas, l'indicateur est comptabilisé plusieurs fois: une fois en regard d
Prenons pour exemple les parcours et les problématiques sociales:
- le parcours n°1 comporte les problématiques "Logement", "Santé" et "Emploi";
- le parcours n°2 comporte les problématiues "Logement" et "Santé".
- le parcours n°2 comporte les problématiques "Logement" et "Santé".
Le résultat sera le suivant:
@@ -109,6 +131,8 @@ Cet indicateur est converti **au moment de la génération de l'export**. Ainsi,
Il n'y a pas de mention de "fin" d'une période ("fin du mois courant", "fin du mois précédent", etc.), car la fin d'une période est le début de la période suivante.
CONSEIL: pour tous les rapports qui doivent inclure l'année entière, nous conseillons d'utiliser les filtres "début de l'année courante" et "début de l'année suivante". Ceci vous permettra d'avoir les données d'une année complète quelle que ce soit la date de l'année à laquelle vous faites tourner le rapport.
### Couches et zones géographiques
@@ -133,6 +157,12 @@ L'association entre les zones géographiques et les adresses est une opération
En conséquence, l'association entre la zone géographique et les adresses du jour ne sera pas disponible.
:::
### Notion d'ouverture d'un parcours
Pour filtrer les résultats sur les parcours "ouverts" uniquement, il est important de connaître les différents statuts d'un parcours pour faire le choix opportun:
- file active: un parcours en file active est un parcours qui a été complété et est donc confirmé
- hors file active: un parcours hors file active est un parcours ouvert mais qui n'a plus reçu d'intervention depuis 6 mois
- pré archivé: un parcours pré archivé est un parcours ouvert mais n'ayant plus reçu aucune intervention depuis 2 ans
## Liste des filtres et regroupements

View File

@@ -209,8 +209,11 @@ Ce filtre permet d'indiquer deux dates qui forment une période de recherche, ai
Filtre les parcours qui avaient un des statuts sélectionné pendant la période de recherche.
Note: comme un parcours peut avoir différents statuts au cours du temps, le présent filtre tiendra compte des parcours qui ont eu ce statut au moins un jour dans la période indiquée, même si ce statut a été changé pendant la période.
Pour les différentes statuts, voir la section correspondante: [statuts du parcours](#sec:parcours-statut).
#### Filtrer les parcours par type d'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/ActivityTypeFilter.php -->
@@ -350,7 +353,7 @@ Groupe les parcours par localisation administrative.
Groupe les parcours par motifs de clôture.
Lorsqu'un parcours ne comporte pas de motif de clôture (parce qu'il est toujours ouvert), le regroupement est repris sous une ligne sans contenu.
Lorsqu'un parcours ne comporte pas de motif de clôture (parce qu'il est toujours ouvert, ou qu'il a été ré-ouvert après une clôture), le regroupement est repris sous une ligne sans contenu.
#### Grouper les parcours par métier de l'intervenant

View File

@@ -76,6 +76,14 @@ Le filtre prend en compte tous les utilisateurs ajoutés dans les "parties conce
L'échange est pris en compte dès qu'un utilisateur dans les "parties concernées" est associé à l'un des métiers demandés.
#### Filtrer les échanges par métier du créateur de l'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/CreatorJobFilter.php -->
Filtre les échanges par métier du créateur de l'échange.
Le métier doit être associé à l'utilisateur à la date de l'échange.
#### Filtrer les échanges par problématique liée
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialIssueFilter.php-->
@@ -207,6 +215,14 @@ Le métier pris en compte est celui associé à l'utilisateur à la date de l'é
**Relation un-à-plusieurs**: lorsque plusieurs utilisateurs participent à l'échange, l'échange est comptabilisé une seule fois par métier de chaque utilisateur. Si plusieurs utilisateurs participant comportent le même métier, l'échange n'est donc comptabilisé qu'une seule fois.
#### Grouper les échanges par métier du créateur de l'échange
Groupe les échanges par métier du créateur de l'échange.
Le métier pris en compte est celui associé à l'utilisateur à la date de l'échange.
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/CreatorScopeAggregator.php -->
#### Grouper les échanges par problématique liée
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialIssueAggregator.php-->

Some files were not shown because too many files have changed in this diff Show More