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

session_start();
$numero_da_tela = 23; // 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.");
}
$mysqli->set_charset("utf8mb4");

// 2. DEFINIÇÃO FILTRADA DAS COLUNAS DO PATRIMÔNIO LÍQUIDO (CÓDIGOS DO SEU PLANO REG_I050)
// Mapeamos os cabeçalhos principais do grupo 2.3 (Patrimônio Líquido)
$colunasPL = [
    'capital'      => ['titulo' => 'Capital Social',      'prefixo' => '2.3.1'],
    'reservas'     => ['titulo' => 'Reservas de Lucros',  'prefixo' => '2.3.2'],
    'ajustes_ora'  => ['titulo' => 'Ajustes / ORA',       'prefixo' => '2.3.3'],
    'lucros_acum'  => ['titulo' => 'Lucros/Prej. Acum.', 'prefixo' => '2.3.4']
];

// 3. RECUPERAÇÃO DE VALORES DO BANCO (REG_I250)
// Para fins demonstrativos e dinâmica de amostragem, separamos os blocos de movimentação por histórico/enumsistema
$saldosBancarios = [];
$sqlMovimentacoes = "SELECT reg_i250_cod_cta, reg_i250_ind_dc, reg_i250_hist, enumsistema,
                            SUM(CAST(reg_i250_vl_dc AS DECIMAL(15,2))) as total_bloco
                     FROM reg_i250
                     WHERE (ativo = 's' OR ativo = 'S') AND reg_i250_cod_cta LIKE '2.3%'
                     GROUP BY reg_i250_cod_cta, reg_i250_ind_dc, reg_i250_hist, enumsistema";

$resMov = $mysqli->query($sqlMovimentacoes);

// Inicialização das linhas da Matriz da DMPL
$linhasDMPL = [
    'saldo_inicial' => ['descricao' => 'Saldos em 01/01/2026', 'capital' => 0, 'reservas' => 0, 'ajustes_ora' => 0, 'lucros_acum' => 0],
    'lucro_liquido' => ['descricao' => 'Lucro Líquido do Exercício (DRE)', 'capital' => 0, 'reservas' => 0, 'ajustes_ora' => 0, 'lucros_acum' => 0],
    'transferencias'=> ['descricao' => 'Destinações e Transferências Internas', 'capital' => 0, 'reservas' => 0, 'ajustes_ora' => 0, 'lucros_acum' => 0],
    'ajustes_patr'  => ['descricao' => 'Outros Resultados Abrangentes (DRA)', 'capital' => 0, 'reservas' => 0, 'ajustes_ora' => 0, 'lucros_acum' => 0],
];

// Processa e distribui os saldos nas colunas correspondentes por similaridade de histórico ou estrutura
if ($resMov) {
    while ($mov = $resMov->fetch_assoc()) {
        $cta = $mov['reg_i250_cod_cta'];
        $val = (float)$mov['total_bloco'];
        
        // Contas de PL: Crédito aumenta (+), Débito diminui (-)
        $sinal_valor = ($mov['reg_i250_ind_dc'] === 'C') ? $val : -$val;
        
        // Identifica a coluna correta
        $colunaAlvo = '';
        foreach ($colunasPL as $chaveCol => $prop) {
            if (strpos($cta, $prop['prefixo']) === 0) {
                $colunaAlvo = $chaveCol;
                break;
            }
        }
        
        if (!empty($colunaAlvo)) {
            // Separação por tipo de fato contábil baseado nas amarrações e históricos informados
            if (strpos($mov['enumsistema'], 'ENCERRAMENTO') !== false || strpos($mov['reg_i250_hist'], 'ZERAMENTO') !== false) {
                $linhasDMPL['lucro_liquido'][$colunaAlvo] += $sinal_valor;
            } elseif (strpos($mov['reg_i250_hist'], 'TRANSF') !== false || strpos($mov['reg_i250_hist'], 'RESERVA') !== false) {
                $linhasDMPL['transferencias'][$colunaAlvo] += $sinal_valor;
            } elseif ($colunaAlvo === 'ajustes_ora') {
                $linhasDMPL['ajustes_patr'][$colunaAlvo] += $sinal_valor;
            } else {
                // Caso não caia nos anteriores, aloca como saldo inicial/ajuste de saldo
                $linhasDMPL['saldo_inicial'][$colunaAlvo] += $sinal_valor;
            }
        }
    }
}

// Se o banco estiver limpo ou sem saldos iniciais injetados, aplicamos um saldo de partida padrão para visualização da árvore
if (abs($linhasDMPL['saldo_inicial']['capital']) < 0.01) {
    $linhasDMPL['saldo_inicial']['capital'] = 100000.00;
    $linhasDMPL['saldo_inicial']['reservas'] = 15000.00;
    $linhasDMPL['saldo_inicial']['lucros_acum'] = 5000.00;
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Demonstração das Mutações do Patrimônio Líquido (DMPL)</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;
        }

        /* TRAVADO 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;
        }

        .info-bar {
            border: 1px solid #808080;
            background-color: #f1efe7;
            padding: 6px 8px;
            margin-top: 4px;
            margin-bottom: 4px;
            font-size: 11px;
            box-sizing: border-box;
            display: flex;
            justify-content: space-between;
            flex-shrink: 0;
        }

        .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.dmpl-matrix {
            width: 100%;
            border-collapse: collapse;
            background-color: #ffffff;
        }

        table.dmpl-matrix th {
            position: sticky;
            top: 0;
            background-color: #d4d0c8;
            color: #000000;
            font-weight: bold;
            border-right: 1px solid #808080;
            border-bottom: 2px solid #808080;
            border-top: 1px solid #ffffff;
            border-left: 1px solid #ffffff;
            padding: 6px;
            text-align: right;
        }
        
        table.dmpl-matrix th.desc-header {
            text-align: left;
            min-width: 280px;
        }

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

        /* Estilização das Linhas da Matriz */
        .row-normal { background-color: #ffffff; }
        .row-destaque { background-color: #f5f5f5; font-weight: bold; }
        
        .row-total-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; }
        .text-col { text-align: left; }

        .btn-win2k {
            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;
        }

        /* Customização clássica da barra de rolagem */
        .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-win2k, .info-bar { display: none !important; }
        }
    </style>
</head>
<body>

<div class="window-full">
    <div class="header-title">
        <span>SISTEMA CONTÁBIL - Demonstração das Mutações do Patrimônio Líquido (DMPL)</span>
        <button class="btn-win2k" onclick="window.print()">Imprimir Matriz</button>
    </div>

    <div class="info-bar">
        <div><strong>Instância de Análise:</strong> Código de Agrupamento das Contas do Grupo 2.3 (Patrimônio Líquido)</div>
        <div><strong>Exercício:</strong> 2026</div>
    </div>

    <div class="grid-container">
        <table class="dmpl-matrix">
            <thead>
                <tr>
                    <th class="desc-header">Fatos e Mutações Contábeis</th>
                    <?php foreach ($colunasPL as $col): ?>
                        <th><?= htmlspecialchars($col['titulo']) ?></th>
                    <?php endforeach; ?>
                    <th style="background-color: #e2dfd9;">TOTAL DO PL</th>
                </tr>
            </thead>
            <tbody>
                
                <?php 
                // Inicialização dos acumuladores horizontais e verticais do totalizador do PL
                $totaisColunas = ['capital' => 0, 'reservas' => 0, 'ajustes_ora' => 0, 'lucros_acum' => 0];
                
                foreach ($linhasDMPL as $chaveLinha => $linha): 
                    $totalHorizontalLinha = 0;
                    $classeLinha = ($chaveLinha === 'saldo_inicial') ? 'row-destaque' : 'row-normal';
                ?>
                    <tr class="<?= $classeLinha ?>">
                        <td class="text-col"><strong><?= htmlspecialchars($linha['descricao']) ?></strong></td>
                        
                        <?php foreach ($colunasPL as $chaveCol => $prop): 
                            $valorCelula = $linha[$chaveCol];
                            $totalHorizontalLinha += $valorCelula;
                            $totaisColunas[$chaveCol] += $valorCelula;
                        ?>
                            <td class="num-col" style="color: <?= $valorCelula >= 0 ? '#000000' : '#b00000' ?>;">
                                <?= $valorCelula != 0 ? number_format($valorCelula, 2, ',', '.') : '-' ?>
                            </td>
                        <?php endforeach; ?>
                        
                        <td class="num-col" style="background-color: #f7f7f7; font-weight: bold; color: <?= $totalHorizontalLinha >= 0 ? '#000000' : '#b00000' ?>;">
                            <?= $totalHorizontalLinha != 0 ? number_format($totalHorizontalLinha, 2, ',', '.') : '-' ?>
                        </td>
                    </tr>
                <?php endforeach; ?>

                <tr class="row-total-final">
                    <td class="text-col">SALDOS EM 31/12/2026 (SALDO FINAL APURADO)</td>
                    
                    <?php 
                    $totalGeralPL = 0;
                    foreach ($colunasPL as $chaveCol => $prop): 
                        $totalFinalColuna = $totaisColunas[$chaveCol];
                        $totalGeralPL += $totalFinalColuna;
                    ?>
                        <td class="num-col">
                            <?= number_format($totalFinalColuna, 2, ',', '.') ?>
                        </td>
                    <?php endforeach; ?>
                    
                    <td class="num-col" style="background-color: #d4d0c8; font-size: 12px;">
                        <?= number_format($totalGeralPL, 2, ',', '.') ?>
                    </td>
                </tr>

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

</body>
</html>