<?php
// Depto de Engenharia e Automação - Master Automação - Autor: Derlivon Silva
// (parte do Premium Express BI - Fire Sistemas)
//
// /cadastro/top-criticos — Top 100 SKUs Criticos
// Foco da limpeza de cadastro: os SKUs que mais vendem nos ultimos N dias
// E estao com cadastro furado (sem custo, sem preco, prejuizo, suspeito, sem marca).
// Mesmo padrao visual de /diag/cadastro (KPIs + pills + tabela).

/**
 * @var string $titulo
 * @var string $subtitulo
 * @var string $erro
 * @var array  $cfg_loja
 * @var int    $dias
 * @var string $filtro
 * @var int    $limite
 * @var array  $dias_validos
 * @var array  $filtros_validos
 * @var array  $limites_validos
 * @var array  $linhas
 * @var float  $fat_total
 * @var float  $fat_top_n
 * @var float  $pct_sobre_total
 * @var int    $qtd_sem_custo
 * @var int    $qtd_prejuizo
 * @var int    $qtd_suspeito
 * @var int    $qtd_sem_preco
 * @var int    $qtd_sem_marca
 */

$e   = fn($v) => htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8');
$brl = fn($v) => 'R$ ' . number_format((float)$v, 2, ',', '.');
$num = fn($v) => number_format((float)$v, 0, ',', '.');
$pct = fn($v) => number_format((float)$v, 1, ',', '.') . '%';

$rotuloProblema = [
    'sem_custo' => ['Sem custo',     '#dc2626', '#fee2e2', 'bi-cash-coin'],
    'sem_preco' => ['Sem preço',     '#dc2626', '#fee2e2', 'bi-tag'],
    'prejuizo'  => ['Prejuízo',      '#dc2626', '#fee2e2', 'bi-graph-down-arrow'],
    'suspeito'  => ['Custo suspeito','#d97706', '#fef3c7', 'bi-exclamation-triangle-fill'],
    'sem_marca' => ['Sem marca',     '#6b7280', '#f1f5f9', 'bi-bookmark-x'],
];

$rotuloFiltro = [
    'todos'     => 'Todos',
    'sem_custo' => 'Sem custo',
    'sem_preco' => 'Sem preço',
    'prejuizo'  => 'Em prejuízo',
    'suspeito'  => 'Custo suspeito',
    'sem_marca' => 'Sem marca',
];

// Flag pra ocultar/mostrar coluna R$ vendido — protege colaborador de ver faturamento
// (default OCULTO: tela vai parar nas maos do estoque/comprador)
$mostrarValor = (int)($_GET['valor'] ?? 0) === 1;

// Helper p/ montar URL preservando os outros filtros (e tambem o flag valor)
$urlCom = function (array $over) use ($dias, $filtro, $limite, $mostrarValor): string {
    $q = array_merge(
        ['dias' => $dias, 'f' => $filtro, 'limite' => $limite],
        $mostrarValor ? ['valor' => 1] : [],
        $over
    );
    return '/cadastro/top-criticos?' . http_build_query($q);
};
$urlCsv = '/api/cadastro/top-criticos/csv?' . http_build_query([
    'dias' => $dias, 'f' => $filtro, 'limite' => $limite,
]);
$urlToggleValor = '/cadastro/top-criticos?' . http_build_query(array_merge(
    ['dias' => $dias, 'f' => $filtro, 'limite' => $limite],
    $mostrarValor ? [] : ['valor' => 1]
));
?>

<style>
/* Esconde FAB global EXPORTAR DADOS (CSV/Excel/Imprimir) nesta tela —
   ja temos botao "Exportar pra Fornecedor" no header, o FAB seria duplicado e confuso. */
#pbi-fab-export, #pbi-fab-menu { display: none !important; }
</style>

<div class="pbi-page-header">
    <div class="pbi-page-icon" style="background:#fee2e2;color:#991b1b">
        <i class="bi bi-stars"></i>
    </div>
    <div>
        <div class="pbi-page-title"><?= $e($titulo) ?></div>
        <div class="pbi-page-subtitle"><?= $e($subtitulo) ?></div>
    </div>
    <div class="ms-auto d-flex gap-2 align-items-center flex-wrap">
        <a href="<?= $e($urlCsv) ?>"
           class="btn btn-success"
           title="Gera CSV com EAN, COD, descricao, marca, qtd vendida e fornecedor — pra anexar no email pro fornecedor">
            <i class="bi bi-download me-1"></i>Exportar pra Fornecedor
        </a>
        <a href="<?= $e($urlToggleValor) ?>"
           class="btn <?= $mostrarValor ? 'btn-warning' : 'btn-outline-secondary' ?>"
           title="<?= $mostrarValor ? 'Ocultar coluna R$ vendido (modo colaborador)' : 'Mostrar coluna R$ vendido (modo gestor — não compartilhar a tela com colaborador)' ?>">
            <i class="bi <?= $mostrarValor ? 'bi-eye-slash' : 'bi-eye' ?> me-1"></i><?= $mostrarValor ? 'Ocultar R$' : 'Mostrar R$' ?>
        </a>
        <a href="/diag/cadastro" class="btn btn-outline-secondary" title="Raio-X completo do cadastro">
            <i class="bi bi-clipboard-check me-1"></i>Raio-X do cadastro
        </a>
    </div>
</div>

<!-- ════ Bloco TOPO — Resumo da seleção ════ -->
<div class="pbi-card mb-3">
    <div class="pbi-card-header">
        <i class="bi bi-bullseye me-2 text-accent"></i>
        Foco da limpeza —
        <span class="text-muted small ms-2">
            Loja: <strong><?= $e($cfg_loja['nome'] ?? '—') ?></strong>
            · COD_EMPRESA <strong><?= (int)($cfg_loja['cod_empresa'] ?? 0) ?></strong>
            · Período: últimos <strong><?= (int)$dias ?> dias</strong>
        </span>
    </div>
    <div class="pbi-card-body">
        <div class="row g-3">
            <?php if ($mostrarValor): ?>
            <div class="col-6 col-md-4 col-lg-2">
                <div class="pbi-kpi-card" style="background:#f1f5f9">
                    <div class="pbi-kpi-label"><i class="bi bi-coin me-1"></i>R$ vendido (<?= $limite >= 999999 ? 'Todos' : 'Top ' . (int)$limite ?>)</div>
                    <div class="pbi-kpi-valor" style="color:#0f172a;font-size:1.15rem"><?= $e($brl($fat_top_n)) ?></div>
                    <div class="text-muted small" style="font-size:.7rem">soma dos itens críticos</div>
                </div>
            </div>
            <?php endif; ?>
            <div class="col-6 col-md-4 col-lg-2">
                <div class="pbi-kpi-card" style="background:#dbeafe">
                    <div class="pbi-kpi-label"><i class="bi bi-percent me-1"></i>% do faturamento</div>
                    <div class="pbi-kpi-valor" style="color:#1e3a8a"><?= $e($pct($pct_sobre_total)) ?></div>
                    <div class="text-muted small" style="font-size:.7rem">dos R$ <?= $e(number_format($fat_total, 0, ',', '.')) ?> totais da loja</div>
                </div>
            </div>
            <div class="col-6 col-md-4 col-lg-2">
                <div class="pbi-kpi-card" style="background:#fee2e2">
                    <div class="pbi-kpi-label"><i class="bi bi-cash-coin me-1"></i>Sem custo</div>
                    <div class="pbi-kpi-valor" style="color:#991b1b"><?= $e($num($qtd_sem_custo)) ?></div>
                    <div class="text-muted small" style="font-size:.7rem">cadastro sem custo nenhum</div>
                </div>
            </div>
            <div class="col-6 col-md-4 col-lg-2">
                <div class="pbi-kpi-card" style="background:#fee2e2">
                    <div class="pbi-kpi-label"><i class="bi bi-graph-down-arrow me-1"></i>Em prejuízo</div>
                    <div class="pbi-kpi-valor" style="color:#991b1b"><?= $e($num($qtd_prejuizo)) ?></div>
                    <div class="text-muted small" style="font-size:.7rem">PV &lt; custo final</div>
                </div>
            </div>
            <div class="col-6 col-md-4 col-lg-2">
                <div class="pbi-kpi-card" style="background:#fef3c7">
                    <div class="pbi-kpi-label"><i class="bi bi-exclamation-triangle-fill me-1"></i>Custo suspeito</div>
                    <div class="pbi-kpi-valor" style="color:#92400e"><?= $e($num($qtd_suspeito)) ?></div>
                    <div class="text-muted small" style="font-size:.7rem">&gt; R$ 100k ou &gt; 50x PV</div>
                </div>
            </div>
            <div class="col-6 col-md-4 col-lg-2">
                <div class="pbi-kpi-card" style="background:#fee2e2">
                    <div class="pbi-kpi-label"><i class="bi bi-tag me-1"></i>Sem preço</div>
                    <div class="pbi-kpi-valor" style="color:#991b1b"><?= $e($num($qtd_sem_preco)) ?></div>
                    <div class="text-muted small" style="font-size:.7rem">PRECO_VENDA &lt;= 0</div>
                </div>
            </div>
        </div>
    </div>
</div>

<?php if (!empty($erro)): ?>
    <div class="alert alert-danger" style="border-radius:10px">
        <i class="bi bi-exclamation-triangle-fill me-1"></i>
        <strong>Erro ao consultar o banco:</strong> <?= $e($erro) ?>
        <div class="small mt-1" style="opacity:.85">
            Verifique se a VPN/ERP está acessível. A tela depende de NOTAS_ITENS + NOTAS_CAB + ITENS_ESTOQUE.
        </div>
    </div>
<?php endif; ?>

<!-- ════ Filtros (pills) ════ -->
<div class="pbi-card mb-3">
    <div class="pbi-card-body">
        <div class="d-flex flex-wrap gap-3 align-items-center">
            <div>
                <div class="text-muted small" style="font-size:.7rem;text-transform:uppercase;letter-spacing:.05em">Problema</div>
                <div class="btn-group btn-group-sm mt-1" role="group">
                    <?php foreach ($filtros_validos as $f): ?>
                        <a href="<?= $e($urlCom(['f' => $f])) ?>"
                           class="btn <?= $filtro === $f ? 'btn-dark' : 'btn-outline-secondary' ?>">
                            <?= $e($rotuloFiltro[$f] ?? ucfirst($f)) ?>
                        </a>
                    <?php endforeach; ?>
                </div>
            </div>
            <div>
                <div class="text-muted small" style="font-size:.7rem;text-transform:uppercase;letter-spacing:.05em">Período</div>
                <div class="btn-group btn-group-sm mt-1" role="group">
                    <?php foreach ($dias_validos as $d): ?>
                        <a href="<?= $e($urlCom(['dias' => $d])) ?>"
                           class="btn <?= $dias === $d ? 'btn-dark' : 'btn-outline-secondary' ?>">
                            <?= (int)$d ?>d
                        </a>
                    <?php endforeach; ?>
                </div>
            </div>
            <div>
                <div class="text-muted small" style="font-size:.7rem;text-transform:uppercase;letter-spacing:.05em">Top N</div>
                <div class="btn-group btn-group-sm mt-1" role="group">
                    <?php foreach ($limites_validos as $L): ?>
                        <a href="<?= $e($urlCom(['limite' => $L])) ?>"
                           class="btn <?= $limite === $L ? 'btn-dark' : 'btn-outline-secondary' ?>">
                            <?= $L >= 999999 ? 'Todos' : (int)$L ?>
                        </a>
                    <?php endforeach; ?>
                </div>
            </div>
            <div class="ms-auto text-muted small" style="max-width:380px">
                <i class="bi bi-info-circle me-1"></i>
                Cada linha = item que está vendendo bem MAS tem cadastro furado. Corrigir aqui devolve margem
                imediata. Use o botão verde pra mandar pro fornecedor o pedido com os EANs.
            </div>
        </div>
    </div>
</div>

<!-- ════ Tabela detalhada ════ -->
<div class="pbi-card" id="detalhe">
    <div class="pbi-card-header">
        <i class="bi bi-table me-2 text-accent"></i>
        <?= $limite >= 999999 ? 'TODOS os' : 'Top ' . (int)$limite ?> SKUs Críticos —
        <span class="text-muted small ms-2"><?= $e($num(count($linhas))) ?> itens</span>
    </div>
    <div class="pbi-card-body p-0">
        <div class="table-responsive">
            <table class="table table-sm table-hover align-middle mb-0" style="font-size:.85rem">
                <thead style="background:#f8fafc;position:sticky;top:0;z-index:1">
                    <tr>
                        <th style="width:90px">COD</th>
                        <th>Descrição</th>
                        <th style="width:160px">Marca</th>
                        <th class="text-end" style="width:90px">Estoque</th>
                        <th class="text-end" style="width:110px">Preço Venda</th>
                        <th class="text-end" style="width:110px">Custo Final</th>
                        <th class="text-end" style="width:90px">Markup %</th>
                        <th style="width:160px">Status</th>
                    </tr>
                </thead>
                <tbody>
                <?php if (empty($linhas)): ?>
                    <tr><td colspan="8" class="text-center text-muted py-4">
                        <i class="bi bi-emoji-smile me-1"></i>
                        Nenhum SKU crítico encontrado nesse recorte. Cadastro limpo (ou janela curta demais).
                    </td></tr>
                <?php else: ?>
                    <?php
                    // Helper local: markup % a partir de PV e custo. Retorna ['—', cor] se nao calculavel.
                    $calcMarkup = function ($pv, $cf): array {
                        $pv = (float)$pv; $cf = (float)$cf;
                        if ($pv <= 0 || $cf <= 0) return ['—', '#6b7280'];
                        $m = ($pv - $cf) / $cf * 100;
                        $cor = $m < 0 ? '#dc2626' : ($m < 15 ? '#d97706' : '#0f172a');
                        return [number_format($m, 1, ',', '.') . '%', $cor];
                    };
                    foreach ($linhas as $r):
                        $status   = $r['STATUS'] ?? [];
                        $pv       = (float)($r['PRECO_VENDA'] ?? 0);
                        $cf       = (float)($r['CUSTO_FINAL'] ?? 0);
                        $estoque  = (float)($r['QTD_ESTOQUE_ATUAL'] ?? 0);
                        [$markup, $corMk] = $calcMarkup($pv, $cf);
                    ?>
                        <tr>
                            <td style="font-family:ui-monospace,monospace">
                                <?= $e((string)($r['COD_ITEM'] ?? '')) ?>
                            </td>
                            <td>
                                <div style="font-weight:600;color:#0f172a">
                                    <?= $e($r['DESCRICAO'] ?? '') ?>
                                </div>
                            </td>
                            <td>
                                <?php if (!empty($r['MARCA'])): ?>
                                    <?= $e($r['MARCA']) ?>
                                <?php else: ?>
                                    <span class="text-muted">—</span>
                                <?php endif; ?>
                            </td>
                            <td class="text-end"><?= $e(number_format($estoque, 0, ',', '.')) ?></td>
                            <td class="text-end"><?= $pv > 0 ? $e($brl($pv)) : '<span class="text-muted">—</span>' ?></td>
                            <td class="text-end"><?= $cf > 0 ? $e($brl($cf)) : '<span class="text-muted">—</span>' ?></td>
                            <td class="text-end" style="color:<?= $corMk ?>;font-weight:600"><?= $e($markup) ?></td>
                            <td>
                                <?php foreach ($status as $s):
                                    $cfg = $rotuloProblema[$s] ?? [ucfirst($s), '#6b7280', '#f1f5f9', 'bi-tag'];
                                ?>
                                    <span class="badge me-1 mb-1"
                                          style="background:<?= $cfg[2] ?>;color:<?= $cfg[1] ?>;font-weight:600">
                                        <?= $e(mb_strtoupper($cfg[0], 'UTF-8')) ?>
                                    </span>
                                <?php endforeach; ?>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                <?php endif; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<div class="text-muted small mt-3" style="font-size:.78rem">
    <i class="bi bi-info-circle me-1"></i>
    Critério "crítico": item que vendeu nos últimos <?= (int)$dias ?> dias E está com pelo menos 1 problema de cadastro
    (sem custo / sem preço / em prejuízo / custo suspeito / sem marca). Último fornecedor olha 180 dias retroativos
    (cache 24h). Faturamento exclui canceladas e respeita o filtro de operações de venda do cliente.
</div>
