<?php 
$r="../";
require_once($r."inc/funciones.php");
validNotSession($r);
$titlepage = 'INDICADORES VENDEDORES PRO';
$mysqli = connectDB($r);

$fi = $_GET['fi'] ?? date("Y-m-01");
$ff = $_GET['ff'] ?? date("Y-m-d");
$iduser = $_GET['iduser'] ?? '';

$inicio_actual = "$fi 00:00:00";
$fin_actual    = "$ff 23:59:59";

$where = "
WHERE p.fecha >= '$inicio_actual'
AND p.fecha <= '$fin_actual'
AND p.estado NOT IN (0,4,5)
";

if($iduser!=''){
    $where.=" AND p.idvendedor='$iduser' ";
}

/* SELECTOR */
$vendedores = $mysqli->query("SELECT id,nombre FROM z_usuarios_vendedores ORDER BY nombre");

/* =========================
   KPIs VENDEDORES
========================= */
$base = $mysqli->query("
SELECT 
COUNT(DISTINCT p.idvendedor) vendedores,
COUNT(*) pedidos,
SUM(p.total) ventas,
AVG(p.total) ticket,
COUNT(DISTINCT p.idcliente) clientes,
COUNT(DISTINCT DATE(p.fecha)) dias
FROM z_pedidos p
$where
")->fetch_assoc();

$util = $mysqli->query("
SELECT 
SUM(d.cantidad * d.precio * (pp.ganancia/100)) utilidad
FROM z_pedido d
JOIN z_pedidos p ON p.codigopedido=d.codigopedido
LEFT JOIN z_presentaciones_productos pp ON pp.id=d.idpresentacion
$where
")->fetch_assoc();

$kpi = $base;
$kpi['utilidad'] = $util['utilidad'] ?? 0;

$margen = ($kpi['ventas']>0) ? ($kpi['utilidad']/$kpi['ventas']*100) : 0;

/* =========================
   TOP VENDEDORES POR VENTAS
========================= */
$top_ventas = $mysqli->query("
SELECT u.nombre,
SUM(p.total) total
FROM z_pedidos p
JOIN z_usuarios_vendedores u ON u.id=p.idvendedor
$where
GROUP BY p.idvendedor
ORDER BY total DESC
LIMIT 20
");

/* =========================
   TOP VENDEDORES POR UTILIDAD
========================= */
$top_utilidad = $mysqli->query("
SELECT u.nombre,
SUM(d.cantidad * d.precio * (pp.ganancia/100)) total
FROM z_pedido d
JOIN z_pedidos p ON p.codigopedido=d.codigopedido
JOIN z_usuarios_vendedores u ON u.id=p.idvendedor
LEFT JOIN z_presentaciones_productos pp ON pp.id=d.idpresentacion
$where
GROUP BY p.idvendedor
ORDER BY total DESC
LIMIT 20
");

/* =========================
   VENDEDORES MÁS ACTIVOS (PEDIDOS)
========================= */
$top_pedidos = $mysqli->query("
SELECT u.nombre,
COUNT(*) total
FROM z_pedidos p
JOIN z_usuarios_vendedores u ON u.id=p.idvendedor
$where
GROUP BY p.idvendedor
ORDER BY total DESC
LIMIT 20
");

/* =========================
   CLIENTES ATENDIDOS POR VENDEDOR
========================= */
$top_clientes = $mysqli->query("
SELECT u.nombre,
COUNT(DISTINCT p.idcliente) total
FROM z_pedidos p
JOIN z_usuarios_vendedores u ON u.id=p.idvendedor
$where
GROUP BY p.idvendedor
ORDER BY total DESC
LIMIT 20
");
?>

<!DOCTYPE html>
<html lang="es">
<?php include $r."inc/head.php"; ?>
<body class="fixed-nav sticky-footer bg-dark" id="page-top">
<?php include $r."inc/nav.php"; ?>

<div class="content-wrapper">
<div class="container-fluid">

<div class="card mb-3 p-3">
<form class="form-row">
<div class="col-md-3">
<label>Desde</label>
<input type="date" name="fi" value="<?=$fi?>" class="form-control">
</div>

<div class="col-md-3">
<label>Hasta</label>
<input type="date" name="ff" value="<?=$ff?>" class="form-control">
</div>

<div class="col-md-4">
<label>Vendedor</label>
<select name="iduser" class="form-control">
<option value="">Todos</option>
<?php while($v=$vendedores->fetch_assoc()){ ?>
<option value="<?=$v['id']?>" <?=$iduser==$v['id']?'selected':''?>><?=$v['nombre']?></option>
<?php } ?>
</select>
</div>

<div class="col-md-2 mt-4">
<button class="btn btn-primary btn-block">Filtrar</button>
</div>
</form>
</div>

<!-- KPIs -->
<div class="row text-center">
<div class="col-md-2"><div class="card p-2">Vendedores activos<br><b><?=$kpi['vendedores']?></b></div></div>
<div class="col-md-2"><div class="card p-2">Ventas<br><b>$<?=number_format($kpi['ventas'])?></b></div></div>
<div class="col-md-2"><div class="card p-2">Utilidad<br><b>$<?=number_format($kpi['utilidad'])?></b></div></div>
<div class="col-md-2"><div class="card p-2">Margen<br><b><?=number_format($margen,2)?>%</b></div></div>
<div class="col-md-2"><div class="card p-2">Pedidos<br><b><?=$kpi['pedidos']?></b></div></div>
<div class="col-md-2"><div class="card p-2">Ticket prom<br><b>$<?=number_format($kpi['ticket'])?></b></div></div>
</div>

<div class="row text-center mt-2">
<div class="col-md-3"><div class="card p-2">Clientes atendidos<br><b><?=$kpi['clientes']?></b></div></div>
<div class="col-md-3"><div class="card p-2">Días trabajados<br><b><?=$kpi['dias']?></b></div></div>
</div>

<!-- TOP VENTAS -->
<div class="row mt-4">
<div class="col-md-6">
<h5>Top vendedores por ventas</h5>
<table class="table table-dark table-sm">
<tr><th>Vendedor</th><th class="text-right">Ventas</th></tr>
<?php while($v=$top_ventas->fetch_assoc()){ ?>
<tr>
<td><?=$v['nombre']?></td>
<td class="text-right">$<?=number_format($v['total'])?></td>
</tr>
<?php } ?>
</table>
</div>
<div class="col-md-6"><canvas id="grafVentas"></canvas></div>
</div>

<!-- TOP UTILIDAD -->
<div class="row mt-4">
<div class="col-md-6">
<h5>Top vendedores por utilidad</h5>
<table class="table table-dark table-sm">
<tr><th>Vendedor</th><th class="text-right">Utilidad</th></tr>
<?php while($v=$top_utilidad->fetch_assoc()){ ?>
<tr>
<td><?=$v['nombre']?></td>
<td class="text-right">$<?=number_format($v['total'])?></td>
</tr>
<?php } ?>
</table>
</div>
<div class="col-md-6"><canvas id="grafUtilidad"></canvas></div>
</div>

<!-- PEDIDOS -->
<div class="row mt-4">
<div class="col-md-6">
<h5>Vendedores más activos</h5>
<table class="table table-dark table-sm">
<tr><th>Vendedor</th><th class="text-right">Pedidos</th></tr>
<?php while($v=$top_pedidos->fetch_assoc()){ ?>
<tr>
<td><?=$v['nombre']?></td>
<td class="text-right"><?=$v['total']?></td>
</tr>
<?php } ?>
</table>
</div>
<div class="col-md-6"><canvas id="grafPedidos"></canvas></div>
</div>

<!-- CLIENTES -->
<div class="row mt-4">
<div class="col-md-6">
<h5>Clientes atendidos por vendedor</h5>
<table class="table table-dark table-sm">
<tr><th>Vendedor</th><th class="text-right">Clientes</th></tr>
<?php while($v=$top_clientes->fetch_assoc()){ ?>
<tr>
<td><?=$v['nombre']?></td>
<td class="text-right"><?=$v['total']?></td>
</tr>
<?php } ?>
</table>
</div>
<div class="col-md-6"><canvas id="grafClientes"></canvas></div>
</div>

</div>
<?php include $r."inc/foot.php"; ?>
</div>

<script>
function makeBar(id, labels, data, titulo){
const baseColors=['#4e73df','#1cc88a','#36b9cc','#f6c23e','#e74a3b','#858796','#20c997','#fd7e14','#6610f2','#6f42c1'];
let bg=[];
for(let i=0;i<data.length;i++){ bg.push(baseColors[i % baseColors.length]); }
new Chart(document.getElementById(id),{
type:'bar',
data:{labels:labels,datasets:[{label: titulo,data:data,backgroundColor:bg}]},
options:{responsive:true}
});
}

makeBar('grafVentas',
[<?php $top_ventas->data_seek(0); while($v=$top_ventas->fetch_assoc()){echo "'".$v['nombre']."',";} ?>],
[<?php $top_ventas->data_seek(0); while($v=$top_ventas->fetch_assoc()){echo $v['total'].",";} ?>],
'Ventas por vendedor');

makeBar('grafUtilidad',
[<?php $top_utilidad->data_seek(0); while($v=$top_utilidad->fetch_assoc()){echo "'".$v['nombre']."',";} ?>],
[<?php $top_utilidad->data_seek(0); while($v=$top_utilidad->fetch_assoc()){echo $v['total'].",";} ?>],
'Utilidad por vendedor');

makeBar('grafPedidos',
[<?php $top_pedidos->data_seek(0); while($v=$top_pedidos->fetch_assoc()){echo "'".$v['nombre']."',";} ?>],
[<?php $top_pedidos->data_seek(0); while($v=$top_pedidos->fetch_assoc()){echo $v['total'].",";} ?>],
'Pedidos por vendedor');

makeBar('grafClientes',
[<?php $top_clientes->data_seek(0); while($v=$top_clientes->fetch_assoc()){echo "'".$v['nombre']."',";} ?>],
[<?php $top_clientes->data_seek(0); while($v=$top_clientes->fetch_assoc()){echo $v['total'].",";} ?>],
'Clientes atendidos');
</script>

</body>
</html>
