HEX
Server: LiteSpeed
System: Linux cp01.bhostbrasil.com.br 5.14.0-611.16.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Dec 22 03:40:39 EST 2025 x86_64
User: onlyfibr (1083)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: /home/onlyfibr/public_html/assinar/admin/editar_precadastro.php
<?php
// HABILITAR ERROS PARA DEBUG - REMOVER/COMENTAR EM PRODUÇÃO!
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// ---------------------------------------------------------

session_start();
require_once '../config.php'; // Necessário para $pdo e constantes
require_once '../functions.php'; // Para cleanCpfCnpj(), etc.

// CRÍTICO: ADICIONE AQUI SUA LÓGICA DE AUTENTICAÇÃO !!!
// Exemplo MUITO BÁSICO (NÃO SEGURO PARA PRODUÇÃO):
/*
if (!isset($_SESSION['usuario_logado']) || $_SESSION['tipo_usuario'] !== 'admin') {
    header('Location: login.php');
    exit;
}
*/

$id_edicao = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
$precadastro = null;
$mensagem_erro = '';
$mensagem_sucesso = '';
$erros_validacao = [];

// --- Busca os dados atuais do pré-cadastro ---
if ($id_edicao && $pdo) {
    try {
        $sql = "SELECT * FROM precadastros WHERE id = :id";
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':id', $id_edicao, PDO::PARAM_INT);
        $stmt->execute();
        $precadastro = $stmt->fetch(PDO::FETCH_ASSOC);
        if (!$precadastro) {
            $mensagem_erro = "Erro: Pré-cadastro com ID {$id_edicao} não encontrado.";
            $id_edicao = null; // Impede processamento POST
        }
    } catch (\PDOException $e) {
        $mensagem_erro = "Erro ao buscar dados para edição.";
        error_log("Erro busca edição ID {$id_edicao}: " . $e->getMessage());
        $id_edicao = null;
    }
} elseif (!$id_edicao) {
    $mensagem_erro = "ID inválido para edição.";
} else {
    $mensagem_erro = "Erro crítico: Conexão com banco de dados falhou.";
}

// --- Carrega Planos e Vencimentos (Necessário para os selects do formulário) ---
$lista_planos_disponiveis = [];
$lista_vencimentos_disponiveis = [];
$erro_busca_api = false;
try {
    // 1. Buscar Planos via API SGP - postApiJson
    $endpointPlanos = '/api/precadastro/plano/list';
    $payloadPlanos = ['token' => APP_TOKEN, 'app' => APP_NAME];
    $responsePlanos = postApiJson(BASE_URL, $endpointPlanos, $payloadPlanos);
    $dadosApiPlanos = json_decode($responsePlanos, true);
    if (json_last_error() === JSON_ERROR_NONE && is_array($dadosApiPlanos) && empty($dadosApiPlanos['error'])) {
        foreach ($dadosApiPlanos as $plano) {
            if (isset($plano['id'], $plano['descricao'])) {
                $lista_planos_disponiveis[] = $plano;
            }
        }
    } else {
        $erro_busca_api = true;
        error_log("Erro API Planos (Edit): " . $responsePlanos);
    }

    // 2. Buscar Vencimentos (Exemplo simplificado, copie o seu código)
    $endpointVenc = '/api/precadastro/vencimento/list';
    $payloadVenc = ['token' => APP_TOKEN, 'app' => APP_NAME];
    $responseVenc = postApiJson(BASE_URL, $endpointVenc, $payloadVenc);
    $dadosApiVenc = json_decode($responseVenc, true);
    if (json_last_error() === JSON_ERROR_NONE && is_array($dadosApiVenc) && empty($dadosApiVenc['error'])) {
        foreach ($dadosApiVenc as $venc) {
            if (isset($venc['id'], $venc['dia'])) {
                $lista_vencimentos_disponiveis[] = $venc;
            }
        }
        usort($lista_vencimentos_disponiveis, function ($a, $b) {
            return ($a['dia'] ?? 99) <=> ($b['dia'] ?? 99);
        });
    } else {
        $erro_busca_api = true;
        error_log("Erro API Vencimentos (Edit): " . $responseVenc);
    }

    if ($erro_busca_api) {
        $mensagem_erro .= " Aviso: Falha ao carregar opções de planos/vencimentos.";
    }
} catch (\Exception $e) {
    $mensagem_erro .= " Erro inesperado ao carregar opções.";
    error_log("Exceção busca planos/venc (Edit): " . $e->getMessage());
}
// (Fim da cópia da lógica de busca de Planos/Vencimentos)

// --- PROCESSAMENTO DO FORMULÁRIO DE EDIÇÃO (POST) ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['salvar_edicao']) && $id_edicao && $precadastro && $pdo) {

    // ADICIONE VALIDAÇÃO CSRF TOKEN AQUI !!!

    // 1. Coleta e Limpeza (Similar ao original, mas pegando de $_POST)
    // Adapte os nomes dos campos conforme o formulário HTML abaixo
    $tipo_pessoa = $_POST['tipo_pessoa'] ?? $precadastro['tipo']; // Pegar tipo do DB se não vier do form? Revisar lógica do seu form original para tipo PF/PJ
    $nome = trim($_POST['nome'] ?? '');
    $cpf_cnpj_input = trim($_POST['cpfcnpj'] ?? '');
    $cpf_cnpj = cleanCpfCnpj($cpf_cnpj_input);
    $email = filter_var(trim($_POST['email'] ?? ''), FILTER_SANITIZE_EMAIL);
    $celular_input = trim($_POST['celular'] ?? '');
    $celular = cleanCpfCnpj($celular_input);
    $cep_input = trim($_POST['cep'] ?? '');
    $cep = cleanCpfCnpj($cep_input);
    $logradouro = trim($_POST['logradouro'] ?? '');
    $numero = trim($_POST['numero'] ?? '');
    $complemento = trim($_POST['complemento'] ?? '');
    $bairro = trim($_POST['bairro'] ?? '');
    $cidade = trim($_POST['cidade'] ?? '');
    $uf = $_POST['uf'] ?? '';
    $pontoreferencia = trim($_POST['pontoreferencia'] ?? '');
    $tipo_moradia = trim($_POST['tipo_moradia'] ?? '');
    $plano_id_selecionado = filter_input(INPUT_POST, 'plano_id', FILTER_VALIDATE_INT);
    $vencimento_id_selecionado = filter_input(INPUT_POST, 'vencimento_id', FILTER_VALIDATE_INT);
    $observacao = trim($_POST['observacao'] ?? '');
    // Campos específicos PF/PJ - Adapte conforme necessidade de edição
    $rg = ($tipo_pessoa === 'PF') ? trim($_POST['rg'] ?? '') : null;
    $rg_emissor = ($tipo_pessoa === 'PF') ? trim($_POST['rg_emissor'] ?? '') : null;
    $datanasc = ($tipo_pessoa === 'PF') ? trim($_POST['datanasc'] ?? '') : null;
    $nome_fantasia = ($tipo_pessoa === 'PJ') ? trim($_POST['nomefantasia'] ?? '') : null;
    $insc_estadual = ($tipo_pessoa === 'PJ') ? trim($_POST['insc_estadual'] ?? '') : null;
    // Indicação e Vendedor - Adicione se precisar editar
    $foi_indicado = isset($_POST['foi_indicado']) && $_POST['foi_indicado'] === 'sim';
    $indicador_cpfcnpj_input = ($foi_indicado) ? trim($_POST['indicador_cpfcnpj'] ?? '') : null;
    $indicador_cpfcnpj = cleanCpfCnpj($indicador_cpfcnpj_input);
    $vendedor_id = filter_input(INPUT_POST, 'vendedor_id', FILTER_VALIDATE_INT); // Ajuste se 'vendedor_id' não for numérico


    // 2. Validação Server-Side
    $erros_validacao = [];
    if (empty($nome)) {
        $erros_validacao['nome'] = "Nome/Razão Social obrigatório.";
    }
    if (empty($cpf_cnpj)) {
        $erros_validacao['cpfcnpj'] = "CPF/CNPJ obrigatório.";
    }
    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $erros_validacao['email'] = "E-mail inválido.";
    }
    if (empty($celular) || (strlen($celular) < 10 || strlen($celular) > 11)) {
        $erros_validacao['celular'] = "Celular inválido.";
    }
    if (empty($cep) || strlen($cep) !== 8) {
        $erros_validacao['cep'] = "CEP inválido.";
    }
    if (empty($logradouro)) {
        $erros_validacao['logradouro'] = "Logradouro obrigatório.";
    }
    if (empty($numero)) {
        $erros_validacao['numero'] = "Número obrigatório.";
    }
    if (empty($bairro)) {
        $erros_validacao['bairro'] = "Bairro obrigatório.";
    }
    if (empty($tipo_moradia)) {
        $erros_validacao['tipo_moradia'] = "Bairro obrigatório.";
    }
    if (empty($cidade)) {
        $erros_validacao['cidade'] = "Cidade obrigatória.";
    }
    if (empty($uf) || strlen($uf) !== 2) {
        $erros_validacao['uf'] = "UF inválida.";
    }
    if (empty($plano_id_selecionado)) {
        $erros_validacao['plano_id'] = "Selecione um Plano.";
    }
    if (empty($vencimento_id_selecionado)) {
        $erros_validacao['vencimento_id'] = "Selecione um Vencimento.";
    }
    // Validação tipo pessoa (se editável) e campos condicionais
    // Validação indicador (se editável)

    // 3. Se NÃO houver erros de validação...
    if (empty($erros_validacao)) {
        try {
            // Query UPDATE
            $sql = "UPDATE precadastros SET
                        nome = :nome, email = :email, celular = :cel, cpf_cnpj = :cpfcnpj,
                        cidade = :cid, estado = :estado, observacao = :obs, rg = :rg, rg_emissor = :rg_em,
                        data_nascimento = :dn, nome_fantasia = :nf, insc_estadual = :ie,
                        cep = :cep, logradouro = :logr, numero = :num, complemento = :comp,
                        bairro = :bai, ponto_referencia = :pref, tipo_moradia = :moradia, plano_id_selecionado = :pid,
                        vencimento_id_selecionado = :vid, vendedor_id = :vend_id, foi_indicado = :foi_ind,
                        indicador_cpfcnpj = :ind_cpf
                        -- Adicione outros campos que podem ser editados
                    WHERE id = :id";
            $stmt = $pdo->prepare($sql);

            // Bind dos valores (use bindValue ou execute com array)
            $stmt->bindValue(':nome', $nome);
            $stmt->bindValue(':email', $email);
            $stmt->bindValue(':cel', $celular);
            $stmt->bindValue(':cpfcnpj', $cpf_cnpj);
            $stmt->bindValue(':cid', $cidade);
            $stmt->bindValue(':estado', $uf);
            $stmt->bindValue(':obs', $observacao ?: null);
            $stmt->bindValue(':rg', $rg);
            $stmt->bindValue(':rg_em', $rg_emissor);
            $stmt->bindValue(':dn', $datanasc ?: null);
            $stmt->bindValue(':nf', $nome_fantasia);
            $stmt->bindValue(':ie', $insc_estadual);
            $stmt->bindValue(':cep', $cep);
            $stmt->bindValue(':logr', $logradouro);
            $stmt->bindValue(':num', $numero);
            $stmt->bindValue(':comp', $complemento);
            $stmt->bindValue(':bai', $bairro);
            $stmt->bindValue(':pref', $pontoreferencia ?: null);
            $stmt->bindValue(':moradia', $tipo_moradia);
            $stmt->bindValue(':pid', $plano_id_selecionado, PDO::PARAM_INT);
            $stmt->bindValue(':vid', $vencimento_id_selecionado, PDO::PARAM_INT);
            $stmt->bindValue(':vend_id', $vendedor_id, PDO::PARAM_INT); // Ou null se não aplicável
            $stmt->bindValue(':foi_ind', $foi_indicado, PDO::PARAM_BOOL);
            $stmt->bindValue(':ind_cpf', $indicador_cpfcnpj);
            $stmt->bindValue(':id', $id_edicao, PDO::PARAM_INT); // WHERE clause

            if ($stmt->execute()) {
                $_SESSION['sucesso_dashboard'] = "Pré-cadastro ID {$id_edicao} atualizado com sucesso!";
                header('Location: dashboard_precadastros.php'); // Volta para a lista
                exit;
            } else {
                $mensagem_erro = "Erro ao salvar as alterações.";
            }
        } catch (\PDOException $e) {
            $mensagem_erro = "Erro de banco de dados ao salvar: " . $e->getMessage();
            error_log("Erro UPDATE pré-cadastro ID {$id_edicao}: " . $e->getMessage());
        }
    } else {
        // Se houve erros, repopula o array $precadastro com os dados do POST para o form mostrar os valores errados
        $precadastro = $_POST; // Cuidado: Isso pode sobrescrever dados que não estavam no form
        $precadastro['id'] = $id_edicao; // Mantém o ID
        $mensagem_erro = "Por favor, corrija os campos indicados.";
    }
}

// Se não foi POST ou deu erro no POST, usa os dados buscados do DB (ou null se não achou)
$form_data = $precadastro ?? []; // Para preencher o formulário

?>
<!DOCTYPE html>
<html lang="pt-BR">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Editar Pré-Cadastro - ID <?php echo htmlspecialchars($id_edicao ?? 'Inválido'); ?></title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="css/form.css" rel="stylesheet">
</head>

<body>

    <nav class="navbar navbar-expand-lg navbar-dark bg-dark mb-4">
        <div class="container">
            <a class="navbar-brand" href="#">Admin Pré-Cadastros</a>
            <ul class="navbar-nav ms-auto">
                <li class="nav-item"><a class="nav-link" href="dashboard_precadastros.php">Voltar ao Dashboard</a></li>
            </ul>
        </div>
    </nav>

    <div class="container">
        <h1>Editar Pré-Cadastro #<?php echo htmlspecialchars($id_edicao ?? 'Inválido'); ?></h1>
        <hr>

        <?php if ($mensagem_erro): ?> <div class="alert alert-danger"><?php echo $mensagem_erro; ?></div> <?php endif; ?>
        <?php if ($mensagem_sucesso): ?> <div class="alert alert-success"><?php echo htmlspecialchars($mensagem_sucesso); ?></div> <?php endif; ?>

        <?php if ($id_edicao && !empty($form_data)): // Só mostra o form se achou o registro 
        ?>
            <form id="form-precadastro-edit" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) . '?id=' . htmlspecialchars($id_edicao); ?>" novalidate>
                <input type="hidden" name="salvar_edicao" value="1">
                <?php // --- SEÇÕES DO FORMULÁRIO ---
                // COPIE E ADAPTE AS SEÇÕES DO SEU FORMULÁRIO ORIGINAL (precadastro_form.php) AQUI
                // Pré-preenchendo os 'value' com os dados de $form_data['nome_da_coluna'] <?php echo htmlspecialchars($form_data['cpf_cnpj'] ?? '');
                // Exemplo para o campo Nome:
                ?>

                <div class="form-section-card">
                    <legend>Dados Pessoais / Empresariais</legend>
                    <div class="mb-3">
                        <label for="nome" class="form-label">Nome Completo / Razão Social <span class="text-danger">*</span></label>
                        <input type="text" class="form-control <?php echo (!empty($erros_validacao['nome'])) ? 'is-invalid' : ''; ?>" id="nome" name="nome" value="<?php echo htmlspecialchars($form_data['nome'] ?? ''); ?>" required>
                        <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['nome'] ?? ''); ?></div>
                    </div>
                    <div class="mb-3">
                        <label for="cpfcnpj" class="form-label">CPF / CNPJ <span class="text-danger">*</span></label>
                        <input type="text" class="form-control <?php echo (!empty($erros_validacao['cpfcnpj'])) ? 'is-invalid' : ''; ?>" id="cpfcnpj" name="cpfcnpj" value="<?php echo htmlspecialchars($form_data['cpf_cnpj'] ?? ''); ?>" required placeholder="Apenas números">
                        <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['cpfcnpj'] ?? ''); ?></div>
                    </div>
                    <?php // TODO: Adicionar lógica para mostrar/esconder campos PF/PJ baseado no tipo original $form_data['tipo']? Ou tornar tipo editável? 
                    ?>
                    <div class="row g-3">
                        <div class="col-md-4 mb-3"><label for="rg" class="form-label">RG</label><input type="text" class="form-control" id="rg" name="rg" value="<?php echo htmlspecialchars($form_data['rg'] ?? ''); ?>"></div>
                        <div class="col-md-4 mb-3"><label for="rg_emissor" class="form-label">Órgão Emissor</label><input type="text" class="form-control" id="rg_emissor" name="rg_emissor" value="<?php echo htmlspecialchars($form_data['rg_emissor'] ?? ''); ?>"></div>
                        <div class="col-md-4 mb-3"><label for="datanasc" class="form-label">Data Nasc.</label><input type="date" class="form-control <?php echo (!empty($erros_validacao['datanasc'])) ? 'is-invalid' : ''; ?>" id="datanasc" name="datanasc" value="<?php echo htmlspecialchars($form_data['data_nascimento'] ?? ''); ?>">
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['datanasc'] ?? ''); ?></div>
                        </div>
                    </div>
                    <div class="row g-3">
                        <div class="col-md-6 mb-3"><label for="nomefantasia" class="form-label">Nome Fantasia</label><input type="text" class="form-control <?php echo (!empty($erros_validacao['nomefantasia'])) ? 'is-invalid' : ''; ?>" id="nomefantasia" name="nomefantasia" value="<?php echo htmlspecialchars($form_data['nome_fantasia'] ?? ''); ?>">
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['nomefantasia'] ?? ''); ?></div>
                        </div>
                        <div class="col-md-6 mb-3"><label for="insc_estadual" class="form-label">Inscrição Estadual</label><input type="text" class="form-control" id="insc_estadual" name="insc_estadual" value="<?php echo htmlspecialchars($form_data['insc_estadual'] ?? ''); ?>"></div>
                    </div>
                </div>

                <div class="form-section-card">
                    <legend>Contato</legend>
                    <div class="row g-3">
                        <div class="col-md-6 mb-3"><label for="email" class="form-label">E-mail <span class="text-danger">*</span></label><input type="email" class="form-control <?php echo (!empty($erros_validacao['email'])) ? 'is-invalid' : ''; ?>" id="email" name="email" value="<?php echo htmlspecialchars($form_data['email'] ?? ''); ?>" required>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['email'] ?? ''); ?></div>
                        </div>
                        <div class="col-md-6 mb-3"><label for="celular" class="form-label">Celular (DDD) <span class="text-danger">*</span></label><input type="tel" class="form-control <?php echo (!empty($erros_validacao['celular'])) ? 'is-invalid' : ''; ?>" id="celular" name="celular" value="<?php echo htmlspecialchars($form_data['celular'] ?? ''); ?>" required>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['celular'] ?? ''); ?></div>
                        </div>
                    </div>
                </div>

                <div class="form-section-card">
                    <legend>Endereço</legend>
                    <?php // COPIE A SEÇÃO DE ENDEREÇO DO FORM ORIGINAL, PREENCHENDO OS VALUES 
                    ?>
                    <div class="row g-3">
                        <div class="col-md-4 mb-3">
                            <label for="cep" class="form-label">CEP <span class="text-danger">*</span></label>
                            <input type="text" class="form-control <?php echo (!empty($erros_validacao['cep'])) ? 'is-invalid' : ''; ?>" id="cep" name="cep" value="<?php echo htmlspecialchars($form_data['cep'] ?? ''); ?>" required maxlength="8">
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['cep'] ?? 'CEP inválido.'); ?></div>
                        </div>
                        <div class="col-md-8 mb-3">
                            <label for="logradouro" class="form-label">Logradouro <span class="text-danger">*</span></label>
                            <input type="text" class="form-control <?php echo (!empty($erros_validacao['logradouro'])) ? 'is-invalid' : ''; ?>" id="logradouro" name="logradouro" value="<?php echo htmlspecialchars($form_data['logradouro'] ?? ''); ?>" required>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['logradouro'] ?? 'Obrigatório.'); ?></div>
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="numero" class="form-label">Número <span class="text-danger">*</span></label>
                            <input type="text" class="form-control <?php echo (!empty($erros_validacao['numero'])) ? 'is-invalid' : ''; ?>" id="numero" name="numero" value="<?php echo htmlspecialchars($form_data['numero'] ?? ''); ?>" required>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['numero'] ?? 'Obrigatório.'); ?></div>
                        </div>
                        <div class="col-md-4 mb-3">
                            <label for="complemento" class="form-label">Compl.</label>
                            <input type="text" class="form-control" id="complemento" name="complemento" value="<?php echo htmlspecialchars($form_data['complemento'] ?? ''); ?>">
                        </div>
                        <div class="col-md-5 mb-3">
                            <label for="bairro" class="form-label">Bairro <span class="text-danger">*</span></label>
                            <input type="text" class="form-control <?php echo (!empty($erros_validacao['bairro'])) ? 'is-invalid' : ''; ?>" id="bairro" name="bairro" value="<?php echo htmlspecialchars($form_data['bairro'] ?? ''); ?>" required>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['bairro'] ?? 'Obrigatório.'); ?></div>
                        </div>
                        <div class="col-md-8 mb-3">
                            <label for="cidade" class="form-label">Cidade <span class="text-danger">*</span></label>
                            <input type="text" class="form-control <?php echo (!empty($erros_validacao['cidade'])) ? 'is-invalid' : ''; ?>" id="cidade" name="cidade" value="<?php echo htmlspecialchars($form_data['cidade'] ?? ''); ?>" required>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['cidade'] ?? 'Obrigatório.'); ?></div>
                        </div>
                        <div class="col-md-4 mb-3">
                            <label for="uf" class="form-label">UF <span class="text-danger">*</span></label>
                            <select class="form-select <?php echo (!empty($erros_validacao['uf'])) ? 'is-invalid' : ''; ?>" id="uf" name="uf" required>
                                <option value="">UF</option>
                                <?php $ufs = ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO'];
                                foreach ($ufs as $uf_opt) {
                                    $selected = (isset($form_data['uf']) && $form_data['uf'] == $uf_opt) ? 'selected' : '';
                                    echo "<option value=\"$uf_opt\" $selected>$uf_opt</option>";
                                } ?>
                            </select>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['uf'] ?? ''); ?></div>
                        </div>
                        <div class="col-12 mb-3">
                            <label for="pontoreferencia" class="form-label">Ponto de Referência</label>
                            <input type="text" class="form-control" id="pontoreferencia" name="pontoreferencia" value="<?php echo htmlspecialchars($form_data['ponto_referencia'] ?? ''); ?>">
                        </div>
                        <div class="form-section-card"> <?php // Ou adicione dentro de uma seção existente 
                                                        ?>
                            <legend>Informações Adicionais</legend>

                            <div class="mb-3">
                                <label for="tipo_moradia" class="form-label">Tipo de moradia:</label>
                                <select class="form-select <?php echo (!empty($erros_validacao['tipo_moradia'])) ? 'is-invalid' : ''; ?>" id="tipo_moradia" name="tipo_moradia">
                                    <?php
                                    $opcoes_moradia = [
                                        '' => '-- Selecione (Obrigatório) --', // Chave vazia IMPORTANTE
                                        'Casa Própria' => 'Casa Própria',
                                        'Casa Alugada' => 'Casa Alugada',
                                        'Casa dos Pais' => 'Casa dos Pais',
                                        'Imóvel de Terceiros' => 'Imóvel de Terceiros',
                                        'Prefiro não responder' => 'Prefiro não responder'
                                    ];
                                    // Pega o valor submetido anteriormente (se houver erro e repopular) ou deixa vazio
                                    $valor_selecionado_moradia = $form_data['tipo_moradia'] ?? '';
                                    foreach ($opcoes_moradia as $valor => $texto): ?>
                                        <option value="<?php echo htmlspecialchars($valor); ?>" <?php echo ($valor_selecionado_moradia === $valor) ? 'selected' : ''; ?>>
                                            <?php echo htmlspecialchars($texto); ?>
                                        </option>
                                    <?php endforeach; ?>
                                </select>
                                <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['tipo_moradia'] ?? ''); ?></div>
                            </div>

                        </div>
                    </div>
                </div>

                <div class="form-section-card">
                    <legend>Plano e Vencimento</legend>
                    <div class="row g-3">
                        <div class="col-md-7 mb-3">
                            <label for="plano_id" class="form-label">Plano Desejado <span class="text-danger">*</span></label>
                            <select class="form-select <?php echo (!empty($erros_validacao['plano_id'])) ? 'is-invalid' : ''; ?>" id="plano_id" name="plano_id" required <?php echo empty($lista_planos_disponiveis) ? 'disabled' : ''; ?>>
                                <option value="">-- <?php echo empty($lista_planos_disponiveis) ? 'Erro' : 'Selecione'; ?> --</option>
                                <?php foreach ($lista_planos_disponiveis as $plano):
                                    $planoId = $plano['id'] ?? null;
                                    $planoDesc = $plano['descricao'] ?? 'Inválido';
                                    $planoValor = $plano['valor'] ?? null;
                                    if ($planoId && $planoDesc != 'Inválido'):
                                        $textoOpt = htmlspecialchars($planoDesc);
                                        if ($planoValor) $textoOpt .= " - R$ " . number_format($planoValor, 2, ',', '.'); ?>
                                        <option value="<?php echo htmlspecialchars($planoId); ?>" <?php echo (isset($form_data['plano_id_selecionado']) && $form_data['plano_id_selecionado'] == $planoId) ? 'selected' : ''; ?>> <?php echo $textoOpt; ?> </option>
                                <?php endif;
                                endforeach; ?>
                            </select>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['plano_id'] ?? 'Selecione.'); ?></div>
                        </div>
                        <div class="col-md-5 mb-3">
                            <label for="vencimento_id" class="form-label">Vencimento <span class="text-danger">*</span></label>
                            <select class="form-select <?php echo (!empty($erros_validacao['vencimento_id'])) ? 'is-invalid' : ''; ?>" id="vencimento_id" name="vencimento_id" required <?php echo empty($lista_vencimentos_disponiveis) ? 'disabled' : ''; ?>>
                                <option value="">-- <?php echo empty($lista_vencimentos_disponiveis) ? 'Erro' : 'Selecione'; ?> --</option>
                                <?php foreach ($lista_vencimentos_disponiveis as $venc):
                                    $vencId = $venc['id'] ?? null;
                                    $vencDia = $venc['dia'] ?? '?';
                                    if ($vencId !== null): ?>
                                        <option value="<?php echo htmlspecialchars($vencId); ?>" <?php echo (isset($form_data['vencimento_id_selecionado']) && $form_data['vencimento_id_selecionado'] == $vencId) ? 'selected' : ''; ?>> Dia <?php echo htmlspecialchars($vencDia); ?> </option>
                                <?php endif;
                                endforeach; ?>
                            </select>
                            <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['vencimento_id'] ?? 'Selecione.'); ?></div>
                        </div>
                    </div>
                </div>

                <?php // TODO: Adicionar seções para Vendedor e Indicação se forem editáveis 
                ?>

                <div class="form-section-card">
                    <legend>Observações</legend>
                    <div class="mb-3">
                        <label for="observacao" class="form-label">Observações</label>
                        <textarea class="form-control <?php echo (!empty($erros_validacao['observacao'])) ? 'is-invalid' : ''; ?>" id="observacao" name="observacao" rows="4"><?php echo htmlspecialchars($form_data['observacao'] ?? ''); ?></textarea>
                        <div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['observacao'] ?? ''); ?></div>
                    </div>
                </div>

                <?php // Botão Salvar 
                ?>
                <div class="mt-4 d-flex justify-content-end">
                    <a href="dashboard_precadastros.php" class="btn btn-secondary me-2">Cancelar</a>
                    <button type="submit" class="btn btn-primary">Salvar Alterações</button>
                </div>

            </form>
        <?php elseif (!$mensagem_erro) : // Se $id_edicao era válido mas $form_data está vazio (erro na busca) 
        ?>
            <div class="alert alert-warning">Não foi possível carregar os dados para edição.</div>
            <a href="dashboard_precadastros.php" class="btn btn-secondary">Voltar ao Dashboard</a>
        <?php else: ?>
            <a href="dashboard_precadastros.php" class="btn btn-secondary">Voltar ao Dashboard</a>
        <?php endif; ?>

    </div>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="../js/custom.js"></script> <?php // Adapte o custom.js para funcionar na edição 
                                            ?>

</body>

</html>