manuals/admin/generation-documents.md

720 lines
36 KiB
Markdown
Raw Permalink Normal View History

2021-08-25 15:46:54 +00:00
# Génération de documents
2022-01-05 00:53:30 +00:00
L'administrateur fonctionnel prépare la génération des documents.
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
Cela consiste à configurer le gabarit et ses éventuelles options via l'interface d'administration. Pour chaque gabarit, un document est joint et contient des "zones substituantes", qui permettent d'insérer des informations issues de Chill.
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
Seuls les documents suivants peuvent être utilisés:
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
* .odt (LibreOffice Writer);
* .ods
* .odp
2021-09-23 09:36:42 +00:00
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 ?
2021-09-23 09:36:42 +00:00
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.
2022-01-05 00:53:30 +00:00
Lors de la génération de document, les utilisateurs parcourrent trois étapes, dont l'un est optionnelle:
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
1. Étape optionnelle: un formulaire demande des précisions à l'utilisateur.
2021-09-23 09:36:42 +00:00
Il peut s'agir, par exemple, de préciser les destinataires du document, de choisir un signataire, etc.
Ce formulaire est soit:
* natif au contexte. Dans ce cas, il apparait systématiquement ou dans certaines conditions;
2021-09-23 09:36:42 +00:00
* configuré par l'admnistrateur fonctionnel parmi des options disponibles;
2022-01-05 00:53:30 +00:00
2. le document est effectivement généré en arrière-plan. Cela peut nécessiter éventuellement quelques secondes;
3. le document est ouvert pour édition dans un éditeur en ligne. L'enregistrement est automatique. Lorsqu'ils ferment l'éditeur **depuis l'interface de l'éditeur**, l'utilisateur est redirigé vers l'interface de Chill, généralement la page de génération du document.
2021-09-23 09:36:42 +00:00
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é.
## Préparation des documents
Les documents sont préparés par l'administrateur fonctionnel. Il s'agit d'un document "traitement de texte" (ou tableur, ou présentation).
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.
2021-09-23 09:36:42 +00:00
:::
## Indiquer un champ dans un document en utilisant Libre Office
2022-01-05 00:53:30 +00:00
Aux endroits où cela est nécessaire, l'administrateur indique un "champ substituant".
Cela est accessible via le menu "Insertion > Renvoi...", puis choisir l'onglet "Fonction", "Substituant", "Texte", et indiquer la valeur du champ.
La valeur à indiquer dans le champ "substituant" est à déduire des informations ci-dessous.
2021-09-23 09:36:42 +00:00
![Menu Insertion > Renvoi dans LibreOffice](./img/generation-document/libre-office-insert-renvoi.png)
![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)
## Nature (type) des variables
Pour chaque contexte où un document est généré, les variables disponibles sont listées [dans la section suivante](#sec:gendoc-champs-documents).
Chaque variable comporte un type: il peut s'agir de:
- un nombre;
- un texte;
- un bouléen (`vrai` ou `faux`)
- un objet;
- ou une liste d'objets, de nombres, ou de textes.
2021-08-26 13:25:59 +00:00
Les variables et leur type sont décrites [dans la section suivante](#sec:gendoc-champs-objets). Le type est indiqué entre parenthèse:
2021-08-26 13:25:59 +00:00
* 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).
### Cas où le contenu d'une variable est vide
Si une variable est vide, alors tout ses champs apparaissent avec une chaine de caractère vide.
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.
### 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:
2021-08-26 13:25:59 +00:00
* 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:
2021-08-26 13:25:59 +00:00
```
v.person.birthdate.short
v.person.birthdate.long
2021-08-26 13:25:59 +00:00
```
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:
```
```
2021-09-23 09:36:42 +00:00
## Paramètres pour l'administrateur fonctionnel
2021-09-23 09:36:42 +00:00
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.
2021-09-21 19:36:46 +00:00
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.
2021-09-23 09:36:42 +00:00
## Variables par contexte
2021-09-23 09:36:42 +00:00
### Pour tous les contextes { #sec:gendoc:champs-documents }
2021-09-23 09:36:42 +00:00
#### Variables
2021-08-26 13:25:59 +00:00
* `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;
2021-10-06 12:06:44 +00:00
* `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
2021-09-23 09:36:42 +00:00
#### Paramètres pour l'administrateur fonctionnel
Les administrateurs fonctionnels peuvent activer les paramètres suivants:
2022-04-11 16:17:08 +00:00
* 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 "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);
2021-09-23 09:36:42 +00:00
#### Variables
2022-01-05 00:53:30 +00:00
Le document présente:
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
* une variable `course`, de type `AccompanyingPeriod`;
2022-03-25 13:07:03 +00:00
* 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é.
2021-09-21 19:36:46 +00:00
### Document générés pour un parcours, contexte "liste des activités"
Le contexte présente les mêmes variables et paramètre que les documents générés par un parcours.
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.
2021-08-26 13:25:59 +00:00
### Document générés pour une évaluation
2022-01-05 00:53:30 +00:00
Le document présente:
2021-08-26 13:25:59 +00:00
2022-01-05 00:53:30 +00:00
* 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;
2022-03-25 13:07:03 +00:00
* 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é.
2021-09-21 19:36:46 +00:00
2022-01-26 22:44:24 +00:00
### 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
2022-01-27 08:40:34 +00:00
* une variable `person`, de type `Person`: la personne concernée, à condition que l'échange ait été créée dans un contexte d'usager.
2022-01-26 22:44:24 +00:00
2022-01-27 08:40:34 +00:00
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).
2022-01-26 22:44:24 +00:00
2022-03-25 13:07:03 +00:00
* 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`;
### Documents générés dans le dossier d'une personne: contexte "personne basique"
2022-03-25 13:07:03 +00:00
* 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`;
2022-03-25 13:07:03 +00:00
### Document générés dans un contexte "rendez-vous"
2021-09-21 19:36:46 +00:00
Les champs suivant sont disponibles:
2021-09-21 19:36:46 +00:00
* 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.
2021-09-21 19:36:46 +00:00
## Principes liés au variables
2021-09-21 19:36:46 +00:00
## Champs par objet { #sec:gendoc-champs-objets }
2021-08-26 13:25:59 +00:00
### AccompanyingPeriod (Parcours)
2022-01-05 00:53:30 +00:00
* `id` (texte): l'identifiant du parcours
* `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;
* `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;
* `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;
* `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;
* `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;
* `hasRequestorPerson` (bool): `true` si le demandeur est une personne;
* `requestorThirdParty` (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;
* `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;
* `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
2022-01-05 00:53:30 +00:00
* `ref` (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;
* `hasAdministrativeLocation` (bool): `true` si une localisation administrative est définie;
2022-07-11 17:54:25 +00:00
* `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é;
### AccompanyingPeriodComment (Commentaire du parcours)
2022-07-11 17:54:25 +00:00
* `id` (int): identifiant
* `content` (texte): contenu du commentaire
* `createdAt` (Date): date de création
* `creator` (User): Créateur du commentaire
### AccompanyingPeriodOrigin (Origine du parcours)
2022-07-11 17:54:25 +00:00
* `id` (int): identifiant;
* `label` (texte): libellé de l'origine;
2022-01-05 00:53:30 +00:00
### 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.
2022-01-05 00:53:30 +00:00
* `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;
### AccompanyingPeriodResource (Interlocuteur privilégiés dans un parcours)
2022-01-05 00:53:30 +00:00
* `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.
2022-01-05 00:53:30 +00:00
### 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
2022-01-05 00:53:30 +00:00
2022-01-26 22:44:24 +00:00
### Activity (échange)
* `id` (int): identifiant;
* `activityType` (ActivityType): Type d'échange
* `attendee` (ActivityPresence): Présence à l'échange
2022-03-17 13:39:56 +00:00
* `comment` (Comment): Commentaire (avec la date de la dernière mise à jour)
2022-01-26 22:44:24 +00:00
* `date` (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)
2022-03-18 06:49:06 +00:00
* `sentReceived` (text): sera `received` si reçu, et `sent` si envoyé;
2022-01-26 22:44:24 +00:00
* `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
* `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.
#### variant `light`
Un variant `light` est utilisé dans les listes d'`Activity`, comme par exemple pour le contexte "Liste des activités pour un parcours".
Ce variant comporte les mêmes attributs, avec les différences suivantes:
* le champ `user` n'est pas présent;
* le champ `scope` n'est pas présent;
* le champ `reasons` n'est pas présent;
* le champ `comment` est également présenté avec le variant `light`.
### ActivityType (Type d'activité)
Type d'activité.
* `id` (int): identifiant;
* `name` (texte): libellé
### ActivityPresence (Présence à l'échange)
2022-01-26 22:44:24 +00:00
Présence à l'échange
* `id` (int): identifiant;
* `name` (texte): libellé
2022-01-05 00:53:30 +00:00
### 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é
### Country (Pays)
* `id` (int): identifiant
* `name` (texte): nom du pays
* `code` (texte): deux lettres du code ISO pays
### Date (Date)
2021-08-26 13:25:59 +00:00
* `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)
* `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)
2021-08-26 13:25:59 +00:00
2022-01-05 00:53:30 +00:00
* `id` (texte): Identifiant du dossier usager;
* `isNull` (bool): `true` si le dossier usager est vide;
* `civility` (Civility): Civilité
* `firstName` (texte): Prénom
* `lastName` (texte): Nom
2021-10-06 21:50:26 +00:00
* `altNames` (texte): noms supplémentaire (nom de naissance, …)
2022-01-05 00:53:30 +00:00
* `text` (texte): représentation du nom, prénom, et noms alternatifs: prénom, nom, et noms alternatifs.
2021-08-26 13:25:59 +00:00
* `birthdate` (Date)
2022-01-05 00:53:30 +00:00
* `age`: (int) age de la personne;
2021-08-26 13:25:59 +00:00
* `deathdate` (Date)
2022-01-05 00:53:30 +00:00
* `gender` (texte): genre (texte traduit);
2021-08-26 13:25:59 +00:00
* `maritalStatus` (texte): représentation textuelle de l'état civil;
2021-10-06 12:06:44 +00:00
* `maritalStatusDate` (Date): date à la quelle le statut de l'état civil a été mis à jour;
2022-04-28 15:38:19 +00:00
* `maritalStatusComment` (Comment): Commentaire sur l'état civil (avec la date de la dernière mise à jour)
2021-08-26 13:25:59 +00:00
* `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;
* `mobilePhoneNumber` (texte): le numéro de téléphone portable;
2022-01-05 00:53:30 +00:00
* `nationality` (texte): nationalité (nom du pays);
2021-08-26 13:25:59 +00:00
* `placeOfBirth (texte): le lieu de naissance
* `memo` (texte): le mémo
* `numberOfChildren` (texte): le nombre d'enfants
2022-01-05 00:53:30 +00:00
* `address` (Adresse): l'adresse actuelle
2022-06-03 12:15:28 +00:00
* `resources` (PersonResource): les personnes ressources, ajoutées depuis le dossier de l'usager.
2021-09-21 19:36:46 +00:00
2022-01-05 00:53:30 +00:00
#### variant `household`
2021-09-21 19:36:46 +00:00
2022-01-05 00:53:30 +00:00
* `household` (Household): le ménage actuel de l'usager;
#### variant `relations`
2021-09-21 19:36:46 +00:00
2022-01-05 00:53:30 +00:00
* `relations` (liste de Relationship): les relations (filiations) de l'usager;
2022-03-25 13:07:03 +00:00
#### variant `budget`
Le budget des usagers et de leur ménage est accessible de manière synthétisée: la somme globale de chaque "ligne" de budget est effectuée et disponible pour l'inclusion.
Chaque "ligne" dépend de la configuration de votre instance.
Toutes les lignes de budget possibles sont toujours présentes. Il est possible d'ajouter une condition dans le document pour n'afficher que les lignes ayant une somme supérieure à zéro.
##### Attributs pour une `Ligne de budget`
Pour chaque ligne, les informations suivantes sont disponibles:
* `sum` (nombre décimal): la somme de toutes les lignes du budget du même type;
* `label` (texte): le libellé de cette ligne dans l'interface;
2022-04-11 16:17:08 +00:00
* `comment` (texte): les commentaires des lignes du budget de même type. Tous les commentaires sont concaténés les uns à la suite des autres, et séparés par le caractère `|`.
2022-03-25 13:07:03 +00:00
##### Méthode de globalisation de chaque ligne
Pour chaque ligne de budget, la somme de toutes les lignes de budget du même type est disponible. Ainsi, si une entrée dans les ressources permet de saisir une charge "frais de communication téléphonique":
* pour un usager, si plusieurs lignes `frais de communication` sont enregistrées, alors c'est la somme de celles-ci qui apparaitra dans la génération de documents;
* pour un ménage, alors ce sera la somme de tous les `frais de communication` de chaque membre du ménage **au moment de la génération du document** qui apparaitra, mais également la somme des `frais de communications` enregistrés directement dans le dossier du ménage.
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.
Le calcul du caractère actif d'une ligne est effectué comme suit:
* la date de début est antérieure à la date de génération du document;
* la date de fin est vide, ou postérieure à la date de génération du document.
##### Attributs supplémentaire avec le variant `budget`:
Les attributs suivants sont disponibles, pour chaque objet `Person` qui a un variant `budget`:
* `budget.person.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. Seules les lignes du budget associées au dossier de l'usager sont présentes ici;
* `budget.person.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. Seules les lignes du budget associées au dossier de l'usager sont présentes ici;
* `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;
2022-06-03 12:15:28 +00:00
### PersonResource (Ressources associée à l'usager)
Pour rappel, les ressources peuvent être:
* des tiers;
* des usagers;
* ou un champ de texte libre.
* `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
* `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)
* `id` (int)
* `title` (texte)
2022-06-03 12:15:28 +00:00
### Postcode (Code Postal)
2022-03-24 10:04:36 +00:00
* `id` (int): identifiant
* `name` (texte): localité
* `code` (texte): code postal
2022-03-24 10:04:36 +00:00
### Relationship (relations (filiations) entre usagers)
2022-03-18 06:49:06 +00:00
Pour faciliter l'usager, les relations sont toujours représentée à partir d'un usager d'origine.
2022-01-05 00:53:30 +00:00
Les variables présentent le nom de la relation (`text`), et la personne avec qui la relation est formée (`opposite`).
2021-09-23 09:36:42 +00:00
* `id` (int): identifant;
* `fromPerson` (Person): personne d'origine;
* `toPerson` (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;
* `relationId` (int): identifiant du lien de filiation;
2021-09-23 09:36:42 +00:00
**Note**: la différence entre `fromPerson` et `toPerson` est arbitraire.
2021-09-23 09:36:42 +00:00
### Result (résultat d'une action)
2021-09-23 09:36:42 +00:00
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
2021-09-23 09:36:42 +00:00
### SocialAction (type d'action d'accompagnement)
2021-09-23 09:36:42 +00:00
* `id` (texte): identifiant
* `text` (texte): texte, avec les parents inclus, séparés par un ` > `;
* `title`: titre du type d'action, sans les parents;
2022-03-18 06:49:06 +00:00
### Social Issue (problématique sociale)
2022-03-18 06:49:06 +00:00
* `name`: le nom de la problématique seule
* `text`: le nom de la problématique et des problématiques parentes
2022-03-18 06:49:06 +00:00
### ThirdParty (Tiers)
2021-08-26 13:25:59 +00:00
2022-01-05 00:53:30 +00:00
* `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;
2022-01-05 00:53:30 +00:00
* `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
`kind` vaut:
* `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)
2022-01-05 00:53:30 +00:00
### ThirdPartyCategory (catégorie de tiers)
* `id` (int): identifiant
* `name` (texte)
2022-01-05 00:53:30 +00:00
### ThirdPartyProfession (profession du tiers)
* `id` (int): identifiant
* `name` (texte)
2021-08-26 13:25:59 +00:00
2022-01-05 00:53:30 +00:00
### User (Utilisateur) { #sec:gendoc-var-user }
2021-08-26 13:25:59 +00:00
2022-01-05 00:53:30 +00:00
* `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
2022-01-05 00:53:30 +00:00
* `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;
2021-08-26 13:25:59 +00:00
### UserJob (Métier)
* `id` (int): identifiant
* `label` (texte): nom du métier