Skip to content
Snippets Groups Projects
Commit 55e7e765 authored by sarah.bazin's avatar sarah.bazin
Browse files

Update 3 files

- /Courrier/1001/clausesapparition.md
- /Courrier/1001/clausesbannettes.md
- /Courrier/projet/comprehension.md
parent 356d20c8
No related branches found
No related tags found
1 merge request!14Mise à jour arborescence
# 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
~~~
# 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
......@@ -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 :
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment