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

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

$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($idproducto!=''){
    $where.=" AND d.idproducto='$idproducto' ";
}

/* SELECTOR PRODUCTOS */
$productos = $mysqli->query("SELECT id,producto FROM z_productos ORDER BY producto");

/* =========================
   KPIs PRODUCTOS (SOLO DETALLE)
========================= */
$kpi = $mysqli->query("
SELECT 
COUNT(DISTINCT d.idproducto) AS productos,
SUM(d.cantidad * pp.cantidad) AS unidades,
SUM(d.cantidad * d.precio) AS ventas,
SUM(d.cantidad * d.precio * (pp.ganancia/100)) AS 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();

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

/* =========================
   TOP PRODUCTOS POR VENTAS
========================= */
$top_ventas = $mysqli->query("
SELECT pr.producto,
SUM(d.cantidad * d.precio) total
FROM z_pedido d
JOIN z_pedidos p ON p.codigopedido=d.codigopedido
JOIN z_productos pr ON pr.id=d.idproducto
$where
GROUP BY d.idproducto
ORDER BY total DESC
LIMIT 20
");

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

/* =========================
   TOP PRODUCTOS POR UNIDADES
========================= */
$top_unidades = $mysqli->query("
SELECT pr.producto,
SUM(d.cantidad * pp.cantidad) total
FROM z_pedido d
JOIN z_pedidos p ON p.codigopedido=d.codigopedido
JOIN z_productos pr ON pr.id=d.idproducto
LEFT JOIN z_presentaciones_productos pp ON pp.id=d.idpresentacion
$where
GROUP BY d.idproducto
ORDER BY total DESC
LIMIT 20
");

/* =========================
   PRESENTACIONES MÁS RENTABLES
========================= */
$top_presentaciones = $mysqli->query("
SELECT pp.presentacion,
SUM(d.cantidad * d.precio * (pp.ganancia/100)) total
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
GROUP BY d.idpresentacion
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">

<!-- FILTRO -->
<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>Producto</label>
<select name="idproducto" class="form-control">
<option value="">Todos</option>
<?php while($p=$productos->fetch_assoc()){ ?>
<option value="<?=$p['id']?>" <?=$idproducto==$p['id']?'selected':''?>><?=$p['producto']?></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">Productos vendidos<br><b><?=$kpi['productos']?></b></div></div>
<div class="col-md-2"><div class="card p-2">Unidades reales<br><b><?=number_format($kpi['unidades'])?></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>

<!-- TOP VENTAS -->
<div class="row mt-4">
<div class="col-md-6">
<h5>Top productos por ventas</h5>
<table class="table table-dark table-sm">
<tr><th>Producto</th><th class="text-right">Ventas</th></tr>
<?php while($p=$top_ventas->fetch_assoc()){ ?>
<tr>
<td><?=$p['producto']?></td>
<td class="text-right">$<?=number_format($p['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 productos por utilidad</h5>
<table class="table table-dark table-sm">
<tr><th>Producto</th><th class="text-right">Utilidad</th></tr>
<?php while($p=$top_utilidad->fetch_assoc()){ ?>
<tr>
<td><?=$p['producto']?></td>
<td class="text-right">$<?=number_format($p['total'])?></td>
</tr>
<?php } ?>
</table>
</div>
<div class="col-md-6"><canvas id="grafUtilidad"></canvas></div>
</div>

<!-- TOP UNIDADES -->
<div class="row mt-4">
<div class="col-md-6">
<h5>Top productos por unidades</h5>
<table class="table table-dark table-sm">
<tr><th>Producto</th><th class="text-right">Unidades</th></tr>
<?php while($p=$top_unidades->fetch_assoc()){ ?>
<tr>
<td><?=$p['producto']?></td>
<td class="text-right"><?=number_format($p['total'])?></td>
</tr>
<?php } ?>
</table>
</div>
<div class="col-md-6"><canvas id="grafUnidades"></canvas></div>
</div>

<!-- PRESENTACIONES -->
<div class="row mt-4">
<div class="col-md-6">
<h5>Presentaciones más rentables</h5>
<table class="table table-dark table-sm">
<tr><th>Presentación</th><th class="text-right">Utilidad</th></tr>
<?php while($p=$top_presentaciones->fetch_assoc()){ ?>
<tr>
<td><?=$p['presentacion']?></td>
<td class="text-right">$<?=number_format($p['total'])?></td>
</tr>
<?php } ?>
</table>
</div>
<div class="col-md-6"><canvas id="grafPresentaciones"></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($p=$top_ventas->fetch_assoc()){echo "'".$p['producto']."',";} ?>],
[<?php $top_ventas->data_seek(0); while($p=$top_ventas->fetch_assoc()){echo $p['total'].",";} ?>],
'Ventas por producto');

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

makeBar('grafUnidades',
[<?php $top_unidades->data_seek(0); while($p=$top_unidades->fetch_assoc()){echo "'".$p['producto']."',";} ?>],
[<?php $top_unidades->data_seek(0); while($p=$top_unidades->fetch_assoc()){echo $p['total'].",";} ?>],
'Unidades vendidas');

makeBar('grafPresentaciones',
[<?php $top_presentaciones->data_seek(0); while($p=$top_presentaciones->fetch_assoc()){echo "'".$p['presentacion']."',";} ?>],
[<?php $top_presentaciones->data_seek(0); while($p=$top_presentaciones->fetch_assoc()){echo $p['total'].",";} ?>],
'Utilidad por presentación');
</script>

</body>
</html>
