Autosave: 20260803-075226

This commit is contained in:
Flatlogic Bot 2026-08-03 07:50:46 +00:00
parent ec0a3af33e
commit c2dc55080c

View File

@ -153,7 +153,7 @@ if ($user_role === 'Administrador' || $user_role === 'Control Logistico' || $use
$stmt_completados = $pdo->prepare("
SELECT COUNT(*)
FROM pedidos
WHERE asesor_id = ? AND estado = 'COMPLETADO ✅' AND MONTH(created_at) = ? AND YEAR(created_at) = ?
WHERE asesor_id = ? AND estado = 'COMPLETADO ✅' AND MONTH(COALESCE(fecha_completado, created_at)) = ? AND YEAR(COALESCE(fecha_completado, created_at)) = ?
");
$stmt_completados->execute([$asesor['id'], $selected_month, $selected_year]);
$total_completados = $stmt_completados->fetchColumn();
@ -198,6 +198,7 @@ $pedidos_mensual_contraentrega_asesora = [];
$asesoras_mensual = [];
$asesoras_mensual_provincia = [];
$asesoras_mensual_contraentrega = [];
$asesor_data_provincia = [];
if ($user_role === 'Administrador' || $user_role === 'Control Logistico' || $user_role === 'Logistica' || $user_role === 'Asesor') {
// 1. Obtener todas las asesoras
@ -211,18 +212,27 @@ if ($user_role === 'Administrador' || $user_role === 'Control Logistico' || $use
$asesora_ids = array_column($asesoras_mensual, 'id');
if (!empty($asesora_ids)) {
// PROVINCIA
// PROVINCIA (se cuenta por fecha de registro del pedido)
$estados_provincia = ['ROTULADO 📦', 'EN TRANSITO 🚛', 'EN DESTINO 🏬', 'COMPLETADO ✅'];
$placeholders_estados_prov = implode(',', array_fill(0, count($estados_provincia), '?'));
$placeholders_asesores = implode(',', array_fill(0, count($asesora_ids), '?'));
$asesor_data_provincia = [];
foreach ($asesoras_mensual as $asesora) {
$asesor_data_provincia[$asesora['id']] = [
'nombre' => !empty($asesora['nombre_asesor']) ? $asesora['nombre_asesor'] : '',
'pedidos' => array_fill_keys($estados_provincia, 0),
'total' => 0
];
}
$provincia_date_expr = 'p.created_at'; // Fecha de registro del envío
$stmt_prov = $pdo->prepare("
SELECT DAY(created_at) as dia, asesor_id, COUNT(id) as total_pedidos
FROM pedidos
WHERE estado IN ($placeholders_estados_prov)
AND MONTH(created_at) = ? AND YEAR(created_at) = ?
AND asesor_id IN ($placeholders_asesores)
GROUP BY dia, asesor_id
SELECT DAY($provincia_date_expr) as dia, p.asesor_id, COUNT(p.id) as total_pedidos
FROM pedidos p
WHERE p.estado IN ($placeholders_estados_prov)
AND MONTH($provincia_date_expr) = ? AND YEAR($provincia_date_expr) = ?
AND p.asesor_id IN ($placeholders_asesores)
GROUP BY dia, p.asesor_id
");
$params_prov = array_merge($estados_provincia, [$selected_month, $selected_year], $asesora_ids);
$stmt_prov->execute($params_prov);
@ -250,6 +260,36 @@ if ($user_role === 'Administrador' || $user_role === 'Control Logistico' || $use
return $total_a <=> $total_b; // de menor a mayor
});
$stmt_resumen_prov = $pdo->prepare("
SELECT p.asesor_id, p.estado, COUNT(p.id) as total_pedidos
FROM pedidos p
WHERE p.estado IN ($placeholders_estados_prov)
AND MONTH($provincia_date_expr) = ? AND YEAR($provincia_date_expr) = ?
AND p.asesor_id IN ($placeholders_asesores)
GROUP BY p.asesor_id, p.estado
");
$stmt_resumen_prov->execute($params_prov);
$resumen_prov_data = $stmt_resumen_prov->fetchAll(PDO::FETCH_ASSOC);
foreach ($resumen_prov_data as $row) {
$asesor_id = (int)$row['asesor_id'];
$estado = $row['estado'];
$total_pedidos = (int)$row['total_pedidos'];
if (isset($asesor_data_provincia[$asesor_id])) {
$asesor_data_provincia[$asesor_id]['pedidos'][$estado] = $total_pedidos;
}
}
foreach ($asesor_data_provincia as &$data_prov) {
$data_prov['total'] = array_sum($data_prov['pedidos']);
}
unset($data_prov);
uasort($asesor_data_provincia, function ($a, $b) {
return $b['total'] <=> $a['total'];
});
// CONTRAENTREGA
$estados_contraentrega = ['RUTA_CONTRAENTREGA', 'RETORNADO', 'ENTREGA EXITOSA'];
$placeholders_estados_contra = implode(',', array_fill(0, count($estados_contraentrega), '?'));
@ -623,14 +663,14 @@ $selected_month] . ' ' . $selected_year; ?>)</h6>
</tr>
</thead>
<tbody>
<?php if (empty($asesor_data)): ?>
<?php if (empty($asesor_data_provincia)): ?>
<tr><td colspan="<?php echo count($estados_provincia) + 2; ?>" class="text-center">No hay datos para el período seleccionado.</td></tr>
<?php else: ?>
<?php
$totals_provincia = array_fill_keys($estados_provincia, 0);
$grand_total_provincia = 0;
foreach ($asesor_data as $data):
foreach ($asesor_data_provincia as $data):
echo "<tr>";
echo "<td>" . htmlspecialchars($data['nombre']) . "</td>";
@ -660,7 +700,7 @@ $selected_month] . ' ' . $selected_year; ?>)</h6>
?>
<?php endif; ?>
</tbody>
<?php if (!empty($asesor_data)): ?>
<?php if (!empty($asesor_data_provincia)): ?>
<tfoot>
<tr style="background-color: #f8f9fc; font-weight: bold;">
<td>Total Provincia</td>