Page 1 sur 1

Mise à jour par défaut de la « date estimée » (SLA)

Posté : lun. 27 août 2018 12:36
par cyrenot
Table des matières

1 Mise en place du SLA
1.1 Objectif
1.2 Table à créer : « tsla »
1.3 Définition des triggers


1 Mise en place du SLA
1.1 Objectif
L’objectif est de mettre une valeur par défaut dans le champs « Date de résolution estimée » qui sera déterminée en fonction de 3 paramètres :
SNAG-0001.png
SNAG-0001.png (2.28 Kio) Vu 5920 fois
1. Le type de ticket
2. La catégorie
3. La sous-catégorie

1.2 Table à créer : « tsla »
La table tsla contient la liste des SLA à appliquer. Les valeurs saisies correspondent aux indexes (ID) des tables ttypes, tcategory et tsubcat.
Description technique de la table :
Voir image dans capture_1.zip - SNAG-0002
Voir image dans capture_1.zip - SNAG-0003
Voir image dans capture_1.zip - SNAG-0004
* Comment lire le contenu de la table ?
Les « 0 » correspondent à une valeur non saisie dans le ticket.
Voir image dans capture_2.zip - SNAG-0005

Exemple de lecture de la table ci-dessus :
a. Si aucun type, category et sub_category renseigné, le SLA sera de 30 jours.
b. Si le ticket est de type « incident », la category renseignée est « 1 » et que la sub_category n’est pas renseignée, le SLA sera de 2 jours.
c. Si le ticket est de type « incident », la category renseignée est « 1 » et que la sub_category est « 14 », le SLA sera de 8 heures.

Si pas de valeur par défaut identifiée ('0' ; '0' ; '0'), la date estimée restera vide.

* Structure du fichier CSV pour importer les données en masse (table initialisée avec un fichier Excel)
id;type;category;sub_category;sla;sla_unit
1;0;0;0;30;DAY
2;4;0;0;2;DAY
3;4;1;0;2;DAY

* Paramètres d’import du fichier « SLA.csv »
Voir image dans capture_2.zip - SNAG-0006

1.3 Définition des triggers
2 triggers sur la table tincidents ont été créés afin de pouvoir mettre à jour la date de résolution estimée.
Voir image dans capture_2.zip - SNAG-0007

1. Avant insertion des données (-> initialisation de la date)

Code du trigger:

BEGIN
DECLARE v_time DECIMAL(4,1);
DECLARE v_type INT(5);
DECLARE v_cat INT(3);
DECLARE v_subcat INT(3);


# Check if type selected
IF (NEW.type > 0) THEN
SET v_type = NEW.type;
ELSE
SET v_type = 0;
END IF;

# Check if category selected
IF (NEW.category > 0) THEN
SET v_cat = NEW.category;
ELSE
SET v_cat = 0;
END IF;

# Check if sub-category selected
IF (NEW.subcat > 0) THEN
SET v_subcat = NEW.subcat;
ELSE
SET v_subcat = 0;
END IF;


# Retrieve SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat);

# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'HOUR' THEN

# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);

ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);

ELSE
# Retrieve default SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0);

# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'HOUR' THEN

# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);

ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
SET NEW.date_hope = 0 ;
END IF;
END IF;

END

2. Avant mise à jour des données (-> prise en compte d’un changement dans les paramètres)

Code du trigger:

BEGIN
DECLARE v_time DECIMAL(4,1);
DECLARE v_type INT(5);
DECLARE v_cat INT(3);
DECLARE v_subcat INT(3);


# Check if one update occured
IF NEW.type <> OLD.type
OR NEW.category <> OLD.category
OR NEW.subcat <> OLD.subcat
THEN

# Check if type selected
IF (NEW.type > 0) THEN
SET v_type = NEW.type;
ELSE
SET v_type = 0;
END IF;

# Check if category selected
IF (NEW.category > 0) THEN
SET v_cat = NEW.category;
ELSE
SET v_cat = 0;
END IF;

# Check if sub-category selected
IF (NEW.subcat > 0) THEN
SET v_subcat = NEW.subcat;
ELSE
SET v_subcat = 0;
END IF;


# Retrieve SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat);

# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'HOUR' THEN

# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);

ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);

ELSE
# Retrieve default SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0);

# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'HOUR' THEN

# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);

ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
SET NEW.date_hope = 0 ;
END IF;
END IF;
END IF;

END

*** FIN DE LA DOC ***

Re: Mise à jour par défaut de la « date estimée » (SLA)

Posté : mer. 5 sept. 2018 08:47
par sabrinac
Bonjour,
Merci pour ce développement.
Il serait interessant qu'il soit intégré :)