You are not logged in.
Bonjour,
J'ai installé GLPI avec une entité racine et plusieurs sous-entités qui représentent les compagnies que l'on gère.
Je souhaites créer un rapport personnalisé avec le plugin Reports afin de pouvoir extraire, pour chaque entité, les informations suivantes pour les type d'équipement Computers, Monitors, Network devices, Peripherals, Printers, Phone:
- Budget (info financière)
- Startup date (info financière)
- Value (info financière)
- Comment (info financière)
- Info relatives à l'équipement (type, serial, inventory number)
J'ai affiché la liste déroulante concernant les entités dans mon rapport mais dès que je choisis un entité autre que l'entité racine je n'ai plus aucun résultat (alors que j'ai des éléments dans les sous-entités). Je ne m'en sors pas vraiment avec ces rapports et j'aurais besoin d'aide.
Mon but final étant de pouvoir obtenir un rapport financier par entité pour tout type d'équipements confondus.
Merci d'avance de votre aide.
Offline
Comment avez-vous écrit votre rapport ? Pour quelle version de GLPI et du plugin Report ?
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
J'ai essayé d'adapter un rapport existant. J'utilise la version 9.4.3 de GLPI et 1.13.1 de Reports.
Voici mon code mais il n'est pas abouti. Ce que je ne comprends pas c'est pourquoi dès que je choisis un sous-entité de mon entité racine, je n'ai plus aucun résultat.
<?php
$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0;
include ("../../../../inc/includes.php");
$dbu = new DbUtils();
//TRANS: The name of the report = Search in the financial information (plural)
$report = new PluginReportsAutoReport(__('Stock report', 'reports'));
//Report's search criterias
new PluginReportsDateIntervalCriteria($report, 'use_date', __('Startup date'));
new PluginReportsDropdownCriteria($report, 'entities_id', 'glpi_entities', __('Company'));
new PluginReportsDropdownCriteria($report, 'budgets_id', 'glpi_budgets', __('Budget'));
//Display criterias form is needed
$report->displayCriteriasForm();
//If criterias have been validated
if ($report->criteriasValidated()) {
// Report title
$report->setSubNameAuto();
// Report Columns
$cols = [new PluginReportsColumn('company', __('Company')),
new PluginReportsColumn('budget', __('Budget')),
new PluginReportsColumnDate('use_date', __('Startup date')),
new PluginReportsColumn('value', __('Value')),
new PluginReportsColumn('itemtype', __('Item type')),
new PluginReportsColumn('comment', __('Comment'))];
$report->setColumns($cols);
// Build SQL request
$sql = "SELECT
`glpi_entities`.`name` AS company,
`glpi_budgets`.`name` AS budget,
`glpi_infocoms`.`use_date`,
`glpi_infocoms`.`value`,
`glpi_infocoms`.`itemtype`,
`glpi_infocoms`.`comment`
FROM `glpi_infocoms`
LEFT JOIN `glpi_computers` ON `glpi_infocoms`.`items_id` = `glpi_computers`.`id` AND `glpi_infocoms`.`itemtype` = 'Computer'
LEFT JOIN `glpi_peripherals` ON `glpi_infocoms`.`items_id` = `glpi_peripherals`.`id` AND `glpi_infocoms`.`itemtype` = 'Peripheral'
LEFT JOIN `glpi_monitors` ON `glpi_infocoms`.`items_id` = `glpi_monitors`.`id` AND `glpi_infocoms`.`itemtype` = 'Monitor'
LEFT JOIN `glpi_networkequipments` ON `glpi_infocoms`.`items_id` = `glpi_networkequipments`.`id` AND `glpi_infocoms`.`itemtype` = 'NetworkEquipment'
LEFT JOIN `glpi_printers` ON `glpi_infocoms`.`items_id` = `glpi_printers`.`id` AND `glpi_infocoms`.`itemtype` = 'Printer'
LEFT JOIN `glpi_phones` ON `glpi_infocoms`.`items_id` = `glpi_phones`.`id` AND `glpi_infocoms`.`itemtype` = 'Phone'
LEFT JOIN `glpi_budgets` ON `glpi_infocoms`.`budgets_id` = `glpi_budgets`.`id`
LEFT JOIN `glpi_entities` ON `glpi_infocoms`.`entities_id` = `glpi_entities`.`id`
WHERE `glpi_infocoms`.`budgets_id` <> '0'
".$report->addSqlCriteriasRestriction()."
ORDER BY `glpi_entities`.`name`,`glpi_budgets`.`name`";
$report->setSqlRequest($sql);
$report->execute();
} else {
Html::footer();
}
Offline
Le problème vient du $report->addSqlCriteriasRestriction()
En effet, il va uniquement mettre dans le where "entities_id = xxx" mais vu que dans votre requete vous avez plusieurs tables avec ce champ, pour SQL entities_id est ambigû.
Donc il faut modifier la définition de votre dropdown des entités
new PluginReportsDropdownCriteria($report, 'glpi_infocoms.entities_id', 'glpi_entities', __('Company'));
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