<?php
// Depto de Engenharia e Automacao - Master Automacao - Autor: Derlivon Silva
$actionUrl = '/convenios/painel';
?>
<div class="pbi-page-header">
    <div class="pbi-page-icon"><i class="bi bi-credit-card-2-front"></i></div>
    <div>
        <div class="pbi-page-title">Convênios — Painel</div>
        <div class="pbi-page-subtitle">Vendas via Grancard / VR / Alelo / convênios PJ — quanto entrou, quanto está aberto, quanto está vencido</div>
    </div>
    <div class="ms-auto"><button class="btn btn-sm btn-outline-secondary" onclick="window.print()"><i class="bi bi-printer"></i> Imprimir / PDF</button></div>
</div>
<?php if (file_exists(__DIR__ . '/_submenu.php')) include __DIR__ . '/_submenu.php'; ?>
<?php if (file_exists(__DIR__ . '/../produtos/_filtro.php')) include __DIR__ . '/../produtos/_filtro.php'; ?>

<div class="pbi-kpi-grid mb-3" id="conv-kpis">
    <?php for($i=0;$i<5;$i++): ?>
    <div class="pbi-kpi-card"><div class="pbi-kpi-label pbi-skeleton" style="width:60%;height:.8rem;border-radius:4px">&nbsp;</div>
        <div class="pbi-kpi-value pbi-skeleton mt-2" style="width:50%;height:1.4rem;border-radius:4px">&nbsp;</div></div>
    <?php endfor; ?>
</div>

<div class="pbi-card">
    <div class="pbi-card-header d-flex justify-content-between flex-wrap">
        <span><i class="bi bi-list-ul me-2"></i>Convênios cadastrados — vendido vs recebido no período</span>
        <small class="text-muted" id="lista-badge">—</small>
    </div>
    <div class="pbi-card-body">
        <div id="lista-tabela"><div class="text-center py-4"><div class="spinner-border text-accent"></div></div></div>
    </div>
</div>

<script>
(function () {
'use strict';
var INI = <?= json_encode($filtros['dataIni'] ?? date('Y-m-01')) ?>;
var FIM = <?= json_encode($filtros['dataFim'] ?? date('Y-m-d')) ?>;
function brl(v){return (v==null||isNaN(+v))?'—':(+v).toLocaleString('pt-BR',{style:'currency',currency:'BRL'});}
function num(v){return (v==null||isNaN(+v))?'—':(+v).toLocaleString('pt-BR',{minimumFractionDigits:0,maximumFractionDigits:0});}
function esc(s){return String(s??'').replace(/[&<>"]/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;'}[c]));}

function kpiCard(bgIcon, icon, color, label, value, sub) {
    return '<div class="pbi-kpi-card">'
        + '<div class="pbi-kpi-icon" style="background:' + bgIcon + '"><i class="bi ' + icon + '" style="color:' + color + '"></i></div>'
        + '<div class="pbi-kpi-body"><div class="pbi-kpi-label">' + label + '</div>'
        + '<div class="pbi-kpi-value" style="color:' + color + '">' + value + '</div>'
        + '<div class="pbi-kpi-sub">' + sub + '</div></div></div>';
}

fetch('/api/convenios/painel?data_ini='+encodeURIComponent(INI)+'&data_fim='+encodeURIComponent(FIM))
.then(r=>r.json()).then(j=>{
    if(!j.ok) throw new Error(j.erro||'erro');
    var k = j.kpis||{};
    var diferenca = (k.vendido_periodo||0) - (k.recebido_periodo||0) - (k.saldo_aberto_periodo||0);
    var html = ''
      + kpiCard('rgba(79,142,247,.12)','bi-credit-card-2-front','#4f8ef7','Convênios Ativos', num(k.total_convenios_ativos||0), 'cadastrados na empresa')
      + kpiCard('rgba(16,185,129,.12)','bi-cash-coin','#10b981','Vendido (período)', brl(k.vendido_periodo||0), num(k.qtd_titulos_periodo||0) + ' títulos')
      + kpiCard('rgba(168,85,247,.12)','bi-bank','#a855f7','Recebido', brl(k.recebido_periodo||0), 'já entrou no caixa')
      + kpiCard('rgba(245,158,11,.12)','bi-hourglass-split','#f59e0b','Em aberto (período)', brl(k.saldo_aberto_periodo||0), 'a receber')
      + kpiCard('rgba(239,68,68,.12)','bi-exclamation-triangle-fill','#ef4444','Vencido (TOTAL)', brl(k.vencido_total||0), num(k.qtd_titulos_vencidos||0) + ' títulos atrasados')
    ;
    document.getElementById('conv-kpis').innerHTML = html;

    var lista = j.lista||[];
    document.getElementById('lista-badge').textContent = lista.length + ' convênio(s)';
    if(!lista.length){
        document.getElementById('lista-tabela').innerHTML =
          '<div class="alert alert-info mb-0"><i class="bi bi-info-circle me-2"></i>Nenhum convênio cadastrado nesta empresa. Cadastre os convênios (Grancard, VR, Alelo, etc) no ERP Fire Sistemas pra ativar este relatório.</div>';
        return;
    }
    var h = '<div class="table-responsive"><table class="table table-sm table-hover mb-0 pbi-table">';
    h += '<thead><tr>'
      + '<th>Convênio</th>'
      + '<th class="text-end">% Desc.</th>'
      + '<th class="text-end">Vendido</th>'
      + '<th class="text-end">Recebido</th>'
      + '<th class="text-end">Saldo aberto</th>'
      + '<th class="text-end">Vencido</th>'
      + '<th class="text-end">% recebido</th>'
      + '</tr></thead><tbody>';
    lista.forEach(c=>{
        var vendido  = +c.VENDIDO_PERIODO || 0;
        var recebido = +c.RECEBIDO_PERIODO || 0;
        var aberto   = +c.SALDO_TOTAL_ABERTO || 0;
        var vencido  = +c.SALDO_VENCIDO || 0;
        var perc = vendido > 0 ? (recebido / vendido * 100) : 0;
        var corPerc = perc >= 95 ? '#10b981' : (perc >= 80 ? '#f59e0b' : '#ef4444');
        var origem = c.ORIGEM || 'convenio';
        var origemBadge = origem === 'forma_pgto'
            ? '<span class="badge bg-info-subtle text-info ms-1" title="Forma de pagamento que recebe depois">forma de pgto</span>'
            : '<span class="badge bg-success-subtle text-success ms-1" title="Cadastrado como convênio formal no ERP Fire Sistemas">convênio</span>';
        h += '<tr>'
          + '<td><strong>'+esc(c.NOME)+'</strong>' + origemBadge
          + (c.ATIVO === 'S' ? '' : ' <span class="badge bg-secondary">inativo</span>')
          + '<div class="text-muted small">'+esc(c.RAZAO||'')+'</div></td>'
          + '<td class="text-end">' + (c.DESCONTO ? (+c.DESCONTO).toFixed(1)+'%' : '—') + '</td>'
          + '<td class="text-end">'+brl(vendido)+'</td>'
          + '<td class="text-end">'+brl(recebido)+'</td>'
          + '<td class="text-end">'+brl(aberto)+'</td>'
          + '<td class="text-end" style="color:'+(vencido>0?'#ef4444':'inherit')+'">'+brl(vencido)+'</td>'
          + '<td class="text-end fw-semibold" style="color:'+corPerc+'">'+perc.toFixed(1)+'%</td>'
          + '</tr>';
    });
    h += '</tbody></table></div>';
    document.getElementById('lista-tabela').innerHTML = h;
}).catch(e=>{
    document.getElementById('conv-kpis').innerHTML = '';
    document.getElementById('lista-tabela').innerHTML = '<div class="alert alert-danger">Erro: '+esc(e.message)+'</div>';
});
})();
</script>
