<?php
// 1. CONFIGURAÇÕES
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
date_default_timezone_set('America/Sao_Paulo');

// 2. CONEXÃO
if (file_exists('../config.php')) {
    include_once('../config.php');
} else {
    die("Erro Crítico: Arquivo de configuração não encontrado.");
}

// --- 3. LÓGICA DE PROCESSAMENTO (AÇÕES) ---

// NOVO: F. EXCLUIR MÚLTIPLOS LANÇAMENTOS (SELECIONADOS)
if (isset($_POST['btn_excluir_massa']) && isset($_POST['ids_selecionados'])) {
    $ids = $_POST['ids_selecionados'];
    if (is_array($ids) && count($ids) > 0) {
        $ids_string = implode(',', array_map('intval', $ids));
        $conn->query("DELETE FROM lancamentos_casa WHERE id IN ($ids_string)");
        echo "<script>alert('Lançamentos excluídos com sucesso!'); window.location.href='caixadecasa.php';</script>";
        exit();
    }
}

// E. PROCESSAR TRANSFERÊNCIA ENTRE CONTAS
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['transferir_valor'])) {
    $origem_id = intval($_POST['origem_id']);
    $destino_id = intval($_POST['destino_id']);
    $valor = str_replace(',', '.', $_POST['valor_transf']);
    $data_mov = date('Y-m-d');

    if ($origem_id > 0 && $destino_id > 0 && $valor > 0 && $origem_id != $destino_id) {
        $n_origem = $conn->query("SELECT nome_conta FROM contas_bancarias_casa WHERE id=$origem_id")->fetch_assoc()['nome_conta'];
        $n_destino = $conn->query("SELECT nome_conta FROM contas_bancarias_casa WHERE id=$destino_id")->fetch_assoc()['nome_conta'];

        $desc_saida = "TRANSFERÊNCIA ENVIADA PARA: $n_destino";
        $conn->query("INSERT INTO lancamentos_casa (conta_id, descricao, valor, tipo, data_mov) VALUES ($origem_id, '$desc_saida', '$valor', 'SAIDA', '$data_mov')");

        $desc_entrada = "TRANSFERÊNCIA RECEBIDA DE: $n_origem";
        $conn->query("INSERT INTO lancamentos_casa (conta_id, descricao, valor, tipo, data_mov) VALUES ($destino_id, '$desc_entrada', '$valor', 'ENTRADA', '$data_mov')");

        echo "<script>alert('Transferência realizada!'); window.location.href='caixadecasa.php';</script>";
        exit();
    }
}

// A. EXCLUIR LANÇAMENTO INDIVIDUAL
if (isset($_GET['del_l'])) { 
    $id = intval($_GET['del_l'] ?? $_GET['del_lanc']);
    $conn->query("DELETE FROM lancamentos_casa WHERE id = $id");
    echo "<script>window.location.href='caixadecasa.php';</script>";
    exit();
}

// B. SALVAR/EDITAR LANÇAMENTO
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['lancar_valor'])) {
    $id_edit = intval($_POST['id_edit']);
    $conta_id = intval($_POST['conta_id']);
    $desc = strtoupper($conn->real_escape_string($_POST['descricao']));
    $valor = str_replace(',', '.', $_POST['valor']);
    $tipo = $_POST['tipo'];
    $data_pt = $_POST['data_mov'];
    
    if (strpos($data_pt, '/') !== false) {
        $partes = explode('/', $data_pt);
        $data_final = $partes[2] . '-' . $partes[1] . '-' . $partes[0];
    } else { $data_final = $data_pt; }

    if ($id_edit > 0) {
        $sql = "UPDATE lancamentos_casa SET conta_id=$conta_id, descricao='$desc', valor='$valor', tipo='$tipo', data_mov='$data_final' WHERE id=$id_edit";
    } else {
        $sql = "INSERT INTO lancamentos_casa (conta_id, descricao, valor, tipo, data_mov) VALUES ($conta_id, '$desc', '$valor', '$tipo', '$data_final')";
    }
    $conn->query($sql);
    echo "<script>window.location.href='caixadecasa.php';</script>";
    exit();
}

// C. SALVAR/EDITAR CONTA BANCÁRIA
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['salvar_conta'])) {
    $id_c = intval($_POST['id_conta_edit']);
    $nome_c = strtoupper($conn->real_escape_string($_POST['nome_conta']));
    if ($id_c > 0) {
        $conn->query("UPDATE contas_bancarias_casa SET nome_conta = '$nome_c' WHERE id = $id_c");
    } else {
        $conn->query("INSERT INTO contas_bancarias_casa (nome_conta) VALUES ('$nome_c')");
    }
    echo "<script>window.location.href='caixadecasa.php';</script>";
    exit();
}

// D. EXCLUIR CONTA BANCÁRIA
if (isset($_GET['del_conta'])) {
    $id_c = intval($_GET['del_conta']);
    $conn->query("DELETE FROM contas_bancarias_casa WHERE id = $id_c");
    echo "<script>window.location.href='caixadecasa.php';</script>";
    exit();
}

// --- 4. BUSCA DADOS ---
$edit_l = ['id'=>0, 'conta_id'=>'', 'tipo'=>'SAIDA', 'descricao'=>'', 'valor'=>'', 'data_mov'=>date('d/m/Y')];
if(isset($_GET['edit_l'])) {
    $res = $conn->query("SELECT * FROM lancamentos_casa WHERE id=".intval($_GET['edit_l']));
    if($row = $res->fetch_assoc()){ $edit_l = $row; $edit_l['data_mov'] = date('d/m/Y', strtotime($row['data_mov'])); }
}

$edit_c = ['id'=>0, 'nome_conta'=>''];
if(isset($_GET['edit_c'])) {
    $res = $conn->query("SELECT * FROM contas_bancarias_casa WHERE id=".intval($_GET['edit_c']));
    if($row = $res->fetch_assoc()) $edit_c = $row;
}

include_once('../header.php');

$res_geral = $conn->query("SELECT SUM(CASE WHEN tipo='ENTRADA' THEN valor ELSE 0 END) - SUM(CASE WHEN tipo='SAIDA' THEN valor ELSE 0 END) as saldo_geral FROM lancamentos_casa");
$total_geral = $res_geral->fetch_assoc()['saldo_geral'] ?? 0;
?>

<style>
    .c-wrapper { padding: 10px; font-family: 'Segoe UI', sans-serif; text-transform: uppercase; background: #f4f7f6; }
    .grid-caixa { display: grid; grid-template-columns: 320px 1fr; gap: 15px; align-items: start; }
    .banner-saldo-geral { background: #217346; color: white; padding: 15px; border-radius: 4px; margin-bottom: 15px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
    .banner-saldo-geral h2 { margin: 0; font-size: 11px; opacity: 0.9; }
    .banner-saldo-geral .valor-total { font-size: 24px; font-weight: bold; }
    .card-form { background: #fff; border: 1px solid #ccc; padding: 12px; margin-bottom: 10px; border-top: 3px solid #217346; }
    .card-form label { display: block; margin-top: 5px; font-weight: bold; font-size: 9px; }
    .card-form input, .card-form select { width: 100%; padding: 5px; border: 1px solid #ccc; font-size: 11px; text-transform: uppercase; }
    .btn-salvar { background: #217346; color: white; border: none; padding: 8px; width: 100%; font-weight: bold; cursor: pointer; margin-top: 10px; font-size: 10px; }
    .container-contas { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; margin-bottom: 15px; }
    .card-conta { background: #fff; border: 1px solid #ddd; padding: 8px; text-align: center; border-radius: 4px; border-top: 2px solid #00569e; }
    .table-excel { width: 100%; border-collapse: collapse; font-size: 10px; background: white; border: 1px solid #999; }
    .table-excel th { background: #e6e6e6; padding: 5px; border: 1px solid #999; text-align: left; color: #333; }
    .table-excel td { padding: 5px; border: 1px solid #ccc; }
    .txt-entrada { color: #1e6b3b; font-weight: bold; }
    .txt-saida { color: #b02a2a; font-weight: bold; }
    
    .bg-entrada-claro { background-color: #d8f3e2 !important; }
    .bg-saida-claro { background-color: #fbdada !important; }
    .bg-transferencia { background-color: #fff9c4 !important; }
    
    .table-excel tr:hover td { background-color: rgba(0,0,0,0.03) !important; }
    .btn-excluir-massa { background: #b02a2a; color: white; border: none; padding: 5px 10px; font-weight: bold; cursor: pointer; font-size: 10px; border-radius: 3px; margin-bottom: 5px; }
    
    /* FILTRO */
    .filtro-container { background: #fff; padding: 10px; border: 1px solid #ccc; margin-bottom: 10px; }
    .filtro-container form { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
    .filtro-group { display: flex; flex-direction: column; }
    .filtro-group label { font-size: 9px; font-weight: bold; margin-bottom: 2px; }
    .filtro-group select, .filtro-group input { padding: 4px; font-size: 10px; text-transform: uppercase; border: 1px solid #ccc; }
    .btn-buscar { background: #00569e; color: white; border: none; padding: 5px 10px; font-size: 10px; font-weight: bold; cursor: pointer; height: 23px; }

    /* ESPAÇAMENTO E SALDO ACUMULADO */
    .espaco-dia { height: 12px; background-color: #f4f7f6; border: none !important; }
    .row-acumulado { background: #333 !important; color: #fff !important; font-weight: bold; }
    .row-acumulado td { border-color: #222 !important; }
</style>

<script>
    function toggleSelecionarTudo(master) {
        var checkboxes = document.getElementsByClassName('check-item');
        for (var i = 0; i < checkboxes.length; i++) {
            checkboxes[i].checked = master.checked;
        }
    }
</script>

<div class="c-wrapper">
    <div class="banner-saldo-geral">
        <div>
            <h2>💰 PATRIMÔNIO TOTAL (SOMA DAS CONTAS)</h2>
            <div class="valor-total">R$ <?php echo number_format($total_geral, 2, ',', '.'); ?></div>
        </div>
        <div style="font-size: 30px; opacity: 0.3;">🏦</div>
    </div>

    <div class="container-contas">
        <?php
        $contas_lista = $conn->query("SELECT * FROM contas_bancarias_casa ORDER BY nome_conta ASC");
        while($c = $contas_lista->fetch_assoc()):
            $cid = $c['id'];
            $saldo = $conn->query("SELECT SUM(CASE WHEN tipo='ENTRADA' THEN valor ELSE 0 END) - SUM(CASE WHEN tipo='SAIDA' THEN valor ELSE 0 END) as total FROM lancamentos_casa WHERE conta_id = $cid")->fetch_assoc()['total'] ?? 0;
        ?>
            <div class="card-conta">
                <div style="font-size: 9px; color: #666; font-weight: bold;"><?php echo $c['nome_conta']; ?></div>
                <div style="font-size: 14px; font-weight: bold;">R$ <?php echo number_format($saldo, 2, ',', '.'); ?></div>
                <div style="margin-top: 5px; border-top: 1px solid #eee; padding-top: 5px;">
                    <a href="?edit_c=<?php echo $cid; ?>" style="text-decoration:none; margin-right:8px;">📝</a>
                    <a href="?del_conta=<?php echo $cid; ?>" onclick="return confirm('EXCLUIR BANCO?')" style="text-decoration:none;">🗑️</a>
                </div>
            </div>
        <?php endwhile; ?>
    </div>

    <div class="grid-caixa">
        <div class="sidebar">
            <!-- Form Novo Lançamento -->
            <div class="card-form">
                <form method="POST">
                    <input type="hidden" name="id_edit" value="<?php echo $edit_l['id']; ?>">
                    <div style="font-weight: bold; font-size: 10px; color: #217346;">➕ NOVO LANÇAMENTO</div>
                    <label>CONTA:</label>
                    <select name="conta_id" required>
                        <?php $contas_lista->data_seek(0); while($c = $contas_lista->fetch_assoc()): ?>
                            <option value="<?php echo $c['id']; ?>" <?php echo ($c['id']==$edit_l['conta_id'])?'selected':''; ?>><?php echo $c['nome_conta']; ?></option>
                        <?php endwhile; ?>
                    </select>
                    <label>TIPO:</label>
                    <select name="tipo">
                        <option value="SAIDA" <?php echo ($edit_l['tipo']=='SAIDA')?'selected':''; ?>>SAÍDA (-)</option>
                        <option value="ENTRADA" <?php echo ($edit_l['tipo']=='ENTRADA')?'selected':''; ?>>ENTRADA (+)</option>
                    </select>
                    
                    <label>DESCRIÇÃO:</label>
                    <input type="text" name="descricao" list="lista_descricoos" value="<?php echo $edit_l['descricao']; ?>" autocomplete="off" required>
                    <datalist id="lista_descricoos">
                        <?php 
                        $res_list = $conn->query("SELECT DISTINCT descricao FROM lancamentos_casa ORDER BY descricao ASC");
                        while($row_l = $res_list->fetch_assoc()): ?>
                            <option value="<?php echo $row_l['descricao']; ?>">
                        <?php endwhile; ?>
                    </datalist>

                    <label>VALOR R$:</label>
                    <input type="text" name="valor" value="<?php echo ($edit_l['id']>0)?number_format($edit_l['valor'],2,',',''):''; ?>" required>
                    <label>DATA:</label>
                    <input type="text" name="data_mov" value="<?php echo $edit_l['data_mov']; ?>" required>
                    <button type="submit" name="lancar_valor" class="btn-salvar">GRAVAR NO CAIXA</button>
                </form>
            </div>

            <!-- Transferências -->
            <div class="card-form" style="border-top-color: #00569e;">
                <form method="POST">
                    <div style="font-weight: bold; font-size: 10px; color: #00569e;">⇅ TRANSFERIR ENTRE CONTAS</div>
                    <label>DE (SAÍDA):</label>
                    <select name="origem_id" required>
                        <option value="">SELECIONE ORIGEM</option>
                        <?php $contas_lista->data_seek(0); while($c = $contas_lista->fetch_assoc()): ?>
                            <option value="<?php echo $c['id']; ?>"><?php echo $c['nome_conta']; ?></option>
                        <?php endwhile; ?>
                    </select>
                    <label>PARA (ENTRADA):</label>
                    <select name="destino_id" required>
                        <option value="">SELECIONE DESTINO</option>
                        <?php $contas_lista->data_seek(0); while($c = $contas_lista->fetch_assoc()): ?>
                            <option value="<?php echo $c['id']; ?>"><?php echo $c['nome_conta']; ?></option>
                        <?php endwhile; ?>
                    </select>
                    <label>VALOR R$:</label>
                    <input type="text" name="valor_transf" placeholder="0,00" required>
                    <button type="submit" name="transferir_valor" class="btn-salvar" style="background: #00569e;">EXECUTAR TRANSFERÊNCIA</button>
                </form>
            </div>
            
            <!-- Gestão de Bancos -->
            <div class="card-form" style="border-top-color: #333;">
                <form method="POST">
                    <input type="hidden" name="id_conta_edit" value="<?php echo $edit_c['id']; ?>">
                    <div style="font-weight: bold; font-size: 10px; color: #333;">🏦 BANCOS</div>
                    <label>NOME DA CONTA:</label>
                    <input type="text" name="nome_conta" value="<?php echo $edit_c['nome_conta']; ?>" required>
                    <button type="submit" name="salvar_conta" class="btn-salvar" style="background: #333;">SALVAR CONTA</button>
                </form>
            </div>
        </div>

        <div class="area-tabela">
            <!-- Filtros -->
            <div class="filtro-container">
                <form method="GET">
                    <div class="filtro-group">
                        <label>CONTA:</label>
                        <select name="conta_filtro">
                            <option value="">TODAS</option>
                            <?php 
                            $contas_lista->data_seek(0); 
                            $filtro_atual = isset($_GET['conta_filtro']) ? intval($_GET['conta_filtro']) : 0;
                            while($c = $contas_lista->fetch_assoc()): ?>
                                <option value="<?php echo $c['id']; ?>" <?php echo ($filtro_atual == $c['id']) ? 'selected' : ''; ?>>
                                    <?php echo $c['nome_conta']; ?>
                                </option>
                            <?php endwhile; ?>
                        </select>
                    </div>
                    <div class="filtro-group">
                        <label>TIPO:</label>
                        <select name="tipo_filtro">
                            <option value="">TODOS</option>
                            <option value="ENTRADA" <?php echo (isset($_GET['tipo_filtro']) && $_GET['tipo_filtro'] == 'ENTRADA') ? 'selected' : ''; ?>>ENTRADAS</option>
                            <option value="SAIDA" <?php echo (isset($_GET['tipo_filtro']) && $_GET['tipo_filtro'] == 'SAIDA') ? 'selected' : ''; ?>>SAÍDAS</option>
                        </select>
                    </div>
                    <div class="filtro-group">
                        <label>BUSCAR:</label>
                        <input type="text" name="busca_desc" placeholder="DESCRIÇÃO..." value="<?php echo $_GET['busca_desc'] ?? ''; ?>">
                    </div>
                    <button type="submit" class="btn-buscar">🔍 FILTRAR</button>
                    <a href="caixadecasa.php" style="font-size: 10px; text-decoration: none; color: #00569e; margin-left: 5px;">LIMPAR</a>
                </form>
            </div>

            <form method="POST" onsubmit="return confirm('EXCLUIR SELECIONADOS?')">
                <button type="submit" name="btn_excluir_massa" class="btn-excluir-massa">🗑️ APAGAR SELECIONADOS</button>
                
                <table class="table-excel">
                    <thead>
                        <tr>
                            <th width="30" style="text-align:center;"><input type="checkbox" onclick="toggleSelecionarTudo(this)"></th>
                            <th width="80">DATA</th>
                            <th>HISTÓRICO / BANCO</th>
                            <th width="100" style="text-align:right;">VALOR</th>
                            <th width="60" style="text-align:center;">AÇÕES</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                        // Lógica de saldo acumulado dinâmico
                        $where = " WHERE 1=1 ";
                        if($filtro_atual > 0) $where .= " AND l.conta_id = $filtro_atual ";
                        if(!empty($_GET['tipo_filtro'])) {
                            $t_f = $conn->real_escape_string($_GET['tipo_filtro']);
                            $where .= " AND l.tipo = '$t_f' ";
                        }
                        if(!empty($_GET['busca_desc'])) {
                            $b_d = $conn->real_escape_string($_GET['busca_desc']);
                            $where .= " AND (l.descricao LIKE '%$b_d%' OR c.nome_conta LIKE '%$b_d%') ";
                        }

                        // Buscamos os itens em ordem ASCENDENTE para calcular o acumulado corretamente
                        $sql_calc = "SELECT l.valor, l.tipo, l.data_mov FROM lancamentos_casa l JOIN contas_bancarias_casa c ON l.conta_id = c.id $where ORDER BY l.data_mov ASC, l.id ASC";
                        $res_calc = $conn->query($sql_calc);
                        
                        $saldos_por_data = [];
                        $temp_acumulado = 0;
                        while($c_row = $res_calc->fetch_assoc()){
                            $temp_acumulado += ($c_row['tipo'] == 'ENTRADA') ? $c_row['valor'] : -$c_row['valor'];
                            $saldos_por_data[$c_row['data_mov']] = $temp_acumulado;
                        }

                        // Agora exibimos em ordem DESCENDENTE para o usuário ver o mais novo primeiro
                        $sql_busca = "SELECT l.*, c.nome_conta FROM lancamentos_casa l JOIN contas_bancarias_casa c ON l.conta_id = c.id $where ORDER BY l.data_mov DESC, l.id DESC";
                        $res = $conn->query($sql_busca);
                        
                        $itens = [];
                        while($row = $res->fetch_assoc()) $itens[] = $row;

                        $data_atual = "";
                        foreach($itens as $index => $item):
                            $data_mov_formatada = date('d/m/Y', strtotime($item['data_mov']));

                            // Insere o saldo acumulado do bloco anterior (se houver mudança de data)
                            if($data_atual != "" && $data_atual != $data_mov_formatada){
                                $saldo_final_dia = $saldos_por_data[$itens[$index-1]['data_mov']] ?? 0;
                                ?>
                                <tr class="row-acumulado">
                                    <td colspan="3" style="text-align:right;">SALDO ACUMULADO EM <?php echo $data_atual; ?>:</td>
                                    <td style="text-align:right;">R$ <?php echo number_format($saldo_final_dia, 2, ',', '.'); ?></td>
                                    <td></td>
                                </tr>
                                <tr class="espaco-dia"><td colspan="5"></td></tr>
                                <?php
                            }

                            $data_atual = $data_mov_formatada;
                            $is_entrada = ($item['tipo']=='ENTRADA');
                            $classe_bg = (strpos($item['descricao'], 'TRANSFERÊNCIA') !== false) ? 'bg-transferencia' : ($is_entrada ? 'bg-entrada-claro' : 'bg-saida-claro');
                            $classe_txt = $is_entrada ? 'txt-entrada' : 'txt-saida';
                        ?>
                        <tr class="<?php echo $classe_bg; ?>">
                            <td style="text-align:center;"><input type="checkbox" name="ids_selecionados[]" value="<?php echo $item['id']; ?>" class="check-item"></td>
                            <td style="text-align:center;"><?php echo $data_mov_formatada; ?></td>
                            <td><small style="color:#00569e; font-weight:bold;"><?php echo $item['nome_conta']; ?></small> - <?php echo $item['descricao']; ?></td>
                            <td style="text-align:right;" class="<?php echo $classe_txt; ?>">R$ <?php echo number_format($item['valor'], 2, ',', '.'); ?></td>
                            <td style="text-align:center;">
                                <a href="?edit_l=<?php echo $item['id']; ?>">📝</a>
                                <a href="?del_l=<?php echo $item['id']; ?>" onclick="return confirm('EXCLUIR?')">🗑️</a>
                            </td>
                        </tr>
                        <?php 
                            // Saldo acumulado para o último bloco (primeiro dia da lista)
                            if($index === count($itens) - 1): 
                                $saldo_final_dia = $saldos_por_data[$item['data_mov']] ?? 0;
                            ?>
                                <tr class="row-acumulado">
                                    <td colspan="3" style="text-align:right;">SALDO ACUMULADO EM <?php echo $data_atual; ?>:</td>
                                    <td style="text-align:right;">R$ <?php echo number_format($saldo_final_dia, 2, ',', '.'); ?></td>
                                    <td></td>
                                </tr>
                            <?php endif; 
                        endforeach; ?>
                    </tbody>
                </table>
            </form>
        </div>
    </div>
</div>