You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2019-11-27 10:37:08

Sico31
Member
Registered: 2018-09-24
Posts: 596

[FORMCREATOR] - champ content & statistiques

Bonjour,

Nous mettons en place un ensemble de formulaires (13 à ce jour) pour gérer les mouvements du personnel.
A terme, certaines direction souhaitent pouvoir faire des stats sur ces mouvements ; stats sous forme de rapport BO, donc lié à un univers GLPI.

Les stats vont bien évidemment s'appuyer sur le contenu du ticket renseigner via les champs du formulaire.
Le problème étant que cela est difficilement exploitable dans la mesure ou le champ content  embarque aussi les balises HTML et l'encodage.
exple partiel du champ content :

4) Service : </strong>Service études accompagnement et projets</div><div><strong>5) Contact référent : </strong>0</div><div><strong>6) Type de changement : </strong>Site géographique</div><div><strong>7) Ancien site géographique : </strong>Astel</div><div><strong>8) Nouveau site géographique : </strong>Siege</div><div><strong>

J'avais pensé utiliser la balise <div style="visibility: hidden"> et mettre les champs qui m’intéressent pour les stats avec un séparateur identifié pour extraire mes données en SQL. Ainsi les données n'apparaissent pas en doublon dans le ticket
Cela fonctionne, je ne vois pas la "saisie", mais les valeurs des champs restent sous la forme de balises ##answer1## et pas avec la valeur renseignée.

Je pourrai aussi créer un autre destinataire, donc un second ticket, accessible qu'à moi avec des données non formatées ; mais avoir des doublons de tickets, c'est pas terrible et ill faudrait aussi pour ne pas fausser les stats cloturer les tickets doublon en même temps que le ticket principal. Sachant qu'en 3 jours de test il y a déjà 15 tickets ...

Auriez vous une idée pour pouvoir traiter les données, les extraire proprement en SQL ?
Merci à vous et excellente journée


Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !

Offline

#2 2019-11-27 11:09:15

btry
Moderator
Registered: 2015-10-01
Posts: 591

Re: [FORMCREATOR] - champ content & statistiques

Bonjour

Les données saisies sont enregistrées dans la table glpi_plugin_formcreator_answers et sont conservées après génération des tickets. Cela devrait être plus pratique pour vous.

Il devrait également y avoir possibilité de récupérer ces données via l'API REST ou XXMLRPC de GLPI. Le plugin n'est pas officiellement compatible avec ces API, mais cela se résout à mesure qu'on trouve les incompatibilités.


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#3 2019-11-27 18:29:44

Sico31
Member
Registered: 2018-09-24
Posts: 596

Re: [FORMCREATOR] - champ content & statistiques

Super merci, c'est effectivement plus clair
Puis-je avoir une precision sur les liens entre les tables et le tickets afin de construire une requete SQL qui me remonte toutes les infos de cette table dans mon ticket ?
Merci


Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !

Offline

#4 2019-11-27 22:30:22

btry
Moderator
Registered: 2015-10-01
Posts: 591

Re: [FORMCREATOR] - champ content & statistiques

Le lien entre un  ticket généré et une réponse à un formulaire peut être établi en regardant la table glpi_items_tickets. Cette table modélise la relation entre les tickets et divers itemtypes, dont PluginFormcreatorFormAnswer. A partir de ce dernier itemtype, vous pourrez chercher dans la table glpi_plugin_formcreator_answers les entrées ayant une clé étrangère vers l'entrée de PluginFormcreatorFormAnswer.


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#5 2019-11-28 09:31:44

Sico31
Member
Registered: 2018-09-24
Posts: 596

Re: [FORMCREATOR] - champ content & statistiques

Merci smile et bon courage pour l'amélioration et les corrections de la future version


Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !

Offline

#6 2019-11-28 17:02:56

Sico31
Member
Registered: 2018-09-24
Posts: 596

Re: [FORMCREATOR] - champ content & statistiques

si jamais cela intéresse d'autres, voici la requête qui me permet de récupérer els infos désirées.
Certains champs sont renseignés via des listes déroulantes créées par le plugin fiels (il faut donc adapter à votre table).
La recherche des intitulés de champ est bien sur à adapter à vos formulaires.

select t.id as ticket_id,
	t.date as date_creation,
        t.solvedate as date_cloture,
	t.name as ticket,
        fma.name type_GMP,
        concat(u.firstname,' ',u.realname) as demandeur,
/* DIRECTION*/
	(select fdir.name 
		from glpi.glpi_plugin_fields_directionfielddropdowns fdir
			left join glpi.glpi_plugin_formcreator_answers fa on fdir.id=fa.answer
			left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id 
		where fq.name like '%direction%' 
			and fa.plugin_formcreator_formanswers_id=fma.id
	) as direction,
/* SERVICE */
	(select fserv.name 
		from glpi.glpi_plugin_fields_servicesfielddropdowns fserv
			left join glpi.glpi_plugin_formcreator_answers fa on fserv.id=fa.answer
			left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id 
		where fq.name like '%Service%' 
			and fa.plugin_formcreator_formanswers_id=fma.id
	) as service,
/* Type de contrat */
    (select fa.answer 
		from glpi.glpi_plugin_formcreator_answers fa
			left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id  
        where fq.name like '%type de contrat%'
			and fa.plugin_formcreator_formanswers_id=fma.id
	) as contrat,
/* Debut de contrat */
	(select fa.answer 
	from glpi.glpi_plugin_formcreator_answers fa
		left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id  
	where (fq.name like '%début de contrat%' or fq.name like '%date%arrivée%')
		and fa.plugin_formcreator_formanswers_id=fma.id
	) as deb_contrat,
/* fin de contrat */
	(select fa.answer 
	from glpi.glpi_plugin_formcreator_answers fa
		left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id  
	where (fq.name like '%fin de contrat%' or fq.name like '%date de départ%')
		and fa.plugin_formcreator_formanswers_id=fma.id
	) as fin_contrat,
/* Site géographique arrivée*/	
	(select fsitegeo.name 
		from glpi.glpi_plugin_fields_sitegographiquefielddropdowns fsitegeo
			left join glpi.glpi_plugin_formcreator_answers fa on fsitegeo.id=fa.answer
			left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id 
		where (fq.name like 'nouveau site géographique%' or fq.name like 'site géographique%')
			and fa.plugin_formcreator_formanswers_id=fma.id
	) as site_geo_arrivee,
/* Site géographique départ*/	
	(select fsitegeo.name 
		from glpi.glpi_plugin_fields_sitegographiquefielddropdowns fsitegeo
			left join glpi.glpi_plugin_formcreator_answers fa on fsitegeo.id=fa.answer
			left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id 
		where (fq.name like 'ancien site géographique%') -- or fq.name like 'site géographique%')
			and fa.plugin_formcreator_formanswers_id=fma.id
	) as ancien_site_geo,
/* demenagement */
	(select fa.answer 
	from glpi.glpi_plugin_formcreator_answers fa
		left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id  
	where (fq.name like '%type de changement%')
		and fa.plugin_formcreator_formanswers_id=fma.id
	) as type_demenagement,
/* badges */
	(select fa.answer 
	from glpi.glpi_plugin_formcreator_answers fa
		left join glpi.glpi_plugin_formcreator_questions fq on fa.plugin_formcreator_questions_id=fq.id  
	where (fq.name like '%badge%')
		and fa.plugin_formcreator_formanswers_id=fma.id
	) as badge	
from glpi.glpi_tickets t
	left join glpi.glpi_items_tickets it on it.tickets_id=t.id
	left join glpi.glpi_plugin_formcreator_formanswers fma on fma.id=it.items_id
	left join glpi.glpi_users u on u.id=fma.requester_id
    left join glpi.glpi_plugin_formcreator_answers fa on fa.plugin_formcreator_formanswers_id=fma.id 
where t.entities_id=1
	and it.itemtype='PluginFormcreatorFormAnswer'
    and t.is_deleted=0
    group by ticket_id
    ;

Possible que cette requête SQL puisse être optimisée ; pour le moment, elle fait le taf smile


Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !

Offline

Board footer

Powered by FluxBB