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 2018-03-15 17:51:12

Hiraclis
Member
Registered: 2015-12-04
Posts: 124

Rapport source de la demande en fonction du lieu

Bonjour,

Je cherche désespérément un moyen de créer un rapport (ou un fromage ce serait le top) qui m'affiche les "source de la demande" selon le "lieu" sélectionné .
J'utilise actuellement le plugin "Dashboard" (qui est soit en en passant est magnifique), mais je n'ai pas trouvé cette fonctionnalité, j'ai aussi installé le plugin "Plus de rapport" mais je n'ai pas trouvé non plus.... Et je n'ai rien trouvé à ce sujet sur les forums étant donnée que c'est assez spécifique comme demande.

Je m'en remet donc à vos lumières, en vous remerciant par avance de votre aide :-)


Version GLPI 9.3.3
FI 9.3+1.3
Dashboard 0.9.5, Rapports 1.11.3, Plus de rapports 1.5.3, Escalades 2.3.3, Comportements 2.1.1
Plateforme Windows Server 2012

Offline

#2 2018-03-16 13:03:34

bzh
Member
Registered: 2016-09-25
Posts: 417

Re: Rapport source de la demande en fonction du lieu

Question quand tu dit lieu veut tu dire un lieu = une entité ou un lieu physique (qui soit d'une même entité ) ?


Virtual Box \ Ubuntu 20.4  \ GLPI 9.5.3

Offline

#3 2018-03-16 13:24:38

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

Re: Rapport source de la demande en fonction du lieu

Bonjour,
le plugin reports permet de générer des tableaux avec ces informations.
il y a toutefois un peu de code à écrire pour créer chaque rapport, mais ensuite l'utilisation est simple.

si votre besoin est  ponctuel, une requête directement en sql dans phpmyadmin peut répondre.

select DISTINCT loc.name as lieu,rt.name as origine
from glpi_tickets AS ti
join glpi_locations as loc on loc.id=ti.locations_id
join glpi_requesttypes as rt on rt.id=ti.requesttypes_id


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#4 2018-03-19 16:01:51

Hiraclis
Member
Registered: 2015-12-04
Posts: 124

Re: Rapport source de la demande en fonction du lieu

bzh wrote:

Question quand tu dit lieu veut tu dire un lieu = une entité ou un lieu physique (qui soit d'une même entité ) ?

Bonjour bzh,

En, fait je n'ai qu'une seule entité "root", et dans cette entité, dans l'onglet "intitulé", j'ai des "lieux" et des "source de la demande"
Je souhaiterais qu'en fonction du lieu choisi, il m'affiche le pourcentage de source de demande, par exemple :

Lieux sélectionné : Bordeaux
Source de la demande : Téléphone, Mails, Helpdesk, Direct.

En fait dans le plugin "Dashboard", si on clique sur l'onglet "Graphique", puis "Tout" on peut voir que ce type de graphe est déjà présent, il se nomme "Tickets par origine" à la différence qu'au lieu que ce soit une date, je voudrais avoir les Tickets par Origine en fonction du lieu.

La Denrée,
Merci pour ta proposition, j'y connais pas grand chose en SQL, mais j’essayerais ta méthode si vraiment il n'y a pas d'autres solutions.


Version GLPI 9.3.3
FI 9.3+1.3
Dashboard 0.9.5, Rapports 1.11.3, Plus de rapports 1.5.3, Escalades 2.3.3, Comportements 2.1.1
Plateforme Windows Server 2012

Offline

#5 2018-03-19 17:12:31

bzh
Member
Registered: 2016-09-25
Posts: 417

Re: Rapport source de la demande en fonction du lieu

Hiraclis wrote:
bzh wrote:

Question quand tu dit lieu veut tu dire un lieu = une entité ou un lieu physique (qui soit d'une même entité ) ?

Bonjour bzh,

En, fait je n'ai qu'une seule entité "root", et dans cette entité, dans l'onglet "intitulé", j'ai des "lieux" et des "source de la demande"
Je souhaiterais qu'en fonction du lieu choisi, il m'affiche le pourcentage de source de demande, par exemple :

Lieux sélectionné : Bordeaux
Source de la demande : Téléphone, Mails, Helpdesk, Direct.

En fait dans le plugin "Dashboard", si on clique sur l'onglet "Graphique", puis "Tout" on peut voir que ce type de graphe est déjà présent, il se nomme "Tickets par origine" à la différence qu'au lieu que ce soit une date, je voudrais avoir les Tickets par Origine en fonction du lieu.

La Denrée,
Merci pour ta proposition, j'y connais pas grand chose en SQL, mais j’essayerais ta méthode si vraiment il n'y a pas d'autres solutions.


Hiraclis

Je ne pense pas trouver de meilleur réponse que LaDenrée !
Avec mes pitoyable base de sql je pense qu'il t'a écrit directement la requête dont tu as besoin !
Merci LaDenrée

Last edited by bzh (2018-03-19 17:13:40)


Virtual Box \ Ubuntu 20.4  \ GLPI 9.5.3

Offline

#6 2018-03-19 18:03:15

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

Re: Rapport source de la demande en fonction du lieu

pour faire les % il faut en plus ajouter à ma requete le nombre de tickets par type :

select loc.name as lieu,rt.name as origine,count(ti.id) AS NBRE
from glpi_tickets AS ti
join glpi_locations as loc on loc.id=ti.locations_id
join glpi_requesttypes as rt on rt.id=ti.requesttypes_id
GROUP BY lieu,origine

ce qui vous donne
BORDEAUX;helpdesk;800
BORDEAUX;telephone;2500
BORDEAUX;email;253


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#7 2018-03-20 13:29:18

Hiraclis
Member
Registered: 2015-12-04
Posts: 124

Re: Rapport source de la demande en fonction du lieu

Merci pour votre aide, malheureusement La Denrée, à part copier/coller votre requête et voir que le résultat donne bien ce que vous annoncez dans votre exemple, je ne sais comment exploiter ces données pour qu'ils aient meilleurs mine sur la génération d'un rapport (j'ai installé le plugin reports sinon, mais pareil je ne sais qu'en faire) :-(

Tant pis, je vais me rabattre sur du tableaux excel, merci quand même pour votre aide.


Version GLPI 9.3.3
FI 9.3+1.3
Dashboard 0.9.5, Rapports 1.11.3, Plus de rapports 1.5.3, Escalades 2.3.3, Comportements 2.1.1
Plateforme Windows Server 2012

Offline

#8 2018-03-20 15:28:10

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

Re: Rapport source de la demande en fonction du lieu

pour creer un rapport :

dans glpi/plugins/reports/report  creez un dossier sourceparlieu   (le nom est important et doit être le même partout dans la suite de ce tuto)

dans glpi/plugins/reports/report/sourceparlieu   

creer un fichier  sourceparlieu.fr_FR.php  qui contient :

<?php
/*	----------------------------------------------------------------------
 * @version $Id: sourceparlieu.fr_FR.php 198 2018-03-20 12:00:52Z ladenree $
 -------------------------------------------------------------------------
 reports - Additional reports plugin for GLPI
 Copyright (C) 2003-2011 by the reports Development Team.

 https://forge.indepnet.net/projects/reports
 -------------------------------------------------------------------------

 LICENSE

 This file is part of reports.

 reports is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 reports is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with reports. If not, see <http://www.gnu.org/licenses/>.
 --------------------------------------------------------------------------
*/

global $LANG;

$LANG['plugin_reports']['sourceparlieu']  = "Source de ticket par lieu";


?>

(c'est le titre du plugin dans la liste déroulante)

puis un fichier  sourceparlieu.php  qui contient :

<?php

//	Options for GLPI 0.71 and newer : need slave db to access the report
$USEDBREPLICATE         = 1;
$DBCONNECTION_REQUIRED  = 1;

// Initialization of the variables
define('GLPI_ROOT',  '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

//titre du rapport dans la liste de selection,  soit en dur ici, soit mettre à jour la variable dans les fichiers de traduction;
$report = new PluginReportsAutoReport($LANG['plugin_reports']['sourceparlieu']);

//Intitulés des colonnes :  nom de la colonne dans la requete sql et nom affiché sur le rapport à l'ecran ;

$cols = array(new PluginReportsColumn('lieu',"Lieu")
,new PluginReportsColumn('origine',"Source des tickets")
,new PluginReportsColumn('NBRE',"Nombre")
 );
   $report->setColumns($cols);

$query = "select loc.name as lieu,rt.name as origine,count(ti.id) AS NBRE
from glpi_tickets AS ti
join glpi_locations as loc on loc.id=ti.locations_id
join glpi_requesttypes as rt on rt.id=ti.requesttypes_id
GROUP BY lieu,origine ";

$report->setSqlRequest($query);
$report->setGroupBy('lieu');
$report->execute();

?>

Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#9 2018-03-20 15:30:17

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

Re: Rapport source de la demande en fonction du lieu

ensuite, dans configutation>plugins>rapports  donnez les droits en lecture à qui vous voulez.
rechargez votre profil pour rafraîchir les droits.

dans  outils>rapports> vous avez le rapport source des tickets par lieu. avec un beau tableau exportable en pdf, csv,...


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#10 2018-03-22 15:57:13

Hiraclis
Member
Registered: 2015-12-04
Posts: 124

Re: Rapport source de la demande en fonction du lieu

LaDenrée wrote:

ensuite, dans configutation>plugins>rapports  donnez les droits en lecture à qui vous voulez.
rechargez votre profil pour rafraîchir les droits.

dans  outils>rapports> vous avez le rapport source des tickets par lieu. avec un beau tableau exportable en pdf, csv,...


Wow génial ! ça fonctionne nickel, merci La Denrée !

Du coup... Au risque d'abuser de vos compétences, sauriez vous rajouter une fonction permettant de générer ce même rapport à une période donnée (par exemple du 01-01-2017 au 31-12-2017) ? Après pour le fromage je me débrouillerais sur Excel :-)


Version GLPI 9.3.3
FI 9.3+1.3
Dashboard 0.9.5, Rapports 1.11.3, Plus de rapports 1.5.3, Escalades 2.3.3, Comportements 2.1.1
Plateforme Windows Server 2012

Offline

#11 2018-03-22 17:49:04

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

Re: Rapport source de la demande en fonction du lieu

remplacez le contenu de   sourceparlieu.php par :

(attention après ça va devenir payant $$$)

<?php

//	Options for GLPI 0.71 and newer : need slave db to access the report
$USEDBREPLICATE         = 1;
$DBCONNECTION_REQUIRED  = 1;

// Initialization of the variables
define('GLPI_ROOT',  '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

//titre du rapport dans la liste de selection,  soit en dur ici, soit mettre à jour la variable dans les fichiers de traduction;
$report = new PluginReportsAutoReport($LANG['plugin_reports']['sourceparlieu']);

$date = new PluginReportsDateIntervalCriteria($report, 'ti.`date`','Plage (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('lieu',"Lieu")
,new PluginReportsColumn('origine',"Source des tickets")
,new PluginReportsColumn('NBRE',"Nombre")

                                                );
   $report->setColumns($cols);




$query = "select loc.name as lieu,rt.name as origine,count(ti.id) AS NBRE
from glpi_tickets AS ti
join glpi_locations as loc on loc.id=ti.locations_id
join glpi_requesttypes as rt on rt.id=ti.requesttypes_id
 Where ti.`is_deleted` = '0' AND ti.`date`>'" .$date->getStartDate() . " 00:00:00'  AND  ti.`date`<'" .$date->getEndDate() . " 23:59:59' 

GROUP BY lieu,origine ";




$report->setSqlRequest($query);
$report->setGroupBy('lieu');


$report->execute();

}
else {
   Html::footer();
}

Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#12 2018-03-26 11:23:36

Hiraclis
Member
Registered: 2015-12-04
Posts: 124

Re: Rapport source de la demande en fonction du lieu

LaDenrée wrote:

remplacez le contenu de   sourceparlieu.php par :

(attention après ça va devenir payant $$$)

<?php

//	Options for GLPI 0.71 and newer : need slave db to access the report
$USEDBREPLICATE         = 1;
$DBCONNECTION_REQUIRED  = 1;

// Initialization of the variables
define('GLPI_ROOT',  '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

//titre du rapport dans la liste de selection,  soit en dur ici, soit mettre à jour la variable dans les fichiers de traduction;
$report = new PluginReportsAutoReport($LANG['plugin_reports']['sourceparlieu']);

$date = new PluginReportsDateIntervalCriteria($report, 'ti.`date`','Plage (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('lieu',"Lieu")
,new PluginReportsColumn('origine',"Source des tickets")
,new PluginReportsColumn('NBRE',"Nombre")

                                                );
   $report->setColumns($cols);




$query = "select loc.name as lieu,rt.name as origine,count(ti.id) AS NBRE
from glpi_tickets AS ti
join glpi_locations as loc on loc.id=ti.locations_id
join glpi_requesttypes as rt on rt.id=ti.requesttypes_id
 Where ti.`is_deleted` = '0' AND ti.`date`>'" .$date->getStartDate() . " 00:00:00'  AND  ti.`date`<'" .$date->getEndDate() . " 23:59:59' 

GROUP BY lieu,origine ";




$report->setSqlRequest($query);
$report->setGroupBy('lieu');


$report->execute();

}
else {
   Html::footer();
}

Oui ;-) merci beaucoup LaDenrée, je veux bien vous faire un don, mais j'ai pas trouvé comment. En tout cas ça marche nickel ! Me reste plus qu'à mettre ça sur un fromage à la sauce highcharts et ce sera parfait.


Version GLPI 9.3.3
FI 9.3+1.3
Dashboard 0.9.5, Rapports 1.11.3, Plus de rapports 1.5.3, Escalades 2.3.3, Comportements 2.1.1
Plateforme Windows Server 2012

Offline

#13 2021-06-17 11:25:44

nguelpa
Member
Registered: 2021-06-14
Posts: 6

Re: Rapport source de la demande en fonction du lieu

Je cherche a faire un peu la meme chose avec une requete SQL differente j'ai suivi ce qui est ecrit dans ce post je comprend pas pourquoi mon code fonctionne pas :

mon tempsparclient.php:

<?php

$USEDBREPLICATE         = 1;
$DBCONNECTION_REQUIRED  = 1;

// Initialization of the variables
define('GLPI_ROOT',  '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

//titre du rapport dans la liste de selection,  soit en dur ici, soit mettre à jour la variable dans les fichiers de traduction;
$report = new PluginReportsAutoReport($LANG['plugin_reports']['temps par client']);



//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('nom',"nom")
,new PluginReportsColumn('temps',"temps")
,new PluginReportsColumn('mois',"mois")
,new PluginReportsColumn('annee',"annee")
 );
   $report->setColumns($cols);

$query = "SELECT e.name as nom, sec_to_time(sum(tt.actiontime)) as temps, month(tt.date) as mois, year(tt.date) as annee
FROM glpi_tickettasks tt, glpi_tickets t, glpi_entities e
WHERE tt.tickets_id = t.id AND t.entities_id = e.id  
group by nom, an, mois";

$report->setSqlRequest($query);
$report->setGroupBy('nom');
$report->execute();

?>

une fois le rapport choisi dans glpi ça m'affiche "aucun élément trouvé", j'ai testé ma requete sql elle fonctionne bien pourtant.

merci smile

Last edited by nguelpa (2021-06-17 11:33:56)


En stage GLPI 9.5.5

Offline

#14 2021-06-17 13:17:07

nguelpa
Member
Registered: 2021-06-14
Posts: 6

Re: Rapport source de la demande en fonction du lieu

j’ai résolu c'est mes variables an et annee dans ma requête faut les appelé les deux pareil smile ça fait un moment que je bloque c'était si bête sad

je laisse si quelqu'un veut un rapport de temps de taches par client par mois smile

prochaine étape rajouter le choix du client en liste deroulante


En stage GLPI 9.5.5

Offline

#15 2021-06-17 17:57:38

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

Re: Rapport source de la demande en fonction du lieu

pour le dropdown essayez ça :

<?php
//	Options for GLPI 0.71 and newer : need slave db to access the report
$USEDBREPLICATE         = 1;
$DBCONNECTION_REQUIRED  = 1;

// Initialization of the variables
define('GLPI_ROOT',  '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

//titre du rapport dans la liste de selection,  soit en dur ici, soit mettre à jour la variable dans les fichiers de traduction;
$report = new PluginReportsAutoReport($LANG['plugin_reports']['temps par client']);

$entity = new PluginReportsDropdownCriteria($report, 't.entities_id', 'glpi_entities', __('Entity'));

//Display criterias form is needed
$report->displayCriteriasForm();
//If criterias have been validated
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('nom',"nom")
,new PluginReportsColumn('temps',"temps")
,new PluginReportsColumn('mois',"mois")
,new PluginReportsColumn('an',"annee")
 );
   $report->setColumns($cols);

$query = "SELECT e.name as nom, sec_to_time(sum(tt.actiontime)) as temps, month(tt.date) as mois, year(tt.date) as an
FROM glpi_tickettasks tt, glpi_tickets t, glpi_entities e
WHERE tt.tickets_id = t.id AND t.entities_id = e.id  ".$entity->getSqlCriteriasRestriction('AND')."
group by nom, an, mois";

$report->setSqlRequest($query);
$report->setGroupBy('nom');
$report->execute();
}
else {
   Html::footer();
}

?>

Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#16 2021-06-22 17:02:02

nguelpa
Member
Registered: 2021-06-14
Posts: 6

Re: Rapport source de la demande en fonction du lieu

Parfait merci !


En stage GLPI 9.5.5

Offline

Board footer

Powered by FluxBB