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 2014-06-04 09:14:57

sarah
Member
Registered: 2014-06-03
Posts: 23

Problème avec plugin Report nouvelle version

Bonjour,

Je suis en stage et on m'a demandé de mettre à jour GLPI de la version 80 à la dernière 84.5.
J'ai donc aussi récupéré le plugin report (dernière version présente sur le site). Sur l'ancienne version ils avaient créé leurs propres reports. Je dois donc les faire marcher sur la nouvelle version mais ça ne marche pas...

Ce report doit faire des statistique des tickets reçu pour une personne.

Code pour la nouvelle version :

<?php
/*
 * @version $Id: transferreditems.php 158 2011-06-28 15:46:31Z remi $
 
[..]

$USEDBREPLICATE=1;
$DBCONNECTION_REQUIRED=0; // Really a big SQL request

define('GLPI_ROOT', '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

$report = new PluginReportsAutoReport();

//Report's search criterias
new PluginReportsDateIntervalCriteria($report,"date_mod");

//Display criterias form is needed
$report->displayCriteriasForm();

//If criterias have been validated
if ($report->criteriasValidated()) {
   $report->setSubNameAuto();

//daty dla solve
$start_date = substr( (string)$report->addSqlCriteriasRestriction() ,26, 24);
$end_date = substr( (string)$report->addSqlCriteriasRestriction() ,76, 24);

   //Names of the columns to be displayed
   $report->setColumns(array(
      new PluginReportsColumn('groupname', "name"),
      new PluginReportsColumnInteger('open', 'opened'),
      new PluginReportsColumnInteger('solved', 'solved'),
      new PluginReportsColumnInteger('solvedpr', 'solved %'),
      new PluginReportsColumnInteger('notsolved', 'not solved'),
      new PluginReportsColumnInteger('notsolvedpr', 'not solved %'),
      new PluginReportsColumnInteger('late', 'solved late'),
      new PluginReportsColumnInteger('latepr', 'solved late %'),
      new PluginReportsColumnInteger('late2', 'processing & already late'),
      new PluginReportsColumnInteger('latepr2', 'processing & already late %'),
      new PluginReportsColumnInteger('pen', 'pending'),
      new PluginReportsColumnInteger('penpr', 'pending %')
      
      
   ));
    $data=date("Y-m-d H:i:s");
   $query = "SELECT `glpi_groups`.`name` 
            AS groupname, 

            (SELECT count(*)   FROM `glpi_tickets`
            LEFT JOIN `glpi_groups_tickets` ON (`glpi_groups_tickets`.`tickets_id` = `glpi_tickets`.`id` AND `glpi_groups_tickets`.`type` =2)
            LEFT JOIN `glpi_groups` ON (`glpi_groups_tickets`.`groups_id` = `glpi_groups`.`id`)             
            WHERE  `glpi_groups`.`name`='Comarch'  AND `glpi_tickets`.`entities_id` = 3 " . $report->addSqlCriteriasRestriction() . " ) 
            AS open,

             [...]
            
            (SELECT ROUND ( ((SELECT count(*)   FROM `glpi_tickets`
            LEFT JOIN `glpi_groups_tickets` ON (`glpi_groups_tickets`.`tickets_id` = `glpi_tickets`.`id` AND `glpi_groups_tickets`.`type` =2)
            LEFT JOIN `glpi_groups` ON (`glpi_groups_tickets`.`groups_id` = `glpi_groups`.`id`)             
            WHERE  `glpi_groups`.`name`='Comarch Service'  AND `glpi_tickets`.`entities_id` = 3 AND `glpi_tickets`.`status` IN ('waiting')  " . $report->addSqlCriteriasRestriction() . " )  
            /
            (SELECT count(*)   FROM `glpi_tickets`
            LEFT JOIN `glpi_groups_tickets` ON (`glpi_groups_tickets`.`tickets_id` = `glpi_tickets`.`id` AND `glpi_groups_tickets`.`type` =2)
            LEFT JOIN `glpi_groups` ON (`glpi_groups_tickets`.`groups_id` = `glpi_groups`.`id`)             
            WHERE  `glpi_groups`.`name`='Comarch Service' AND `glpi_tickets`.`entities_id` = 3 " . $report->addSqlCriteriasRestriction() . " )*100) 
            )) AS penpr

            FROM `glpi_tickets`
            LEFT JOIN `glpi_groups_tickets` ON (`glpi_groups_tickets`.`tickets_id` = `glpi_tickets`.`id` AND `glpi_groups_tickets`.`type` =2)
            LEFT JOIN `glpi_groups` ON (`glpi_groups_tickets`.`groups_id` = `glpi_groups`.`id`) 
            WHERE  

            `glpi_groups`.`name`='Comarch Service'  AND `glpi_tickets`.`entities_id` = 3 GROUP BY `glpi_groups`.`name`
"; 


   $report->setSqlRequest($query);
    $report->execute();

} else 
{
   Html::footer();
}

?>

Les seules différences faites par rapport à l'ancien est que j'ai remplacé à la fin commonFooter par Html::footer()
et Ticket::ASSIGN par le nombre correspondant car ça ne marche plus, en attendant de trouver mieux.

Avec ces changement je n'ai plus d'erreur lors de la demande mais les résultats ne sont pas bon. En effet la partie $report->addSqlCriteriasRestriction() n'est pas prit en compte dans le requête sql.

Requête sql récupéré en mode debug de GLPI :

SELECT `glpi_groups`.`name` AS groupname, (SELECT count(*) 
FROM `glpi_tickets` 
LEFT JOIN `glpi_groups_tickets` ON (`glpi_groups_tickets`.`tickets_id` = `glpi_tickets`.`id` AND `glpi_groups_tickets`.`type` =2) 
LEFT JOIN `glpi_groups` ON (`glpi_groups_tickets`.`groups_id` = `glpi_groups`.`id`) 
WHERE `glpi_groups`.`name`='Comarch' AND `glpi_tickets`.`entities_id` = 3) AS open, (SELECT count(*) ...

alors que la requête devrait être :

SELECT `glpi_groups`.`name` AS groupname, (SELECT count(*) 
FROM `glpi_tickets` 
LEFT JOIN `glpi_groups_tickets` ON (`glpi_groups_tickets`.`tickets_id` = `glpi_tickets`.`id` AND `glpi_groups_tickets`.`type` = '2') 
LEFT JOIN `glpi_groups` ON (`glpi_groups_tickets`.`groups_id` = `glpi_groups`.`id`) 
WHERE `glpi_groups`.`name`='Comarch' AND `glpi_tickets`.`entities_id` = 3 AND (`glpi_tickets`.`date`>= '2014-05-01 00:00:00' AND `glpi_tickets`.`date`<='2014-05-31 23:59:59' ) ) AS open, (SELECT count(*) ...

La question est donc pourquoi $report->addSqlCriteriasRestriction() ne fonctionne pas. Est ce que ça s'écrit différement maintenant ? Le problème vient il d'ailleur ?
Il faut savoir que $report->addSqlCriteriasRestriction() fonctionne parfaitement sur les tickets proposer par GLPI... enfin exactement $report->addSqlCriteriasRestriction("WHERE"), mais normalement c'est pas ça qui est bug... Bref je suis un peu perdu. Merci de m'aider.

J'espère avoir été assez compréhensible et que la question n'a pas déjà été posé.
Je viens débuter avec GLPI.

Offline

#2 2014-06-04 10:50:53

sarah
Member
Registered: 2014-06-03
Posts: 23

Re: Problème avec plugin Report nouvelle version

Finalement on a trouvé d'où venait le problème.

new PluginReportsDateIntervalCriteria($report,"date_mod") renvoyait une valeur null. Nous avons donc commenter la ligne responsable dans le package correspondant.

Par contre si quelqu'un à une idée pour Ticket::ASSIGN je suis preneuse.

Et aussi j'en profite pour demander, quand je rajoute le fichier de langue avec dedans :


$LANG['plugin_reports']['ticketscomarch_chr'][1]="COMARCH - CHR";

Je ne trouve plus le report dans la liste des report... le titre du fichier : ticketscomarch_chr.en_GB.php

Last edited by sarah (2014-06-04 10:55:27)

Offline

#3 2014-06-04 17:48:47

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Problème avec plugin Report nouvelle version

On va commencer par le début.

define('GLPI_ROOT', '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

devient

include ("../../../../inc/includes.php");

Ensuite pour le titre du plugin, ajouter

include ("ticketscomarch_chr.fr_FR.php");

$report = new PluginReportsAutoReport($LANG['plugin_reports']['ticketscomarch_chr']);

ce système vous évite de regénérer le fichier global des chaines de texte et de le retraduire

Concernant Ticket::ASSIGN si vous voulez parler des types (demandeur observateur ou technicien), c'est CommonITILActor::ASSIGN.

De même, les status sont désormais stockés en valeur numérique. Donc dans votre requete
`glpi_tickets`.`status` IN ('waiting')
devient
`glpi_tickets`.`status` = '".Ticket::WAITING."'
ou pour un ticket clos `glpi_tickets`.`status` IN ('".implode("', '",Ticket::getClosedStatusArray()))."')

Voilà, je pense que vous avez tout.


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#4 2014-06-05 08:35:39

sarah
Member
Registered: 2014-06-03
Posts: 23

Re: Problème avec plugin Report nouvelle version

Merci beaucoup, effectivement tout est là.

Je vais apporter les modifcations.

Après modifications :

Merci c'est beaucoup mieux.
Par contre le fichier de langue rend toujours le report introuvable dans la liste.... Les deux fichiers sont dans le même dossier.

Last edited by sarah (2014-06-05 09:35:27)

Offline

#5 2014-06-20 16:02:24

sarah
Member
Registered: 2014-06-03
Posts: 23

Re: Problème avec plugin Report nouvelle version

Petit Up car je n'arrive toujours pas à modifier le titre du rapport dans la liste.

Merci

Offline

#6 2014-06-20 16:32:06

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Problème avec plugin Report nouvelle version

comment est votre fichier de langue ?


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#7 2014-06-23 09:29:08

sarah
Member
Registered: 2014-06-03
Posts: 23

Re: Problème avec plugin Report nouvelle version

J'ai réussi finalement Merci

dans mon fichier de langue il y avait :

$LANG['plugin_reports']['ticketscomarch_chr'][1]="COMARCH - CHR";

et j'ai juste supprimé le [1] dans la phrase précédente.

Voilà Merci beaucoup big_smile

Offline

#8 2014-06-24 09:25:56

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Problème avec plugin Report nouvelle version

C'est justement à cette erreur que je pensais.
Merci du retour. Je clos.


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

Board footer

Powered by FluxBB