You are not logged in.
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
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
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
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
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
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
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
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
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
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
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
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
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
Last edited by nguelpa (2021-06-17 11:33:56)
En stage GLPI 9.5.5
Offline
j’ai résolu c'est mes variables an et annee dans ma requête faut les appelé les deux pareil ça fait un moment que je bloque c'était si bête
je laisse si quelqu'un veut un rapport de temps de taches par client par mois
prochaine étape rajouter le choix du client en liste deroulante
En stage GLPI 9.5.5
Offline
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
Parfait merci !
En stage GLPI 9.5.5
Offline