<?php
include '../config.php';
include '../configuracao/modelo.php'; // Garante que a função validaAcessoTela está carregada

session_start();
$numero_da_tela = 11; // ID gerado pelo banco

    if (!validaAcessoTela($mysqli, $_SESSION['id'], $numero_da_tela)) {
        echo "<script>alert('Sem permissão para o teste número $numero_da_tela!'); window.location.href='../lista/index.php';</script>";
        exit();
    }


?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Financeiro - Morfo Engine [ADM-SECURE]</title>
    <style>
        /* RESET E ESTRUTURA BASE */
        * { box-sizing: border-box; }
        html, body { 
            height: 100%; margin: 0; padding: 0; 
            background-color: #5a7edc; /* Azul clássico desktop */
            font-family: "Tahoma", "MS Sans Serif", sans-serif; 
            font-size: 11px;
            overflow: hidden; 
        }
        
        /* CONTAINER PRINCIPAL */
        .desktop-wrapper { 
            height: 100vh;
            width: 100vw;
            display: flex;
            justify-content: center;
            align-items: flex-start; 
            padding: 5px; 
        }

        /* JANELA COM 90% DE ALTURA */
        .window { 
            display: flex; 
            flex-direction: column; 
            width: 100%;      
            height: 90vh;    
            border: 2px solid; 
            border-color: #ffffff #808080 #808080 #ffffff; 
            background: #c0c0c0; 
            box-shadow: 1px 1px 0px #000; 
        }

        /* BARRA DE TÍTULO */
        .title-bar { 
            background: linear-gradient(90deg, #000080, #1084d0); 
            color: white; 
            padding: 3px 6px; 
            font-weight: bold; 
            display: flex; 
            justify-content: space-between; 
            align-items: center; 
            flex-shrink: 0;
        }

        .title-bar-controls button {
            width: 16px; height: 14px; font-size: 9px; 
            background: #c0c0c0; border: 1px solid #000;
            padding: 0; line-height: 0;
        }

        /* CONTEÚDO INTERNO */
        .content { 
            padding: 8px; 
            display: flex; 
            flex-direction: column; 
            flex: 1; 
            gap: 8px;
            min-height: 0; 
        }

        /* FILTROS */
        fieldset { 
            border: 2px inset #fff; 
            padding: 8px; 
            flex-shrink: 0; 
        }
        legend { font-weight: bold; padding: 0 5px; }
        
        .filter-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
        .field-group { display: flex; flex-direction: column; gap: 2px; }
        
        input, select { 
            padding: 3px; border: 2px inset #fff; background: #fff; 
            font-family: "Tahoma", sans-serif; font-size: 11px; height: 22px; outline: none;
        }
        
        input:focus, select:focus { background: #ffffca; border: 2px inset #000080; }

        .btn-win { 
            padding: 4px 15px; background: #c0c0c0; border: 2px solid; 
            border-color: #fff #808080 #808080 #fff; font-size: 11px; cursor: pointer;
            min-width: 100px;
        }
        .btn-win:active { border-color: #808080 #fff #fff #808080; }

        /* GRADE DE DADOS COM SCROLL */
        .table-container { 
            flex: 1; 
            background: #fff; 
            border: 2px inset #fff; 
            overflow-y: auto; 
            overflow-x: auto;
        }

        table { width: 100%; border-collapse: collapse; min-width: 800px; }
        th { 
            border: 1px solid #808080; padding: 5px; background: #d4d0c8; 
            position: sticky; top: 0; font-size: 10px; z-index: 2;
            box-shadow: inset 1px 1px #fff, inset -1px -1px #808080;
            text-align: left;
        }
        td { border: 1px solid #e0e0e0; padding: 4px; }
        tr:hover { background-color: #e8f0ff; }

        /* BARRA DE STATUS / TOTAIS */
        .status-bar { 
            display: flex; 
            background: #c0c0c0; 
            border-top: 1px solid #808080; 
            padding: 2px; 
            gap: 2px;
            flex-shrink: 0;
        }
        .status-panel { 
            border: 1px inset #fff; 
            padding: 4px 12px; 
            flex: 1; 
            font-weight: bold;
            font-family: "Courier New", monospace;
        }
        
        .val-total { color: #000080; }
        .val-pago { color: #008000; }
        .val-aberto { color: #a00000; }

        .btn-baixa { 
            background: #d4d0c8; border: 1px solid #808080; cursor: pointer; 
            padding: 2px 8px; font-size: 10px; text-transform: uppercase;
        }
    </style>
</head>
<body>

<div class="desktop-wrapper">
    <div class="window">
        <div class="title-bar">
            <span>Financeiro -[C140-C141]</span>
            <div class="title-bar-controls">
                <button type="button">_</button>
                <button type="button">X</button>
            </div>
        </div>

        <div class="content">
            <fieldset>
                <legend>Critérios de Busca (Acesso Restrito: ADM)</legend>
                <form id="formConsulta" class="filter-row" onsubmit="event.preventDefault(); consultarServidor();">
                    <div class="field-group">
                        <label>Venc. Inicial:</label>
                        <input type="date" id="data_ini" required>
                    </div>
                    <div class="field-group">
                        <label>Venc. Final:</label>
                        <input type="date" id="data_fim" required>
                    </div>
                    <div class="field-group" style="min-width: 150px;">
                        <label>Tipo Emitente:</label>
                        <select id="filtro_emitente" style="width: 100%;">
                            <option value="todos">Todos</option>
                            <option value="0">Própria (Receber)</option>
                            <option value="1">Terceiros (Pagar)</option>
                        </select>
                    </div>
                    <div class="field-group" style="min-width: 120px;">
                        <label>Situação:</label>
                        <select id="filtro_status" style="width: 100%;">
                            <option value="todos">Todos</option>
                            <option value="P">Aberto</option>
                            <option value="F">Pago</option>
                        </select>
                    </div>
                    <button type="submit" class="btn-win" style="font-weight:bold;">CARREGAR</button>
					<button type="button" class="btn-win" onclick="imprimirRelatorio()" style="font-weight:bold;">IMPRIMIR</button>
                </form>
            </fieldset>

            <div class="table-container">
                <table id="tabelaDados">
                    <thead>
                        <tr>
                            <th width="40">Emit</th>
                            <th width="110">Nº Título</th>
                            <th width="40">Parc</th>
                            <th>Participante</th>
                            <th width="90">Vencimento</th>
                            <th width="110">Valor (R$)</th>
                            <th width="90">Ação</th>
                        </tr>
                    </thead>
                    <tbody id="resultado">
                        <tr><td colspan="7" style="text-align:center; padding:30px; color:#666;">Aguardando parâmetros para consulta...</td></tr>
                    </tbody>
                </table>
            </div>
        </div>

        <div class="status-bar">
            <div class="status-panel">TOTAL: <span id="totalGeral" class="val-total">R$ 0,00</span></div>
            <div class="status-panel">BAIXADO: <span id="totalPago" class="val-pago">R$ 0,00</span></div>
            <div class="status-panel">ABERTO: <span id="totalAberto" class="val-aberto">R$ 0,00</span></div>
        </div>
    </div>
</div>

<script>
function imprimirRelatorio() {
    const data_ini = document.getElementById('data_ini').value;
    const data_fim = document.getElementById('data_fim').value;
    const fStatus  = document.getElementById('filtro_status').value;
    const fEmit    = document.getElementById('filtro_emitente').value;

    if(!data_ini || !data_fim) {
        alert("Selecione o período primeiro!");
        return;
    }

    // Abre o PDF passando os filtros via URL (GET)
    const url = `imprime_consulta.php?data_ini=${data_ini}&data_fim=${data_fim}&filtro_status=${fStatus}&filtro_emitente=${fEmit}`;
    window.open(url, '_blank');
}
async function consultarServidor() {
    const data_ini = document.getElementById('data_ini').value;
    const data_fim = document.getElementById('data_fim').value;

    const formData = new FormData();
    formData.append('data_ini', data_ini);
    formData.append('data_fim', data_fim);

    try {
        const response = await fetch('consulta_titulos.php', { method: 'POST', body: formData });
        const data = await response.json();
        renderizarGrade(data);
    } catch (error) {
        alert('Falha na comunicação com o servidor.');
    }
}
function renderizarGrade(data) {
    const tbody = document.getElementById('resultado');
    const fStatus = document.getElementById('filtro_status').value;
    const fEmit = document.getElementById('filtro_emitente').value;
    
    let html = '';
    let tGeral = 0, tPago = 0, tAberto = 0;

    const filtrados = data.filter(i => {
        const matchStatus = (fStatus === 'todos' || i.reg_c141_status === fStatus);
        const matchEmit = (fEmit === 'todos' || i.reg_c140_ind_emit == fEmit);
        return matchStatus && matchEmit;
    });

    filtrados.forEach(item => {
        const valor = parseFloat(item.reg_c141_vl_parc) || 0;
        const isPago = item.reg_c141_status === 'F'; // 'F' indica título fechado/baixado

        tGeral += valor;
        isPago ? (tPago += valor) : (tAberto += valor);

        // ALTERAÇÃO: Ação removida. Agora exibe apenas o status informativo.
        // A liquidação deve ser feita exclusivamente pelo módulo de CAIXA.
        const statusTexto = isPago 
            ? '<b style="color:green; font-size:9px;">BAIXADO</b>' 
            : '<b style="color:#a00000; font-size:9px;">EM ABERTO</b>';

        html += `
            <tr>
                <td style="text-align:center">${item.reg_c140_ind_emit == '0' ? 'PR' : 'TE'}</td>
                <td><strong>${item.reg_c140_num_tit}</strong></td>
                <td style="text-align:center">${item.reg_c141_num_parc}</td>
                <td style="font-size:10px">${item.nome_participante}</td>
                <td style="text-align:center">${item.reg_c141_dt_vcto.split('-').reverse().join('/')}</td>
                <td style="text-align:right; font-weight:bold; font-family:Courier New; color:#000080">
                    ${valor.toLocaleString('pt-BR', {minimumFractionDigits: 2})}
                </td>
                <td style="text-align:center">${statusTexto}</td>
            </tr>`;
    });

    // Atualização dos painéis de totais na barra de status
    document.getElementById('totalGeral').innerText = `R$ ${tGeral.toLocaleString('pt-BR', {minimumFractionDigits: 2})}`;
    document.getElementById('totalPago').innerText = `R$ ${tPago.toLocaleString('pt-BR', {minimumFractionDigits: 2})}`;
    document.getElementById('totalAberto').innerText = `R$ ${tAberto.toLocaleString('pt-BR', {minimumFractionDigits: 2})}`;
    
    tbody.innerHTML = html || '<tr><td colspan="7" style="text-align:center">Nenhum registro encontrado.</td></tr>';
}
async function baixarTitulo(id) {
    if (!confirm("Confirmar a liquidação deste título?")) return;

    const formData = new FormData();
    formData.append('codigo', id);
    formData.append('novo_status', 'F');

    try {
        const response = await fetch('atualizar_status.php', { method: 'POST', body: formData });
        const res = await response.json();
        if (res.success) consultarServidor(); 
    } catch (e) {
        alert("Erro ao processar baixa.");
    }
}
</script>
</body>
</html>