<?php
require_once 'auth.php'; requireLogin();
$db   = getDB();
$user = currentUser();

$page_title    = 'Forecast';
$page_subtitle = 'Proyección de ingresos basada en pipeline activo';
require_once 'layout.php';

// Probabilidades por etapa
$prob = [
    'prospecto'         => 5,
    'contactado'        => 15,
    'demo_agendada'     => 30,
    'demo_realizada'    => 50,
    'negociacion'       => 65,
    'propuesta_enviada' => 80,
    'ganado'            => 100,
];
$etapa_label = [
    'prospecto'         => 'Prospecto',
    'contactado'        => 'Contactado',
    'demo_agendada'     => 'Demo agendada',
    'demo_realizada'    => 'Demo realizada',
    'negociacion'       => 'Negociación',
    'propuesta_enviada' => 'Propuesta enviada',
    'ganado'            => 'Ganado',
];
$etapa_badge = [
    'prospecto'=>'b-gray','contactado'=>'b-gray','demo_agendada'=>'b-amber',
    'demo_realizada'=>'b-blue','negociacion'=>'b-amber','propuesta_enviada'=>'b-purple','ganado'=>'b-green'
];
$plan_mrr = ['desafiante'=>800000,'confiado'=>1700000,'dinamico'=>2500000,''=>1700000];

// Prospectos activos (no perdido)
$prospectos = $db->query("SELECT p.*, u.nombre as asesor FROM dimark_prospectos p LEFT JOIN dimark_usuarios u ON p.asesor_id=u.id WHERE p.estado NOT IN ('perdido') ORDER BY FIELD(p.estado,'propuesta_enviada','negociacion','demo_realizada','demo_agendada','contactado','ganado','prospecto'), p.empresa")->fetchAll();

// Calcular weighted MRR
$weighted_total = 0;
$por_etapa = [];
foreach ($prospectos as $p) {
    $mrr = $plan_mrr[$p['plan_interes']??''] ?? 1700000;
    $pct = $prob[$p['estado']] ?? 0;
    $weighted = round($mrr * $pct / 100);
    $weighted_total += $weighted;
    $por_etapa[$p['estado']]['count'] = ($por_etapa[$p['estado']]['count'] ?? 0) + 1;
    $por_etapa[$p['estado']]['weighted'] = ($por_etapa[$p['estado']]['weighted'] ?? 0) + $weighted;
    $por_etapa[$p['estado']]['total_mrr'] = ($por_etapa[$p['estado']]['total_mrr'] ?? 0) + $mrr;
}

// MRR actual de clientes
$mrr_actual = (float)$db->query("SELECT COALESCE(SUM(precio_mes),0) FROM dimark_clientes")->fetchColumn();

$cnt_prosp = count($prospectos);
$cnt_activos = count(array_filter($prospectos, fn($p) => !in_array($p['estado'],['ganado'])));
?>

<!-- MÉTRICAS FORECAST -->
<div class="metrics-grid" style="margin-bottom:20px">
  <div class="metric"><div class="metric-n"><?=number_format($mrr_actual/1000000,1)?>M</div><div class="metric-l">MRR actual (COP)</div></div>
  <div class="metric"><div class="metric-n amber"><?=number_format($weighted_total/1000000,1)?>M</div><div class="metric-l">Weighted pipeline (COP)</div></div>
  <div class="metric"><div class="metric-n"><?=$cnt_activos?></div><div class="metric-l">Prospectos activos</div></div>
  <div class="metric"><div class="metric-n green"><?=number_format(($mrr_actual+$weighted_total)/1000000,1)?>M</div><div class="metric-l">Proyección optimista</div></div>
</div>

<!-- RESUMEN POR ETAPA -->
<div class="section-label">Pipeline por etapa</div>
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin-bottom:20px">
<?php foreach($etapa_label as $estado => $label):
  $d = $por_etapa[$estado] ?? ['count'=>0,'weighted'=>0,'total_mrr'=>0];
  if(!$d['count']) continue;
  $p_val = $prob[$estado];
?>
<div style="background:#fff;border:0.5px solid var(--border);border-radius:10px;padding:12px">
  <div style="font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px"><?=$label?></div>
  <div style="font-size:18px;font-weight:800;font-family:'Syne',sans-serif;color:var(--black)"><?=$d['count']?></div>
  <div style="font-size:11px;color:var(--muted);margin-top:2px">$<?=number_format($d['weighted']/1000)?>K weighted</div>
  <div style="height:3px;background:var(--off);border-radius:2px;margin-top:8px"><div style="height:100%;width:<?=$p_val?>%;background:var(--red);border-radius:2px"></div></div>
  <div style="font-size:10px;color:var(--muted);margin-top:3px"><?=$p_val?>% prob.</div>
</div>
<?php endforeach; ?>
</div>

<!-- TABLA DETALLADA -->
<div class="section-label">Detalle de prospectos — oportunidades activas</div>
<div class="table-wrap">
<table>
<thead><tr>
  <th style="width:24%">Empresa</th>
  <th style="width:18%">Etapa</th>
  <th style="width:14%">Plan / MRR</th>
  <th style="width:12%">Prob.</th>
  <th style="width:14%">Weighted</th>
  <th style="width:18%">Asesor / Follow-up</th>
</tr></thead>
<tbody>
<?php foreach($prospectos as $p):
  $mrr   = $plan_mrr[$p['plan_interes']??''] ?? 1700000;
  $pct   = $prob[$p['estado']] ?? 0;
  $wgt   = round($mrr * $pct / 100);
  $hoy   = date('Y-m-d');
  $fu    = $p['fecha_followup'];
  $dias  = $fu ? (int)((strtotime($fu)-strtotime($hoy))/86400) : null;
  $fu_col = $dias === null ? 'var(--muted)' : ($dias < 0 ? '#A32D2D' : ($dias === 0 ? '#854F0B' : '#0F6E56'));
  $plan_labels = ['desafiante'=>'Solo Ads','confiado'=>'Ads+Cont.','dinamico'=>'Ecosistema',''=>'—'];
?>
<tr>
  <td>
    <a href="prospectos.php?accion=ver&id=<?=$p['id']?>" style="font-weight:500;color:var(--text)"><?=clean($p['empresa'])?></a>
    <?php if($p['pais']||$p['ciudad']): ?>
    <div style="font-size:11px;color:var(--muted)"><?=clean($p['ciudad']??'')?><?=($p['ciudad']&&$p['pais'])?', ':''?><?=clean($p['pais']??'')?></div>
    <?php endif; ?>
  </td>
  <td><span class="badge <?=$etapa_badge[$p['estado']]??'b-gray'?>" style="font-size:10px"><?=$etapa_label[$p['estado']]??$p['estado']?></span></td>
  <td>
    <div style="font-size:12px;font-weight:500"><?=$plan_labels[$p['plan_interes']??'']?></div>
    <div style="font-size:11px;color:var(--muted)">$<?=number_format($mrr)?></div>
  </td>
  <td>
    <div style="display:flex;align-items:center;gap:4px">
      <div style="height:4px;flex:1;background:var(--off);border-radius:2px"><div style="height:100%;width:<?=$pct?>%;background:<?=$pct>=65?'#0F6E56':($pct>=30?'var(--yellow)':'#888')?>; border-radius:2px"></div></div>
      <span style="font-size:11px;font-weight:600;width:28px"><?=$pct?>%</span>
    </div>
  </td>
  <td style="font-weight:600;color:<?=$pct>=65?'#0F6E56':($pct>=30?'#854F0B':'var(--muted)')?>">$<?=number_format($wgt)?></td>
  <td>
    <div style="font-size:12px"><?=clean($p['asesor']??'—')?></div>
    <?php if($fu): ?>
    <div style="font-size:11px;font-weight:600;color:<?=$fu_col?>"><?=$dias===0?'Hoy':($dias<0?"Venc. ".abs($dias)."d":date('d/m/Y',strtotime($fu)))?></div>
    <?php endif; ?>
  </td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>

<div style="margin-top:12px;font-size:11px;color:var(--muted)">
  Probabilidades por etapa: Prospecto 5% · Contactado 15% · Demo agendada 30% · Demo realizada 50% · Negociación 65% · Propuesta enviada 80% · Ganado 100%
</div>

<?php require_once 'layout_end.php'; ?>
