diff --git a/assets/uploads/marketing_images/6a0b459229e98.png b/assets/uploads/marketing_images/6a0b459229e98.png new file mode 100644 index 00000000..e708cf7e Binary files /dev/null and b/assets/uploads/marketing_images/6a0b459229e98.png differ diff --git a/assets/uploads/marketing_images/6a0b4592b821f.png b/assets/uploads/marketing_images/6a0b4592b821f.png new file mode 100644 index 00000000..e708cf7e Binary files /dev/null and b/assets/uploads/marketing_images/6a0b4592b821f.png differ diff --git a/assets/uploads/vouchers/6a0b420ae0091-2438.png b/assets/uploads/vouchers/6a0b420ae0091-2438.png new file mode 100644 index 00000000..597c9695 Binary files /dev/null and b/assets/uploads/vouchers/6a0b420ae0091-2438.png differ diff --git a/assets/uploads/vouchers/6a0b448cdb0b7-4848.png b/assets/uploads/vouchers/6a0b448cdb0b7-4848.png new file mode 100644 index 00000000..a833ea1e Binary files /dev/null and b/assets/uploads/vouchers/6a0b448cdb0b7-4848.png differ diff --git a/assets/uploads/vouchers/6a0b4509e9eba-9494.png b/assets/uploads/vouchers/6a0b4509e9eba-9494.png new file mode 100644 index 00000000..54f14301 Binary files /dev/null and b/assets/uploads/vouchers/6a0b4509e9eba-9494.png differ diff --git a/assets/uploads/vouchers/6a0b4591572e5-468.png b/assets/uploads/vouchers/6a0b4591572e5-468.png new file mode 100644 index 00000000..32b989e4 Binary files /dev/null and b/assets/uploads/vouchers/6a0b4591572e5-468.png differ diff --git a/dashboard_principal.php b/dashboard_principal.php index 9e1b0e16..ca0b2082 100644 --- a/dashboard_principal.php +++ b/dashboard_principal.php @@ -195,6 +195,40 @@ $stmtTopDetalleCE = $db->query(" "); $topProductosDetalleCE = $stmtTopDetalleCE->fetchAll(PDO::FETCH_ASSOC); +// 14. Rendimiento de Productos en Contraentrega (Para Gráfica de Barras Apiladas) +$stmtProdRendimientoCE = $db->query(" + SELECT + producto, + COUNT(CASE WHEN estado = 'ENTREGA EXITOSA' THEN 1 END) as exitosas, + COUNT(CASE WHEN estado = 'RETORNADO' THEN 1 END) as retornados, + COUNT(CASE WHEN estado = 'RUTA_CONTRAENTREGA' THEN 1 END) as en_ruta, + COUNT(*) as total + FROM pedidos p + WHERE $date_condition + AND (estado IN ('RUTA_CONTRAENTREGA', 'ENTREGA EXITOSA') OR (estado = 'RETORNADO' AND agencia = 'CONTRAENTREGA')) + GROUP BY producto + ORDER BY total DESC + LIMIT 10 +"); +$prodRendimientoCE = $stmtProdRendimientoCE->fetchAll(PDO::FETCH_ASSOC); + +// 15. Rendimiento de Productos en Provincia +$stmtProdRendimientoProv = $db->query(" + SELECT + producto, + COUNT(CASE WHEN estado = 'COMPLETADO ✅' THEN 1 END) as completados, + COUNT(CASE WHEN estado = 'GESTIONES' THEN 1 END) as gestiones, + COUNT(CASE WHEN estado IN ('ROTULADO 📦', 'EN TRANSITO 🚛', 'EN DESTINO 🏬') THEN 1 END) as en_proceso, + COUNT(*) as total + FROM pedidos p + WHERE $date_condition + AND NOT (estado IN ('RUTA_CONTRAENTREGA', 'ENTREGA EXITOSA') OR (estado = 'RETORNADO' AND agencia = 'CONTRAENTREGA')) + GROUP BY producto + ORDER BY total DESC + LIMIT 10 +"); +$prodRendimientoProv = $stmtProdRendimientoProv->fetchAll(PDO::FETCH_ASSOC); + $canalesResumen = [ 'Provincia' => ['pedidos' => 0, 'monto' => 0, 'estados' => []], 'Contraentrega' => ['pedidos' => 0, 'monto' => 0, 'estados' => []] @@ -384,7 +418,7 @@ include 'layout_header.php'; Distribución Interna