<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

date_default_timezone_set('America/Sao_Paulo');

if (session_status() === PHP_SESSION_NONE) { session_start(); }
include_once('../config.php');

$mensagem = "";
$tipo_mensagem = "success";

// 1. ADICIONAR AO CARRINHO
if(isset($_POST['btn_add_carrinho'])){
    $p_id = $_POST['produto_id'];
    $qtd = $_POST['quantidade'];
    $res = $conn->query("SELECT nome, preco FROM produtos WHERE id = '$p_id'")->fetch_assoc();
    
    if($res){
        // Se o preço no banco for 0, ele pega o valor digitado no campo manual
        $preco_venda = ($res['preco'] <= 0) ? str_replace(['.', ','], ['', '.'], $_POST['preco_manual']) : $res['preco'];
        
        $_SESSION['venda_caixa'][] = [
            'id' => $p_id, 
            'nome' => $res['nome'], 
            'preco' => $preco_venda, 
            'qtd' => $qtd, 
            'total' => $preco_venda * $qtd
        ];
    }
}

// 2. LIMPAR CARRINHO
if(isset($_GET['limpar_venda'])){
    unset($_SESSION['venda_caixa']);
    echo "<script>window.location.href='lancamentos.php';</script>"; 
    exit();
}

// 3. FINALIZAR VENDA
if(isset($_POST['btn_finalizar_venda']) && !empty($_SESSION['venda_caixa'])){
    $vendedor = $_POST['vendedor'];
    $pagamento = $_POST['pagamento']; 
    $cliente_id = !empty($_POST['cliente_id']) ? intval($_POST['cliente_id']) : 0;
    
    // Captura dados extras do fiado (vindos do modal via campos hidden)
    $vencimento = $_POST['extra_vencimento'] ?? date('Y-m-d');
    $observacao = mysqli_real_escape_string($conn, $_POST['extra_observacao'] ?? '');
    
    if ($pagamento === "FIADO" && $cliente_id === 0) {
        $mensagem = "ERRO: PARA VENDAS EM FIADO, É OBRIGATÓRIO SELECIONAR UM CLIENTE!";
        $tipo_mensagem = "danger";
    } else {
        $c_nome = "CONSUMIDOR FINAL";
        if($cliente_id > 0){
            $c_res = $conn->query("SELECT NOME FROM clientes WHERE ID = '$cliente_id'")->fetch_assoc();
            $c_nome = $c_res['NOME'] ?? "CONSUMIDOR FINAL";
        }

        $erro_sql = false;
        foreach($_SESSION['venda_caixa'] as $item){
            $nome_item = $item['nome'];
            $qtd_item  = $item['qtd'];
            $preco_item = $item['preco'];
            $total_item = $item['total'];

            if ($pagamento === "FIADO") {
                $data_v = date('Y-m-d');
                $desc_item = $qtd_item . "x " . $nome_item;
                
                // ALTERAÇÃO AQUI: Removido o UPDATE. Agora sempre faz INSERT para separar por data.
                $sql = "INSERT INTO fiado (CLIENTE_ID, CLIENTE_NOME, PRODUTO, VALOR, DATA_VENDA, DATA_VENCIMENTO, OBSERVACAO, STATUS) 
                        VALUES ('$cliente_id', '$c_nome', '$desc_item', '$total_item', '$data_v', '$vencimento', '$observacao', 'PENDENTE')";
                
            } else {
                $sql = "INSERT INTO movimentacoes (TIPO, CLIENTE_FORNECEDOR, PRODUTO_NOME, QUANTIDADE, VALOR_UNITARIO, VALOR_TOTAL, FORMA_PAGAMENTO, USUARIO) 
                        VALUES ('ENTRADA', '$c_nome', '$nome_item', '$qtd_item', '$preco_item', '$total_item', '$pagamento', '$vendedor')";
            }
            
            if(!$conn->query($sql)){
                $mensagem = "ERRO AO GRAVAR: " . $conn->error;
                $tipo_mensagem = "danger";
                $erro_sql = true;
                break;
            }
            $conn->query("UPDATE produtos SET ESTOQUE = ESTOQUE - $qtd_item WHERE ID = '{$item['id']}'");
        }
        
        if(!$erro_sql){
            unset($_SESSION['venda_caixa']);
            $mensagem = ($pagamento === "FIADO") ? "ITEM ADICIONADO À FICHA DO CLIENTE!" : "VENDA FINALIZADA COM SUCESSO!";
            $tipo_mensagem = "success";
        }
    }
}

// 4. LANÇAR SAÍDA
if(isset($_POST['btn_lancar_saida'])){
    $valor = str_replace(['.', ','], ['', '.'], $_POST['valor_saida']);
    $motivo_id = $_POST['motivo_id'];
    $vendedor = $_POST['vendedor_saida']; 
    $cliente_fornecedor = mysqli_real_escape_string($conn, $_POST['cliente_fornecedor_saida']);
    
    $m_res = $conn->query("SELECT DESCRICAO FROM saidas WHERE ID = '$motivo_id'")->fetch_assoc();
    $motivo = $m_res['DESCRICAO'] ?? "DESPESA";

    $sql_saida = "INSERT INTO movimentacoes (TIPO, CLIENTE_FORNECEDOR, PRODUTO_NOME, QUANTIDADE, VALOR_UNITARIO, VALOR_TOTAL, FORMA_PAGAMENTO, USUARIO) 
                  VALUES ('SAÍDA', '$cliente_fornecedor', '$motivo', '1', '$valor', '$valor', 'DINHEIRO', '$vendedor')";
    
    if($conn->query($sql_saida)){ 
        $mensagem = "SAÍDA REGISTRADA POR $vendedor!"; 
        $tipo_mensagem = "success";
    }
}

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

<style>
    .caixa-container { display: flex; gap: 15px; padding: 15px; font-family: 'Segoe UI', sans-serif; text-transform: uppercase; flex-direction: row; flex-wrap: wrap; }
    .painel-vendas { flex: 2; min-width: 320px; display: flex; flex-direction: column; gap: 15px; }
    .painel-lateral { flex: 1; min-width: 320px; display: flex; flex-direction: column; gap: 15px; }
    .card { background: #fff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); padding: 15px; border-top: 5px solid #00569e; }
    .card-saida { border-top-color: #dc3545; }
    .card-venda { border-top-color: #28a745; }
    input, select, textarea { width: 100%; padding: 12px; border: 1px solid #ccc; border-radius: 4px; font-weight: bold; font-size: 14px; margin-bottom: 10px; box-sizing: border-box; }
    .grid-form { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 10px; align-items: end; }
    .carrinho-pdv { flex: 1; background: #f8f9fa; border: 1px solid #ddd; border-radius: 4px; overflow-y: auto; min-height: 180px; max-height: 350px; padding: 10px; }
    .item-linha { display: grid; grid-template-columns: 35px 1fr 85px; padding: 12px 0; border-bottom: 1px solid #eee; font-size: 11px; align-items: center; }
    .total-caixa { font-size: 26px; font-weight: bold; text-align: right; color: #dc3545; padding: 10px 0; border-top: 2px solid #ddd; }
    .btn { padding: 12px; font-weight: bold; border-radius: 4px; border: none; cursor: pointer; width: 100%; }
    .btn-fechar { background: #28a745; color: white; }
    .btn-saida { background: #dc3545; color: white; }

    #modalFiado {
        display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7);
    }
    .modal-content {
        background: #fff; margin: 10% auto; padding: 20px; width: 90%; max-width: 400px; border-radius: 8px; text-transform: uppercase;
    }

    @media (max-width: 800px) {
        .caixa-container { flex-direction: column; padding: 10px; }
        .grid-form { grid-template-columns: 1fr; gap: 5px; }
        .painel-vendas, .painel-lateral { width: 100%; min-width: 100%; }
    }
</style>

<?php if($mensagem): ?>
    <div class="alert alert-<?php echo $tipo_mensagem; ?>"><?php echo $mensagem; ?></div>
<?php endif; ?>

<div class="caixa-container">
    <div class="painel-vendas">
        <div class="card card-venda">
            <div class="titulo-secao">🛒 SELECIONAR PRODUTOS</div>
            <form method="POST" class="grid-form">
                <div>
                    <label>PRODUTO</label>
                   <select name="produto_id" required>
                        <option value="">-- BUSCAR ITEM --</option>
                        <?php 
                        $ps = $conn->query("SELECT * FROM produtos WHERE estoque > 0 ORDER BY nome ASC");
                        while($p = $ps->fetch_assoc()){
                            echo "<option value='{$p['id']}'>{$p['nome']} (R$ ".number_format($p['preco'],2,',','.').")</option>";
                        }
                        ?>
                    </select>
                </div>
                <div>
                    <label>PREÇO (SE FOR ZERO)</label>
                    <input type="text" name="preco_manual" placeholder="0,00" oninput="this.value = this.value.replace(/[^0-9,]/g, '')">
                </div>
                <div><label>QTD</label><input type="number" name="quantidade" value="1" min="1"></div>
                <button type="submit" name="btn_add_carrinho" class="btn" style="background:#555; color:#fff;">ADICIONAR</button>
            </form>
        </div>

        <div class="card" style="flex:1; display:flex; flex-direction:column;">
            <div class="titulo-secao">📄 ITENS NO CARRINHO <a href="?limpar_venda=1" style="margin-left:auto; font-size:10px; color:red;">[LIMPAR TUDO]</a></div>
            <div class="carrinho-pdv">
                <?php $tot = 0; if(!empty($_SESSION['venda_caixa'])): foreach($_SESSION['venda_caixa'] as $i): $tot += $i['total']; ?>
                    <div class="item-linha">
                        <span style="font-weight:bold;"><?php echo $i['qtd']; ?>x</span>
                        <span><?php echo $i['nome']; ?></span>
                        <span style="text-align:right;">R$ <?php echo number_format($i['total'],2,',','.'); ?></span>
                    </div>
                <?php endforeach; else: echo "<p style='text-align:center; color:#999; margin-top:20px;'>CARRINHO VAZIO</p>"; endif; ?>
            </div>
            <div class="total-caixa">R$ <?php echo number_format($tot,2,',','.'); ?></div>
        </div>
    </div>

    <div class="painel-lateral">
        <div class="card card-venda">
            <div class="titulo-secao">✅ FECHAR VENDA</div>
            <form method="POST" id="formFinalizar">
                <label>VENDEDOR</label>
                <select name="vendedor" required>
                    <?php $us = $conn->query("SELECT NOME FROM usuarios"); while($u = $us->fetch_assoc()) echo "<option>{$u['NOME']}</option>"; ?>
                </select>

                <label>CLIENTE <span style="color:red;">(OBRIGATÓRIO PARA FIADO)</span></label>
                <select name="cliente_id">
                    <option value="">CONSUMIDOR FINAL</option>
                    <?php $cl = $conn->query("SELECT id, nome FROM clientes ORDER BY nome ASC"); while($c = $cl->fetch_assoc()) echo "<option value='{$c['id']}'>{$c['nome']}</option>"; ?>
                </select>

                <label>FORMA DE PAGAMENTO</label>
                <select name="pagamento" id="selectPagamento" required onchange="checarFiado(this.value)">
                    <option value="DINHEIRO">DINHEIRO</option>
                    <option value="PIX">PIX</option>
                    <option value="CARTÃO">CARTÃO</option>
                    <option value="FIADO">FIADO</option>
                </select>

                <input type="hidden" name="extra_vencimento" id="input_vencimento">
                <input type="hidden" name="extra_observacao" id="input_observacao">
                
                <button type="submit" name="btn_finalizar_venda" class="btn btn-fechar">FINALIZAR VENDA</button>
            </form>
        </div>

        <div class="card card-saida">
            <div class="titulo-secao">💸 LANÇAR SAÍDA</div>
            <form method="POST">
                <label>VENDEDOR (QUEM ESTÁ LANÇANDO?)</label>
                <select name="vendedor_saida" required>
                    <?php 
                    $us_saida = $conn->query("SELECT NOME FROM usuarios"); 
                    while($us = $us_saida->fetch_assoc()) echo "<option>{$us['NOME']}</option>"; 
                    ?>
                </select>

                <label>MOTIVO / DESPESA</label>
                <select name="motivo_id" required>
                    <option value="">-- SELECIONE --</option>
                    <?php $ms = $conn->query("SELECT * FROM saidas WHERE VALOR = 0 ORDER BY DESCRICAO ASC"); while($m = $ms->fetch_assoc()) echo "<option value='{$m['ID']}'>{$m['DESCRICAO']}</option>"; ?>
                </select>

                <label>FORNECEDOR / BENEFICIÁRIO</label>
                <input type="text" name="cliente_fornecedor_saida" placeholder="NOME DO FORNECEDOR OU CLIENTE" style="text-transform: uppercase;">

                <label>VALOR (R$)</label>
                <input type="text" name="valor_saida" placeholder="0,00" required>
                
                <button type="submit" name="btn_lancar_saida" class="btn btn-saida">LANÇAR DESPESA</button>
            </form>
        </div>
    </div>
</div>

<div id="modalFiado">
    <div class="modal-content">
        <h3 style="margin-top:0;">Dados Extras - Fiado</h3>
        <label>Data de Vencimento</label>
        <input type="date" id="modal_date" value="<?php echo date('Y-m-d', strtotime('+30 days')); ?>">
        
        <label>Observação (Opcional)</label>
        <textarea id="modal_obs" placeholder="Alguma anotação extra..."></textarea>
        
        <button type="button" onclick="salvarExtra()" class="btn" style="background:#28a745; color:#fff; border:none; cursor:pointer;">Confirmar e Fechar</button>
    </div>
</div>

<script>
function checarFiado(valor) {
    if(valor === 'FIADO') {
        document.getElementById('modalFiado').style.display = 'block';
    }
}

function salvarExtra() {
    var vencimento = document.getElementById('modal_date').value;
    var obs = document.getElementById('modal_obs').value;
    
    document.getElementById('input_vencimento').value = vencimento;
    document.getElementById('input_observacao').value = obs;
    
    document.getElementById('modalFiado').style.display = 'none';
}

window.onclick = function(event) {
    var modal = document.getElementById('modalFiado');
    if (event.target == modal) {
        modal.style.display = "none";
    }
}
</script>