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-06-05 12:17:18

Chancho
Member
Registered: 2018-05-28
Posts: 18

Comment faire marcher le critère de recherche - Plugin Report

Bonjour à tous!

Je suis actuellement en train de developper un rapport en m'appuyant sur le plugin Report.
Mon but étant d'afficher pour chaque entité son ticket correspondant ainsi que ses tâches affiliées.
J'ai donc réussi a faire ma requête me permettant d'afficher ce rapport :

--------------------------------------------

$report->setColumns([new PluginReportsColumn('completename', __('Entity')),
                     new PluginReportsColumnLink('contract', __('Contract') , 'Contrat'),
                     new PluginReportsColumnLink('ticket', __('Ticket') ,'Ticket'),
                     new PluginReportsColumn('dateticket', __('Date Ticket')),
                     new PluginReportsColumn('contenttask', __('Descriptif tâche')),
                     new PluginReportsColumnDate('datetask', __('Date tâche')),
                     new PluginReportsColumnDateTime('timetask', __('Durée tâche (sec)'))]);

$query = "SELECT `glpi_entities`.`completename`,
                 `glpi_tickets`.`name` AS ticket,
                 `glpi_tickets`.`date` AS dateticket,
                 `glpi_contracts`.`name` AS contract,
                 `glpi_tickettasks`.`content` AS contenttask,
                 `glpi_tickettasks`.`date` AS datetask,
                 `glpi_tickettasks`.`actiontime` AS timetask
          FROM `glpi_entities`
          LEFT JOIN `glpi_contracts` ON (`glpi_contracts`.`entities_id` = `glpi_entities`.`id`)
          LEFT JOIN `glpi_tickets` ON (`glpi_tickets`.`entities_id` = `glpi_entities`.`id`)
          LEFT JOIN `glpi_tickettasks` ON (`glpi_tickettasks`.`tickets_id` = `glpi_tickets`.`id`)".$dbu->getEntitiesRestrictRequest(" WHERE ", "glpi_entities") ."
          ORDER BY `completename`
          ";

$report->setGroupBy(['ticket']);
$report->setSqlRequest($query);
$report->execute();

--------------------------------------------

Ceci me fait donc apparaître le rapport voulu, or maintenant je voudrais rajouter un critère de recherche pour que les tickets affichés soit entre une période voulue. J'ai bien sur fait mes recherches de mon coté avant de venir vous demander et je suis arrivé à ca :

--------------------------------------------

//Report's search criterias
new PluginReportsDateIntervalCriteria($report, 'date', __('Date du ticket'));

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

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

$report->setColumns([....]
$query = "SELECT `glpi_entities`.`completename`,
                 `glpi_tickets`.`name` AS ticket,
                 `glpi_tickets`.`date` AS dateticket,
                 `glpi_contracts`.`name` AS contract,
                 `glpi_tickettasks`.`content` AS contenttask,
                 `glpi_tickettasks`.`date` AS datetask,
                 `glpi_tickettasks`.`actiontime` AS timetask
          FROM `glpi_entities`
          LEFT JOIN `glpi_contracts` ON (`glpi_contracts`.`entities_id` = `glpi_entities`.`id`)
          LEFT JOIN `glpi_tickets` ON (`glpi_tickets`.`entities_id` = `glpi_entities`.`id`)
          LEFT JOIN `glpi_tickettasks` ON (`glpi_tickettasks`.`tickets_id` = `glpi_tickets`.`id`)".$report->addSqlCriteriasRestriction().$dbu->getEntitiesRestrictRequest(" WHERE ", "glpi_entities") ."
          ORDER BY `completename`
          ";
--------------------------------------------

J'ai donc rajouter un critère date à rentrer au préalable et rajouter la restriction dans ma requête mais rien ne se passe. Un petit peu d'aide ? smile

Merci pour votre travail.

Last edited by Chancho (2018-06-05 12:18:01)

Offline

#2 2018-06-06 09:45:47

Chancho
Member
Registered: 2018-05-28
Posts: 18

Re: Comment faire marcher le critère de recherche - Plugin Report

J'ai réussi à régler mon problème, je post la solution au cas ou ça aiderait quelqu’un.

-------------------

//Report's search criterias
new PluginReportsDateIntervalCriteria($report, 'glpi_tickettasks.date', __('Date de la tâche'));

------------------

Il suffisait de renseigner le champ date plus précisement car ce champ est présent dans une grande partie des tables de la BDD.

Offline

Board footer

Powered by FluxBB