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

session_start();
$numero_da_tela = 21; // 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();
    }
	
// Garante que a variável $mysqli está disponível
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 CONTA COM SALDO ZERO?
$exibir_zero = isset($_GET['exibir_zero']) ? $_GET['exibir_zero'] : 'n';

// A. APURAÇÃO DA PRIMEIRA PARTE DA DRA: O LUCRO/PREJUÍZO LÍQUIDO DA DRE (GRUPO 3)
$sqlDRE = "SELECT 
             SUM(CASE WHEN reg_i250_ind_dc = 'D' THEN CAST(reg_i250_vl_dc AS DECIMAL(15,2)) ELSE 0 END) as total_debito,
             SUM(CASE WHEN reg_i250_ind_dc = 'C' THEN CAST(reg_i250_vl_dc AS DECIMAL(15,2)) ELSE 0 END) as total_credito
           FROM reg_i250
           WHERE (ativo = 's' OR ativo = 'S') AND reg_i250_cod_cta LIKE '3%'";
$resDRE = $mysqli->query($sqlDRE);
$valoresDRE = $resDRE->fetch_assoc();
$debitoDRE  = (float)($valoresDRE['total_debito'] ?? 0);
$creditoDRE = (float)($valoresDRE['total_credito'] ?? 0);

// Na DRE, Crédito (Receita) - Débito (Despesa) = Lucro Líquido
$lucro_liquido_periodo = $creditoDRE - $debitoDRE;

// B. APURAÇÃO DA SEGUNDA PARTE DA DRA: OUTROS RESULTADOS ABRANGENTES (Mapeado no seu PL - Grupo 2.3 / 2.4 de Ajustes)
// O script busca as contas específicas de Ajustes de Avaliação Patrimonial ou Resultados Abrangentes do PL
$sqlContasORA = "SELECT reg_i050_cod_cta, reg_i050_cta, reg_i050_nivel, reg_i050_ind_cta 
                 FROM reg_i050 
                 WHERE reg_i050_cod_cta LIKE '2.3.3%' OR reg_i050_cod_cta LIKE '2.4%' 
                 ORDER BY reg_i050_cod_cta ASC";
$resultContasORA = $mysqli->query($sqlContasORA);

$planoORA = [];
if ($resultContasORA) {
    while ($row = $resultContasORA->fetch_assoc()) {
        $planoORA[] = $row;
    }
}

// Busca saldos lançados nessas contas de mutação abrangente
$sqlSaldosORA = "SELECT reg_i250_cod_cta,
                        SUM(CASE WHEN reg_i250_ind_dc = 'D' THEN CAST(reg_i250_vl_dc AS DECIMAL(15,2)) ELSE 0 END) as total_debito,
                        SUM(CASE WHEN reg_i250_ind_dc = 'C' THEN CAST(reg_i250_vl_dc AS DECIMAL(15,2)) ELSE 0 END) as total_credito
                 FROM reg_i250
                 WHERE (ativo = 's' OR ativo = 'S') AND (reg_i250_cod_cta LIKE '2.3.3%' OR reg_i250_cod_cta LIKE '2.4%')
                 GROUP BY reg_i250_cod_cta";
$resultSaldosORA = $mysqli->query($sqlSaldosORA);

$saldosORA = [];
if ($resultSaldosORA) {
    while ($row = $resultSaldosORA->fetch_assoc()) {
        $saldosORA[$row['reg_i250_cod_cta']] = [
            'debito' => (float)$row['total_debito'],
            'credito' => (float)$row['total_credito']
        ];
    }
}

// Processamento dos itens da DRA
$itensDRA = [];
$total_outros_resultados = 0;

foreach ($planoORA as $conta) {
    $cod = $conta['reg_i050_cod_cta'];
    $debito = 0;
    $credito = 0;

    if ($conta['reg_i050_ind_cta'] === 'A') {
        $debito = $saldosORA[$cod]['debito'] ?? 0;
        $credito = $saldosORA[$cod]['credito'] ?? 0;
    } else {
        foreach ($saldosORA as $codAnalitica => $valores) {
            if (strpos($codAnalitica, $cod . '.') === 0) {
                $debito += $valores['debito'];
                $credito += $valores['credito'];
            }
        }
    }

    // Como são contas de Patrimônio Líquido (Passivo), o saldo credor é positivo e devedor é negativo
    $saldoExibicao = $credito - $debito;

    if ($conta['reg_i050_ind_cta'] === 'A') {
        $total_outros_resultados += $saldoExibicao;
    }

    if ($exibir_zero === 's' || $debito > 0 || $credito > 0 || abs($saldoExibicao) > 0) {
        $itensDRA[] = [
            'codigo' => $cod,
            'descricao' => $conta['reg_i050_cta'],
            'nivel' => $conta['reg_i050_nivel'],
            'tipo' => $conta['reg_i050_ind_cta'],
            'saldo' => $saldoExibicao
        ];
    }
}

// Resultado Abrangente Total do Período
$resultado_abrangente_total = $lucro_liquido_periodo + $total_outros_resultados;
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Demonstração do Resultado Abrangente (DRA)</title>
    <style>
        /* Layout Sólido Retro 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.dra-table {
            width: 100%;
            border-collapse: collapse;
            background-color: #ffffff;
        }

        table.dra-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.dra-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; }
        
        /* Linhas de Destaque Mestre */
        .row-mestre {
            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: 12px;
        }

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

        /* Recuos de árvore */
        .indent-1 { padding-left: 6px !important; }
        .indent-2 { padding-left: 18px !important; }
        .indent-3 { padding-left: 30px !important; }
        .indent-4 { padding-left: 42px !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 do Resultado Abrangente (DRA)</span>
        <button class="btn-print" onclick="window.print()">Imprimir</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 contas com saldo zero
            </label>
        </form>
        <div>
            <strong>Referência:</strong> Ajustes de Avaliação Patrimonial (CPC 26)
        </div>
    </div>

    <div class="grid-container">
        <table class="dra-table">
            <thead>
                <tr>
                    <th style="width: 120px;">Código Estrutural</th>
                    <th>Nomenclatura do Componente Abrangente</th>
                    <th style="width: 50px;" class="center-col">Tipo</th>
                    <th style="width: 150px;" class="num-col">Valor do Período</th>
                    <th style="width: 60px;" class="center-col">Sinal</th>
                </tr>
            </thead>
            <tbody>
                <tr class="row-mestre">
                    <td>3.0.0.00.00</td>
                    <td class="indent-1">
                        <?= $lucro_liquido_periodo >= 0 ? 'LUCRO LÍQUIDO DO PERÍODO (DRE)' : 'PREJUÍZO LÍQUIDO DO PERÍODO (DRE)' ?>
                    </td>
                    <td class="center-col">S</td>
                    <td class="num-col" style="color: <?= $lucro_liquido_periodo >= 0 ? '#000000' : '#b00000' ?>;">
                        <?= number_format(abs($lucro_liquido_periodo), 2, ',', '.') ?>
                    </td>
                    <td class="center-col"><?= $lucro_liquido_periodo >= 0 ? '(+)' : '(-)' ?></td>
                </tr>

                <?php if (count($itensDRA) > 0): ?>
                    <?php foreach ($itensDRA as $item): ?>
                        <tr class="row-<?= $item['tipo'] ?>">
                            <td><?= htmlspecialchars($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['saldo'] >= 0 ? '#000000' : '#b00000' ?>;">
                                <?= number_format(abs($item['saldo']), 2, ',', '.') ?>
                            </td>
                            <td class="center-col"><?= $item['saldo'] >= 0 ? '(+)' : '(-)' ?></td>
                        </tr>
                    <?php endforeach; ?>
                <?php else: ?>
                    <tr class="row-A">
                        <td colspan="5" style="text-align: center; color: #555; padding: 10px;">
                            * Nenhum Ajuste de Avaliação Patrimonial ou ORA registrado no período *
                        </td>
                    </tr>
                <?php endif; ?>

                <tr class="row-resultado-final">
                    <td>DRA.TOTAL</td>
                    <td class="indent-1">RESULTADO ABRANGENTE TOTAL DO PERÍODO</td>
                    <td class="center-col">S</td>
                    <td class="num-col" style="color: <?= $resultado_abrangente_total >= 0 ? '#006400' : '#b00000' ?>;">
                        <?= number_format(abs($resultado_abrangente_total), 2, ',', '.') ?>
                    </td>
                    <td class="center-col">
                        <?= $resultado_abrangente_total >= 0 ? 'POS' : 'NEG' ?>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
</div>

</body>
</html>