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 2024-10-10 11:30:05

Sam34
Member
Registered: 2023-10-27
Posts: 5

Pluguin reports : Rapport personnaliser / customs reports

Bonjour,

Je souhaiterais pouvoir générer des rapports assez simple : nombre de tickets "incident" entre deux dates et par lieu.
Pour cela je me suis naivement lancer avec le pluguin reports a vouloir faire un rapport custom en editant un fichier PHP.

Cependant je ne trouve aucune documentations pour me guider et ca me dépasse un peu (beaucoup). j'ai supposé qu'il me faudrait créer une requette sur la base de donnée dans la table glpi_tickets en filtrant que les "type" 1 que les "location_id" corresspant au lieu selectionné dans la table "glpi_locations" puis en flitrant par date.
Mais je n'ai aucune idée de comment rédiger cela dans un PHP et les si les autres fichiers PHP me donnent des indications je suis tres loin de comprendre le fonctionnement.

Quelqu'un aurai des conseils ou de l'aide a m'apporter? ou un lien vers une doc qui pourrait me guider?

Sam.

Offline

#2 2024-10-10 15:13:08

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,287

Re: Pluguin reports : Rapport personnaliser / customs reports

je vous propose un truc comme ça

<?php
/* ----------------------------------------------------------------------
* @version : incidentbylocation.php 2024-10-10 16:08:46 ladenree
/!\ le nom dudossier doit être identique au nom du fichier attention à la casse./!\
------------------------- glpi forum ----------- */
	$USEDBREPLICATE = 1;
	$DBCONNECTION_REQUIRED = 1;
// Initialization of the variables
	include ("../../../../inc/includes.php");
//titre du rapport dans la liste de selection, soit en dur ici, soit mettre a jour la variable dans les fichiers de traduction glpi/plugins/reports/locales/fr_FR.po puis compiler en mo  ;
//ajouter 2 lignes dans les fichiers de traduction :  "incidentbylocation_report_title"  et "incidentbylocation"
	$report = new PluginReportsAutoReport(__('incidentbylocation_report_title', 'reports'));
//critère de selection;
	$date = new PluginReportsDateIntervalCriteria($report, '`glpi_tickets`.`date`',"Periode(inclus) ");
	$report->displayCriteriasForm();
	if ($report->criteriasValidated()) {
//Intitulés des colonnes :  nom de la colonne dans la requete sql et nom affiché sur le rapport à l'ecran : mettre à jour la variable dans les fichiers de traduction;
	$cols = array(new PluginReportsColumn('NATURE',__('Type')),
              new PluginReportsColumn('LOCATION',__('Location')),
              new PluginReportsColumninteger('NBOUVERTURE',"Nbre Ouverture ")
	                                                );
	$report->setColumns($cols);

	$query = "SELECT  
			replace (replace(`glpi_tickets`.`type`,'".Ticket::INCIDENT_TYPE."','"._('Incident')."'),'".Ticket::DEMAND_TYPE."','".__('Request')."') AS NATURE,
			glpi_locations.name as LOCATION,
			count(`glpi_tickets`.`id`) AS NBOUVERTURE 
			FROM `glpi_tickets`  
			JOIN glpi_locations on glpi_locations.id= `glpi_tickets`.locations_id
			WHERE  `glpi_tickets`.`date`>'" .$date->getStartDate() . " 00:00:00'  AND `glpi_tickets`.`date`<'" .$date->getEndDate() . " 23:59:59' AND `glpi_tickets`.`is_deleted` = '0' ";

	$query .=" GROUP BY NATURE,LOCATION ";
	$report->setSqlRequest($query);
	$report->execute();
	}
	else {
   		Html::footer();
	}
?>

Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9

Offline

#3 2024-10-10 17:22:01

Sam34
Member
Registered: 2023-10-27
Posts: 5

Re: Pluguin reports : Rapport personnaliser / customs reports

Merci, mais alors vraiment un grand MERCI.

c'est exactement ce qu'il me fallait, en partant de la je vais pouvoir adapter pour les autres besoins donc c'est parfait.
Par contre pour une raison que je ne comprend pas cela ne fonctionne que en mode DEBUG actif, sinon le résultat est vide.

Une idée de ou cela peut il venir?

Offline

#4 2024-10-11 08:57:59

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,287

Re: Pluguin reports : Rapport personnaliser / customs reports

j'etais en mode debug quad j'ai écrit rapisement le rapport et ça marchait; je viens de tester en mode normal et ça bloque 

c'est la classe TICKET qui n'est pas trouvée  pourtant ça marchait il y a quelques versions, j'avais quelques rapports qui utilisaeint cette syntaxe et qui ne marchent plus

il faut remplacer  TICKET::INCIDENT_TYPE par sa valeur en dur ( cad  1 ) et TICKET::DEMAND_TYPE  par 2
ce qui donne 

replace (replace(`glpi_tickets`.`type`,'1','Incident'),'2','Demande') AS NATURE,


Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9

Offline

#5 2024-10-11 09:44:49

Sam34
Member
Registered: 2023-10-27
Posts: 5

Re: Pluguin reports : Rapport personnaliser / customs reports

Ca y est je suis amoureux !
Merci bcp ça marche parfaitement bien

Offline

#6 2024-10-11 14:26:21

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,287

Re: Pluguin reports : Rapport personnaliser / customs reports

j'ai trouvé pourquoi le code ne marchait plus : le nom de la classe est sensible à la casse il fallait écrire Ticket au lieu de TICKET (corrigé)


Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9

Offline

Board footer

Powered by FluxBB