Compare commits

...

58 Commits

Author SHA1 Message Date
Julien Fastré ad64d60721
précisions sur statut du parcours
continuous-integration/drone/push Build is passing Details
2023-11-10 14:21:52 +01:00
Julien Fastré d71934b6d8
carte des entités et des relations un-à-plusieurs
continuous-integration/drone/push Build is passing Details
2023-11-07 21:47:23 +01:00
Julien Fastré 73d5e35809
nouveaux filtres dans les échanges 2023-11-07 21:47:19 +01:00
Julien Fastré 15cf0c045a Merge pull request 'add a page for export and explanations about filters and aggregators' (#6) from documentation-export-base into main
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details
Reviewed-on: #6
2023-10-24 13:15:22 +00:00
Julien Fastré 147f1c29f4 Merge pull request 'improve doc for variable thirdParty in Doc gen' (#7) from docgen-add-third-party into main
continuous-integration/drone/push Build is passing Details
Reviewed-on: #7
2023-10-24 13:14:59 +00:00
Julien Fastré 7e9bb952b8
concepts for exports
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-10-24 15:14:24 +02:00
Julien Fastré 5af59d6c69
add a new "accompanyingPeriodInfo"
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-10-24 13:15:13 +02:00
Julien Fastré 1165b5edbd
aggregators for person, accompanying period and activity 2023-10-24 13:14:36 +02:00
Julien Fastré 3128fa299d
add the exports files to build script
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-10-23 23:05:22 +02:00
Julien Fastré 6cbf663de8
Merge remote-tracking branch 'origin/documentation-export-base' into documentation-export-base 2023-10-23 23:04:24 +02:00
Julien Fastré 185e93afd8 more docs on exports
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-10-23 21:03:41 +00:00
Julien Fastré fad78b1c19 new exports 2023-10-23 21:03:41 +00:00
Julien Fastré 9b14326edc Doc filtre groupement par localisation de l'échange 2023-10-23 21:03:41 +00:00
Julien Fastré 3a3aedaec1 add new filters and grouping and precise about intervention / intervenants 2023-10-23 21:03:41 +00:00
Julien Fastré 589742894c add filter 2023-10-23 21:03:41 +00:00
Julien Fastré 81cc08aaf7 rename the label of some filters 2023-10-23 21:03:41 +00:00
Julien Fastré 5fab83927e add a page for export and explanations about some filters 2023-10-23 21:03:41 +00:00
Julien Fastré 24ef4f919a
more docs on exports
continuous-integration/drone/push Build was killed Details
continuous-integration/drone/pr Build was killed Details
2023-10-23 14:29:39 +02:00
Julien Fastré 180daf4e9d
new exports
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-10-20 14:10:41 +02:00
Julien Fastré 1756474c64 improve doc for variable thirdParty in Doc gen
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
Signed-off-by: Julien Fastré <julienfastre@noreply.localhost>
2023-10-19 16:01:32 +00:00
Julien Fastré d3f68d6258
Doc filtre groupement par localisation de l'échange
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-07-11 15:14:39 +02:00
Julien Fastré 09d11a0d3a
force to display figure before title 2023-07-11 15:14:39 +02:00
Julien Fastré 082f67710e
make numbering starts to 1 2023-07-11 15:14:39 +02:00
Julien Fastré 7efd5873da
fix numbering 2023-07-11 15:14:39 +02:00
Julien Fastré 05deae0684
add new filters and grouping and precise about intervention / intervenants
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-06-30 15:08:54 +02:00
Julien Fastré b7d5734caa
add filter
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-06-27 15:56:05 +02:00
Julien Fastré 369cf0c714
rename the label of some filters 2023-06-27 15:54:01 +02:00
Julien Fastré 3b7619486f
force to display figure before title
continuous-integration/drone/push Build is passing Details
2023-06-27 14:01:47 +02:00
Julien Fastré 78bc7128f9
make numbering starts to 1 2023-06-27 14:01:31 +02:00
Julien Fastré 99e8bc2c7f
fix numbering 2023-06-27 13:52:40 +02:00
Julien Fastré b7f7b68d72
add a page for export and explanations about some filters
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-06-27 13:04:16 +02:00
Julien Fastré e8aeab1ac7
more templates in admin / generation document
continuous-integration/drone/push Build is passing Details
2023-06-27 13:03:58 +02:00
Robin Hublart 558461b3fb Transférer les fichiers vers 'admin/generation-documents-templates'
continuous-integration/drone/push Build is passing Details
2023-06-15 10:51:07 +00:00
Robin Hublart e037b4fff8 Transférer les fichiers vers 'admin/generation-documents-templates'
continuous-integration/drone/push Build is passing Details
2023-06-15 10:50:36 +00:00
Robin Hublart 7e8b8bd2d4 Transférer les fichiers vers 'admin/generation-documents-templates'
continuous-integration/drone/push Build is passing Details
2023-06-15 10:15:37 +00:00
Robin Hublart 0e2b5b3201 Transférer les fichiers vers 'admin/generation-documents-templates'
continuous-integration/drone/push Build is passing Details
2023-06-14 09:39:24 +00:00
Julien Fastré d4bb0bf552 Merge pull request 'Ajout des notifications sur les actions et les documents dans les évaluations + Household composition dans la génération de documents' (#4) from nouveautes-notifications into main
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details
Reviewed-on: #4
2023-05-22 07:39:27 +00:00
Julien Fastré fcf088443b Merge branch 'main' into nouveautes-notifications
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-05-22 07:34:50 +00:00
Julien Fastré 02cf7861f3
Documentation for HouseholdComposition in doc generation
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-17 16:08:33 +02:00
Julien Fastré b43db4a066
notifications dans les actions et évaluations
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-04-28 10:21:19 +02:00
Julien Fastré 44a37b9837
plus d'explication sur les parcours 2023-04-28 10:13:58 +02:00
Julien Fastré 996373775c
page nouveautes dans le manuels 2023-04-28 10:13:34 +02:00
Julien Fastré 361cca96a8 Merge pull request 'Parallelization of drone builds, where possible' (#3) from drone/parallelization into main
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build was killed Details
Reviewed-on: #3
2023-04-27 21:06:51 +00:00
Julien Fastré 34af210f7f
parallelization
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2023-04-27 23:04:53 +02:00
Julien Fastré 476b0b31c1
fix generation
continuous-integration/drone/push Build is passing Details
2023-04-27 23:00:39 +02:00
Julien Fastré b9a0949236
Explications changement de statut du parcours
continuous-integration/drone/push Build is failing Details
continuous-integration/drone/tag Build is failing Details
2023-04-27 22:57:20 +02:00
Julien Fastré 44deae9cee
Explanation for address not synchronized 2023-04-27 22:46:47 +02:00
Julien Fastré 47654378b4
ajout mention des exemples de modèle de documents
continuous-integration/drone/tag Build is running Details
continuous-integration/drone/push Build is passing Details
2023-03-06 11:43:54 +01:00
Julien Fastré 2178f99eee
Ajout gabarits de documents
continuous-integration/drone/push Build is passing Details
2023-03-06 11:42:02 +01:00
Julien Fastré 0e11e35caa
Fixed: [docgen] capture d'écran dans la génératio nde document
continuous-integration/drone/push Build is running Details
continuous-integration/drone/tag Build is running Details
2023-02-10 00:20:57 +01:00
Julien Fastré 9a90bb24dd
Fix: [docgen] correct image for insert renvoi
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is running Details
2023-02-10 00:12:38 +01:00
Julien Fastré 81610bcf52
admin/docgen: ré-ordonne les objets par ordre alphabétique + uniquement les objets pour toutes les instances
continuous-integration/drone/push Build is passing Details
2023-02-10 00:06:43 +01:00
Julien Fastré ca7a42af0b
docgen: mise à jour des principes et utilisation dans Libre office
continuous-integration/drone/push Build is passing Details
2023-02-09 23:49:37 +01:00
Julien Fastré c08df4ec8c replace variable name
continuous-integration/drone/tag Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-19 21:44:47 +02:00
Julien Fastré 6120aee787 add missing doc for ThirdPartyProfession and ThirdPartyCategory and fixes delegation and tuteur 2022-10-19 21:44:47 +02:00
Julien Fastré 6d5a56c9b2 Documentation pour la date `createdAtDate` 2022-10-19 21:44:47 +02:00
Julien Fastré 3716e0e060 Document generation: add context "person with 3party" and fixes some
missing values in ThirdParty, Address
2022-10-19 21:44:47 +02:00
nobohan 019356f8c6 add field 'comment' in accompanyingperiodresource following issue 612
continuous-integration/drone/push Build is passing Details
2022-07-18 15:32:14 +02:00
37 changed files with 1883 additions and 478 deletions

View File

@ -18,12 +18,16 @@ steps:
commands:
- git lfs fetch
- git lfs checkout
depends_on:
- clone
- name: pandoc
image: pandoc/core:2.18-alpine
commands:
- sh build-pandoc.sh latex user > user/user-manual.tex
- sh build-pandoc.sh latex admin > admin/admin-manual.tex
depends_on:
- fetch images
- name: build-latex-user
image: texlive/texlive
@ -31,6 +35,8 @@ steps:
- cd user
- latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode -xelatex user-manual.tex
- mv user-manual.pdf ../Manuel\ utilisateur.pdf
depends_on:
- pandoc
- name: build-latex-admin
image: texlive/texlive
@ -38,6 +44,8 @@ steps:
- cd admin
- latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode -xelatex admin-manual.tex
- mv admin-manual.pdf ../Manuel\ administrateur.pdf
depends_on:
- pandoc
- name: release
image: plugins/gitea-release
@ -49,11 +57,14 @@ steps:
- "Manuel administrateur.pdf"
- "Manuel utilisateur.pdf"
title: ${DRONE_TAG:=latest}
depends_on:
- build-latex-user
- build-latex-admin
when:
event:
- tag
---
kind: signature
hmac: dc200b08e09b83e734ff829ac62c7daf5f80986f725edac1b974b07793adb4b0
hmac: a83892d8f9bb967bd2a6335e2b34008e05f9bec482f270237c6764918434f97c
...

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
admin/generation-documents-templates/template parcours.odt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
admin/generation-documents-templates/template personne.odt (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

View File

@ -11,7 +11,20 @@ Seuls les documents suivants peuvent être utilisés:
* .ods
* .odp
## Rappel du parcours des utilisateurs
Des exemples sont disponibles [en ligne](https://gitea.champs-libres.be/Chill-project/manuals/src/branch/main/admin/generation-documents-templates).
## Rappel de "l'expérience utilisateur": comment les utilisateurs génèrent un document ?
Les utilisateurs peuvent générer un document depuis plusieurs contextes du logiciel:
- les documents du dossier d'usager;
- les documents du parcours;
- les documents dans les évaluations;
- les activités / échanges;
- les rendez-vous.
Chaque contexte peut être dédiée à un usage précis. Par exemple, l'utilisateur peut générer une invitation à un rendez-vous depuis la page "rendez-vous". Depuis les évaluations, un formulaire officiel pourrait être pré-rempli. Et un document récapitulatif du parcours peut être généré dans ses documents.
Lors de la génération de document, les utilisateurs parcourrent trois étapes, dont l'un est optionnelle:
@ -21,7 +34,7 @@ Lors de la génération de document, les utilisateurs parcourrent trois étapes,
Ce formulaire est soit:
* natif au nœud. Dans ce cas, il apparait systématiquement ou dans certaines conditions;
* natif au contexte. Dans ce cas, il apparait systématiquement ou dans certaines conditions;
* configuré par l'admnistrateur fonctionnel parmi des options disponibles;
2. le document est effectivement généré en arrière-plan. Cela peut nécessiter éventuellement quelques secondes;
@ -29,11 +42,21 @@ Lors de la génération de document, les utilisateurs parcourrent trois étapes,
Notez que, pour que la redirection soit effective, l'utilisateur doit fermer **dans l'interface de l'éditeur**: fermer la fenêtre ou l'onglet fait perdre les informations de redirection - cependant, le document est normalement enregistré.
## Syntaxe de génération d'un document
## Préparation des documents
Les documents sont préparés par l'administrateur fonctionnel.
Les documents sont préparés par l'administrateur fonctionnel. Il s'agit d'un document "traitement de texte" (ou tableur, ou présentation).
## Indiquer un champ dans un document
Le document est préparé de manière habituelle: le texte y est écrit, le logo de l'association inséré, etc. Ensuite, l'administrateur définit certaines zones qui seront remplacées par des informations qui sont collectées dans le logiciel.
Le travail de préparation consiste à préciser les endroits où ces informations doivent être insérées: des champs spécifiques.
::: .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.
:::
## Indiquer un champ dans un document en utilisant Libre Office
Aux endroits où cela est nécessaire, l'administrateur indique un "champ substituant".
@ -41,58 +64,90 @@ Cela est accessible via le menu "Insertion > Renvoi...", puis choisir l'onglet "
La valeur à indiquer dans le champ "substituant" est à déduire des informations ci-dessous.
## Principes liés au variables
![Menu Insertion > Renvoi dans LibreOffice](./img/generation-document/libre-office-insert-renvoi.png)
### Nommage de variables
TODO
#### Exemple: application aux objets "date"
Les dates sont disponibles dans deux formats:
* le format "court", ou dd/mm/yyyy (par exemple, 15/06/1980, 18/08/2021, …). Ce format est accessible par le champ `short`;
* le format "long": 15 juin 1980, 18 août 2021, … Ce format est accessible par le champ `long`;
lorsqu'une date est disponible, il est donc possible d'avoir accès à son format en précisant sa chaine de caractère. Exemple avec la date de naissance de la personne:
```
person.Birthdate.Short=15/06/1980
person.Birthdate.Long=15 juin 1980
```
![Insérer un substituant. Ici, le substituant est l'identifiant (numéro, `id`) du parcours: `v.course.id`](./img/generation-document/libre-office-fonction-substituant.png)
### Cas où une variable est optionnelle
## Nature (type) des variables
Lorsqu'une variable est optionnelle, si sa valeur est inconnue ou vide, alors tout ses champs apparaissent avec une chaine de caractère vide.
Pour chaque contexte où un document est généré, les variables disponibles sont listées [dans la section suivante](#sec:gendoc-champs-documents).
L'arbre des variables est toujours identique, sur toute la profondeur de celles-ci. L'administrateur est garanti qu'un champ existera, même si sa valeur n'est pas présente dans la base de donnée.
Chaque variable comporte un type: il peut s'agir de:
## Variables disponibles par document
- un nombre;
- un texte;
- un bouléen (`vrai` ou `faux`)
- un objet;
- ou une liste d'objets, de nombres, ou de textes.
Pour chaque contexte où un document est généré, les variables disponibles sont listées [dans la section suivante](#sec:gendoc-champs-documents). Le type des variables est indiqué.
Les variables et leur type sont décrites [dans la section suivante](#sec:gendoc-champs-objets). Le type est indiqué entre parenthèse:
Les variables pour chaque type sont décrites [dans la section suivante](#sec:gendoc-champs-objets):
* si le type commence par une majuscule, alors cette variable comporte des sous-champs, et il faut se reporter à la description des variables pour ce type;
* si le type commence par une majuscule, alors cette variable est un object. Il comporte des sous-champs, et il faut se reporter à la description de l'objet correspondant;
* si le type commence par une minuscule, alors cette variable peut être utilisée directement dans le document:
* s'il s'agit d'un booléen (`bool`), le champ peut être utilisé dans des tests;
* les champs `text` et `int` peuvent faire l'objet de test sur l'égalité;
* les champs de type `int` peuvent faire l'objet de comparaison sur l'ordre de grandeur (par exemple, le champs `age` des objets de type `Person` peut être filtré `> 18` ou `< 18` pour distinguer les adultes des enfants).
### Pour chaque document { #sec:gendoc:champs-documents }
### Cas où le contenu d'une variable est vide
#### Paramètres pour l'administrateur fonctionnel
Si une variable est vide, alors tout ses champs apparaissent avec une chaine de caractère vide.
Les administrateurs fonctionnels peuvent activer les paramètres suivants:
L'arbre des variables est toujours identique, sur toute la profondeur de celles-ci. L'administrateur est garanti qu'un champ existera, même si sa valeur n'est pas présente dans la base de donnée.
* un champ "lieu", qui permettra de choisir parmi les lieux pré-enregistrés. Le lieu pré-sélectionné sera celui choisi par l'utilisateur;
### Exemple: la date de naissance d'une personne
Dans le contexte "personne", les informations de la personne sont disponibles sous le champ `v.person`. Il s'agit d'un objet de type `Person` qui comporte une sous-variable appelée `birthdate`, qui est lui-même disponible dans un objet de type `Date`.
Les objets `Date` proposent deux sous-champs, qui correspondent au format de la date:
* le format "court", ou dd/mm/yyyy (par exemple, 15/06/1980, 18/08/2021, …). Ce format est accessible par le champ `short`;
* le format "long": 15 juin 1980, 18 août 2021, … Ce format est accessible par le champ `long`;
Donc, pour insérer la date de naissance, on utilisera les substituants suivants:
```
v.person.birthdate.short
v.person.birthdate.long
```
Ce qui donnera (pour une personne née le 15 décembre 1980):
```
15/12/1980
15 décembre 1980
```
Si, par contre, la date de naissance de la personne n'est pas renseignée, deux lignes vides s'afficheront dans le document:
```
```
## Paramètres pour l'administrateur fonctionnel
Pour chaque gabarit, l'administrateur peut activer certaines options. Par exemple:
* permettre de sélectionner une personne parmi les usagers du parcours;
* configurer le libellé qui s'affichera pour l'utilisateur devant l'usager.
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
### Pour tous les contextes { #sec:gendoc:champs-documents }
#### Variables
* `creator`: (User) le créateur;
* `createdAt` (Date): la date de création;
* `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.
### Document générés pour un parcours
@ -103,7 +158,8 @@ Les administrateurs fonctionnels peuvent activer les paramètres suivants:
* un champ "usager 1", qui permet ensuite à l'utilisateur de choisir un usager parmi ceux 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 "usager 2", qui permet aux utilisateurs de choisir un deuxième usager parmis ceux 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 "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 "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
@ -113,6 +169,7 @@ Le document présente:
* 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é.
### Document générés pour un parcours, contexte "liste des activités"
@ -132,6 +189,7 @@ Le document présente:
* 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é.
### Document générés pour un échange
@ -147,26 +205,35 @@ Il est possible également d'injecter des dossiers d'usagers, parmi ceux associ
* 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`;
### Documents générés dans le dossier d'une personne
### 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 `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é.
### Documents générés dans le dossier d'une personne: contexte "personne avec un tiers"
Ce contexte permet de générer un courrier avec, en paramètre, un tiers.
Cela peut être utile pour, par exemple, générer un courrier vers un tiers déjà enregistré dans la base de donnée de Chill.
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`;
### 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.
## Principes liés au variables
## Champs par objet { #sec:gendoc-champs-objets }
Les champs ci-dessous étendent les variables disponibles dans les documents.
Par exemple, le document généré à partir d'un parcours présente la variable `startDate` qui contient la date de début du parcours. Ce champ peut être exploité de la manière suivante:
```
${courseStartDateLong} // 15 janvier 2021
ou dans la forme courte:
${courseStartDateShort} // 15/01/2021
```
### AccompanyingPeriod
### AccompanyingPeriod (Parcours)
* `id` (texte): l'identifiant du parcours
* `type` (texte): toujours égal à `accompanying_course`
@ -212,20 +279,22 @@ ${courseStartDateShort} // 15/01/2021
* `comments` (liste de AccompanyingPeriodComment): liste des commentaires;
* `pinnedComment` (AccompanyingPeriodComment): commentaire épinglé;
### AccompanyingPeriodComment
### AccompanyingPeriodComment (Commentaire du parcours)
* `id` (int): identifiant
* `content` (texte): contenu du commentaire
* `createdAt` (Date): date de création
* `creator` (User): Créateur du commentaire
### AccompanyingPeriodOrigin
### AccompanyingPeriodOrigin (Origine du parcours)
* `id` (int): identifiant;
* `label` (texte): libellé de l'origine;
### AccompanyingPeriodParticipation
### AccompanyingPeriodParticipation (Participation à un parcours)
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;
@ -233,11 +302,50 @@ ${courseStartDateShort} // 15/01/2021
* `endDate` (Date): date de fin. Vide si la participation est toujours en cours;
### AccompanyingPeriodResource
### AccompanyingPeriodResource (Interlocuteur privilégiés dans un parcours)
* `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);
* `comment` (texte): commentaire associé à la personne ressource.
### AccompanyingPeriodWork (Action d'accompagnement)
* `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;
* `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;
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement)
* `id` (texte): l'identifiant de l'évaluation;
* `type` (texte): le libellé de l'évaluation;
* `startDate` (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;
* `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;
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement)
* `id` (texte): identifiant
* `goal` (Goal): objectif d'une action
* `results` (liste de Result): liste des résultats
### Activity (échange)
@ -271,32 +379,154 @@ 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
### ActivityType (Type d'activité)
Type d'activité.
* `id` (int): identifiant;
* `name` (texte): libellé
### ActivityPresence
### ActivityPresence (Présence à l'échange)
Présence à l'échange
* `id` (int): identifiant;
* `name` (texte): libellé
### ClosingMotive
### Address (Une 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;
* `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);
* `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):
```
for each="line in v.person.address.lines
line
/for
```
### Comment (Commentaire)
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;
#### Variant `light`
Dans le variant `light`,
* le champ `date` n'est pas présent;
* le champ `user` n'est pas présent.
Seul le champ `comment` est donc disponible.
### Civility (Civilité)
* `abbreviation` (texte): abbréviation;
* `id` (int): identifiant (utile pour des comparaisons);
* `name` (texte): titre, label de la civilité;
### ClosingMotive (Motif de cloture)
* `id` (int): identifiant;
* `name` (texte): libellé
### Date
### Country (Pays)
* `id` (int): identifiant
* `name` (texte): nom du pays
* `code` (texte): deux lettres du code ISO pays
### Date (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;
### Person
### Evaluation (type d'évaluation)
* `id` (texte): l'identifiant du type d'évaluation;
* `title` (texte): le titre du type d'évaluation;
### Goal (objectif d'une action)
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### Household (Ménage)
* `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;
* `waitingForBirth` (bool): `true` si une naissance est attendue;
* `waitingForBirthDate` (Date): date de la naissance attendue;
### 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)
* `numberOfChildren` (int): nombre d'enfants
* `householdCompositionType` (HouseholdCompositionType): Type de composition choisie, entre deux dates
### HouseholdCompositionType
* `id` (int): L'identifiant du type de composition
* `label` (texte): Le libellé de la composition
### HouseholdMember (Membre d'un ménage)
* `comment` (texte): texte du commentaire;
* `id` (int): identifiant de la participation au ménage;
* `endDate` (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;
### HouseholdPosition (Position du membre dans le ménage)
* `id` (int): identifiant de la position;
* `label` (texte): label de la position dans le ménage;
### Location (lieu)
* `id` (int): identifant;
* `name` (texte): nom;
* `address` (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 (type de lieu)
* `id` (int): identifant;
* `title` (texte): titre du type de lieu;
### Person (Personne, usager)
* `id` (texte): Identifiant du dossier usager;
* `isNull` (bool): `true` si le dossier usager est vide;
@ -323,150 +553,6 @@ Présence à l'échange
* `address` (Adresse): l'adresse actuelle
* `resources` (PersonResource): les personnes ressources, ajoutées depuis le dossier de l'usager.
::: { .vendee }
Au 23 mars 2022, ces champs ne sont plus disponibles:
* `numCaf` (texte): le numéro CAF;
* `numSS` (texte): le numéro de sécurité sociale;
* `numMSA` (texte): le numéro MSA;
* `mutuelle` (texte): le nom de la mutuelle
* `doctor` (ThirdParty): le médecin traitant;
* `situationProf` (texte): la situation professionnelle;
* `situationProfDate` (Date): date de la situation professionnelle;
Par ailleurs, la nature de ces champs a changé:
* `statutLogement`
* `niveauEtude`
Ces champs sont disponibles, dès le 22 mars:
* `extras.majeur.isNull` (bool): si un dossier "majeur" a été créé
* `extras.majeur.numeroCAF` (texte): le numéro CAF;
* `extras.majeur.numeroSecuriteSociale` (texte): le numéro de sécurité sociale;
* `extras.majeur.numMSA` (texte): le numéro MSA;
* `extras.majeur.mutuelle` (texte): le nom de la mutuelle
* `extras.majeur.medecinTraintant` (ThirdParty): le médecin traitant;
* `extras.majeur.situationProfessionelle` (texte): la situation professionnelle;
* `extras.majeur.situationProfessionelleComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.situationProfessionelleStartDate` (Date)
* `extras.majeur.statutLogement` (StatutLogement): statut au regard du logement;
* `extras.majeur.niveauEtude` (NiveauEtude): le niveau d''étude;
* `extras.majeur.identifiantPoleEmploi` (texte)
* `extras.majeur.accompagnementMissionLocale` (texte)
* `extras.majeur.gensDuVoyage` (bool): `true` si la personne fait partie des gens du voyage
* `extras.majeur.titreDeSejour` (TitreDeSejour): entité TitreDeSejour
* `extras.majeur.titreDeSejourComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.situationProfessionelle` (SituationProfessionelle): entité SituationProfessionelle
* `extras.majeur.aidantFamilial` (bool): `true` si la personne fait partie des gens du voyage
* `extras.majeur.tempsDeTravail` (TempsDeTravail): entité TempsDeTravail
* `extras.majeur.niveauEtude` (NiveauEtude): entité NiveauEtude
* `extras.majeur.mobilite` (mMbilite): entité Mobilite
* `extras.majeur.permisDeConduire` (bool): `true` si la personne a un permis de conduire
* `extras.majeur.moyenDeTransport` (bool): `true` si la personne a un moyen de transport
* `extras.majeur.infoSocioProComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.entourage` (Entourage): entité Entourage
* `extras.majeur.entourageComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.numeroSecuriteSociale` (texte)
* `extras.majeur.caisseSecuriteSociale` (texte)
* `extras.majeur.pasDeMedecinTraitant` (bool): `true` si la personne n'a pas de médecin traitant
* `extras.majeur.medecinTraitant` (Tiers): entité ThirdParty
* `extras.majeur.medecinTraitantTexteLibre` (texte)
* `extras.majeur.mdph` (texte)
* `extras.majeur.mdphStartDate` (Date)
* `extras.majeur.mdphEndDate` (Date)
* `extras.majeur.mdphComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.aah` (texte)
* `extras.majeur.aahStartDate` (Date)
* `extras.majeur.aahEndDate` (Date)
* `extras.majeur.aahComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.rqth` (texte)
* `extras.majeur.rqthStartDate` (Date)
* `extras.majeur.rqthEndDate` (Date)
* `extras.majeur.rqthComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.pcdh` (texte)
* `extras.majeur.pcdhStartDate` (Date)
* `extras.majeur.pcdhEndDate` (Date)
* `extras.majeur.pcdhComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.adpa` (texte)
* `extras.majeur.adpaStartDate` (Date)
* `extras.majeur.adpaEndDate` (Date)
* `extras.majeur.adpaComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.gir` (texte)
* `extras.majeur.girStartDate` (Date)
* `extras.majeur.girEndDate` (Date)
* `extras.majeur.girComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.infoMedicaleComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.statutLogement` (StatutLogement): entité StatutLogement
* `extras.majeur.statutLogementComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.caisseDeRetraitePrincipale` (texte)
* `extras.majeur.caisseDeRetraiteComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.caisseDeRetraiteComplementaire` (liste de texte): les caisses de retraite complémentaires, en liste de texte;
* `extras.majeur.caissesDeRetraiteComplementairesText` (texte): les caisses de retraite complémentaires, dans un seul champ texte, séparé par des virgules;
En outre, si la personne est mineure, on a accès aux champs suivants:
* `extras.majeur.isNull` (bool): si un dossier "mineur" a été créé
* `extras.mineur.enfantConfie` (bool): `true` si enfant confié
* `extras.mineur.dossierASE` (texte)
* `extras.mineur.autoriteParentale` (texte)
* `extras.mineur.autoriteParentaleComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.identificationAutoriteParentale1` (texte)
* `extras.mineur.identificationAutoriteParentale2` (texte)
* `extras.mineur.autoriteParentale1Date` (Date)
* `extras.mineur.autoriteParentale2Date` (Date)
* `extras.mineur.retraitAutoriteParentale` (bool): `true` si retraitAutoriteParentale
* `extras.mineur.retraitAutoriteParentaleDate` (Date)
* `extras.mineur.retraitAutoriteParentaleComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.delegation` (bool): `true` si délégation
* `extras.mineur.delegationDate` (Date)
* `extras.mineur.delegationComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.delegationThirdParty` (tiers): entité ThirdParty
* `extras.mineur.delegationPerson` (person): entité Person
* `extras.mineur.tuteur` (texte)
* `extras.mineur.tuteurThirdParty` (tiers): entité ThirdParty
* `extras.mineur.administrateurAdhoc` (bool): `true` si administrateurAdhoc
* `extras.mineur.administrateurAdhocDate` (Date)
* `extras.mineur.administrateurAdhocComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.pupilleEtat` (bool): `true` si pupilleEtat
* `extras.mineur.pupilleEtatDate` (Date)
* `extras.mineur.pupilleComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.tuteurPerson` (person): entité Person
* `extras.mineur.enfantEmancipe` (bool): `true` si enfantEmancipe
* `extras.mineur.enfantEmancipeDate` (Date)
* `extras.mineur.gardeAlternee` (bool)
* `extras.mineur.decisionJAF` (bool): `true` si decisionJAF
* `extras.mineur.decisionJAFDate` (Date)
* `extras.mineur.decisionJAFEnfantConfie` (bool): `true` si decisionJAFEnfantConfie
* `extras.mineur.decisionJAFDateEnfantConfie` (Date)
* `extras.mineur.fratrieComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.droitDeVisiteComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.infoFamilialeComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.residenceMineur` (texte)
* `extras.mineur.derniereVisiteMedicaleDate` (Date)
* `extras.mineur.visiteMedicaleText` (texte)
* `extras.mineur.prochaineVisiteMedicaleDate` (Date)
* `extras.mineur.autresRDV` (texte)
* `extras.mineur.infoMedicaleComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.scolarise` (bool): `true` si scolarisé
* `extras.mineur.derniereClasseScolaire` (texte)
* `extras.mineur.etablissementScolaire` (texte)
* `extras.mineur.classeScolaire` (texte)
* `extras.mineur.alternance` (bool): `true` si alternance
* `extras.mineur.alternanceEntreprise` (texte)
* `extras.mineur.enseignantReferant` (texte)
* `extras.mineur.scolariteComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.mineurComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.autresIntervenantsComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.dispositifs` (texte)
* `extras.mineur.dossierMDPH` (texte)
* `extras.mineur.notificationMDPH` (texte)
* `extras.mineur.notificationMDPHStartDate` (Date)
* `extras.mineur.notificationMDPHEndDate` (Date)
* `extras.mineur.dispositifsComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.adresseDeRelais` (adresse): liste d'adresses
:::
#### variant `household`
* `household` (Household): le ménage actuel de l'usager;
@ -516,20 +602,6 @@ 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;
#### Exemple d'utilisation
```
Nom de la personne: ${personLastname} // Dupuis
Prénom de la personne: ${personFirstname} // Gérard
Date de naissance: ${personBirthdateLong} // le 7 juillet 1974
Nom du père: ${personFatherLastName} ${personFatherFirstname} // Dupuis Marcel
Téléphone du père: ${personFatherFirstphonenumber} // 01 23 45 67 89
```
::: { .vendee }
### PersonResource (Ressources associée à l'usager)
Pour rappel, les ressources peuvent être:
@ -550,164 +622,14 @@ Pour rappel, les ressources peuvent être:
### PersonResourceKind (Type de personne ressource)
* `id` (int)
* `title` (texte)
* `title` (texte)
### StatutLogement
* `id` (int): identifiant (utile pour des comparaisons);
* `active` (bool): si le statut est encore utilisé;
* `name` (texte): titre
### NiveauEtude
* `id` (int): identifiant (utile pour des comparaisons);
* `active` (bool): si le niveau d'étude est encore utilisé;
* `name` (texte): titre
### SituationProfessionelle
* `id` (int): identifiant (utile pour des comparaisons);
* `active` (bool): si la situation professionelle est encore utilisée
* `name` (texte): titre
:::
### Civility
* `abbreviation` (texte): abbréviation;
* `id` (int): identifiant (utile pour des comparaisons);
* `name` (texte): titre, label de la civilité;
::: { .vendee }
### Entourage
* `person` (person): entité Person
* `thirdParty` (tiers): entité ThirdParty
* `text` (texte)
* `comment` (comment): Commentaire (avec la date de la dernire mise à jour)
* `aidantProche` (bool): `true` si aidantProche
:::
### Household
* `id` (int): l'identifiant du ménage;
* `members` (liste de HouseholdMember): liste des membres du ménages;
* `waitingForBirth` (bool): `true` si une naissance est attendue;
* `waitingForBirthDate` (Date): date de la naissance attendue;
### 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;
* `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;
### HouseholdPosition
* `id` (int): identifiant de la position;
* `label` (texte): label de la position dans le ménage;
::: { .vendee }
### Mobilite, NiveauEtude, SituationProfessionelle, StatutLogement, TempsDeTravail, TitreDeSejour
* `active` (bool): `true` si active
* `name` (texte)
:::
### 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é
* `contactDataAnonymous` (bool): `true` si le tiers est anonyme;
* `email` (texte): email;
* `name` (texte): nom du tiers;
* `nameCompany` (texte): nom du service du tiers (pour une personne morale);
* `parent` (ThirdParty): tiers parent (pour les contacts)
* `profession` (ThirdPartyProfession)
* `telephone` (texte): numéro de téléphone du tiers
### ThirdPartyCategory (catégorie de tiers)
TODO
### ThirdPartyProfession (profession du tiers)
TODO
### 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;
* `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);
### Postcode
### Postcode (Code Postal)
* `id` (int): identifiant
* `name` (texte): localité
* `code` (texte): code postal
### Country
* `id` (int): identifiant
* `name` (texte): nom du pays
* `code` (texte): deux lettres du code ISO pays
### User { #sec:gendoc-var-user }
* `id` (int): identifant
* `type` (texte): vaut toujours `user`
* `username` (texte): le login
* `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.label` (texte): 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;
### Location (lieu)
* `id` (int): identifant;
* `name` (texte): nom;
* `address` (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 (type de lieu)
* `id` (int): identifant;
* `title` (texte): titre du type de lieu;
### Social Issue (problématique sociale)
* `name`: le nom de la problématique seule
* `text`: le nom de la problématique et des problématiques parentes
### Relationship (relations (filiations) entre usagers)
Pour faciliter l'usager, les relations sont toujours représentée à partir d'un usager d'origine.
@ -723,42 +645,11 @@ Les variables présentent le nom de la relation (`text`), et la personne avec qu
**Note**: la différence entre `fromPerson` et `toPerson` est arbitraire.
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement)
### Result (résultat d'une action)
* `id` (texte): l'identifiant de l'évaluation;
* `type` (texte): le libellé de l'évaluation;
* `startDate` (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;
* `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;
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### Evaluation (type d'évaluation)
* `id` (texte): l'identifiant du type d'évaluation;
* `title` (texte): le titre du type d'évaluation;
### AccompanyingPeriodWork (Action d'accompagnement)
* `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;
* `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;
### SocialAction (type d'action d'accompagnement)
@ -766,36 +657,63 @@ Les variables présentent le nom de la relation (`text`), et la personne avec qu
* `text` (texte): texte, avec les parents inclus, séparés par un ` > `;
* `title`: titre du type d'action, sans les parents;
### Result (résultat d'une action)
### Social Issue (problématique sociale)
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
* `name`: le nom de la problématique seule
* `text`: le nom de la problématique et des problématiques parentes
### Goal (objectif d'une action)
### ThirdParty (Tiers)
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
* `id` (int): identifiant du tiers;
* `acronym` (text): acronyme;
* `address` (Adress): adresse du tiers
* `categories` (liste de ThirdPartyCategory): liste des catégories;
* `civility` (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)
* `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
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement)
* `id` (texte): identifiant
* `goal` (Goal): objectif d'une action
* `results` (liste de Result): liste des résultats
`kind` vaut:
### Comment
* `company` lorsqu'il s'agit d'une personne morale
* `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)
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:
### ThirdPartyCategory (catégorie de tiers)
* `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;
* `id` (int): identifiant
* `name` (texte)
#### Variant `light`
Dans le variant `light`,
### ThirdPartyProfession (profession du tiers)
* le champ `date` n'est pas présent;
* le champ `user` n'est pas présent.
* `id` (int): identifiant
* `name` (texte)
Seul le champ `comment` est donc disponible.
### User (Utilisateur) { #sec:gendoc-var-user }
* `id` (int): identifant
* `type` (texte): vaut toujours `user`
* `username` (texte): le login
* `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;
### UserJob (Métier)
* `id` (int): identifiant
* `label` (texte): nom du métier

Binary file not shown.

BIN
admin/img/generation-document/libre-office-insert-renvoi.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -36,8 +36,19 @@ if [ $kind = 'user' ]; then
notifications.md
tasks.md
workflows.md
choisir_une_adresse.md
adresses.md
exports.md
exports_person.md
exports_activity.md
exports_accompanying_period.md
nouveautes.md
"
# missing pages to once completed
# exports_accompanying_period_work.md
# exports_accompanying_period_work_evaluation.md
# exports_aside_activity.md
# exports_calendar.md
# exports_household.md
elif [ $kind = 'admin' ]; then
export files="
start.md

66
user/adresses.md Normal file
View File

@ -0,0 +1,66 @@
\newpage
# Gestion des adresses
## Choisir une adresse {#sec:choisir-une-adresse}
Que ce soit dans un ménage, dans un tiers ou encore pour localiser un échange, il y a plusieurs endroits où vous pouvez saisir une adresse dans Chill.
### Création d'une d'adresse
Lorsque le formulaire d'adresse s'ouvre, vous pouvez soit sélectionner une adresse "de référence", soit en saisir une nouvelle. Il est en effet possible de pré-charger une liste d'adresses de référence provenant de sources officielles dans Chill. Suivant votre installation, cela a peut-être été fait pour votre région, votre département ou le pays entier.
![Création d'une d'adresse](./img/choisir-une-adresse.png)
La case à cocher "Adresse confidentielle" permet d'indiquer qu'une adresse doit apparaitre par défaut floutée dans le logiciel ou tout document exporté du logiciel.
La case à cocher "Pas d'adresse complète" permet d'indiquer une adresse uniquement en indiquant la pays et une localité, sans définir la rue et le numéro de bâtiment. Si cette case n'est pas cochée, vous devez remplir la rue et le numéro de bâtiment.
Si des adresses de référence ont été pré-chargées dans le logiciel, vous pouvez successivement choisir la localité (ville ou village), puis l'adresse précise (rue et numéro de bâtiment). Si l'adresse est inconnue par le logiciel, que ce soit au niveau de la localité ou de l'adresse précise, écrivez le nom dans le champ correspondant et le formulaire vous proposera de saisir une nouvelle adresse. Attention, la recherche d'une adresse pré-chargée est sensible à des fautes de frappes ou d'orthographe, donc assurez-vous de l'orthographe de votre saisie avant de créer une nouvelle adresse.
Lorsqu'une adresse de référence est sélectionnée, la localisation de l'adresse est connue et le pointeur se déplace sur la carte à l'endroit de l'adresse. Lors de la création d'une adresse inconnue par le logiciel, la localisation ne peut pas être définie.
En bas du formulaire, une série de champs optionnels peuvent être complétés pour préciser l'adresse (étage, couloir, escalier, complément d'adresse, etc.). En remplissant adéquatement ces champs, le logiciel pourra générer des adresses postales valides utiles pour la génération de documents.
### Dates de validité
Dans le cas d'une adresse d'un ménage, lors de la création d'une adresse, une date de validité doit être choisie, indiquant à partir de quand l'adresse est valide. Lors d'un changement d'adresse, le logiciel va garder l'historique des adresses d'un ménage en tenant compte de ces dates de validité.
## Édition d'une adresse existante
Dans le cas d'une erreur, ou bien dans le cas d'un changement d'adresse d'un tiers, il est possible d'éditer une adresse existante en cliquant sur le bouton "Modifier l'adresse".
## Visualiser les détails d'une adresse
A côté de chaque adresse, un bouton indiquant une carte permet de visualiser les détails d'une adresse, et notamment:
- visualiser l'adresse sur une carte;
- ouvrir, dans une nouvelle fenêtre ou un nouvel onglet, une carte détaillée sur Google maps ou OpenStreetMap, pour visualiser l'endroit de manière plus confortable et éventuellement calculer un itinéraire;
- lister les zones statistiques géographiques qui recouvrent l'adresse.
::: {.note}
La page de visualisation sur Google Maps où OpenStreetMap s'ouvre dans un nouvel onglet, ou une nouvelle fenêtre.
:::
![Une adresse, le bouton avec une carte permettant de visualiser les détails de cette adresse](img/address_inline_with_button.png)
![Visualisation des détails d'une adresse](img/address_details_modal.png)
## Mise à jour des adresses de référence
Les adresses de références devraient être régulièrement mises à jour. Il est probable que des changements aient lieu dans des adresses de référence qui sont associées aux adresses des tiers et des ménages.
Dans ce cas, cela est indiqué dans l'affichage de l'adresse et dans la modale qui permet de visualiser les détails. Vous pouvez alors choisir de mettre à jour cette adresse ou d'ignorer les changements.
![Adresse dont l'adresse de référence a été modifiée](img/address_inline_with_button_and_warning.png)
![Mettre à jour une adresse de référence modifiée](img/address_details_modal_with_address_reference_change.png)
::: {.note}
Il existe un filtre permettant de lister les ménages dont l'adresse de référence a fait l'objet d'une mise à jour.
:::

View File

@ -1,30 +0,0 @@
\newpage
# Choisir une adresse {#sec:choisir-une-adresse}
Que ce soit dans un ménage, dans un tiers ou encore pour localiser un échange, il y a plusieurs endroits où vous pouvez saisir une adresse dans Chill.
## Création d'une d'adresse
Lorsque le formulaire d'adresse s'ouvre, vous pouvez soit sélectionner une adresse prédéfinie soit en saisir une nouvelle. Il est en effet possible de pré-charger une liste d'adresses dans Chill. Suivant votre installation, cela a peut-être été fait pour votre région, votre département ou le pays entier.
![Création d'une d'adresse](./img/choisir-une-adresse.png)
La case à cocher "Adresse confidentielle" permet d'indiquer qu'une adresse doit apparaitre par défaut floutée dans le logiciel ou tout document exporté du logiciel.
La case à cocher "Pas d'adresse complète" permet d'indiquer une adresse uniquement en indiquant la pays et une localité, sans définir la rue et le numéro de bâtiment. Si cette case n'est pas cochée, vous devez remplir la rue et le numéro de bâtiment.
Si des adresses ont été pré-chargées dans le logiciel, vous pouvez successivement choisir la localité (ville ou village), puis l'adresse précise (rue et numéro de bâtiment). Si l'adresse est inconnue par le logiciel, que ce soit au niveau de la localité ou de l'adresse précise, écrivez le nom dans le champ correspondant et le formulaire vous proposera de saisir une nouvelle adresse. Attention, la recherche d'une adresse pré-chargée est sensible à des fautes de frappes ou d'orthographe, donc assurez-vous de l'orthographe de votre saisie avant de créer une nouvelle adresse.
Lorsqu'une adresse pré-chargée est sélectionné, la localisation de l'adresse est connue et le pointeur se déplace sur la carte à l'endroit de l'adresse. Lors de la création d'une adresse inconnue par le logiciel, la localisation ne peut pas être définie.
En bas du formulaire, une série de champs optionnels peuvent être complétés pour préciser l'adresse (étage, couloir, escalier, complément d'adresse, etc.). En remplissant adéquatement ces champs, le logiciel pourra générer des adresses postales valides utiles pour la génération de documents.
## Dates de validité
Dans le cas d'une adresse d'un ménage, lors de la création d'une adresse, une date de validité doit être choisie, indiquant à partir de quand l'adresse est valide. Lors d'un changement d'adresse, le logiciel va garder l'historique des adresses d'un ménage en tenant compte de ces dates de validité.
## Édition d'une adresse existante
Dans le cas d'une erreur, ou bien dans le cas d'un changement d'adresse d'un tiers, il est possible d'éditer une adresse existante en cliquant sur le bouton "Modifier l'adresse".

208
user/exports.md Normal file
View File

@ -0,0 +1,208 @@
```{=latex}
\cleardoublepage
```
# Exports
Chill permet d'exporter les données sous différentes formes:
- des listes;
- des tableaux reprenant un ou plusieurs indicateurs.
Les listes peuvent être filtrées selon différents paramètres: âge de l'usager, date de l'échange, etc.
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
Les exports fonctionnent comme des tableaux croisés:
- un "export" permet de choisir l'indicateur.
Quelques exemples d'export: nombre de parcours, durée moyenne des parcours, nombre d'usagers, etc.
- 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.
- des regroupements créent des "classes statistiques" et permettent d'aggréger les données dans ces classes.
Cela permet de connaitre, par exemple, le "nombre d'échange par type d'échange", "le nombre de parcours par référent", etc.
### Listes de données
Au sein des exports, Chill propose des "listes" de données: liste des parcours, liste des usagers, etc.
Ces listes sont des données au format tableur, et chaque colonne comporte une information.
Les filtres des exports d'indicateurs sont disponibles pour les listes: il est donc possible de connaitre la liste des usagers de plus de 18 ans, etc.[^grouping-non-sense]
[^grouping-non-sense]: Les regroupements ne sont pas, eux disponibles: ils n'ont pas de sens dans ce contexte.
### Sauvegarde des exports configuré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.
![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.
### Filtres
Les filtres permettent donc de filtrer les données avant l'export.
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.
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.
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.
Ils peuvent également être combinés les uns aux autres. Dans ce cas, cela se matérialise par l'existence de plusieurs colonnes dans le résultat final: une colonne par regroupement.
Lorsque certaines données ne comportent pas de valeur, la cellule de la colonne du regroupement est généralement vide, ou son libellé est explicite.
#### Regroupements dans le cas de relation un-à-plusieurs
Il existe des relations un-à-plusieurs entre différents éléments, et qui font l'objet d'un regroupement. Quelques exemples: un parcours comporte plusieurs problématiques sociales, un échange peut comporter plusieurs utilisateurs participants, etc.
Dans ce cas, l'indicateur est comptabilisé plusieurs fois: une fois en regard de chaque ligne.
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 résultat sera le suivant:
| Problématique | Nombre de parcours | Explication |
|--------------:|---------:|-----------------------------------------------------|
|Emploi|1|Seul le parcours n°1 est comptabilisé |
|Logement|2|Le parcours n°1 et 2 sont concernés|
|Santé|2|Le parcours n°1 et 2 sont concernés|
Notez que le total des colonnes "nombre de parcours" est supérieur à deux (en l'occurrence il est de 5), alors qu'il y a seulement deux parcours concernés. Il est important d'être attentif à ce comportement lors de la comptabilisation des résultats: l'usage de "totaux" (souvent indiqués en bas de colonne, par exemple) n'est pas pertinent.
### Données historiques
Le logiciel Chill enregistre des données historiques: les référents d'un parcours, les référents des actions, l'appartenance d'un utilisateur à un ménage, etc.
Dès lors, de nombreux filtres et regroupements demandent une "date de calcul" pour ces éléments: il s'agit de la date à laquelle le référent était en position de désignation sur un parcours, l'appartenance de l'usager à un ménage à la date indiquée, etc.
### Dates glissantes
Les parcours peuvent être enregistrés, et rejoués à des dates différentes.
Dès lors, le logiciel utilise des "dates glissantes" pour indiquer une date, plutôt qu'une valeur absolue. Les "dates glissantes" se matérialisent par un menu déroulant dans lequel l'utilisateur indique un calcul de date:
- le début de l'année précédente,
- le début de l'année courante;
- la date du jour,
- etc.
Cet indicateur est converti **au moment de la génération de l'export**. Ainsi, le "début du mois précédent" sera le 1er janvier 2023 lorsque l'export est généré le 15 février 2023. Lorsqu'il sera généré le 15 mars 2023, le "début du mois précédent" sera le 1er février 2023.
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.
### Couches et zones géographiques
Les adresses sont localisées, dans Chill. La localisation géographique est enregistrée à l'endroit exact lorsque l'utilisateur a choisi l'adresse dans une liste de référence. Lorsque seul le code postal est choisi parmi les suggestions, alors l'adresse est géolocalisée à l'intérieur de la zone géographique du code postal, de manière aléatoire.
Les administrateurs peuvent injecter dans le logiciel des zones géographiques, qui appartiennent chacune à une "couche". Chaque zone est définie par une frontière (un polygone géographique). Ainsi, la couche des "communes" comportent plusieurs communes, appelées par leur nom. Chaque adresse peut être géographiquement associée à une zone géographique en fonction de la localisation: toutes les adresses à l'intérieur des frontières de la zone est associée à cette zone.
Chill est en mesure de proposer, dès lors,
- des filtres par zone géographiques;
- des regroupements par couche géographiques;