Clause d'apparition d'action

Conditions d'apparition d'action usuelles

Condition sur le nombre d'utilisateurs restant dans un circuit de visa

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

Condition sur le premier viseur :

L'action n’apparaît pas si je suis le premier 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 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

Condition sur le statut du prochain viseur

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
)

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))

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"'

Condition sur l'identité du prochain utilisateur dans le circuit de visa

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é

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')

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

res_id in (SELECT li.res_id
FROM listinstance li
WHERE li.difflist_type = 'VISA_CIRCUIT'
  AND li.item_mode = 'visa'
  AND li.process_date IS NULL
  AND EXISTS (
      SELECT 1
      FROM listinstance next_li
      WHERE next_li.res_id = li.res_id
        AND next_li.item_mode = 'visa'
        AND next_li.sequence > li.sequence
 ))

Apparition de l'action pour le dernier viseur dans ce circuit de visa/signature

status <> 'PSIG' and res_id in (SELECT li.res_id
FROM listinstance li
WHERE li.difflist_type = 'VISA_CIRCUIT'
  AND li.item_mode = 'visa'
  AND li.process_date IS NULL
  AND NOT EXISTS (
      SELECT 1
      FROM listinstance prev_li
      WHERE prev_li.res_id = li.res_id
        AND prev_li.item_mode = 'visa'
        AND prev_li.sequence < li.sequence
        AND prev_li.process_date IS NULL
  )
  AND NOT EXISTS (
      SELECT 1
      FROM listinstance next_li
      WHERE next_li.res_id = li.res_id
        AND next_li.item_mode = 'visa'
        AND next_li.sequence > li.sequence
 ))

results matching ""

    No results matching ""