table = 'stats_logistic';
$this->lang = false;
$this->date_begin = date('Y-m-d');
$this->date_end = date('Y-m-d');
$this->date_stock = date('Y-m-d');
if (!empty($_GET['date_begin'])) {
$this->date_begin = $_GET['date_begin'];
}
if (!empty($_GET['date_end'])){
$this->date_end = $_GET['date_end'];
}
if (!empty($_GET['date_stock'])){
$this->date_stock = $_GET['date_stock'];
}
parent::__construct();
}
public function display() {
global $currentIndex, $cookie;
$date = Configuration::get('MAJ_STAT_LOGISTIC');
echo '
';
echo
'
'
;
$stats = $this->getStats();
$poles = array();
for ($i=0; $i < 6; $i++) {
$poles[] = array(
'recap' => array(
'quantity' => 0,
'nb_package' => 0
),
'employee' => array(),
);
}
$poles[0]['name'] = 'Pôle 1 : Petites marques';
$poles[1]['name'] = 'Pôle 2 : Marques moyenne';
$poles[2]['name'] = 'Pôle 3 : Grosses marques';
$poles[3]['name'] = 'Pôle 4 : Postes complementaires';
$poles[4]['name'] = 'Pôle 5 : Multi';
$poles[5]['name'] = 'Pôle 6 : Autre';
foreach ($stats as $key => $stat) {
if (!isset($stat['id_employee'])) {
continue;
}
switch ($stat['id_employee']) {
case '52':
$poles[0]['recap']['quantity'] += $stat['quantity'];
$poles[0]['recap']['nb_package'] += $stat['nb_package'];
$poles[0]['employee'][] = $stat;
break;
case '22':
case '24':
$poles[1]['recap']['quantity'] += $stat['quantity'];
$poles[1]['recap']['nb_package'] += $stat['nb_package'];
$poles[1]['employee'][] = $stat;
break;
case '25':
case '44':
$poles[2]['recap']['quantity'] += $stat['quantity'];
$poles[2]['recap']['nb_package'] += $stat['nb_package'];
$poles[2]['employee'][] = $stat;
break;
case '47':
case '48':
$poles[3]['recap']['quantity'] += $stat['quantity'];
$poles[3]['recap']['nb_package'] += $stat['nb_package'];
$poles[3]['employee'][] = $stat;
break;
case '35':
case '36':
$poles[4]['recap']['quantity'] += $stat['quantity'];
$poles[4]['recap']['nb_package'] += $stat['nb_package'];
$poles[4]['employee'][] = $stat;
break;
case '28':
default:
$poles[5]['recap']['quantity'] += $stat['quantity'];
$poles[5]['recap']['nb_package'] += $stat['nb_package'];
$poles[5]['employee'][] = $stat;
break;
}
$total_quantity += $stat['quantity'];
}
$total_colis = $this->getTotalColis();
$total_quantity = 0;
echo '
Stats de la logistique
Id Employee
Prénom
Nom
Email
Quantité
Nombre de colis
% total
';
foreach ($poles as $k => $pole) {
echo '
'.$pole['name'].'
'.$pole['recap']['quantity'].'
'.$pole['recap']['nb_package'].'
'. number_format(($pole['recap']['nb_package']* 100 / $total_colis), 2) .' %
';
foreach ($pole['employee'] as $key => $stat) {
echo '
'.$stat['id_employee'].'
'.$stat['firstname'].'
'.$stat['lastname'].'
'.$stat['email'].'
'.$stat['quantity'].'
'.$stat['nb_package'].'
'. number_format(($stat['nb_package']* 100 / $total_colis), 2) .' %
';
}
}
echo '
Total :
'.$total_quantity.'
'.$total_colis.'
100 %
';
$reports = array(
'25' => array(
'name' => 'Nb commandes > 25j',
'payment' => $this->getReport(25,2),
'partial' => $this->getReport(25,17)
),
'21' => array(
'name' => 'Nb commandes > 21j',
'payment' => $this->getReport(21,2),
'partial' => $this->getReport(21,17)
),
'18' => array(
'name' => 'Nb commandes > 18j',
'payment' => $this->getReport(18,2),
'partial' => $this->getReport(18,17)
),
'2' => array(
'name' => 'Nb commandes > 2j',
'payment' => $this->getReport(2,2),
'partial' => $this->getReport(2,17)
)
);
echo 'Report Stock
'
;
echo '
Paiement accepté
Commande partiellement expédiée
';
foreach ($reports as $k => $report) {
echo '
'.$report['name'].'
'.date('Y-m-d', strtotime($this->date_stock. ' - '.$k.' days')).'
'.$report['payment'].'
'.$report['partial'].'
';
}
echo '
';
}
public function getStats() {
return Db::getInstance()->executeS('
SELECT
e.`id_employee`,
e.`email`,
e.`lastname`,
e.`firstname`,
SUM(s.`nb_product`) AS `nb_product`,
SUM(s.`quantity`) AS `quantity`,
SUM(s.`nb_package`) AS `nb_package`
FROM `'._DB_PREFIX_.'stats_logistic` s
LEFT JOIN `'._DB_PREFIX_.'employee` e USING(`id_employee`)
WHERE s.`date` BETWEEN "'.pSQL($this->date_begin).'" AND "'.pSQL($this->date_end).'"
GROUP BY s.`id_employee`
');
}
public function getTotalColis() {
return Db::getInstance()->getValue('
SELECT
SUM(s.`nb_package`) AS `nb_package`
FROM `'._DB_PREFIX_.'stats_logistic` s
WHERE s.`date` BETWEEN "'.pSQL($this->date_begin).'" AND "'.pSQL($this->date_end).'"
');
}
public function getReport($day = 25, $state = 2) {
return Db::getInstance()->getValue('
SELECT COUNT(o.`id_order`)
FROM `'._DB_PREFIX_.'orders` o
WHERE (o.`date_add` BETWEEN DATE_SUB("'.pSQL($this->date_stock).'",INTERVAL '.(int)$day.' DAY) AND "'.pSQL($this->date_stock).'")
AND
(
SELECT id_order_state
FROM '._DB_PREFIX_.'order_history oh
WHERE o.id_order = oh.id_order
ORDER BY id_order_history DESC
LIMIT 1
) = '.(int)$state.'
');
}
}