Bonjour,
J'ai récemment implémenté une fonctionnalité similaire.
En voici le principe de fonctionnement.
Dans le cas où la validation de l’utilisateur est requise pour
Terminer un ticket, le technicien positionnera :
- La « Date de résolution » au jour de fin de ses actions
- Le statut à « Attente retour utilisateur »
- Ajoutera un commentaire pour demander la validation de fermeture du ticket à l’utilisateur.
Si avant 15 jours calendaire, l'utilisateur ou le technicien n'ont pas changé l'un des paramètres permettant la clôture automatique du ticket (date de résolution
et statut spécifique positionnés), celui-ci sera clos.
IMPORTANT :
Il est à noter que ni l’utilisateur, ni le technicien ne recevront de mail pour les informer de la clôture automatique d’un ou plusieurs tickets.
J'ai créé une table de log (tincidents_autoupdate) qui permet de suivre les tickets fermés automatiquement. Le suivi de ces tickets est fait dans une appli externe (Power BI Desktop) que nous utilisons pour nos indicateurs.
Description technique :
1. Création de la table
tincidents_autoupdate : voir script SQL en PJ
2. Avec un compte admin qui a les droits de planification de tâches dans PHPMYADMIN, créer un
événement dans la base de donnée
BSUP.
description de l'événment :
- SNAG-0000-10-09-2018_17.03.46.png (51.61 Kio) Vu 10832 fois
L’événement est lancé tous les jours, le matin.
Voici le code de l’événement :
BEGIN
DECLARE currID int;
DECLARE currDate_Res datetime;
# Create the tincidents_temp table to iterate
DROP TEMPORARY TABLE IF EXISTS tincidents_temp;
CREATE TEMPORARY TABLE tincidents_temp AS
SELECT id, date_res
FROM tincidents
WHERE state = 6
AND date_res <> 0
ORDER BY id DESC;
WHILE (SELECT COUNT(*) FROM tincidents_temp) > 0
DO
SELECT id, date_res FROM tincidents_temp LIMIT 1 INTO currID, currDate_Res;
# Search if the current ID can be set to "Terminer"
IF DATEDIFF( Now(), currDate_Res ) >= 15 THEN
UPDATE tincidents
SET state = 3
WHERE id = currID;
# Add/Update a record when auto-update has been done
IF ( SELECT COUNT(id) FROM tincidents_autoupdate WHERE id = currID ) = 1 THEN
UPDATE tincidents_autoupdate
SET date_upd = Now()
WHERE id = currID;
ELSE
INSERT INTO tincidents_autoupdate
VALUES (currID, Now() );
END IF;
END IF;
DELETE FROM tincidents_temp WHERE id = currID;
END WHILE;
DROP TEMPORARY TABLE IF EXISTS tincidents_temp;
END
Voilà, j'espère que cela pourra vous aider et vous conviendra.
Bien cordialement.