Autosave: 20260803-075226
This commit is contained in:
parent
ec0a3af33e
commit
c2dc55080c
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user