grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026.
--------------------------------------------------------------------------
*/
/** @file
* @brief
*/
include ('../inc/includes.php');
Session::checkRight("reports", READ);
Html::header(Report::getTypeName(Session::getPluralNumber()), $_SERVER['PHP_SELF'], "tools", "report");
Report::title();
$items = $CFG_GLPI["contract_types"];
# Titre
echo "
";
echo "".__('List of the hardware under contract')."
";
echo "
";
# Request All
if ((isset($_POST["item_type"][0]) && ($_POST["item_type"][0] == '0'))
|| !isset($_POST["item_type"])) {
$_POST["item_type"] = $items;
}
if (isset($_POST["item_type"]) && is_array($_POST["item_type"])) {
$query = array();
foreach ($_POST["item_type"] as $key => $val) {
if (in_array($val,$items)) {
$itemtable = getTableForItemType($val);
$order = "itemdeleted DESC,";
if (($val == 'Project')
|| ($val == 'SoftwareLicense')) {
$select = $join = '';
if ($val == 'SoftwareLicense') {
$select = "`glpi_infocoms`.`buy_date`,
`glpi_infocoms`.`warranty_duration`,";
$join = " LEFT JOIN `glpi_infocoms`
ON (`glpi_infocoms`.`itemtype` = '$val'
AND `$itemtable`.`id` = `glpi_infocoms`.`items_id`)";
$order = '';
}
if ($val == 'Project') {
$select = "`$itemtable`.`is_deleted` AS itemdeleted,";
}
$query[$val] = "SELECT `$itemtable`.`name` AS itemname,
`glpi_contracttypes`.`name` AS type,
$select
`glpi_contracts`.`begin_date`,
`glpi_contracts`.`duration`,
`glpi_entities`.`completename` AS entname,
`glpi_entities`.`id` AS entID
FROM `glpi_contracts_items`
INNER JOIN `glpi_contracts`
ON (`glpi_contracts_items`.`contracts_id` = `glpi_contracts`.`id`)
INNER JOIN `$itemtable`
ON (`glpi_contracts_items`.`itemtype` = '$val'
AND `$itemtable`.`id` = `glpi_contracts_items`.`items_id`)
$join
LEFT JOIN `glpi_contracttypes`
ON (`glpi_contracts`.`contracttypes_id` = `glpi_contracttypes`.`id`)
LEFT JOIN `glpi_entities`
ON (`$itemtable`.`entities_id` = `glpi_entities`.`id`) ".
getEntitiesRestrictRequest("WHERE",$itemtable);
if (isset($_POST["year"][0]) && ($_POST["year"][0] != 0)) {
$query[$val] .= " AND ( ";
$first = true;
foreach ($_POST["year"] as $key2 => $val2) {
if (!$first) {
$query[$val] .= " OR ";
} else {
$first = false;
}
if ($val == 'Project') {
$query[$val] .= " YEAR(`glpi_contracts`.`begin_date`) = '$val2'";
}
if ($val == 'SoftwareLicense') {
$query[$val] .= " YEAR(`glpi_infocoms`.`buy_date`) = '$val2'
OR YEAR(`glpi_contracts`.`begin_date`) = '$val2'";
}
}
$query[$val] .= ")";
}
} else {
$query[$val] = "SELECT `$itemtable`.`name` AS itemname,
`$itemtable`.`is_deleted` AS itemdeleted,
`glpi_locations`.`completename` AS location,
`glpi_contracttypes`.`name` AS type,
`glpi_infocoms`.`buy_date`,
`glpi_infocoms`.`warranty_duration`,
`glpi_contracts`.`begin_date`,
`glpi_contracts`.`duration`,
`glpi_entities`.`completename` AS entname,
`glpi_entities`.`id` AS entID
FROM `glpi_contracts_items`
INNER JOIN `glpi_contracts`
ON (`glpi_contracts_items`.`contracts_id` = `glpi_contracts`.`id`)
INNER JOIN `$itemtable`
ON (`glpi_contracts_items`.`itemtype` = '$val'
AND `$itemtable`.`id` = `glpi_contracts_items`.`items_id`)
LEFT JOIN `glpi_infocoms`
ON (`glpi_infocoms`.`itemtype` = '$val'
AND `$itemtable`.`id` = `glpi_infocoms`.`items_id`)
LEFT JOIN `glpi_contracttypes`
ON (`glpi_contracts`.`contracttypes_id` = `glpi_contracttypes`.`id`)
LEFT JOIN `glpi_locations`
ON (`$itemtable`.`locations_id` = `glpi_locations`.`id`)
LEFT JOIN `glpi_entities`
ON (`$itemtable`.`entities_id` = `glpi_entities`.`id`)
WHERE `$itemtable`.`is_template` ='0' ".
getEntitiesRestrictRequest("AND",$itemtable);
if (isset($_POST["year"][0]) && ($_POST["year"][0] != 0)) {
$query[$val] .= " AND ( ";
$first = true;
foreach ($_POST["year"] as $key2 => $val2) {
if (!$first) {
$query[$val] .= " OR ";
} else {
$first = false;
}
$query[$val] .= " YEAR(`glpi_infocoms`.`buy_date`) = '$val2'
OR YEAR(`glpi_contracts`.`begin_date`) = '$val2'";
}
$query[$val] .= ")";
}
}
$query[$val] .= " ORDER BY entname ASC, $order itemname ASC";
}
}
}
$display_entity = Session::isMultiEntitiesMode();
if (isset($query) && count($query)) {
foreach ($query as $key => $val) {
$result = $DB->query($val);
if ($result && $DB->numrows($result)) {
$item = new $key();
echo "".$item->getTypeName(1)."
";
echo "";
echo "| ".__('Name')." | ";
echo "".__('Deleted')." | ";
if ($display_entity) {
echo "".__('Entity')." | ";
}
echo "".__('Location')." | ";
echo "".__('Date of purchase')." | ";
echo "".__('Warranty expiration date')." | ";
echo "".__('Contract type')." | ";
echo "".__('Start date')." | ";
echo "".__('End date')." | ";
echo "
";
while ( $data = $DB->fetch_assoc($result)) {
echo "";
if ($data['itemname']) {
echo "| ".$data['itemname']." | ";
} else {
echo " ".NOT_AVAILABLE." | ";
}
if (!isset($data['itemdeleted'])) {
$data['itemdeleted'] = 0;
}
if (!isset($data['buy_date']) ){
$data['buy_date'] = '';
}
if (!isset($data['warranty_duration'])) {
$data['warranty_duration'] = 0;
}
echo " ".Dropdown::getYesNo($data['itemdeleted'])." | ";
if ($display_entity) {
echo "".$data['entname']." | ";
}
if ($data['location']) {
echo " ".$data['location']." | ";
} else {
echo " ".NOT_AVAILABLE." | ";
}
if ($data['buy_date']) {
echo " ".Html::convDate($data['buy_date'])." | ";
if ($data["warranty_duration"]) {
echo " ".Infocom::getWarrantyExpir($data["buy_date"],
$data["warranty_duration"])." | ";
} else {
echo " ".NOT_AVAILABLE." | ";
}
} else {
echo " ".NOT_AVAILABLE." | ".NOT_AVAILABLE." | ";
}
if ($data['type']) {
echo " ".$data['type']." | ";
} else {
echo " ".NOT_AVAILABLE." | ";
}
if ($data['begin_date']) {
echo " ".Html::convDate($data['begin_date'])." | ";
if ($data["duration"]) {
echo " ".Infocom::getWarrantyExpir($data["begin_date"],
$data["duration"])." | ";
} else {
echo " ".NOT_AVAILABLE." | ";
}
} else {
echo " ".NOT_AVAILABLE." | ".NOT_AVAILABLE." | ";
}
echo "
\n";
}
echo "
";
}
}
}
Html::footer();
?>