Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

- Fix generate associated item massive action
- Update locales

- Migration of reports to next version of plugin Reports

## [2.12.6] - 2026-02-23

Expand Down
100 changes: 74 additions & 26 deletions report/deliveryinfos/deliveryinfos.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,25 @@
*/

//Options for GLPI 0.71 and newer : need slave db to access the report
use Glpi\DBAL\QueryExpression;
use Glpi\DBAL\QuerySubQuery;
use GlpiPlugin\Reports\AutoReport;
use GlpiPlugin\Reports\ColumnInteger;
use GlpiPlugin\Reports\ColumnLink;
use GlpiPlugin\Reports\DateIntervalCriteria;
use GlpiPlugin\Reports\DropdownCriteria;
use GlpiPlugin\Reports\LocationCriteria;
use GlpiPlugin\Reports\SupplierCriteria;

$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0; // Really a big SQL request

include(__DIR__ . "/../../../../inc/includes.php");

$report = new PluginReportsAutoReport(__s("deliveryinfos_report_title", "order"));
new PluginReportsDateIntervalCriteria($report, 'order_date', __s("Date of order", "order"));
new PluginReportsDateIntervalCriteria($report, 'deliverydate', __s("Delivery date"));
new PluginReportsLocationCriteria($report, 'locations_id', __s("Delivery location", "order"));
new PluginReportsSupplierCriteria($report, 'suppliers_id', __s("Supplier"));
new PluginReportsDropdownCriteria(
$report = new AutoReport(__s("Orders delivery statistics", "order"));
new DateIntervalCriteria($report, 'order_date', __s("Date of order", "order"));
new DateIntervalCriteria($report, 'deliverydate', __s("Delivery date"));
new LocationCriteria($report, 'locations_id', __s("Delivery location", "order"));
new SupplierCriteria($report, 'suppliers_id', __s("Supplier"));
new DropdownCriteria(
$report,
'plugin_order_orderstates_id',
'PluginOrderOrderState',
Expand All @@ -61,36 +69,76 @@
$report->setSubNameAuto();

$report->setColumns([
new PluginReportsColumnLink(
new ColumnLink(
'suppliers_id',
__s("Supplier"),
'Supplier',
),
new PluginReportsColumnLink(
new ColumnLink(
'entities_id',
__s("Entity"),
'Entity',
),
new PluginReportsColumnInteger('total', __s("Orders total", "order")),
new PluginReportsColumnInteger('late', __s("Late orders total", "order")),
new ColumnInteger('total', __s("Orders total", "order")),
new ColumnInteger('late', __s("Late orders total", "order")),
]);
//TODO : ne pas chercher dans la poublelles

$query_total = "SELECT count(*) FROM `glpi_plugin_order_orders`";
$query_total .= getEntitiesRestrictRequest(" WHERE", "glpi_plugin_order_orders");
$query_total .= $report->addSqlCriteriasRestriction();
$query_total .= "AND `glpi_plugin_order_orders`.`suppliers_id`=`suppliers`.`id`";
$query_late = $query_total . " AND `is_late`='1' AND `is_deleted`='0' AND `is_template`='0'";
$criteria_total = [
'SELECT' => [
'COUNT' => 'glpi_plugin_order_orders.id',
],
'FROM' => 'glpi_plugin_order_orders',
'WHERE' => [
'glpi_plugin_order_orders.is_deleted' => '0',
'glpi_plugin_order_orders.is_template' => '0',
'glpi_plugin_order_orders.suppliers_id' => new QueryExpression('suppliers.id'),
],
];

$criteria_total['WHERE'] += getEntitiesRestrictCriteria(
'glpi_plugin_order_orders',
);

$criteria_total['WHERE'] += $report->addNewSqlCriteriasRestriction();

$criteria_late = $criteria_total;
$criteria_late['WHERE'] += [
'glpi_plugin_order_orders.is_late' => 1,
];

$supplier = "JOIN `glpi_suppliers`as suppliers
ON (`glpi_plugin_order_orders`.`suppliers_id` = suppliers.`id`)";
$criteria = [
'SELECT' => [
'glpi_plugin_order_orders.suppliers_id',
new QuerySubQuery($criteria_total, 'total'),
new QuerySubQuery($criteria_late, 'late'),

],
'DISTINCT' => true,
'FROM' => 'glpi_plugin_order_orders',
'LEFT JOIN' => [
'glpi_suppliers as suppliers' => [
'ON' => [
'glpi_plugin_order_orders' => 'suppliers_id',
'suppliers' => 'id',
],
],
],
'WHERE' => [
'glpi_plugin_order_orders.is_deleted' => '0',
'glpi_plugin_order_orders.is_template' => '0',
],
'GROUPBY' => ['suppliers_id'],
];

$criteria['WHERE'] += getEntitiesRestrictCriteria(
'glpi_plugin_order_orders',
);

$criteria['WHERE'] += $report->addNewSqlCriteriasRestriction();

$report->setSqlRequest($criteria);

$query = "SELECT DISTINCT `suppliers_id`, ({$query_total}) AS `total`, ({$query_late}) AS `late`
FROM `glpi_plugin_order_orders` {$supplier}";
$query .= getEntitiesRestrictRequest(" WHERE", "glpi_plugin_order_orders");
$query .= $report->addSqlCriteriasRestriction();
$report->setGroupBy("suppliers_id");
$report->setSqlRequest($query);
$report->execute();
}

$report->footer();
72 changes: 47 additions & 25 deletions report/orderdelivery/orderdelivery.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,25 @@
*/

//Options for GLPI 0.71 and newer : need slave db to access the report
use GlpiPlugin\Reports\AutoReport;
use GlpiPlugin\Reports\Column;
use GlpiPlugin\Reports\ColumnDateTime;
use GlpiPlugin\Reports\ColumnLink;
use GlpiPlugin\Reports\DateIntervalCriteria;
use GlpiPlugin\Reports\DropdownCriteria;
use GlpiPlugin\Reports\LocationCriteria;
use GlpiPlugin\Reports\SupplierCriteria;

$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0; // Really a big SQL request

include(__DIR__ . "/../../../../inc/includes.php");
$report = new AutoReport(__s("Orders delivery", "order"));

$report = new PluginReportsAutoReport(__s("orderdelivery_report_title", "order"));
new PluginReportsDateIntervalCriteria($report, 'order_date', __s("Date of order", "order"));
new PluginReportsDateIntervalCriteria($report, 'deliverydate', __s("Delivery date"));
new PluginReportsLocationCriteria($report, 'locations_id', __s("Delivery location", "order"));
new PluginReportsSupplierCriteria($report, 'suppliers_id', __s("Supplier"));
new PluginReportsDropdownCriteria(
new DateIntervalCriteria($report, 'order_date', __s("Date of order", "order"));
new DateIntervalCriteria($report, 'deliverydate', __s("Delivery date"));
new LocationCriteria($report, 'locations_id', __s("Delivery location", "order"));
new SupplierCriteria($report, 'suppliers_id', __s("Supplier"));
new DropdownCriteria(
$report,
'plugin_order_orderstates_id',
'PluginOrderOrderState',
Expand All @@ -61,50 +69,64 @@
$report->setSubNameAuto();

$report->setColumns([
new PluginReportsColumnLink(
new ColumnLink(
'entities_id',
__s("Entity"),
'Entity',
),
new PluginReportsColumnLink(
new ColumnLink(
'id',
__s("Name"),
'PluginOrderOrder',
[
'with_comment' => true,
'with_comment' => true,
'with_navigate' => true,
],
),
new PluginReportsColumn('num_order', __s("Order number", "order")),
new PluginReportsColumnLink(
new Column('num_order', __s("Order number", "order")),
new ColumnLink(
'suppliers_id',
__s("Supplier"),
'Supplier',
),
new PluginReportsColumnLink(
new ColumnLink(
'plugin_order_orderstates_id',
__s("Status"),
'PluginOrderOrderState',
['with_comment' => true],
),
new PluginReportsColumnDateTime('order_date', __s("Date of order", "order")),
new PluginReportsColumnDateTime('duedate', __s("Estimated due date", "order")),
new PluginReportsColumnDateTime('deliverydate', __s("Delivery date")),
new PluginReportsColumnLink(
new ColumnDateTime('order_date', __s("Date of order", "order")),
new ColumnDateTime('duedate', __s("Estimated due date", "order")),
new ColumnDateTime('deliverydate', __s("Delivery date")),
new ColumnLink(
'locations_id',
__s("Delivery location", "order"),
'Location',
['with_comment' => true],
),
]);

//TODO : ne pas chercher dans la poublelles
$query = "SELECT * FROM `glpi_plugin_order_orders`";
$query .= getEntitiesRestrictRequest(" WHERE", "glpi_plugin_order_orders");
$query .= $report->addSqlCriteriasRestriction();
$query .= " AND `is_deleted`='0' AND `is_template`='0' ";
$query .= "GROUP BY `entities_id`, `plugin_order_orderstates_id`, `num_order`, `order_date`";
$report->setGroupBy("entities_id", "plugin_order_orderstates_id", "num_order", "order_date");
$report->setSqlRequest($query);
$criteria = [
'SELECT' => [
'*',
],
'FROM' => 'glpi_plugin_order_orders',
'WHERE' => [
'is_deleted' => 0,
'is_template' => 0,
],
'GROUPBY' => ['entities_id', 'plugin_order_orderstates_id', 'num_order', 'order_date'],
];

$criteria['WHERE'] += getEntitiesRestrictCriteria(
'glpi_plugin_order_orders',
);

$criteria['WHERE'] += $report->addNewSqlCriteriasRestriction();

$report->setSqlRequest($criteria);

$report->execute();
}

$report->footer();
10 changes: 10 additions & 0 deletions setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
* -------------------------------------------------------------------------
*/

use GlpiPlugin\Reports\Report;

use function Safe\define;

define('PLUGIN_ORDER_VERSION', '2.12.6');
Expand Down Expand Up @@ -189,6 +191,14 @@ function plugin_init_order()
$PLUGIN_HOOKS['assign_to_ticket']['order'] = true;
$PLUGIN_HOOKS['use_massive_action']['order'] = 1;
$PLUGIN_HOOKS['plugin_datainjection_populate']['order'] = "plugin_datainjection_populate_order";

if (class_exists(Report::class)) {
Report::setReportsTitles(
["deliveryinfos" => __s("Orders delivery statistics", "order"),
"orderdelivery" => __s("Orders delivery", "order"),
],
);
}
}
}
}
Expand Down