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