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

require_once 'includes/funcoes.php';

// =============================================
// FUNÇÃO PARA VALIDAR CNPJ
// =============================================
function validarCnpj($cnpj) {
    $cnpj = preg_replace('/[^0-9]/', '', $cnpj);
    
    if (strlen($cnpj) != 14) {
        return false;
    }
    
    if (preg_match('/(\d)\1{13}/', $cnpj)) {
        return false;
    }
    
    for ($i = 0, $j = 5, $soma = 0; $i < 12; $i++) {
        $soma += $cnpj[$i] * $j;
        $j = ($j == 2) ? 9 : $j - 1;
    }
    
    $resto = $soma % 11;
    $dv1 = ($resto < 2) ? 0 : 11 - $resto;
    
    if ($cnpj[12] != $dv1) {
        return false;
    }
    
    for ($i = 0, $j = 6, $soma = 0; $i < 13; $i++) {
        $soma += $cnpj[$i] * $j;
        $j = ($j == 2) ? 9 : $j - 1;
    }
    
    $resto = $soma % 11;
    $dv2 = ($resto < 2) ? 0 : 11 - $resto;
    
    return ($cnpj[13] == $dv2);
}

// =============================================
// FUNÇÃO PARA VALIDAR CPF
// =============================================
function validarCpf($cpf) {
    $cpf = preg_replace('/[^0-9]/', '', $cpf);
    
    if (strlen($cpf) != 11) {
        return false;
    }
    
    if (preg_match('/(\d)\1{10}/', $cpf)) {
        return false;
    }
    
    for ($t = 9; $t < 11; $t++) {
        for ($d = 0, $c = 0; $c < $t; $c++) {
            $d += $cpf[$c] * (($t + 1) - $c);
        }
        $d = ((10 * $d) % 11) % 10;
        if ($cpf[$c] != $d) {
            return false;
        }
    }
    return true;
}

// =============================================
// PROCESSAR REQUISIÇÃO AJAX - SEMPRE ANTES DO HEADER
// =============================================

// BUSCAR TOMADOR
if (isset($_GET['action']) && $_GET['action'] === 'get_tomador' && isset($_GET['id'])) {
    header('Content-Type: application/json');
    
    $pdo = conectarBanco();
    
    if (!$pdo) {
        echo json_encode([
            'sucesso' => false,
            'erro' => 'Erro ao conectar ao banco de dados'
        ]);
        exit;
    }
    
    $id = (int)$_GET['id'];
    
    $stmt = $pdo->prepare("
        SELECT t.*, end.* 
        FROM tomadores t
        LEFT JOIN enderecos end ON t.endereco_id = end.id
        WHERE t.id = ?
    ");
    $stmt->execute([$id]);
    $tomador = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($tomador) {
        echo json_encode([
            'sucesso' => true,
            'dados' => $tomador
        ]);
    } else {
        echo json_encode([
            'sucesso' => false,
            'erro' => 'Tomador não encontrado'
        ]);
    }
    exit;
}

// BUSCAR CNPJ
if (isset($_GET['action']) && $_GET['action'] === 'buscar_cnpj' && isset($_GET['cnpj'])) {
    header('Content-Type: application/json');
    
    $cnpj = preg_replace('/[^0-9]/', '', $_GET['cnpj']);
    
    if (strlen($cnpj) != 14) {
        echo json_encode([
            'sucesso' => false,
            'erro' => 'CNPJ inválido. Digite 14 dígitos.'
        ]);
        exit;
    }
    
    $url = "https://www.receitaws.com.br/v1/cnpj/{$cnpj}";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($response !== false && $httpCode == 200) {
        $data = json_decode($response, true);
        
        if (isset($data['status']) && $data['status'] === 'OK' && isset($data['cnpj'])) {
            $pdo = conectarBanco();
            $codigo_ibge = '';
            $municipio_id = null;
            
            if ($pdo) {
                $stmt = $pdo->prepare("SELECT id, codigo_municipio_completo FROM municipios WHERE uf = ? AND nome_municipio = ? LIMIT 1");
                $stmt->execute([$data['uf'], $data['municipio']]);
                $municipio = $stmt->fetch(PDO::FETCH_ASSOC);
                if ($municipio) {
                    $codigo_ibge = $municipio['codigo_municipio_completo'];
                    $municipio_id = $municipio['id'];
                }
            }
            
            $cep_limpo = preg_replace('/[^0-9]/', '', $data['cep'] ?? '');
            
            echo json_encode([
                'sucesso' => true,
                'dados' => [
                    'cnpj' => $data['cnpj'] ?? '',
                    'razao_social' => $data['nome'] ?? '',
                    'nome_fantasia' => $data['fantasia'] ?? '',
                    'logradouro' => strtoupper($data['logradouro'] ?? ''),
                    'numero' => $data['numero'] ?? '',
                    'bairro' => strtoupper($data['bairro'] ?? ''),
                    'cidade' => strtoupper($data['municipio'] ?? ''),
                    'uf' => strtoupper($data['uf'] ?? ''),
                    'cep' => $cep_limpo,
                    'codigo_ibge' => $codigo_ibge,
                    'municipio_id' => $municipio_id,
                    'email' => $data['email'] ?? '',
                    'telefone' => $data['telefone'] ?? '',
                    'situacao' => $data['situacao'] ?? ''
                ]
            ]);
        } else {
            echo json_encode([
                'sucesso' => false,
                'erro' => 'CNPJ não encontrado ou inválido'
            ]);
        }
    } else {
        echo json_encode([
            'sucesso' => false,
            'erro' => 'Erro ao acessar a API da ReceitaWS. Tente novamente.'
        ]);
    }
    exit;
}

// BUSCAR CEP
if (isset($_GET['action']) && $_GET['action'] === 'buscar_cep' && isset($_GET['cep'])) {
    header('Content-Type: application/json');
    
    $cep = preg_replace('/[^0-9]/', '', $_GET['cep']);
    
    if (strlen($cep) != 8) {
        echo json_encode([
            'sucesso' => false,
            'erro' => 'CEP inválido. Digite 8 dígitos.'
        ]);
        exit;
    }
    
    $url = "https://viacep.com.br/ws/{$cep}/json/";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($response !== false && $httpCode == 200) {
        $data = json_decode($response, true);
        
        if (!isset($data['erro']) && isset($data['cep'])) {
            $pdo = conectarBanco();
            $codigo_ibge = '';
            $municipio_id = null;
            
            if ($pdo) {
                $stmt = $pdo->prepare("SELECT id, codigo_municipio_completo FROM municipios WHERE uf = ? AND nome_municipio = ? LIMIT 1");
                $stmt->execute([$data['uf'], $data['localidade']]);
                $municipio = $stmt->fetch(PDO::FETCH_ASSOC);
                if ($municipio) {
                    $codigo_ibge = $municipio['codigo_municipio_completo'];
                    $municipio_id = $municipio['id'];
                }
            }
            
            if (empty($codigo_ibge) && isset($data['ibge'])) {
                $codigo_ibge = $data['ibge'];
            }
            
            echo json_encode([
                'sucesso' => true,
                'dados' => [
                    'cep' => $data['cep'] ?? '',
                    'logradouro' => strtoupper($data['logradouro'] ?? ''),
                    'bairro' => strtoupper($data['bairro'] ?? ''),
                    'cidade' => strtoupper($data['localidade'] ?? ''),
                    'uf' => strtoupper($data['uf'] ?? ''),
                    'codigo_ibge' => $codigo_ibge,
                    'municipio_id' => $municipio_id
                ]
            ]);
        } else {
            echo json_encode([
                'sucesso' => false,
                'erro' => 'CEP não encontrado'
            ]);
        }
    } else {
        echo json_encode([
            'sucesso' => false,
            'erro' => 'Erro ao acessar a API do ViaCEP. Tente novamente.'
        ]);
    }
    exit;
}

// =============================================
// PROCESSAR FORMULÁRIO - ANTES DO HEADER
// =============================================

$pdo = conectarBanco();

if (!$pdo) {
    die('Erro ao conectar ao banco de dados');
}

$mensagem = '';
$tipoMensagem = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // CADASTRAR
    if (isset($_POST['acao']) && $_POST['acao'] === 'cadastrar') {
        $empresa_id = $_POST['empresa_id'];
        $tipo_documento = $_POST['tipo_documento'];
        
        $cnpj_raw = $_POST['cnpj'] ?? '';
        $cpf_raw = $_POST['cpf'] ?? '';
        
        $cnpj = $tipo_documento == 'cnpj' ? preg_replace('/[^0-9]/', '', $cnpj_raw) : null;
        $cpf = $tipo_documento == 'cpf' ? preg_replace('/[^0-9]/', '', $cpf_raw) : null;
        
        $erro_validacao = false;
        
        if ($tipo_documento == 'cnpj') {
            if (strlen($cnpj) !== 14) {
                $mensagem = "CNPJ inválido! Deve ter exatamente 14 dígitos. Você enviou " . strlen($cnpj) . " dígitos.";
                $tipoMensagem = "danger";
                $erro_validacao = true;
            } elseif (!validarCnpj($cnpj)) {
                $mensagem = "CNPJ inválido! Verifique os dígitos verificadores.";
                $tipoMensagem = "danger";
                $erro_validacao = true;
            }
        } else if ($tipo_documento == 'cpf') {
            if (strlen($cpf) !== 11) {
                $mensagem = "CPF inválido! Deve ter exatamente 11 dígitos. Você enviou " . strlen($cpf) . " dígitos.";
                $tipoMensagem = "danger";
                $erro_validacao = true;
            } elseif (!validarCpf($cpf)) {
                $mensagem = "CPF inválido! Verifique os dígitos verificadores.";
                $tipoMensagem = "danger";
                $erro_validacao = true;
            }
        }
        
        if (!$erro_validacao) {
            $razao_social = sanitizar($_POST['razao_social']);
            $nome_fantasia = sanitizar($_POST['nome_fantasia'] ?? '');
            $email = sanitizar($_POST['email']);
            $telefone = preg_replace('/[^0-9]/', '', $_POST['telefone']);
            $inscricao_municipal = sanitizar($_POST['inscricao_municipal'] ?? '');
            
            $logradouro = sanitizar($_POST['logradouro']);
            $numero = sanitizar($_POST['numero']);
            $bairro = sanitizar($_POST['bairro']);
            $cidade = sanitizar($_POST['cidade']);
            $codigo_municipio = sanitizar($_POST['codigo_municipio']);
            $uf = sanitizar($_POST['uf']);
            $cep = preg_replace('/[^0-9]/', '', $_POST['cep']);
            
            try {
                $pdo->beginTransaction();
                
                $stmt = $pdo->prepare("INSERT INTO enderecos (empresa_id, logradouro, numero, bairro, cidade, codigo_municipio, uf, cep) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
                $stmt->execute([$empresa_id, $logradouro, $numero, $bairro, $cidade, $codigo_municipio, $uf, $cep]);
                $endereco_id = $pdo->lastInsertId();
                
                $stmt = $pdo->prepare("INSERT INTO tomadores (empresa_id, cnpj, cpf, razao_social, nome_fantasia, email, telefone, inscricao_municipal, endereco_id, ativo) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 1)");
                $stmt->execute([$empresa_id, $cnpj, $cpf, $razao_social, $nome_fantasia, $email, $telefone, $inscricao_municipal, $endereco_id]);
                
                $pdo->commit();
                
                header('Location: ' . $_SERVER['PHP_SELF'] . '?msg=cadastrado');
                exit;
            } catch (PDOException $e) {
                $pdo->rollBack();
                $mensagem = "Erro ao cadastrar: " . $e->getMessage();
                $tipoMensagem = "danger";
            }
        }
    }
    
    // EDITAR
    if (isset($_POST['acao']) && $_POST['acao'] === 'editar') {
        $tomador_id = $_POST['tomador_id'];
        $empresa_id = $_POST['empresa_id'];
        $tipo_documento = $_POST['tipo_documento'];
        
        $cnpj_raw = $_POST['cnpj'] ?? '';
        $cpf_raw = $_POST['cpf'] ?? '';
        
        $cnpj = $tipo_documento == 'cnpj' ? preg_replace('/[^0-9]/', '', $cnpj_raw) : null;
        $cpf = $tipo_documento == 'cpf' ? preg_replace('/[^0-9]/', '', $cpf_raw) : null;
        
        $erro_validacao = false;
        
        if ($tipo_documento == 'cnpj') {
            if (strlen($cnpj) !== 14) {
                $mensagem = "CNPJ inválido! Deve ter exatamente 14 dígitos. Você enviou " . strlen($cnpj) . " dígitos.";
                $tipoMensagem = "danger";
                $erro_validacao = true;
            } elseif (!validarCnpj($cnpj)) {
                $mensagem = "CNPJ inválido! Verifique os dígitos verificadores.";
                $tipoMensagem = "danger";
                $erro_validacao = true;
            }
        } else if ($tipo_documento == 'cpf') {
            if (strlen($cpf) !== 11) {
                $mensagem = "CPF inválido! Deve ter exatamente 11 dígitos. Você enviou " . strlen($cpf) . " dígitos.";
                $tipoMensagem = "danger";
                $erro_validacao = true;
            } elseif (!validarCpf($cpf)) {
                $mensagem = "CPF inválido! Verifique os dígitos verificadores.";
                $tipoMensagem = "danger";
                $erro_validacao = true;
            }
        }
        
        if (!$erro_validacao) {
            $razao_social = sanitizar($_POST['razao_social']);
            $nome_fantasia = sanitizar($_POST['nome_fantasia'] ?? '');
            $email = sanitizar($_POST['email']);
            $telefone = preg_replace('/[^0-9]/', '', $_POST['telefone']);
            $inscricao_municipal = sanitizar($_POST['inscricao_municipal'] ?? '');
            $ativo = isset($_POST['ativo']) ? 1 : 0;
            
            $endereco_id = $_POST['endereco_id'];
            $logradouro = sanitizar($_POST['logradouro']);
            $numero = sanitizar($_POST['numero']);
            $bairro = sanitizar($_POST['bairro']);
            $cidade = sanitizar($_POST['cidade']);
            $codigo_municipio = sanitizar($_POST['codigo_municipio']);
            $uf = sanitizar($_POST['uf']);
            $cep = preg_replace('/[^0-9]/', '', $_POST['cep']);
            
            try {
                $pdo->beginTransaction();
                
                $stmt = $pdo->prepare("UPDATE enderecos SET logradouro = ?, numero = ?, bairro = ?, cidade = ?, codigo_municipio = ?, uf = ?, cep = ? WHERE id = ?");
                $stmt->execute([$logradouro, $numero, $bairro, $cidade, $codigo_municipio, $uf, $cep, $endereco_id]);
                
                $stmt = $pdo->prepare("UPDATE tomadores SET empresa_id = ?, cnpj = ?, cpf = ?, razao_social = ?, nome_fantasia = ?, email = ?, telefone = ?, inscricao_municipal = ?, ativo = ? WHERE id = ?");
                $stmt->execute([$empresa_id, $cnpj, $cpf, $razao_social, $nome_fantasia, $email, $telefone, $inscricao_municipal, $ativo, $tomador_id]);
                
                $pdo->commit();
                
                header('Location: ' . $_SERVER['PHP_SELF'] . '?msg=atualizado');
                exit;
            } catch (PDOException $e) {
                $pdo->rollBack();
                $mensagem = "Erro ao atualizar: " . $e->getMessage();
                $tipoMensagem = "danger";
            }
        }
    }
    
    // EXCLUIR
    if (isset($_POST['acao']) && $_POST['acao'] === 'excluir') {
        $tomador_id = $_POST['tomador_id'];
        
        try {
            $stmt = $pdo->prepare("SELECT endereco_id FROM tomadores WHERE id = ?");
            $stmt->execute([$tomador_id]);
            $tomador = $stmt->fetch(PDO::FETCH_ASSOC);
            
            if ($tomador) {
                $pdo->beginTransaction();
                
                $stmt = $pdo->prepare("DELETE FROM enderecos WHERE id = ?");
                $stmt->execute([$tomador['endereco_id']]);
                
                $stmt = $pdo->prepare("DELETE FROM tomadores WHERE id = ?");
                $stmt->execute([$tomador_id]);
                
                $pdo->commit();
                
                header('Location: ' . $_SERVER['PHP_SELF'] . '?msg=excluido');
                exit;
            }
        } catch (PDOException $e) {
            $pdo->rollBack();
            $mensagem = "Erro ao excluir: " . $e->getMessage();
            $tipoMensagem = "danger";
        }
    }
}

// =============================================
// INICIO DA PÁGINA
// =============================================

include 'includes/header.php';

if (isset($_GET['msg'])) {
    switch ($_GET['msg']) {
        case 'cadastrado':
            $mensagem = "Tomador cadastrado com sucesso!";
            $tipoMensagem = "success";
            break;
        case 'atualizado':
            $mensagem = "Tomador atualizado com sucesso!";
            $tipoMensagem = "success";
            break;
        case 'excluido':
            $mensagem = "Tomador excluído com sucesso!";
            $tipoMensagem = "success";
            break;
    }
}

$empresas = $pdo->query("SELECT id, nome FROM empresas WHERE ativo = 1 ORDER BY nome")->fetchAll(PDO::FETCH_ASSOC);
$municipios = $pdo->query("SELECT id, uf, nome_municipio, codigo_municipio_completo FROM municipios ORDER BY nome_municipio ASC")->fetchAll(PDO::FETCH_ASSOC);

// Buscar todos os tomadores com todas as colunas disponíveis
$tomadores = $pdo->query("
    SELECT 
        t.id as tomador_id,
        t.empresa_id,
        t.cnpj,
        t.cpf,
        t.razao_social,
        t.nome_fantasia,
        t.email,
        t.telefone,
        t.inscricao_municipal,
        t.endereco_id,
        t.ativo,
        t.criado_em,
        t.atualizado_em,
        end.id as endereco_id,
        end.logradouro,
        end.numero,
        end.bairro,
        end.cidade,
        end.codigo_municipio,
        end.uf,
        end.cep,
        end.criado_em as endereco_criado_em,
        end.atualizado_em as endereco_atualizado_em,
        emp.nome as empresa_nome
    FROM tomadores t
    LEFT JOIN enderecos end ON t.endereco_id = end.id
    LEFT JOIN empresas emp ON t.empresa_id = emp.id
    ORDER BY t.id DESC
")->fetchAll(PDO::FETCH_ASSOC);
?>

<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
    <h1>Tomadores (Clientes)</h1>
    <button class="btn btn-primary" onclick="abrirModalCadastro()">
        <i class="bi bi-plus-circle"></i> Novo Tomador
    </button>
</div>

<?php if ($mensagem): ?>
<div class="alert alert-<?php echo $tipoMensagem; ?> alert-dismissible fade show" role="alert">
    <?php echo $mensagem; ?>
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<div class="card">
    <div class="card-body">
        <div class="table-responsive">
            <table class="table table-striped table-hover" id="tabelaTomadores">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Empresa</th>
                        <th>Documento</th>
                        <th>Razão Social</th>
                        <th>Nome Fantasia</th>
                        <th>Email</th>
                        <th>Telefone</th>
                        <th>Insc. Municipal</th>
                        <th>Logradouro</th>
                        <th>Nº</th>
                        <th>Bairro</th>
                        <th>Cidade</th>
                        <th>UF</th>
                        <th>CEP</th>
                        <th>Código IBGE</th>
                        <th>Status</th>
                        <th>Criado em</th>
                        <th>Atualizado em</th>
                        <th>Ações</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($tomadores as $tomador): ?>
                    <tr id="tomador_<?php echo $tomador['tomador_id']; ?>">
                        <td><?php echo $tomador['tomador_id']; ?></td>
                        <td>
                            <strong><?php echo htmlspecialchars($tomador['empresa_nome']); ?></strong>
                        </td>
                        <td>
                            <?php 
                            if ($tomador['cnpj']) echo formatarCnpj($tomador['cnpj']);
                            else echo formatarCpf($tomador['cpf']);
                            ?>
                        </td>
                        <td><?php echo htmlspecialchars($tomador['razao_social']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['nome_fantasia'] ?: '-'); ?></td>
                        <td><?php echo htmlspecialchars($tomador['email']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['telefone']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['inscricao_municipal'] ?: 'N/A'); ?></td>
                        <td><?php echo htmlspecialchars($tomador['logradouro']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['numero']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['bairro']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['cidade']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['uf']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['cep']); ?></td>
                        <td><?php echo htmlspecialchars($tomador['codigo_municipio']); ?></td>
                        <td>
                            <span class="badge <?php echo $tomador['ativo'] ? 'bg-success' : 'bg-secondary'; ?>">
                                <?php echo $tomador['ativo'] ? 'Ativo' : 'Inativo'; ?>
                            </span>
                        </td>
                        <td><?php echo date('d/m/Y H:i', strtotime($tomador['criado_em'])); ?></td>
                        <td><?php echo $tomador['atualizado_em'] ? date('d/m/Y H:i', strtotime($tomador['atualizado_em'])) : '-'; ?></td>
                        <td>
                            <div class="btn-group btn-group-sm" role="group">
                                <button class="btn btn-warning" onclick="editarTomador(<?php echo $tomador['tomador_id']; ?>)">
                                    <i class="bi bi-pencil"></i>
                                </button>
                                <button class="btn btn-danger" onclick="excluirTomador(<?php echo $tomador['tomador_id']; ?>)">
                                    <i class="bi bi-trash"></i>
                                </button>
                            </div>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<!-- Modal Quadrado -->
<div class="modal fade" id="modalTomador" tabindex="-1" data-bs-backdrop="static">
    <div class="modal-dialog modal-dialog-centered" style="max-width: 900px; width: 90%;">
        <div class="modal-content" style="min-height: 600px; height: 85vh; max-height: 800px;">
            <form method="POST" id="formTomador" style="display: flex; flex-direction: column; height: 100%;">
                <div class="modal-header py-2 flex-shrink-0">
                    <h5 class="modal-title" id="modalTitle">Cadastrar Tomador</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body py-2" style="overflow-y: auto; flex: 1;">
                    <input type="hidden" name="acao" id="acao" value="cadastrar">
                    <input type="hidden" name="tomador_id" id="tomador_id">
                    <input type="hidden" name="endereco_id" id="endereco_id">
                    <input type="hidden" name="cidade" id="cidade">
                    
                    <!-- DADOS PESSOAIS -->
                    <div class="row g-2">
                        <div class="col-md-4">
                            <label class="form-label small">Empresa *</label>
                            <select class="form-select form-select-sm" name="empresa_id" id="empresa_id" required>
                                <option value="">Selecione</option>
                                <?php foreach ($empresas as $empresa): ?>
                                <option value="<?php echo $empresa['id']; ?>"><?php echo htmlspecialchars($empresa['nome']); ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        
                        <div class="col-md-2">
                            <label class="form-label small">Tipo</label>
                            <select class="form-select form-select-sm" id="tipo_documento" name="tipo_documento" onchange="toggleDocumento()">
                                <option value="cnpj">CNPJ</option>
                                <option value="cpf">CPF</option>
                            </select>
                        </div>
                        
                        <div class="col-md-6" id="div_cnpj">
                            <label class="form-label small">CNPJ</label>
                            <div class="input-group input-group-sm">
                                <input type="text" class="form-control form-control-sm cnpj" name="cnpj" id="cnpj" placeholder="00.000.000/0000-00" maxlength="18">
                                <button type="button" class="btn btn-primary btn-sm" onclick="buscarCnpj()" title="Buscar dados na ReceitaWS">
                                    <i class="bi bi-search"></i>
                                </button>
                            </div>
                        </div>
                        
                        <div class="col-md-6" id="div_cpf" style="display:none;">
                            <label class="form-label small">CPF</label>
                            <input type="text" class="form-control form-control-sm cpf" name="cpf" id="cpf" placeholder="000.000.000-00" maxlength="14">
                        </div>
                    </div>
                    
                    <div class="row g-2 mt-1">
                        <div class="col-md-5">
                            <label class="form-label small">Razão Social *</label>
                            <input type="text" class="form-control form-control-sm" name="razao_social" id="razao_social" required>
                        </div>
                        
                        <div class="col-md-4">
                            <label class="form-label small">Nome Fantasia</label>
                            <input type="text" class="form-control form-control-sm" name="nome_fantasia" id="nome_fantasia" placeholder="Nome fantasia">
                        </div>
                        
                        <div class="col-md-3">
                            <label class="form-label small">Inscrição Municipal</label>
                            <input type="text" class="form-control form-control-sm" name="inscricao_municipal" id="inscricao_municipal" placeholder="ISENTO">
                        </div>
                    </div>
                    
                    <div class="row g-2 mt-1">
                        <div class="col-md-3">
                            <label class="form-label small">Telefone</label>
                            <input type="text" class="form-control form-control-sm telefone" name="telefone" id="telefone" placeholder="(00) 00000-0000" maxlength="15">
                        </div>
                        
                        <div class="col-md-5">
                            <label class="form-label small">Email</label>
                            <input type="email" class="form-control form-control-sm" name="email" id="email" placeholder="email@email.com">
                        </div>
                        
                        <div class="col-md-2 d-flex align-items-end">
                            <div class="form-check mb-1">
                                <input type="checkbox" class="form-check-input" name="ativo" id="ativo" value="1" checked>
                                <label class="form-check-label small">Ativo</label>
                            </div>
                        </div>
                        
                        <div class="col-md-2">
                            <label class="form-label small">Status CNPJ</label>
                            <input type="text" class="form-control form-control-sm" name="situacao_cnpj" id="situacao_cnpj" readonly placeholder="Busque">
                        </div>
                    </div>
                    
                    <hr class="my-2">
                    <h6 class="small mb-1">Endereço</h6>
                    
                    <div class="row g-2">
                        <div class="col-md-2">
                            <label class="form-label small">CEP *</label>
                            <div class="input-group input-group-sm">
                                <input type="text" class="form-control form-control-sm cep" name="cep" id="cep" required placeholder="00000-000" maxlength="9">
                                <button type="button" class="btn btn-primary btn-sm" onclick="buscarCep()">
                                    <i class="bi bi-search"></i>
                                </button>
                            </div>
                        </div>
                        
                        <div class="col-md-5">
                            <label class="form-label small">Logradouro *</label>
                            <input type="text" class="form-control form-control-sm" name="logradouro" id="logradouro" required>
                        </div>
                        
                        <div class="col-md-2">
                            <label class="form-label small">Número</label>
                            <input type="text" class="form-control form-control-sm" name="numero" id="numero" placeholder="Nº">
                        </div>
                        
                        <div class="col-md-3">
                            <label class="form-label small">Bairro *</label>
                            <input type="text" class="form-control form-control-sm" name="bairro" id="bairro" required>
                        </div>
                    </div>
                    
                    <div class="row g-2 mt-1">
                        <div class="col-md-5">
                            <label class="form-label small">Município *</label>
                            <select class="form-select form-select-sm select2-municipio" name="municipio_select" id="municipio_select" required>
                                <option value="">Selecione o município</option>
                                <?php foreach ($municipios as $municipio): ?>
                                <option value="<?php echo $municipio['id']; ?>" 
                                        data-uf="<?php echo $municipio['uf']; ?>"
                                        data-codigo="<?php echo $municipio['codigo_municipio_completo']; ?>"
                                        data-nome="<?php echo htmlspecialchars($municipio['nome_municipio']); ?>">
                                    <?php echo htmlspecialchars($municipio['nome_municipio']) . ' - ' . $municipio['uf']; ?>
                                </option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        
                        <div class="col-md-2">
                            <label class="form-label small">UF *</label>
                            <select class="form-select form-select-sm" name="uf" id="uf" required>
                                <option value="">UF</option>
                                <option value="AC">AC</option><option value="AL">AL</option><option value="AP">AP</option>
                                <option value="AM">AM</option><option value="BA">BA</option><option value="CE">CE</option>
                                <option value="DF">DF</option><option value="ES">ES</option><option value="GO">GO</option>
                                <option value="MA">MA</option><option value="MT">MT</option><option value="MS">MS</option>
                                <option value="MG">MG</option><option value="PA">PA</option><option value="PB">PB</option>
                                <option value="PR">PR</option><option value="PE">PE</option><option value="PI">PI</option>
                                <option value="RJ">RJ</option><option value="RN">RN</option><option value="RS">RS</option>
                                <option value="RO">RO</option><option value="RR">RR</option><option value="SC">SC</option>
                                <option value="SP">SP</option><option value="SE">SE</option><option value="TO">TO</option>
                            </select>
                        </div>
                        
                        <div class="col-md-3">
                            <label class="form-label small">Código IBGE *</label>
                            <input type="text" class="form-control form-control-sm" name="codigo_municipio" id="codigo_municipio" maxlength="7" required placeholder="0000000">
                        </div>
                    </div>
                </div>
                <div class="modal-footer py-2 flex-shrink-0">
                    <button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                    <button type="submit" class="btn btn-sm btn-primary">Salvar</button>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- CSS e JS para Select2 -->
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.min.css" rel="stylesheet" />

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.16/jquery.mask.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

<style>
/* Estilos responsivos para a tabela */
#tabelaTomadores {
    font-size: 0.85rem;
}

#tabelaTomadores thead th {
    white-space: nowrap;
    background-color: #f8f9fa;
    position: sticky;
    top: 0;
    z-index: 10;
}

#tabelaTomadores td {
    vertical-align: middle;
    padding: 0.5rem 0.3rem;
}

@media (max-width: 768px) {
    #tabelaTomadores {
        font-size: 0.75rem;
    }
    
    #tabelaTomadores td,
    #tabelaTomadores th {
        padding: 0.3rem 0.15rem;
    }
    
    .btn-group-sm .btn {
        padding: 0.1rem 0.3rem;
        font-size: 0.65rem;
    }
}

/* Container responsivo da tabela */
.table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Estilos do modal */
#modalTomador .modal-dialog {
    max-width: 900px !important;
    width: 90% !important;
    height: 85vh !important;
    max-height: 800px !important;
}

#modalTomador .modal-content {
    min-height: 600px !important;
    height: 100% !important;
    border-radius: 12px !important;
}

#modalTomador .modal-body {
    padding: 0.75rem 1.5rem;
    overflow-y: auto;
    flex: 1;
}

#modalTomador .modal-header,
#modalTomador .modal-footer {
    padding: 0.5rem 1.5rem;
}

#modalTomador .form-label {
    margin-bottom: 0.1rem;
    font-weight: 500;
    font-size: 0.75rem;
}

#modalTomador .form-control-sm,
#modalTomador .form-select-sm {
    font-size: 0.82rem;
    padding: 0.2rem 0.5rem;
}

#modalTomador hr {
    margin: 0.35rem 0;
}

#modalTomador h6 {
    font-size: 0.85rem;
    font-weight: 600;
}

.select2-container--bootstrap-5 .select2-selection {
    min-height: 29px !important;
    font-size: 0.82rem !important;
}

.select2-container--bootstrap-5 .select2-selection__rendered {
    line-height: 29px !important;
}

.select2-container--bootstrap-5 .select2-selection__arrow {
    height: 29px !important;
}

#modalTomador .input-group-sm > .form-control {
    font-size: 0.82rem;
}

#modalTomador .btn-sm {
    font-size: 0.75rem;
    padding: 0.15rem 0.4rem;
}

#modalTomador .modal-body::-webkit-scrollbar {
    width: 6px;
}

#modalTomador .modal-body::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-radius: 3px;
}

#modalTomador .modal-body::-webkit-scrollbar-thumb {
    background: #c1c1c1;
    border-radius: 3px;
}

#modalTomador .modal-body::-webkit-scrollbar-thumb:hover {
    background: #a8a8a8;
}

.cnpj-loading {
    position: relative;
}

.cnpj-loading::after {
    content: '';
    position: absolute;
    right: 35px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    border: 2px solid #f3f3f3;
    border-top: 2px solid #3498db;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    0% { transform: translateY(-50%) rotate(0deg); }
    100% { transform: translateY(-50%) rotate(360deg); }
}

.status-ativa {
    color: #28a745 !important;
    font-weight: 600;
}

.status-inativa {
    color: #dc3545 !important;
    font-weight: 600;
}

.status-outra {
    color: #ffc107 !important;
    font-weight: 600;
}

/* Badge de status na tabela */
.badge {
    font-size: 0.75rem;
    padding: 0.25rem 0.5rem;
}
</style>

<script>
$(document).ready(function() {
    if (typeof $.fn.select2 !== 'undefined') {
        $('#municipio_select').select2({
            theme: 'bootstrap-5',
            placeholder: 'Digite para buscar...',
            width: '100%',
            allowClear: true,
            dropdownParent: $('#modalTomador'),
            selectionCssClass: 'form-select-sm',
            dropdownCssClass: 'form-select-sm'
        });
    }
    
    $('.cnpj').mask('00.000.000/0000-00');
    $('.cpf').mask('000.000.000-00');
    $('.telefone').mask('(00) 00000-0000');
    $('.cep').mask('00000-000');
    
    $('#municipio_select').on('select2:select', function(e) {
        var data = e.params.data;
        var uf = $(data.element).data('uf');
        var codigo = $(data.element).data('codigo');
        var nome = $(data.element).data('nome');
        
        $('#codigo_municipio').val(codigo);
        $('#uf').val(uf);
        $('#cidade').val(nome);
    });
    
    $('#municipio_select').on('select2:clear', function() {
        $('#codigo_municipio').val('');
        $('#uf').val('');
        $('#cidade').val('');
    });
    
    $('#cep').on('keypress', function(e) {
        if (e.which === 13) {
            e.preventDefault();
            buscarCep();
        }
    });
    
    $('#cnpj').on('keypress', function(e) {
        if (e.which === 13) {
            e.preventDefault();
            buscarCnpj();
        }
    });
    
    // Validação do formulário
    $('#formTomador').on('submit', function(e) {
        var logradouro = $('#logradouro').val().trim();
        var bairro = $('#bairro').val().trim();
        var uf = $('#uf').val();
        var codigo = $('#codigo_municipio').val().trim();
        var tipo = $('#tipo_documento').val();
        
        if (!logradouro) {
            alert('O campo Logradouro é obrigatório');
            $('#logradouro').focus();
            e.preventDefault();
            return false;
        }
        
        if (!bairro) {
            alert('O campo Bairro é obrigatório');
            $('#bairro').focus();
            e.preventDefault();
            return false;
        }
        
        if (!uf) {
            alert('Selecione a UF');
            $('#uf').focus();
            e.preventDefault();
            return false;
        }
        
        if (!codigo || codigo.length !== 7) {
            alert('O Código IBGE deve ter 7 dígitos');
            $('#codigo_municipio').focus();
            e.preventDefault();
            return false;
        }
        
        if (tipo === 'cnpj') {
            var cnpj = $('#cnpj').val().replace(/\D/g, '');
            if (cnpj.length !== 14) {
                alert('CNPJ inválido! Deve ter 14 dígitos. Você digitou ' + cnpj.length + ' dígitos.');
                $('#cnpj').focus();
                e.preventDefault();
                return false;
            }
        } else {
            var cpf = $('#cpf').val().replace(/\D/g, '');
            if (cpf.length !== 11) {
                alert('CPF inválido! Deve ter 11 dígitos. Você digitou ' + cpf.length + ' dígitos.');
                $('#cpf').focus();
                e.preventDefault();
                return false;
            }
        }
    });
});

// =============================================
// BUSCAR CNPJ VIA RECEITAWS
// =============================================
function buscarCnpj() {
    var cnpj = $('#cnpj').val().replace(/\D/g, '');
    
    if (cnpj.length !== 14) {
        alert('Digite um CNPJ válido com 14 dígitos');
        return;
    }
    
    var btn = $('#cnpj').closest('.input-group').find('button');
    var originalHtml = btn.html();
    btn.html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>');
    btn.prop('disabled', true);
    $('#cnpj').addClass('cnpj-loading');
    
    var url = window.location.pathname;
    
    $.ajax({
        url: url,
        method: 'GET',
        data: { 
            action: 'buscar_cnpj',
            cnpj: cnpj 
        },
        dataType: 'json',
        timeout: 30000,
        success: function(response) {
            if (response.sucesso) {
                var dados = response.dados;
                
                $('#razao_social').val(dados.razao_social || '');
                $('#nome_fantasia').val(dados.nome_fantasia || '');
                $('#email').val(dados.email || '');
                $('#telefone').val(dados.telefone || '');
                
                if (dados.logradouro) $('#logradouro').val(dados.logradouro);
                if (dados.numero) $('#numero').val(dados.numero);
                if (dados.bairro) $('#bairro').val(dados.bairro);
                if (dados.cep) $('#cep').val(dados.cep);
                
                var status = dados.situacao || '';
                $('#situacao_cnpj').val(status);
                $('#situacao_cnpj').removeClass('status-ativa status-inativa status-outra');
                if (status === 'ATIVA') {
                    $('#situacao_cnpj').addClass('status-ativa');
                } else if (status === 'BAIXADA' || status === 'INATIVA' || status === 'NULA') {
                    $('#situacao_cnpj').addClass('status-inativa');
                } else if (status) {
                    $('#situacao_cnpj').addClass('status-outra');
                }
                
                var encontrou = false;
                if (dados.codigo_ibge) {
                    $('#municipio_select option').each(function() {
                        var codigo = $(this).data('codigo');
                        if (codigo == dados.codigo_ibge) {
                            $(this).prop('selected', true);
                            encontrou = true;
                            return false;
                        }
                    });
                    
                    if (!encontrou && dados.cidade && dados.uf) {
                        var option = new Option(
                            dados.cidade + ' - ' + dados.uf,
                            'custom_' + Date.now(),
                            true,
                            true
                        );
                        $(option).data('uf', dados.uf);
                        $(option).data('codigo', dados.codigo_ibge);
                        $(option).data('nome', dados.cidade);
                        $('#municipio_select').append(option);
                        encontrou = true;
                    }
                }
                
                if (encontrou) {
                    $('#municipio_select').trigger('change');
                }
                
                if (dados.codigo_ibge) {
                    $('#codigo_municipio').val(dados.codigo_ibge);
                }
                if (dados.uf) {
                    $('#uf').val(dados.uf);
                }
                
                $('#logradouro').removeClass('is-invalid');
                
            } else {
                alert('Erro ao buscar CNPJ: ' + response.erro);
                $('#situacao_cnpj').val('❌ ' + response.erro);
                $('#situacao_cnpj').addClass('status-inativa');
            }
        },
        error: function() {
            alert('Erro ao buscar CNPJ. Verifique o número e tente novamente.');
            $('#situacao_cnpj').val('❌ Erro na consulta');
            $('#situacao_cnpj').addClass('status-inativa');
        },
        complete: function() {
            btn.html(originalHtml);
            btn.prop('disabled', false);
            $('#cnpj').removeClass('cnpj-loading');
        }
    });
}

// =============================================
// BUSCAR CEP VIA VIACEP
// =============================================
function buscarCep() {
    var cep = $('#cep').val().replace(/\D/g, '');
    
    if (cep.length !== 8) {
        alert('Digite um CEP válido com 8 dígitos');
        return;
    }
    
    var btn = $('#cep').closest('.input-group').find('button');
    var originalHtml = btn.html();
    btn.html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>');
    btn.prop('disabled', true);
    
    var url = window.location.pathname;
    
    $.ajax({
        url: url,
        method: 'GET',
        data: { 
            action: 'buscar_cep',
            cep: cep 
        },
        dataType: 'json',
        timeout: 30000,
        success: function(response) {
            if (response.sucesso) {
                var dados = response.dados;
                
                if (dados.logradouro) $('#logradouro').val(dados.logradouro);
                if (dados.bairro) $('#bairro').val(dados.bairro);
                
                var encontrou = false;
                if (dados.codigo_ibge) {
                    $('#municipio_select option').each(function() {
                        var codigo = $(this).data('codigo');
                        if (codigo == dados.codigo_ibge) {
                            $(this).prop('selected', true);
                            encontrou = true;
                            return false;
                        }
                    });
                    
                    if (!encontrou && dados.cidade && dados.uf) {
                        var option = new Option(
                            dados.cidade + ' - ' + dados.uf,
                            'custom_' + Date.now(),
                            true,
                            true
                        );
                        $(option).data('uf', dados.uf);
                        $(option).data('codigo', dados.codigo_ibge);
                        $(option).data('nome', dados.cidade);
                        $('#municipio_select').append(option);
                        encontrou = true;
                    }
                }
                
                if (encontrou) {
                    $('#municipio_select').trigger('change');
                }
                
                if (dados.codigo_ibge) {
                    $('#codigo_municipio').val(dados.codigo_ibge);
                }
                if (dados.uf) {
                    $('#uf').val(dados.uf);
                }
                
                $('#logradouro').removeClass('is-invalid');
                
            } else {
                alert('CEP não encontrado. Preencha os dados manualmente.');
                $('#logradouro').addClass('is-invalid');
            }
        },
        error: function() {
            alert('Erro ao buscar CEP. Preencha os dados manualmente.');
            $('#logradouro').addClass('is-invalid');
        },
        complete: function() {
            btn.html(originalHtml);
            btn.prop('disabled', false);
        }
    });
}

function abrirModalCadastro() {
    $('#modalTitle').text('Cadastrar Tomador');
    $('#acao').val('cadastrar');
    $('#tomador_id').val('');
    $('#endereco_id').val('');
    $('#formTomador')[0].reset();
    $('#municipio_select').val(null).trigger('change');
    $('#codigo_municipio').val('');
    $('#ativo').prop('checked', true);
    $('#logradouro').val('');
    $('#bairro').val('');
    $('#cidade').val('');
    $('#situacao_cnpj').val('');
    $('#situacao_cnpj').removeClass('status-ativa status-inativa status-outra');
    $('#nome_fantasia').val('');
    $('#modalTomador').modal('show');
}

function editarTomador(id) {
    $.ajax({
        url: window.location.pathname,
        method: 'GET',
        data: { 
            action: 'get_tomador',
            id: id 
        },
        dataType: 'json',
        success: function(response) {
            if (response.sucesso) {
                carregarDadosEdicao(response.dados);
            } else {
                alert('Erro ao carregar dados: ' + response.erro);
            }
        },
        error: function() {
            alert('Erro ao carregar dados do tomador. Tente novamente.');
        }
    });
}

function carregarDadosEdicao(dados) {
    $('#modalTitle').text('Editar Tomador');
    $('#acao').val('editar');
    $('#tomador_id').val(dados.id);
    $('#endereco_id').val(dados.endereco_id);
    $('#empresa_id').val(dados.empresa_id);
    
    $('#municipio_select').val(null).trigger('change');
    
    if (dados.cnpj && dados.cnpj != '') {
        $('#tipo_documento').val('cnpj');
        $('#cnpj').val(formatarCnpj(dados.cnpj));
        $('#div_cnpj').show();
        $('#div_cpf').hide();
        $('#cnpj').prop('required', true);
        $('#cpf').prop('required', false);
    } else {
        $('#tipo_documento').val('cpf');
        $('#cpf').val(formatarCpf(dados.cpf));
        $('#div_cnpj').hide();
        $('#div_cpf').show();
        $('#cnpj').prop('required', false);
        $('#cpf').prop('required', true);
    }
    
    $('#razao_social').val(dados.razao_social);
    $('#nome_fantasia').val(dados.nome_fantasia || '');
    $('#email').val(dados.email);
    $('#telefone').val(dados.telefone);
    $('#inscricao_municipal').val(dados.inscricao_municipal || '');
    $('#logradouro').val(dados.logradouro);
    $('#numero').val(dados.numero);
    $('#bairro').val(dados.bairro);
    
    var encontrou = false;
    $('#municipio_select option').each(function() {
        var codigo = $(this).data('codigo');
        if (codigo == dados.codigo_municipio) {
            $(this).prop('selected', true);
            encontrou = true;
            return false;
        }
    });
    
    if (!encontrou && dados.codigo_municipio) {
        var option = new Option(
            dados.cidade + ' - ' + dados.uf,
            'custom_' + Date.now(),
            true,
            true
        );
        $(option).data('uf', dados.uf);
        $(option).data('codigo', dados.codigo_municipio);
        $(option).data('nome', dados.cidade);
        $('#municipio_select').append(option);
    }
    
    $('#municipio_select').trigger('change');
    $('#codigo_municipio').val(dados.codigo_municipio);
    $('#uf').val(dados.uf);
    $('#cidade').val(dados.cidade);
    $('#cep').val(dados.cep);
    $('#ativo').prop('checked', dados.ativo == 1);
    
    $('#modalTomador').modal('show');
}

function excluirTomador(id) {
    if (confirm('Tem certeza que deseja excluir este tomador?')) {
        var form = document.createElement('form');
        form.method = 'POST';
        form.action = '';
        
        var inputAcao = document.createElement('input');
        inputAcao.type = 'hidden';
        inputAcao.name = 'acao';
        inputAcao.value = 'excluir';
        form.appendChild(inputAcao);
        
        var inputId = document.createElement('input');
        inputId.type = 'hidden';
        inputId.name = 'tomador_id';
        inputId.value = id;
        form.appendChild(inputId);
        
        document.body.appendChild(form);
        form.submit();
    }
}

function toggleDocumento() {
    var tipo = $('#tipo_documento').val();
    if (tipo == 'cnpj') {
        $('#div_cnpj').show();
        $('#div_cpf').hide();
        $('#cnpj').prop('required', true);
        $('#cpf').prop('required', false);
    } else {
        $('#div_cnpj').hide();
        $('#div_cpf').show();
        $('#cnpj').prop('required', false);
        $('#cpf').prop('required', true);
    }
}

function formatarCnpj(cnpj) {
    if (!cnpj) return '';
    var s = cnpj.toString().replace(/\D/g, '');
    return s.length === 14 ? s.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/, '$1.$2.$3/$4-$5') : cnpj;
}

function formatarCpf(cpf) {
    if (!cpf) return '';
    var s = cpf.toString().replace(/\D/g, '');
    return s.length === 11 ? s.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/, '$1.$2.$3-$4') : cpf;
}
</script>

<?php include 'includes/footer.php'; ?>