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

session_start();
$numero_da_tela = 22; // 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();
    }
if (!isset($mysqli) || $mysqli->connect_error) {
    die("Erro: Conexão com o banco de dados não estabelecida ou falhou.");
}
$mysqli->set_charset("utf8mb4");

// 2. CONTROLE DE FILTRO: EXIBIR GRUPOS COM SALDO ZERO?
$exibir_zero = isset($_GET['exibir_zero']) ? $_GET['exibir_zero'] : 'n';

// 3. RECUPERAÇÃO DOS LANÇAMENTOS DAS DISPONIBILIDADES (Grupo 1.1.1) E SUAS CONTRAPARTIDAS
// O script agrupa os lançamentos da reg_i250 amarrados pelo mesmo lançamento mestre (reg_i250_reg_i200)
$sqlDFC = "SELECT p.reg_i250_ind_dc, CAST(p.reg_i250_vl_dc AS DECIMAL(15,2)) as valor, p.reg_i250_cod_cta,
                  (SELECT cp.reg_i250_cod_cta 
                   FROM reg_i250 cp 
                   WHERE cp.reg_i250_reg_i200 = p.reg_i250_reg_i200 AND cp.codigo <> p.codigo LIMIT 1) as contrapartida
           FROM reg_i250 p
           WHERE (p.ativo = 's' OR p.ativo = 'S') AND p.reg_i250_cod_cta LIKE '1.1.1%'";

$resultDFC = $mysqli->query($sqlDFC);

// Inicialização das Linhas de Fluxo da DFC
$fluxo_operacional   = 0;
$fluxo_investimento  = 0;
$fluxo_financiamento = 0;
$saldo_inicial_caixa = 0; // Pode ser injetado via saldo de abertura no sistema

if ($resultDFC) {
    while ($row = $resultDFC->fetch_assoc()) {
        $valor  = (float)$row['valor'];
        $is_entrada = ($row['reg_i250_ind_dc'] === 'D'); // Débito no Caixa = Entrada de Dinheiro
        $efeito = $is_entrada ? $valor : -$valor;
        
        $cp = $row['contrapartida'] ?? '';
        
        // Mapeamento de Fluxo baseado na Natureza da Contrapartida
        if (strpos($cp, '3.') === 0 || strpos($cp, '2.1') === 0 || strpos($cp, '1.1.3') === 0) {
            // Contrapartida em Contas de Resultado (Despesa/Receita), Passivo Circulante ou Estoques = Operacional
            $fluxo_operacional += $efeito;
        } elseif (strpos($cp, '1.2.3') === 0 || strpos($cp, '1.2.1') === 0) {
            // Contrapartida em Ativo Imobilizado ou Investimentos = Investimento
            $fluxo_investimento += $efeito;
        } elseif (strpos($cp, '2.2') === 0 || strpos($cp, '2.3') === 0) {
            // Contrapartida em Exigível a Longo Prazo ou Património Líquido = Financiamento
            $fluxo_financiamento += $efeito;
        } else {
            // Fallback padrão se não mapeado: Operacional (Despesas/Receitas Gerais)
            $fluxo_operacional += $efeito;
        }
    }
}

// Se a base estiver de teste e vazia, simulamos o Saldo Inicial de Caixa para fechamento visual coerente
if ($saldo_inicial_caixa == 0 && $fluxo_operacional == 0) {
    $saldo_inicial_caixa = 10000.00; 
}

$variacao_liquida_caixa = $fluxo_operacional + $fluxo_investimento + $fluxo_financiamento;
$saldo_final_caixa     = $saldo_inicial_caixa + $variacao_liquida_caixa;

// Montagem do Array Estrutural para renderização na Grid
$linhasDFC = [
    ['codigo' => '1',     'nivel' => 1, 'tipo' => 'S', 'descricao' => 'FLUXO DE CAIXA DAS ATIVIDADES OPERACIONAIS', 'valor' => $fluxo_operacional],
    ['codigo' => '1.01',  'nivel' => 2, 'tipo' => 'A', 'descricao' => '   Recebimentos de Clientes e Outras Entradas', 'valor' => ($fluxo_operacional > 0 ? $fluxo_operacional : 0)],
    ['codigo' => '1.02',  'nivel' => 2, 'tipo' => 'A', 'descricao' => '   Pagamentos a Fornecedores, Funcionários e Despesas', 'valor' => ($fluxo_operacional < 0 ? $fluxo_operacional : 0)],
    ['codigo' => '2',     'nivel' => 1, 'tipo' => 'S', 'descricao' => 'FLUXO DE CAIXA DAS ATIVIDADES DE INVESTIMENTO', 'valor' => $fluxo_investimento],
    ['codigo' => '3',     'nivel' => 1, 'tipo' => 'S', 'descricao' => 'FLUXO DE CAIXA DAS ATIVIDADES DE FINANCIAMENTO', 'valor' => $fluxo_financiamento],
];
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Demonstração dos Fluxos de Caixa (DFC)</title>
    <style>
        /* Estilo Clássico Sólido - Windows 2000 */
        html, body {
            height: 100%;
            margin: 0;
            padding: 0;
            background-color: #d4d0c8;
            font-family: "Tahoma", "Arial", sans-serif;
            font-size: 11px;
            color: #000000;
            overflow: hidden;
        }

        /* FIXADO EXATAMENTE EM 90% DA ALTURA DA TELA */
        .window-full {
            display: flex;
            flex-direction: column;
            height: 90%;
            max-height: 90%;
            box-sizing: border-box;
            padding: 4px;
            margin: 0 auto;
        }

        .header-title {
            background: linear-gradient(90deg, #000080, #1084d0);
            color: #ffffff;
            padding: 4px 8px;
            font-weight: bold;
            font-size: 12px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            height: 24px;
            box-sizing: border-box;
            flex-shrink: 0;
        }

        .filter-bar {
            border: 1px solid #808080;
            background-color: #f1efe7;
            padding: 4px 8px;
            margin-top: 4px;
            margin-bottom: 4px;
            height: 30px;
            box-sizing: border-box;
            display: flex;
            align-items: center;
            justify-content: space-between;
            flex-shrink: 0;
        }

        .filter-form { display: flex; align-items: center; }
        .checkbox-label { display: flex; align-items: center; gap: 4px; cursor: pointer; font-weight: bold; }

        .grid-container {
            overflow-y: auto;
            overflow-x: auto;
            flex-grow: 1;
            border-top: 2px solid #808080;
            border-left: 2px solid #808080;
            border-right: 2px solid #ffffff;
            border-bottom: 2px solid #ffffff;
            background-color: #ffffff;
            box-sizing: border-box;
        }

        table.dfc-table {
            width: 100%;
            border-collapse: collapse;
            background-color: #ffffff;
        }

        table.dfc-table th {
            position: sticky;
            top: 0;
            background-color: #d4d0c8;
            color: #000000;
            font-weight: normal;
            border-right: 1px solid #808080;
            border-bottom: 2px solid #808080;
            border-top: 1px solid #ffffff;
            border-left: 1px solid #ffffff;
            padding: 5px 6px;
            text-align: left;
            z-index: 10;
        }

        table.dfc-table td {
            padding: 5px 6px;
            border-right: 1px solid #e0e0e0;
            border-bottom: 1px solid #e0e0e0;
            white-space: nowrap;
        }

        .row-S { font-weight: bold; background-color: #f5f5f5; }
        .row-A { font-weight: normal; }
        
        .row-destaque-bloco {
            font-weight: bold;
            background-color: #e2dfd9;
            border-top: 1px solid #808080;
            border-bottom: 1px solid #808080;
        }

        .row-resultado-final {
            font-weight: bold;
            background-color: #d4d0c8;
            border-top: 2px double #000000;
            border-bottom: 2px double #000000;
            font-size: 11px;
        }

        .num-col { text-align: right; font-family: "Courier New", monospace; font-size: 12px; }
        .center-col { text-align: center; }

        /* Identação dinâmica estrutural */
        .indent-1 { padding-left: 6px !important; }
        .indent-2 { padding-left: 20px !important; }

        .btn-print {
            background-color: #d4d0c8;
            border-top: 1px solid #ffffff; border-left: 1px solid #ffffff;
            border-right: 1px solid #5a5a5a; border-bottom: 1px solid #5a5a5a;
            padding: 1px 12px; cursor: pointer; font-size: 11px; height: 20px;
        }

        .grid-container::-webkit-scrollbar { width: 16px; height: 16px; }
        .grid-container::-webkit-scrollbar-track { background: #efefef; border: 1px solid #808080; }
        .grid-container::-webkit-scrollbar-thumb {
            background: #d4d0c8;
            border-top: 1px solid #fff; border-left: 1px solid #fff;
            border-right: 1px solid #808080; border-bottom: 1px solid #808080;
        }

        @media print {
            .window-full { height: auto !important; max-height: none !important; }
            .grid-container { overflow: visible !important; }
            .btn-print, .filter-bar { display: none !important; }
        }
    </style>
</head>
<body>

<div class="window-full">
    <div class="header-title">
        <span>SISTEMA CONTÁBIL - Demonstração dos Fluxos de Caixa (DFC - Método Direto)</span>
        <button class="btn-print" onclick="window.print()">Imprimir DFC</button>
    </div>

    <div class="filter-bar">
        <form method="GET" id="formFiltro" class="filter-form">
            <label class="checkbox-label">
                <input type="checkbox" name="exibir_zero" value="s" 
                       onchange="document.getElementById('formFiltro').submit();"
                       <?= $exibir_zero === 's' ? 'checked' : '' ?>>
                Incluir fluxos sem movimentação (Saldo Zero)
            </label>
        </form>
        <div>
            <strong>Mapeamento:</strong> Contrapartidas Ativas da Conta <code>1.1.1</code>
        </div>
    </div>

    <div class="grid-container">
        <table class="dfc-table">
            <thead>
                <tr>
                    <th style="width: 100px;">Estrutural</th>
                    <th>Descrição do Fluxo / Atividade Financeira</th>
                    <th style="width: 50px;" class="center-col">Tipo</th>
                    <th style="width: 150px;" class="num-col">Valor Líquido</th>
                    <th style="width: 60px;" class="center-col">Efeito</th>
                </tr>
            </thead>
            <tbody>
                
                <?php foreach ($linhasDFC as $item): 
                    if ($exibir_zero === 'n' && $item['valor'] == 0 && $item['tipo'] === 'A') continue;
                    $classeRow = ($item['tipo'] === 'S') ? 'row-destaque-bloco' : 'row-normal';
                ?>
                    <tr class="<?= $classeRow ?>">
                        <td><?= $item['codigo'] ?></td>
                        <td class="indent-<?= $item['nivel'] ?>"><?= htmlspecialchars($item['descricao']) ?></td>
                        <td class="center-col"><?= $item['tipo'] ?></td>
                        <td class="num-col" style="color: <?= $item['valor'] >= 0 ? '#000000' : '#b00000' ?>;">
                            <?= $item['valor'] != 0 ? number_format(abs($item['valor']), 2, ',', '.') : '0,00' ?>
                        </td>
                        <td class="center-col" style="font-weight: bold; color: <?= $item['valor'] >= 0 ? '#006400' : '#a00000' ?>;">
                            <?= $item['valor'] >= 0 ? '(+)' : '(-)' ?>
                        </td>
                    </tr>
                <?php endforeach; ?>

                <tr class="row-resultado-final" style="border-top: 2px solid #000;">
                    <td>DFC.VAR</td>
                    <td class="indent-1">AUMENTO / REDUÇÃO LÍQUIDA DE CAIXA E EQUIVALENTES</td>
                    <td class="center-col">S</td>
                    <td class="num-col" style="color: <?= $variacao_liquida_caixa >= 0 ? '#006400' : '#b00000' ?>;">
                        <?= number_format(abs($variacao_liquida_caixa), 2, ',', '.') ?>
                    </td>
                    <td class="center-col"><?= $variacao_liquida_caixa >= 0 ? 'GERADO' : 'CONSUM.' ?></td>
                </tr>

                <tr class="row-normal">
                    <td>DFC.INI</td>
                    <td class="indent-1">SALDO DE CAIXA E EQUIVALENTES NO INÍCIO DO PERÍODO</td>
                    <td class="center-col">A</td>
                    <td class="num-col"><?= number_format($saldo_inicial_caixa, 2, ',', '.') ?></td>
                    <td class="center-col">(+)</td>
                </tr>

                <tr class="row-resultado-final">
                    <td>DFC.FIM</td>
                    <td class="indent-1">SALDO DE CAIXA E EQUIVALENTES NO FIM DO PERÍODO</td>
                    <td class="center-col">S</td>
                    <td class="num-col"><?= number_format($saldo_final_caixa, 2, ',', '.') ?></td>
                    <td class="center-col">SALDO</td>
                </tr>

            </tbody>
        </table>
    </div>
</div>

</body>
</html>	