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

Contribuer au projet de part vos connaissances: PHP, HTML, CSS, SQL, JS ....
Répondre
Avatar du membre
cyrenot
Gsup LEVEL 4
Messages : 136
Enregistré le : jeu. 5 avr. 2018 12:04
Localisation : Schiltigheim

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 5919 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 ***
Fichiers joints
capture_2.zip
(164.8 Kio) Téléchargé 382 fois
capture_1.zip
(130.18 Kio) Téléchargé 386 fois
------------------------------
GestSup : 3.2.29
PHP : 8.1.13
MariaDB : 10.5.18-MariaDB (nom de la base: bsup)
Windows NT 10.0 build 14393 (Windows Server 2016) AMD64
Apache : 2.4.54.2, serveur sécurisé
sabrinac
Gsup LEVEL 3
Messages : 86
Enregistré le : mar. 25 avr. 2017 11:11

Bonjour,
Merci pour ce développement.
Il serait interessant qu'il soit intégré :)
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
Répondre