-------------------
//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.
]]>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 ?
Merci pour votre travail.
]]>