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");
if (empty($_POST["date1"]) && empty($_POST["date2"])) {
$year = date("Y")-1;
$_POST["date1"] = date("Y-m-d",mktime(1,0,0,date("m"),date("d"),$year));
$_POST["date2"] = date("Y-m-d");
}
if (!empty($_POST["date1"])
&& !empty($_POST["date2"])
&& (strcmp($_POST["date2"],$_POST["date1"]) < 0)) {
$tmp = $_POST["date1"];
$_POST["date1"] = $_POST["date2"];
$_POST["date2"] = $tmp;
}
Report::title();
echo "
";
$valeurtot = 0;
$valeurnettetot = 0;
$valeurnettegraphtot = array();
$valeurgraphtot = array();
/** Display an infocom report
*
* @param $itemtype item type
* @param $begin begin date
* @param $end end date
**/
function display_infocoms_report($itemtype, $begin, $end) {
global $DB, $valeurtot, $valeurnettetot, $valeurnettegraphtot, $valeurgraphtot, $CFG_GLPI;
$itemtable = getTableForItemType($itemtype);
$query = "SELECT `glpi_infocoms`.*,
`$itemtable`.`name` AS name,
`$itemtable`.`ticket_tco`,
`glpi_entities`.`completename` AS entname,
`glpi_entities`.`id` AS entID
FROM `glpi_infocoms`
INNER JOIN `$itemtable` ON (`$itemtable`.`id` = `glpi_infocoms`.`items_id`
AND `glpi_infocoms`.`itemtype` = '$itemtype')
LEFT JOIN `glpi_entities` ON (`$itemtable`.`entities_id` = `glpi_entities`.`id`)
WHERE `$itemtable`.`is_template` = '0' ".
getEntitiesRestrictRequest("AND", $itemtable);
if (!empty($begin)) {
$query .= " AND (`glpi_infocoms`.`buy_date` >= '$begin'
OR `glpi_infocoms`.`use_date` >= '$begin') ";
}
if (!empty($end)) {
$query .= " AND (`glpi_infocoms`.`buy_date` <= '$end'
OR `glpi_infocoms`.`use_date` <= '$end') ";
}
$query .= " ORDER BY entname ASC, `buy_date`, `use_date`";
$display_entity = Session::isMultiEntitiesMode();
$result = $DB->query($query);
if (($DB->numrows($result) > 0)
&& ($item = getItemForItemtype($itemtype))) {
echo "".$item->getTypeName(1)."
";
echo "| ".__('Name')." | ";
if ($display_entity) {
echo "".__('Entity')." | ";
}
echo ""._x('price', 'Value')." | ".__('ANV')." | ";
echo "".__('TCO')." | ".__('Date of purchase')." | ";
echo "".__('Startup date')." | ".__('Warranty expiration date')." |
";
$valeursoustot = 0;
$valeurnettesoustot = 0;
$valeurnettegraph = array();
$valeurgraph = array();
while ($line=$DB->fetch_assoc($result)) {
if (isset($line["is_global"]) && $line["is_global"]
&& $item->getFromDB($line["items_id"])) {
$line["value"] *= Computer_Item::countForItem($item);
}
if ($line["value"]>0) {
$valeursoustot += $line["value"];
}
$valeurnette = Infocom::Amort($line["sink_type"], $line["value"], $line["sink_time"],
$line["sink_coeff"], $line["buy_date"], $line["use_date"],
$CFG_GLPI["date_tax"], "n");
$tmp = Infocom::Amort($line["sink_type"], $line["value"], $line["sink_time"],
$line["sink_coeff"], $line["buy_date"], $line["use_date"],
$CFG_GLPI["date_tax"], "all");
if (is_array($tmp) && (count($tmp) > 0)) {
foreach ($tmp["annee"] as $key => $val) {
if ($tmp["vcnetfin"][$key] > 0) {
if (!isset($valeurnettegraph[$val])) {
$valeurnettegraph[$val] = 0;
}
$valeurnettegraph[$val] += $tmp["vcnetdeb"][$key];
}
}
}
if (!empty($line["buy_date"])) {
$year = substr($line["buy_date"],0,4);
if ($line["value"] > 0) {
if (!isset($valeurgraph[$year])) {
$valeurgraph[$year] = 0;
}
$valeurgraph[$year] += $line["value"];
}
}
$valeurnettesoustot += str_replace(" ","",$valeurnette);
echo "| ".$line["name"]." | ";
if ($display_entity) {
echo "".$line['entname']." | ";
}
echo "".Html::formatNumber($line["value"])." | ".
"".Html::formatNumber($valeurnette)." | ".
"".Infocom::showTco($line["ticket_tco"], $line["value"])." | ".
"".Html::convDate($line["buy_date"])." | ".
"".Html::convDate($line["use_date"])." | ".
"".Infocom::getWarrantyExpir($line["buy_date"], $line["warranty_duration"]).
" |
";
}
$valeurtot += $valeursoustot;
$valeurnettetot += $valeurnettesoustot;
$tmpmsg = sprintf(__('Total: Value=%1$s - Account net value=%2$s'),
Html::formatNumber($valeursoustot),
Html::formatNumber($valeurnettesoustot));
echo "$tmpmsg |
";
if (count($valeurnettegraph) > 0) {
echo "| ";
ksort($valeurnettegraph);
$valeurnettegraphdisplay = array_map('round', $valeurnettegraph);
foreach ($valeurnettegraph as $key => $val) {
if (!isset($valeurnettegraphtot[$key])) {
$valeurnettegraphtot[$key] = 0;
}
$valeurnettegraphtot[$key] += $valeurnettegraph[$key];
}
Stat::showGraph(array(__('Account net value') => $valeurnettegraphdisplay),
array('title' => __('Account net value'),
'width' => 400));
echo " |
";
}
if (count($valeurgraph) > 0) {
echo "| ";
ksort($valeurgraph);
$valeurgraphdisplay = array_map('round',$valeurgraph);
foreach ($valeurgraph as $key => $val) {
if (!isset($valeurgraphtot[$key])) {
$valeurgraphtot[$key] = 0;
}
$valeurgraphtot[$key] += $valeurgraph[$key];
}
Stat::showGraph(array(_x('price', 'Value') => $valeurgraphdisplay),
array('title' => _x('price', 'Value'),
'width' => 400));
echo " |
";
}
echo "
";
return true;
}
return false;
}
$types = array('Computer', 'Monitor', 'NetworkEquipment', 'Peripheral', 'Phone', 'Printer');
$i = 0;
echo "| ";
while (count($types) > 0) {
$type = array_shift($types);
if (display_infocoms_report($type, $_POST["date1"], $_POST["date2"])) {
echo " | ";
$i++;
if (($i%2) == 0) {
echo "
";
}
echo "| ";
}
}
if (($i%2) == 0) {
echo " | ";
}
echo " |
";
$tmpmsg = sprintf(__('Total: Value=%1$s - Account net value=%2$s'),
Html::formatNumber($valeurtot),
Html::formatNumber($valeurnettetot));
echo "$tmpmsg
";
if (count($valeurnettegraphtot) > 0) {
$valeurnettegraphtotdisplay = array_map('round', $valeurnettegraphtot);
Stat::showGraph(array(__('Account net value') => $valeurnettegraphtotdisplay),
array('title' => __('Account net value')));
}
if (count($valeurgraphtot) > 0) {
$valeurgraphtotdisplay = array_map('round', $valeurgraphtot);
Stat::showGraph(array(_x('price', 'Value') => $valeurgraphtotdisplay),
array('title' => _x('price', 'Value')));
}
Html::footer();
?>