From 55e7e76566b43c585377cce2442147d87c64799c Mon Sep 17 00:00:00 2001 From: "sarah.bazin" <sarah.bazin@xelians.fr> Date: Wed, 29 May 2024 23:03:18 +0200 Subject: [PATCH] Update 3 files - /Courrier/1001/clausesapparition.md - /Courrier/1001/clausesbannettes.md - /Courrier/projet/comprehension.md --- Courrier/1001/clausesapparition.md | 149 ++++++++- Courrier/1001/clausesbannettes.md | 473 +++++++++++++---------------- Courrier/projet/comprehension.md | 8 +- 3 files changed, 358 insertions(+), 272 deletions(-) diff --git a/Courrier/1001/clausesapparition.md b/Courrier/1001/clausesapparition.md index 5cd5052..d9a5301 100644 --- a/Courrier/1001/clausesapparition.md +++ b/Courrier/1001/clausesapparition.md @@ -1,8 +1,151 @@ # Clause d'apparition d'action +## Conditions d'apparition d'action usuelles + +#### **<span style="color: #033d77">Condition sur le nombre d'utilisateurs restant dans un circuit de visa** + +~~~ sql +res_id in ( + SELECT res_id FROM listinstance li + WHERE res_view_letterbox.res_id = li.res_id + AND difflist_type = 'VISA_CIRCUIT' + AND process_date ISNULL + GROUP BY res_id + HAVING count(res_id) > 1 +) +~~~ +Changer la dernière condition pour changer la condition sur le nombre. Ici : “> 1†soit tout sauf dernier viseur. + +Si cette clause est paramétrée pour une action, l'action n'apparaît que si l'utilisateur N'EST PAS le dernier viseur. + + +Pour que l'action apparaisse seulement pour le dernier viseur (souvent signataire), reprendre l'ensemble de la cause en modifiant la dernière ligne telle que : + +```HAVING count(res_id) = 1``` + +#### **<span style="color: #033d77">Condition sur le premier viseur :** + +L'action n’apparaît pas si je suis le premier viseur + +~~~ sql +res_id in ( +SELECT res_id +FROM listinstance +WHERE difflist_type='VISA_CIRCUIT' +AND item_id = @user_id +AND process_date is null +AND sequence > 0 +) +~~~ + +**Explication de la clause :** + +```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis + +```item_id = @user_id :``` Je fais partie du circuit du courrier + +```process_date is null :``` Date de signature non renseigné + +```sequence > 0 :``` Tous les membres du circuit sauf le premier + +#### **<span style="color: #033d77">Condition sur le statut du prochain viseur** + +~~~ sql res_id in ( + SELECT res_id FROM listinstance li + WHERE li.listinstance_id in ( + SELECT MIN(listinstance_id) + 1 FROM listinstance + WHERE listinstance.res_id = res_view_letterbox.res_id + AND difflist_type = 'VISA_CIRCUIT' + AND process_date ISNULL) + AND requested_signature +) +~~~ + +#### **<span style="color: #033d77">Condition d'action sur le dernier utilisateur au statut viseur :** + +L'action n’apparaît que si je suis le dernier viseur + + +~~~ sql +((res_id, @user_id) IN +(SELECT res_id, item_idFROM listinstance +WHERE difflist_type = 'VISA_CIRCUIT' +AND process_date ISNULL +AND item_mode = 'visa' +AND res_view_letterbox.res_id = res_id +AND sequence = (select max(sequence) FROM listinstance l +WHERE res_view_letterbox.res_id = res_id +AND item_mode = ('visa')) +ORDER BY listinstance_id asc limit 1)) +~~~ + +**Explication de la clause (faites par Lionel) :** + +```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis + +```item_mode = ‘visa’ :``` L'utilisateur est au statut “viseur"' + +```process_date is null :``` Date de signature non renseigné + +Variante : + +item_mode = ‘sign’ : L'utilisateur est au statut “signataire"' + + + +#### **<span style="color: #033d77">Condition sur l'identité du prochain utilisateur dans le circuit de visa** + +~~~ sql +res_id in ( +SELECT res_id FROM listinstance li +WHERE li.listinstance_id in ( +SELECT MIN(listinstance_id) + 1 FROM listinstance +WHERE listinstance.res_id = res_view_letterbox.res_id +AND difflist_type = 'VISA_CIRCUIT' +AND process_date ISNULL ) +AND item_id = '16') +~~~ + +**Explication de la clause :** + +```SELECT MIN(listinstance_id) + 1 FROM listinstance :``` L'utilisateur suivant dans le circuit + +```AND difflist_type = 'VISA_CIRCUIT' :``` C'est un circuit de visa + +```AND process_date ISNULL :``` Date de signature non renseigné + +```AND item_id = '16' :``` Identifiant du prochain utilisateur souhaité + + +#### **<span style="color: #033d77">Condition sur l'utilisateur en cours au statut signataire ou viseur** + + +~~~ sql +res_id in ( +SELECT res_id +FROM listinstance +WHERE difflist_type='VISA_CIRCUIT' +AND item_id = @user_id +AND process_date is null +AND item_mode = 'visa') +~~~ + + +```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis + +```item_mode = ‘visa’ :``` L'utilisateur est au statut “viseur"' + +```process_date is null :``` Date de signature non renseigné + +```Variante :``` + +```item_mode = ‘sign’ :``` L'utilisateur est au statut "signataire" + + + ## Apparition selon la position du viseur actuel dans le circuit de visa/signature -### Apparition de l'action tant qu'il existe un viseur suivant dans ce circuit de visa +#### **<span style="color: #033d77"> Apparition de l'action tant qu'il existe un viseur suivant dans ce circuit de visa** ~~~ sql res_id in (SELECT li.res_id @@ -19,7 +162,7 @@ WHERE li.difflist_type = 'VISA_CIRCUIT' )) ~~~ -### Apparition de l'action pour le dernier viseur dans ce circuit de visa/signature +#### **<span style="color: #033d77">Apparition de l'action pour le dernier viseur dans ce circuit de visa/signature** ~~~ sql status <> 'PSIG' and res_id in (SELECT li.res_id @@ -42,4 +185,4 @@ WHERE li.difflist_type = 'VISA_CIRCUIT' AND next_li.item_mode = 'visa' AND next_li.sequence > li.sequence )) -~~~ \ No newline at end of file +~~~ diff --git a/Courrier/1001/clausesbannettes.md b/Courrier/1001/clausesbannettes.md index a63180e..54b273b 100644 --- a/Courrier/1001/clausesbannettes.md +++ b/Courrier/1001/clausesbannettes.md @@ -1,24 +1,35 @@ -# Bannettes de traitement +## Bannettes de supervision -## Bannette de supervision (de ma direction) +#### **<span style="color: #033d77">Bannette Courrier de ma direction** -```destination in (@my_entities, @subentities[@my_primary_entity]) and (status <> 'OUT' AND status <> 'DEL' AND status <> 'REP' and status <> 'VAL' and status <> 'STDBY' and status <> 'END')``` +Visibilité des courriers de mon service et en dessous de mon service primaire +~~~ sql +destination in (@my_entities, @subentities[@my_primary_entity]) and (status not in ('OUT','DEL','REP','VAL','STDBY','END')) +~~~ +#### **<span style="color: #033d77">Bannette Courrier de ma direction** -## Bannette Courrier de ma direction -```destination in (@my_entities, @subentities[@my_primary_entity]) and (status <> 'DEL' AND status<>'END' AND status <> 'REP' and status <> 'VAL' and status <> 'VALID_DGA' and status <>'VALID_DGS' and status <> 'RET' and status<> 'EAVIS' and status <>'EVIS' and status <> 'EENV' and status <> 'RET_VISA') and dest_user <> @user_id``` +~~~ sql +destination in (@my_entities, @subentities[@my_entities]) and and (status not in ('OUT','DEL','REP','VAL','STDBY','END','VALID_DGA','VALID_DGS' ,'EAVIS','EVIS','EENV','RET_VISA') and dest_user <> @user_id +~~~ -## Bannette Courriers arrivant à expiration (date de fin de contrat < 3 mois) +#### **<span style="color: #033d77">Bannette Courriers arrivant à expiration (date de fin de contrat < 3 mois)** -```custom_fields->>'1' is not null and custom_fields->>'1' <> '' and date(custom_fields->>'1') < now()+ interval '3 months'``` +~~~ sql +custom_fields->>'1' is not null and custom_fields->>'1' <> '' and date(custom_fields->>'1') < now()+ interval '3 months' +~~~ -## Bannette tous les courriers qui ont été créé avant le 01/05/2023 +#### **<span style="color: #033d77">Bannette tous les courriers qui ont été créé avant le 01/05/2023** -```creation_date < TO_TIMESTAMP('2023-05-01', 'YYYY-MM-DD')``` +~~~ sql +creation_date < TO_TIMESTAMP('2023-05-01', 'YYYY-MM-DD') +~~~ -## Supervision sur un champ custom et conservation 1 mois après la clôture +#### **<span style="color: #033d77">Supervision sur un champ custom et conservation 1 mois après la clôture** -**Clause** : ```(status <> 'END' OR status = 'END' AND now() < closing_date + INTERVAL '1 month') AND custom_fields->>'6' = 'Oui'``` +~~~ sql +(status <> 'END' OR status = 'END' AND now() < closing_date + INTERVAL '1 month') AND custom_fields->>'6' = 'Oui' +~~~ **Explication** : tous les documents dont @@ -28,353 +39,285 @@ tous les documents dont **Utilité** : bannette de contrôle de documents qui remplisse une condition particulière. Par exemple, tous les courriers confidentiels en cours de traitement ou clôturés depuis moins d'un mois. -## Bannette Courrier en retard de traitement +## Bannette de traitement -```dest_user = @user_id and (status <> 'DEL' AND status <> 'REP' and status <> 'END') and (now() > process_limit_date)``` +#### **<span style="color: #033d77">Bannette Mes courriers en retard de traitement** -## Courriers à traiter OU pour lesquels on m'a donné un avis OU dont la date limite d'avis est dépassé. +~~~ sql +dest_user = @user_id and (status <> 'DEL' AND status <> 'REP' and status <> 'END') and (now() > process_limit_date) +~~~ +Courriers à traiter OU pour lesquels on m'a donné un avis OU dont la date limite d'avis est dépassé. -# Bannettes d'avis -## Courriers nécessitant un avis -```status = 'EAVIS' AND res_id IN (SELECT res_id FROM listinstance WHERE item_type = 'user_id' AND item_id = @user_id AND item_mode = 'avis' and process_date is NULL``` +## Bannettes d'avis -## Avis séquentiels -### Avis séquentiel à donner +#### **<span style="color: #033d77">Courriers nécessitant un avis** -**Clause** : -```status in ('EAVIS')``` document au statut EAVIS -```AND ((res_id, @user_id) IN (``` dont l'attributaire est -```SELECT res_id, item_id``` -```FROM listinstance``` -```WHERE difflist_type = 'AVIS_CIRCUIT'``` -```AND process_date ISNULL``` -```AND res_view_letterbox.res_id = res_id``` -```ORDER BY listinstance_id asc limit 1``` +~~~ sql +status = 'EAVIS' AND res_id IN (SELECT res_id FROM listinstance WHERE item_type = 'user_id' AND item_id = @user_id AND item_mode = 'avis' and process_date is NULL``` +~~~ -**Utilité** - -### Avis séquentiel en cours -```status='EAVIS'``` -```AND dest_user=@user_id``` -```AND ((``` -```SELECT count(res_id)``` -```FROM listinstance``` -```WHERE res_view_letterbox.res_id = res_id``` -```AND difflist_type = 'AVIS_CIRCUIT'``` -```AND process_date is NULL) != 0)``` - -### Bannette À émettre -```status in ('COMPLD', 'EAVIS') AND ((res_id, @user) in (SELECT res_id, item_id FROM``` -```listinstance WHERE difflist_type = 'AVIS_CIRCUIT' and process_date ISNULL and``` -```res_view_letterbox.res_id = res_id order by listinstance_id asc limit 1))``` - -# Bannette de visa/signature -**Utilité** : - -### Bannette En attente de réponse - -```status='EAVIS' and dest_user = @user_id``` - -### Courrier déjà visés -Liste des courriers que j'ai déjà visé. +### Avis séquentiels +#### **<span style="color: #033d77">Avis séquentiel à donner** -``` res_id in ``` -``` SELECT res_id FROM listinstance``` -``` WHERE item_id = @user_id``` -``` AND process_date is not null``` -``` AND difflist_type = 'VISA_CIRCUIT'``` - -# Explication de la clause : - -```item_id = @user_id :``` Je fais partie du circuit courrier -```process_date is not null :``` Date de signature non renseigné -```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis -Si vous souhaitez voir les courriers déjà visés et non clôturés ajouter ```status <> ‘END’``` +~~~ sql +status in ('EAVIS') document au statut EAVIS +AND ((res_id, @user_id) IN (dont l'attributaire est +SELECT res_id, item_id +FROM listinstance +WHERE difflist_type = 'AVIS_CIRCUIT' +AND process_date ISNULL +AND res_view_letterbox.res_id = res_id +ORDER BY listinstance_id asc limit 1 +~~~ +**Utilité** -## Courrier de mon service en circuit de visa/signature +#### **<span style="color: #033d77">Avis séquentiel en cours** +~~~ sql +status='EAVIS' +AND dest_user=@user_id +AND (( +SELECT count(res_id) +FROM listinstance +WHERE res_view_letterbox.res_id = res_id +AND difflist_type = 'AVIS_CIRCUIT' +AND process_date is NULL) != 0) +~~~ + +#### **<span style="color: #033d77">Avis à émettre** +~~~ sql +status in ('COMPLD', 'EAVIS') AND ((res_id, @user) in +(SELECT res_id, item_id +FROM listinstance +WHERE difflist_type = 'AVIS_CIRCUIT' +AND process_date ISNULL +AND res_view_letterbox.res_id = res_id +order by listinstance_id asc limit 1)) +~~~ +#### **<span style="color: #033d77">Avis en attente de réponse** + +~~~ sql +status='EAVIS' and dest_user = @user_id +~~~ + -```status in ('ESIG', 'EVIS', 'ATT_MP') AND destination in (@my_entities)``` + +#### **<span style="color: #033d77">Courriers en visa à l’utilisateur dans une bannette spécifique** -# Non présent dans mon parapheur interne +Clause permettant de récupérer tous les courriers en cours de visa / signature d'un utilisateur spécifique dans une bannette attribuable à un groupe (plusieurs utilisateurs). Ceci permet la relecture du courrier par un service/groupe de personne lors d'un circuit de visa. -```status in ('ESIG', 'EVIS', 'ATT_MP')``` -```AND res_id in (``` -```SELECT res_id FROM listinstance``` -```WHERE (item_id = @user_id and process_date is not null and difflist_type = 'VISA_CIRCUIT' ``` ```AND destination in (@my_entities))``` -```OR (item_id != @user_id and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities))``` -```)``` +**Contexte client :** -Clause de tout les courriers en cours de visa/signature dans mon service pour lequel j'ai déjà visé le courrier ou pour lequel je ne suis pas dans le circuit de visa/signature +En tant qu’assistant(e) du service courrier, le client souhaite vérifier la bonne application de la charte du courrier à viser après le visa par le manager avant que celui ci poursuivre son circuit de visa dans les niveaux supérieurs. -# Explication de la clause : + -```(item_id = @user_id and process_date is not null and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities)) :``` Courrier que j'ai visé +~~~ sql +status in ('ESIG', 'EVIS') +AND ((res_id, 780) +IN (SELECT res_id, item_id FROM listinstance +WHERE difflist_type = 'VISA_CIRCUIT' +AND process_date ISNULL +AND res_view_letterbox.res_id = res_id +order by listinstance_id asc limit 1)) +~~~ - +**Explication de la clause :** -```item_id = @user_id :``` Je fais partie du circuit du courrier +```status in ('ESIG', 'EVIS') :``` courrier au statut EVIS / ESIG -```process_date is not null :``` Date de signature non renseigné +```(res_id, 780) :``` identifiant du compte utilisateur utilisé comme viseur dans le circuit ```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis -```AND destination in (@my_entities):``` Le circuit est à destination de mon service - - +```process_date is null :``` Date de signature non renseigné -```(item_id != @user_id and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities)) :``` Courrier que pour lequel je ne suis pas dans le circuit de visa et en cours de visa dans mon service +#### **<span style="color: #033d77">Bannette A viser dont le viseur en attente fait partie de l'une des entités** -## Courrier dont le viseur / signataire actuelle est de mon entité primaire +~~~ sql +res_id IN (SELECT list1.res_id FROM listinstance as list1 LEFT JOIN (SELECT list_lj.* FROM listinstance as list_lj WHERE list_lj.difflist_type = 'VISA_CIRCUIT' AND list_lj.process_date IS NULL AND list_lj.res_id = res_view_letterbox.res_id ORDER BY list_lj.listinstance_id asc LIMIT 1) as list2 ON list1.listinstance_id = list2.listinstance_id WHERE list2.requested_signature = false AND list2.item_id IN (SELECT user_id FROM users_entities WHERE entity_id in(@my_entities))) +~~~ -Clause permettant de récupérer tout les courriers en cours de visa / signature dont le membre du circuit actuel fait partie de mon entité. +#### **<span style="color: #033d77">Bannette de consultation "Documents déjà visés"** -**Cas client** : En tant qu'assistante de direction je sou[]([url](url))haite voir tout les courriers à parapher par mon directeur. (permet de viser / signer en lieu et place de son directeur sans délégation) +~~~ sql +res_id in (Select res_id from listinstance where item_id = @user_id and process_date is not null and difflist_type = 'VISA_CIRCUIT') +~~~ +En ce qui concerne la clause de la bannette : -```((status in ('EVIS','ESIG'))``` -```AND res_id in``` -```(select t.res_id from (SELECT res_id, item_id FROM listinstance``` -```WHERE item_mode in('visa','sign')``` -```AND difflist_type = 'VISA_CIRCUIT'``` -```AND process_date ISNULL AND res_view_letterbox.res_id = res_id ORDER BY sequence ASC LIMIT 1) t``` -```WHERE t.item_id IN (SELECT user_id FROM users_entities WHERE entity_id = @my_primary_entity)))``` +Si l'on veut ajouter "non clos" il faut ajouté : ```< and status != 'END' >``` +Si l'on veut pas des courriers "supprimé" il faut ajouté : ```and status <> ('DEL')``` -# Explication de la clause : -```((status in ('EVIS','ESIG')) :``` courrier au statut EVIS / ESIG +#### **<span style="color: #033d77">Bannette Courriers en circulation dans les parapheurs électroniques non présent dans ma bannette courrier à viser** -```item_mode in('visa','sign') AND difflist_type = 'VISA_CIRCUIT' AND process_date ISNULL AND res_view_letterbox.res_id = res_id ORDER BY sequence ASC LIMIT 1) :``` Courrier pour lesquels l'utilisateur en cours est signature ou viseur qui sont des circuits de visa. Ordonné de manière croissante +~~~ sql +status in ('ESIG', 'EVIS', 'ATT_MP') and res_id in (Select res_id from listinstance where (item_id = @user_id and process_date is not null and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities))OR(item_id != @user_id and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities))) +~~~ - ```WHERE t.item_id IN (SELECT user_id FROM users_entities WHERE entity_id = @my_primary_entity))) :``` Pour lesquels l'utilisateur en cours est de mon entité primaire +#### **<span style="color: #033d77">Bannette Courriers à viser dont le viseur en attente fait partie de l'une de mes entités** - # Variante +~~~sql +res_id IN (SELECT list1.res_id FROM listinstance as list1 LEFT JOIN (SELECT list_lj.* FROM listinstance as list_lj WHERE list_lj.difflist_type = 'VISA_CIRCUIT' AND list_lj.process_date IS NULL AND list_lj.res_id = res_view_letterbox.res_id ORDER BY list_lj.listinstance_id asc LIMIT 1) as list2 ON list1.listinstance_id = list2.listinstance_id WHERE list2.requested_signature = false AND list2.item_id IN (SELECT user_id FROM users_entities WHERE entity_id in(@my_entities))) +~~~ - ```WHERE t.item_id IN (SELECT user_id FROM users_entities WHERE destination in (@my_entities))))):``` Pour lesquels l'utilisateur en cours appartient à l'une de mes entités +#### **<span style="color: #033d77">Bannette Courriers visés/signés prêts à être envoyés** +~~~ sql +status='EENV' and dest_user = @user_id +~~~ - ### Conditions d'apparition d'action usuelles -## Condition sur le nombre d'utilisateurs restant dans un circuit de visa +#### **<span style="color: #033d77">Bannette Courrier rejeté par le parapheur** -```res_id in (``` - ```SELECT res_id FROM listinstance li``` - ```WHERE res_view_letterbox.res_id = li.res_id``` - ```AND difflist_type = 'VISA_CIRCUIT'``` - ```AND process_date ISNULL``` - ```GROUP BY res_id``` - ```HAVING count(res_id) > 1``` -``` ) ``` -Changer la dernière condition pour changer la condition sur le nombre. Ici : “> 1†soit tout sauf dernier viseur. +~~~ sql +status='REJ_SIGN' and dest_user = @user_id +~~~ -Si cette clause est paramétrée pour une action, l'action n'apparaît que si l'utilisateur N'EST PAS le dernier viseur. - +## Bannette de Courriers en copie -Pour que l'action apparaisse seulement pour le dernier viseur (souvent signataire), reprendre l'ensemble de la cause en modifiant la dernière ligne telle que : +#### **<span style="color: #033d77">Bannette Courriers en copie non clos ou sans suite** -```HAVING count(res_id) = 1``` +~~~ sql +(res_id in (select res_id from listinstance WHERE item_type = 'user_id' and item_id = @user_id and item_mode = 'cc') or res_id in (select res_id from listinstance WHERE item_type = 'entity_id' and item_mode = 'cc' and item_id in (@my_entities_id))) and status not in ( 'DEL', 'END', 'SSUITE') and res_id not in (select res_id from res_mark_as_read WHERE user_id = @user_id) +~~~ -# Condition sur le premier viseur : +#### **<span style="color: #033d77">Bannette Copies pour information lues** -L'action n’apparaît pas si je suis le premier viseur +~~~ sql +(res_id in (select res_id from listinstance WHERE item_type = 'user_id' and item_id = @user_id and item_mode = 'cc') or res_id in (select res_id from listinstance WHERE item_type = 'entity_id' and item_mode = 'cc' and item_id in (@my_entities_id))) +~~~ -```res_id in (``` -```SELECT res_id``` -```FROM listinstance``` -```WHERE difflist_type='VISA_CIRCUIT'``` -```AND item_id = @user_id``` -```AND process_date is null``` -```AND sequence > 0``` -```)``` +#### **<span style="color: #033d77">Bannette Courriers en copie clos** -**Explication de la clause :** +~~~ sql +(res_id in (select res_id from listinstance WHERE item_type = 'user_id' and item_id = @user_id and item_mode = 'cc') or res_id in (select res_id from listinstance WHERE item_type = 'entity_id' and item_mode = 'cc' and item_id in (@my_entities_id))) and status in ( 'END') and res_id not in (select res_id from res_mark_as_read WHERE user_id = @user_id) +~~~ -```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis +## Bannette Accusé de réception -```item_id = @user_id :``` Je fais partie du circuit du courrier +#### **<span style="color: #033d77">Bannette AR en masse transmis** -```process_date is null :``` Date de signature non renseigné +~~~ sql +dest_user = @user_id AND ((res_id IN(SELECT distinct res_id FROM acknowledgement_receipts WHERE creation_date is not null AND send_date is not null) and status not in ('END')) OR res_id IN (SELECT distinct res_id FROM acknowledgement_receipts WHERE creation_date is not null AND send_date is null )) +~~~ -**sequence > 0 :** Tous les membres du circuit sauf le premier +#### **<span style="color: #033d77">Bannette AR non envoyés** -# Condition sur le statut du prochain viseur +~~~ sql +dest_user = @user_id AND res_id NOT IN(select distinct res_id from acknowledgement_receipts) and status not in ('END') and category_id = 'incoming' -```res_id in (``` - ```SELECT res_id FROM listinstance li``` - ```WHERE li.listinstance_id in (``` - ```SELECT MIN(listinstance_id) + 1 FROM listinstance``` - ```WHERE listinstance.res_id = res_view_letterbox.res_id``` - ```AND difflist_type = 'VISA_CIRCUIT'``` - ```AND process_date ISNULL)``` - ```AND requested_signature``` -```)``` +## Bannette de visa/signature +**Utilité** : -# Condition d'action sur le dernier utilisateur au statut viseur : -L'action n’apparaît que si je suis le dernier viseur - -```((res_id, @user_id) IN``` -```(SELECT res_id, item_idFROM listinstance``` -```WHERE difflist_type = 'VISA_CIRCUIT'``` -```AND process_date ISNULL``` -```AND item_mode = 'visa'``` -```AND res_view_letterbox.res_id = res_id``` -```AND sequence = (select max(sequence) FROM listinstance l``` -```WHERE res_view_letterbox.res_id = res_id``` -```AND item_mode = ('visa'))``` -```ORDER BY listinstance_id asc limit 1))``` +#### **<span style="color: #033d77">Courrier déjà visés** +Liste des courriers que j'ai déjà visé. +~~~ sql +res_id in + SELECT res_id FROM listinstance + WHERE item_id = @user_id + AND process_date is not null + AND difflist_type = 'VISA_CIRCUIT' +~~~ -**Explication de la clause (faites par Lionel) :** +**Explication de la clause :** +```item_id = @user_id :``` Je fais partie du circuit courrier +```process_date is not null :``` Date de signature non renseigné ```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis +Si vous souhaitez voir les courriers déjà visés et non clôturés ajouter ```status <> ‘END’``` -```item_mode = ‘visa’ :``` L'utilisateur est au statut “viseur"' - -```process_date is null :``` Date de signature non renseigné +## Bannette visa / signature -Variante : +#### **<span style="color: #033d77">Courrier de mon service en circuit de visa/signature** -item_mode = ‘sign’ : L'utilisateur est au statut “signataire"' +~~~ sql +status in ('ESIG', 'EVIS', 'ATT_MP') +AND destination in (@my_entities) +~~~ - +#### **<span style="color: #033d77">Non présent dans mon parapheur interne** -# Condition sur l'identité du prochain utilisateur dans le circuit de visa +~~~ sql +status in ('ESIG', 'EVIS', 'ATT_MP') +AND res_id in ( +SELECT res_id FROM listinstance +WHERE (item_id = @user_id AND process_date is not null AND difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities)) +OR +(item_id != @user_id AND difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities)) +) +~~~ -```res_id in (``` -```SELECT res_id FROM listinstance li``` -```WHERE li.listinstance_id in (``` -```SELECT MIN(listinstance_id) + 1 FROM listinstance``` -```WHERE listinstance.res_id = res_view_letterbox.res_id``` -```AND difflist_type = 'VISA_CIRCUIT'``` -```AND process_date ISNULL )``` -```AND item_id = '16'``` -```)``` +Clause de tout les courriers en cours de visa/signature dans mon service pour lequel j'ai déjà visé le courrier ou pour lequel je ne suis pas dans le circuit de visa/signature **Explication de la clause :** -```SELECT MIN(listinstance_id) + 1 FROM listinstance :``` L'utilisateur suivant dans le circuit - -```AND difflist_type = 'VISA_CIRCUIT' :``` C'est un circuit de visa - -```AND process_date ISNULL :``` Date de signature non renseigné +```(item_id = @user_id and process_date is not null and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities)) :``` Courrier que j'ai visé -```AND item_id = '16' :``` Identifiant du prochain utilisateur souhaité -# Condition sur l'utilisateur en cours au statut signataire ou viseur - - -```res_id in (``` -```SELECT res_id``` -```FROM listinstance``` -```WHERE difflist_type='VISA_CIRCUIT'``` -```AND item_id = @user_id``` -```AND process_date is null``` -```AND item_mode = 'visa'``` -```)``` +```item_id = @user_id :``` Je fais partie du circuit du courrier +```process_date is not null :``` Date de signature non renseigné ```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis -```item_mode = ‘visa’ :``` L'utilisateur est au statut “viseur"' - -```process_date is null :``` Date de signature non renseigné - -```Variante :``` - -```item_mode = ‘sign’ :``` L'utilisateur est au statut "signataire" - - - - -# Courriers en visa à l’utilisateur dans une bannette spécifique - -Clause permettant de récupérer tous les courriers en cours de visa / signature d'un utilisateur spécifique dans une bannette attribuable à un groupe (plusieurs utilisateurs). Ceci permet la relecture du courrier par un service/groupe de personne lors d'un circuit de visa. - -**Contexte client :** - -En tant qu’assistant(e) du service courrier, le client souhaite vérifier la bonne application de la charte du courrier à viser après le visa par le manager avant que celui ci poursuivre son circuit de visa dans les niveaux supérieurs. +```AND destination in (@my_entities):``` Le circuit est à destination de mon service -```status in ('ESIG', 'EVIS')``` -```AND ((res_id, 780)``` -```IN (SELECT res_id, item_id FROM listinstance``` -```WHERE difflist_type = 'VISA_CIRCUIT'``` -```and process_date ISNULL``` -```and res_view_letterbox.res_id = res_id``` -```order by listinstance_id asc limit 1))``` - -**Explication de la clause :** - -```status in ('ESIG', 'EVIS') :``` courrier au statut EVIS / ESIG - -```(res_id, 780) :``` identifiant du compte utilisateur utilisé comme viseur dans le circuit - -```difflist_type = 'VISA_CIRCUIT' :``` Le circuit est un circuit de visa et non d'avis - -```process_date is null :``` Date de signature non renseigné - -## Bannette A viser dont le viseur en attente fait partie de l'une des entités - -```res_id IN (SELECT list1.res_id FROM listinstance as list1 LEFT JOIN (SELECT list_lj.* FROM listinstance as list_lj WHERE list_lj.difflist_type = 'VISA_CIRCUIT' AND list_lj.process_date IS NULL AND list_lj.res_id = res_view_letterbox.res_id ORDER BY list_lj.listinstance_id asc LIMIT 1) as list2 ON list1.listinstance_id = list2.listinstance_id WHERE list2.requested_signature = false AND list2.item_id IN (SELECT user_id FROM users_entities WHERE entity_id in(@my_entities)))``` - -## Bannette de consultation "Documents déjà visés" - -```res_id in (Select res_id from listinstance where item_id = @user_id and process_date is not null and difflist_type = 'VISA_CIRCUIT')``` - -En ce qui concerne la clause de la bannette : - -Si l'on veut ajouter "non clos" il faut ajouté : ```< and status != 'END' >``` -Si l'on veut pas des courriers "supprimé" il faut ajouté : ```and status <> ('DEL')``` - - -## Bannette Courriers en circulation dans les parapheurs électroniques non présent dans ma bannette courrier à viser +```(item_id != @user_id and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities)) :``` Courrier que pour lequel je ne suis pas dans le circuit de visa et en cours de visa dans mon service -```status in ('ESIG', 'EVIS', 'ATT_MP') and res_id in (Select res_id from listinstance where (item_id = @user_id and process_date is not null and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities))OR(item_id != @user_id and difflist_type = 'VISA_CIRCUIT' AND destination in (@my_entities)))``` +#### **<span style="color: #033d77">Courrier dont le viseur / signataire actuelle est de mon entité primaire** -## Bannette Courriers à viser dont le viseur en attente fait partie de l'une de mes entités +Clause permettant de récupérer tout les courriers en cours de visa / signature dont le membre du circuit actuel fait partie de mon entité. -```res_id IN (SELECT list1.res_id FROM listinstance as list1 LEFT JOIN (SELECT list_lj.* FROM listinstance as list_lj WHERE list_lj.difflist_type = 'VISA_CIRCUIT' AND list_lj.process_date IS NULL AND list_lj.res_id = res_view_letterbox.res_id ORDER BY list_lj.listinstance_id asc LIMIT 1) as list2 ON list1.listinstance_id = list2.listinstance_id WHERE list2.requested_signature = false AND list2.item_id IN (SELECT user_id FROM users_entities WHERE entity_id in(@my_entities)))``` +**Cas client** : -## Bannette Courriers visés/signés prêts à être envoyés +En tant qu'assistante de direction je sou[]([url](url))haite voir tout les courriers à parapher par mon directeur. (permet de viser / signer en lieu et place de son directeur sans délégation) -```status='EENV' and dest_user = @user_id``` -## Bannette Courrier rejeté par le parapheur +~~~ sql +(status in ('EVIS','ESIG') +AND res_id in +(SELECT t.res_id FROM +(SELECT res_id, item_id FROM listinstance +WHERE item_mode in('visa','sign') +AND difflist_type = 'VISA_CIRCUIT' +AND process_date ISNULL +AND res_view_letterbox.res_id = res_id +ORDER BY sequence ASC LIMIT 1) t +WHERE t.item_id IN (SELECT user_id FROM users_entities WHERE entity_id = @my_primary_entity))) +~~~ -```status='REJ_SIGN' and dest_user = @user_id``` +**Explication de la clause :** -# Bannettes de Courriers en copie +```((status in ('EVIS','ESIG')) :``` courrier au statut EVIS / ESIG -## Bannette Courriers en copie non clos ou sans suite +```item_mode in('visa','sign') AND difflist_type = 'VISA_CIRCUIT' AND process_date ISNULL AND res_view_letterbox.res_id = res_id ORDER BY sequence ASC LIMIT 1) :``` Courrier pour lesquels l'utilisateur en cours est signature ou viseur qui sont des circuits de visa. Ordonné de manière croissante -```(res_id in (select res_id from listinstance WHERE item_type = 'user_id' and item_id = @user_id and item_mode = 'cc') or res_id in (select res_id from listinstance WHERE item_type = 'entity_id' and item_mode = 'cc' and item_id in (@my_entities_id))) and status not in ( 'DEL', 'END', 'SSUITE') and res_id not in (select res_id from res_mark_as_read WHERE user_id = @user_id)``` + ```WHERE t.item_id IN (SELECT user_id FROM users_entities WHERE entity_id = @my_primary_entity))) :``` Pour lesquels l'utilisateur en cours est de mon entité primaire -## Bannette Copies pour information lues +Variante : -```(res_id in (select res_id from listinstance WHERE item_type = 'user_id' and item_id = @user_id and item_mode = 'cc') or res_id in (select res_id from listinstance WHERE item_type = 'entity_id' and item_mode = 'cc' and item_id in (@my_entities_id)))``` +~~~ sql +WHERE t.item_id IN (SELECT user_id FROM users_entities WHERE destination in (@my_entities))))): +~~~ + Pour lesquels l'utilisateur en cours appartient à l'une de mes entités -## Bannette Courriers en copie clos -```(res_id in (select res_id from listinstance WHERE item_type = 'user_id' and item_id = @user_id and item_mode = 'cc') or res_id in (select res_id from listinstance WHERE item_type = 'entity_id' and item_mode = 'cc' and item_id in (@my_entities_id))) and status in ( 'END') and res_id not in (select res_id from res_mark_as_read WHERE user_id = @user_id)``` -# Bannettes Courriers clos +## Bannettes Courriers clos -## Bannette Tous les courriers clos depuis moins de 90 jours +#### **<span style="color: #033d77">Bannette Tous les courriers clos depuis moins de 90 jours** -```closing_date >= (current_date - 90)``` +~~~ sql +closing_date >= (current_date - 90) +~~~ Attention : Maarch Courrier n'accepte pas les formats de mots-clés inclus dans un sous-mots-clés (@subentities et @sisters_entities) -# Bannettes Accusé de réception - -## Bannette AR en masse transmis - -```dest_user = @user_id AND ((res_id IN(SELECT distinct res_id FROM acknowledgement_receipts WHERE creation_date is not null AND send_date is not null) and status not in ('END')) OR res_id IN (SELECT distinct res_id FROM acknowledgement_receipts WHERE creation_date is not null AND send_date is null ))``` - -## Bannette AR non envoyés - -```dest_user = @user_id AND res_id NOT IN(select distinct res_id from acknowledgement_receipts) and status not in ('END') and category_id = 'incoming'``` \ No newline at end of file diff --git a/Courrier/projet/comprehension.md b/Courrier/projet/comprehension.md index 9b3b1aa..8ef6472 100644 --- a/Courrier/projet/comprehension.md +++ b/Courrier/projet/comprehension.md @@ -23,7 +23,7 @@ La phase de compréhension du besoin se déroule en plusieurs ateliers de param - [Tickets techniques](https://forge.maarch.org/projects/projet-saas-projetclient-acc000/issues) -## <span style="color: #509fed"> Préparer les ateliers +## <span style="color: #033d77"> Préparer les ateliers 1. Vérifier la présence de l'instance pour le paramétrage @@ -35,7 +35,7 @@ La phase de compréhension du besoin se déroule en plusieurs ateliers de param 5. Après validation du calendrier, indiquer les **jalons dans le Notion** client -## <span style="color: #509fed"> Déroulé des ateliers : +## <span style="color: #033d77"> Déroulé des ateliers : Le contenu des ateliers est rappeler dans le [document de préparation au lancement](https://docs.google.com/document/d/1JuMlapsRxFcM8c5dWzxHRzie3kvhj09fqul5w5rJJ78/edit) . @@ -85,7 +85,7 @@ Envoyer un mail au client avec les éléments suivants : - Comptes à utiliser pour tester - Rattacher en PJ le CR -## <span style="color: #509fed"> Contenu des ateliers : +## <span style="color: #033d77"> Contenu des ateliers : ### Atelier 1 : Qualification et validation @@ -251,7 +251,7 @@ Questions génériques : A l'issue de l'atelier 3, le chef de projet envoie un ticket à l'équipe technique avec les éléments pour la configuration des connecteurs ([cf ticket d'exemple](https://forge.maarch.org/projects/projet-saas-projetclient-acc000/issues)) -## <span style="color: #509fed"> Fin des ateliers : +## <span style="color: #033d77"> Fin des ateliers : Documents à communiquer au client : -- GitLab