You are not logged in.
Pages: 1
Topic closed
Bonjour,
J'ai suivi cette discussion pour commencer à créer mon rapport personnalisé.
http://forum.glpi-project.org/viewtopic.php?id=157665
Cependant j'ai une erreur dans mon fichier php-error.log : "includeLocales(smg_report_title, reports) => not found"
Mon code, j'ai pourtant mis en dur "$report = new PluginReportsAutoReport("Statistiques consommables SMG");"
$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0;
// 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 à our la variable dans les fichiers de traduction;
$report = new PluginReportsAutoReport("Statistiques consommables SMG");
//dénition des colonnes de l'affichage;
$report->setColumns(array(new PluginReportsColumn('Nom',"Nom"), new PluginReportsColumn('Groupe', "Groupe"), new PluginReportsColumn('Total', "Total")));
$query="SELECT `glpi_consumableitems`.`name` AS Nom, `glpi_groups`.`name` AS Groupe, SUM(`glpi_infocoms`.`value`) AS Total
FROM `glpi_infocoms`
LEFT JOIN `glpi_consumables` ON `glpi_infocoms`.`items_id` = `glpi_consumables`.`id` LEFT JOIN `glpi_consumableitems` ON `glpi_consumables`.`consumableitems_id` = `glpi_consumableitems`.`id` LEFT JOIN `glpi_groups` ON `glpi_consumables`.`items_id` = `glpi_groups`.`id` WHERE ( `glpi_infocoms`.`itemtype` = "Consumable") AND ( `glpi_consumables`.`date_out` > "2018-01-01") AND (`glpi_consumables`.`date_out` < "2018-12-31")
GROUP BY `glpi_groups`.`name` ASC, `glpi_consumableitems`.`name` DESC";
$report->setGroupBy('Nom');
$report->setSqlRequest($query);
$report->execute();
Html::footer();
Merci pour votre aide.
GLPI Prod 9.3.2 / FI 9.3+1.3 / Ubuntu 16.04.5 LTS / PHP 7.0.33
GLPI Test 9.4.0 / FI 9.4.0+1.0 / Ubuntu 16.04.5 LTS / PHP 7.0.33
Offline
avez vous tout de même créé le fichier xxx.fr_FR.php ?
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
Bonjour,
Oui finalement en créant ce fichier c'est résolu cependant j'ai un souci ma requête fonctionne sous Phpmyadmin mais pas quand j'exécute le rapport il m'affiche "Pas d'élément trouvé".
J'ai changé ma requête par une autre et ça fonctionne...
Mon code :
<?php
$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0;
// 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("Historiques consommables SMG");
$report->setColumns(array(new PluginReportsColumn(`Consommable`,"Consommable"), new PluginReportsColumn(`Direction`,"Direction"), new PluginReportsColumn(`Total`,"Total")));
$query="SELECT `glpi_consumableitems`.`name` AS Consommable, `glpi_groups`.`name` AS Direction, SUM(`glpi_infocoms`.`value`) AS Total
FROM `glpi_infocoms`
LEFT JOIN `glpi_consumables` ON `glpi_infocoms`.`items_id` = `glpi_consumables`.`id`
LEFT JOIN `glpi_consumableitems` ON `glpi_consumables`.`consumableitems_id` = `glpi_consumableitems`.`id`
LEFT JOIN `glpi_groups` ON `glpi_consumables`.`items_id` = `glpi_groups`.`id`
WHERE `glpi_infocoms`.`itemtype` = `Consumable'
AND `glpi_consumables`.`date_out` > `2018-01-01'
AND `glpi_consumables`.`date_out` < `2018-12-31'
GROUP BY `glpi_groups`.`name` ASC, `glpi_consumableitems`.`name` DESC";
$report->setGroupBy('Consommable');
$report->setSqlRequest($query);
$report->execute();
Html::footer();
Merci pour votre aide.
GLPI Prod 9.3.2 / FI 9.3+1.3 / Ubuntu 16.04.5 LTS / PHP 7.0.33
GLPI Test 9.4.0 / FI 9.4.0+1.0 / Ubuntu 16.04.5 LTS / PHP 7.0.33
Offline
C'est résolu c'était les apostrophes dans le setColumns -_-
Merci !
GLPI Prod 9.3.2 / FI 9.3+1.3 / Ubuntu 16.04.5 LTS / PHP 7.0.33
GLPI Test 9.4.0 / FI 9.4.0+1.0 / Ubuntu 16.04.5 LTS / PHP 7.0.33
Offline
Bonjour,
Petit souci sur mon code, j'ai recherché sur le forum et me suis aidé de divers discussions mais je bloque depuis ce matin sur une erreur...
<?php
//$NEEDED_ITEMS = array("search");
$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0;
//Initialisation des variables
define('GLPI_ROOT', '../../../..');
include (GLPI_ROOT . "/inc/includes.php");
//Titre du rapport
$report = new PluginReportsAutoReport("Historiques des consommables SMG");
$date = new PluginReportsDateIntervalCriteria($report, 'glpi_consumables`.`date_out`',"Periode(inclus) ");
$option= array(0 => 'Votre choix', 1 => 'Statistiques par consommable',2 => 'Statistiques par Direction');
$selection= new PluginReportsArrayCriteria($report,'statistiques','Critère de recherche',$option);
// Affichage des champs
$report->displayCriteriasForm();
//Définition des colonnes de l'affichage
$report->setColumns(array(new PluginReportsColumn('Consommable',"Consommable"), new PluginReportsColumn('Direction',"Direction"), new PluginReportsColumn('Cout',"Coût")));
//Requête à exécuter
$query="SELECT YEAR(`glpi_consumables`.`date_out`) as Annee,`glpi_consumableitems`.`name` AS Consommable, `glpi_groups`.`name` AS Direction, SUM(`glpi_infocoms`.`value`) AS Cout
FROM `glpi_infocoms`
LEFT JOIN `glpi_consumables` ON `glpi_infocoms`.`items_id` = `glpi_consumables`.`id`
LEFT JOIN `glpi_consumableitems` ON `glpi_consumables`.`consumableitems_id` = `glpi_consumableitems`.`id`
LEFT JOIN `glpi_groups` ON `glpi_consumables`.`items_id` = `glpi_groups`.`id`
WHERE 1=1
AND `glpi_infocoms`.`itemtype`='Consumable'
AND `glpi_consumables`.`date_out`>='" .$date->getStartDate() . " 00:00:00'
AND `glpi_consumables`.`date_out`<'" .$date->getEndDate() . " 23:59:59' ";
switch ($selection->getParameterValue()) {
//Statistiques par consommable
case 1:
$query .=" GROUP BY `glpi_groups`.`name` ASC, `glpi_consumableitems`.`name` DESC ";
break;
//Statistiques par Direction
case 2:
$query .=" GROUP BY `glpi_groups`.`name` ASC ";
break;
}
//Execution d'une recherche
if ($report->criteriasValidated()){
//Neutralise l'action de selection;
$selection->setsqlfield($selection->getParameterValue());
$query .= $report->addSqlCriteriasRestriction();
}
$report->setGroupBy('Consommable');
$report->setSqlRequest($query);
$report->execute();
Html::footer();
En mode debug je vois qu'il exécute bizarrement, il devrait s'arrêter au GROUP BY mais il répète les deux AND et le WHERE ^^' :
SELECT YEAR(`glpi_consumables`.`date_out`) as Annee,`glpi_consumableitems`.`name` AS Consommable, `glpi_groups`.`name` AS Direction, SUM(`glpi_infocoms`.`value`) AS Cout
FROM `glpi_infocoms`
LEFT JOIN `glpi_consumables` ON `glpi_infocoms`.`items_id` = `glpi_consumables`.`id`
LEFT JOIN `glpi_consumableitems` ON `glpi_consumables`.`consumableitems_id` = `glpi_consumableitems`.`id`
LEFT JOIN `glpi_groups` ON `glpi_consumables`.`items_id` = `glpi_groups`.`id`
WHERE 1=1
AND `glpi_infocoms`.`itemtype`='Consumable'
AND `glpi_consumables`.`date_out`>='2018-01-01 00:00:00'
AND `glpi_consumables`.`date_out`<'2018-12-31 23:59:59'
GROUP BY `glpi_groups`.`name` ASC, `glpi_consumableitems`.`name` DESC
AND (glpi_consumables`.`date_out`>= '2018-01-01 00:00:00'
AND glpi_consumables`.`date_out`<='2018-12-31 23:59:59' )
AND 1='1'
Erreur de syntaxe près de 'AND (glpi_consumables`.`date_out`>= '2018-01-01 00:00:00' AND glpi_consumables`.' à la ligne 9
Merci pour votre aide
GLPI Prod 9.3.2 / FI 9.3+1.3 / Ubuntu 16.04.5 LTS / PHP 7.0.33
GLPI Test 9.4.0 / FI 9.4.0+1.0 / Ubuntu 16.04.5 LTS / PHP 7.0.33
Offline
le group by doit être à la fin;
if ($report->criteriasValidated()){
//Neutralise l'action de selection;
$selection->setsqlfield($selection->getParameterValue());
$query .= $report->addSqlCriteriasRestriction();
}
$report->setGroupBy('Consommable');
$report->setSqlRequest($query);
dans votre if vous ajoutez un filtre OK
ensuite vous groupez ( quel que soit le resultat du test précédent car pas de else et c'est après le } )
ensuite vous ajoutez les critères de selection
je ne comprends pas bien le $query .= $report->addSqlCriteriasRestriction();
vous avez déjà ajouté dans votre requete les dates dans la creation de $query puis ajouté le group by dans le switch puis vous rajoutez les critères de selection???
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
Bonjour,
Merci ça a permis de résoudre mon problème.
J'ai enlevé également mon if qui ne servait à rien au final.
GLPI Prod 9.3.2 / FI 9.3+1.3 / Ubuntu 16.04.5 LTS / PHP 7.0.33
GLPI Test 9.4.0 / FI 9.4.0+1.0 / Ubuntu 16.04.5 LTS / PHP 7.0.33
Offline
Pages: 1
Topic closed