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-16 13:45:03

mrspam
Member
From: Ile de La Réunion
Registered: 2017-09-28
Posts: 75

Problème plugin reports 1.11.1

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

#2 2018-03-16 14:35:19

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

Re: Problème plugin reports 1.11.1

avez vous tout de même créé le fichier xxx.fr_FR.php ?


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

#3 2018-03-17 12:36:50

mrspam
Member
From: Ile de La Réunion
Registered: 2017-09-28
Posts: 75

Re: Problème plugin reports 1.11.1

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

#4 2018-03-17 13:12:48

mrspam
Member
From: Ile de La Réunion
Registered: 2017-09-28
Posts: 75

Re: Problème plugin reports 1.11.1

C'est résolu c'était les apostrophes dans le setColumns -_-
Merci ! smile


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

#5 2018-03-18 10:03:03

mrspam
Member
From: Ile de La Réunion
Registered: 2017-09-28
Posts: 75

Re: Problème plugin reports 1.11.1

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 smile


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

#6 2018-03-18 11:01:59

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

Re: Problème plugin reports 1.11.1

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.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 09:36:13

mrspam
Member
From: Ile de La Réunion
Registered: 2017-09-28
Posts: 75

Re: Problème plugin reports 1.11.1

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

Board footer

Powered by FluxBB