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

require_once 'includes/funcoes.php';
include 'includes/header.php';

$pdo = conectarBanco();

// Buscar empresas ativas
$empresas = $pdo->query("SELECT id, nome, token, ambiente, optante_simples FROM empresas WHERE ativo = 1 ORDER BY nome")->fetchAll(PDO::FETCH_ASSOC);

// Pegar empresa selecionada (via GET ou primeira)
$empresa_id_selecionada = isset($_GET['empresa_id']) ? (int)$_GET['empresa_id'] : ($empresas[0]['id'] ?? 0);

// Buscar emitentes
$emitentes = $pdo->query("
    SELECT e.id, e.razao_social, e.cnpj, e.inscricao_municipal, e.optante_simples_nacional, 
           end.codigo_municipio, end.cidade, end.uf, end.logradouro as e_logradouro, 
           end.numero as e_numero, end.bairro as e_bairro, end.cep as e_cep
    FROM emitentes e 
    LEFT JOIN enderecos end ON e.endereco_id = end.id 
    WHERE e.ativo = 1 
    ORDER BY e.razao_social
")->fetchAll(PDO::FETCH_ASSOC);

// Buscar tomadores
$tomadores = $pdo->query("
    SELECT t.id, t.razao_social, t.cnpj, t.cpf, t.email, t.telefone, t.inscricao_municipal,
           end.logradouro, end.numero, end.bairro, end.cidade, end.codigo_municipio, end.uf, end.cep 
    FROM tomadores t 
    LEFT JOIN enderecos end ON t.endereco_id = end.id 
    WHERE t.ativo = 1 
    ORDER BY t.razao_social
")->fetchAll(PDO::FETCH_ASSOC);

// Se for edição, buscar dados da nota
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
$nota = null;
if ($id > 0) {
    $stmt = $pdo->prepare("SELECT * FROM notas_fiscais WHERE id = ?");
    $stmt->execute([$id]);
    $nota = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($nota) {
        $empresa_id_selecionada = $nota['empresa_id'];
    }
}

// Buscar serviços da empresa selecionada
$servicos_disponiveis = [];
if ($empresa_id_selecionada > 0) {
    $stmt = $pdo->prepare("
        SELECT id, codigo, descricao, cnae, aliquota_iss, tributacao, status
        FROM empresa_servicos 
        WHERE empresa_id = ? AND status = 'ativo' 
        ORDER BY codigo
        LIMIT 500
    ");
    $stmt->execute([$empresa_id_selecionada]);
    $servicos_disponiveis = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo $id > 0 ? 'Editar' : 'Nova'; ?> Nota Fiscal - Sistema Multi-Empresa</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.8.1/font/bootstrap-icons.css" rel="stylesheet">
    <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" />
    <style>
        .card-shadow { box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
        .required-field:after { content: " *"; color: red; }
        .toast-container { position: fixed; top: 20px; right: 20px; z-index: 9999; }
        .loading-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0,0,0,0.7);
            z-index: 9998;
            display: none;
            justify-content: center;
            align-items: center;
            flex-direction: column;
        }
        .loading-spinner { width: 60px; height: 60px; border: 5px solid #f3f3f3; border-top: 5px solid #3498db; border-radius: 50%; animation: spin 1s linear infinite; }
        @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
        .info-card { font-size: 0.85rem; line-height: 1.4; }
        .resumo-valor { font-size: 1.2rem; font-weight: bold; color: #28a745; }
        .select2-container--bootstrap-5 .select2-selection { min-height: 38px; }
        .servico-detalhes { background: #f8f9fc; border-radius: 8px; padding: 12px; margin-top: 10px; border-left: 4px solid #1a56db; }
        .servico-codigo { font-weight: bold; color: #1a56db; font-size: 1.1rem; }
        .servico-descricao { color: #333; }
        .servico-aliquota { color: #28a745; font-weight: bold; }
    </style>
</head>
<body>

<div class="loading-overlay" id="loadingOverlay">
    <div class="loading-spinner"></div>
    <div class="loading-text text-white mt-3" id="loadingText">Processando...</div>
</div>

<div class="toast-container"></div>

<div class="container-fluid mt-3">
    <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
        <h1><i class="bi bi-receipt"></i> <?php echo $id > 0 ? 'Editar' : 'Nova'; ?> Nota Fiscal</h1>
        <div>
            <a href="consultar_notas.php" class="btn btn-outline-primary"><i class="bi bi-search"></i> Consultar Notas</a>
            <a href="servicos_gerenciar.php?empresa_id=<?php echo $empresa_id_selecionada; ?>" class="btn btn-outline-success"><i class="bi bi-gear"></i> Gerenciar Serviços</a>
            <a href="listar_rascunhos.php" class="btn btn-outline-secondary"><i class="bi bi-list-ul"></i> Rascunhos</a>
            <a href="emitir_lote.php" class="btn btn-outline-warning"><i class="bi bi-send"></i> Emissão em Lote</a>
        </div>
    </div>

    <div class="row">
        <div class="col-md-8">
            <div class="card card-shadow">
                <div class="card-header bg-primary text-white">
                    <strong><i class="bi bi-file-text"></i> Dados da Nota Fiscal</strong>
                </div>
                <div class="card-body">
                    <form id="formEmissao">
                        <input type="hidden" id="nota_id" value="<?php echo $id; ?>">
                        
                        <!-- Empresa -->
                        <div class="row">
                            <div class="col-md-12 mb-3">
                                <label class="form-label required-field"><i class="bi bi-building"></i> Empresa</label>
                                <select class="form-select" id="empresa_id" name="empresa_id" required>
                                    <option value="">Selecione a empresa</option>
                                    <?php foreach ($empresas as $empresa): ?>
                                    <option value="<?php echo $empresa['id']; ?>" 
                                            data-token="<?php echo $empresa['token']; ?>"
                                            data-ambiente="<?php echo $empresa['ambiente']; ?>"
                                            data-optante="<?php echo $empresa['optante_simples'] ?? 0; ?>"
                                            <?php echo ($nota && $nota['empresa_id'] == $empresa['id']) ? 'selected' : ''; ?>
                                            <?php echo (!$nota && $empresa_id_selecionada == $empresa['id']) ? 'selected' : ''; ?>>
                                        <?php echo htmlspecialchars($empresa['nome']); ?> 
                                        <span class="badge <?php echo $empresa['ambiente'] == 'producao' ? 'bg-danger' : 'bg-warning'; ?>"><?php echo $empresa['ambiente'] == 'producao' ? 'PRODUÇÃO' : 'HOMOLOGAÇÃO'; ?></span>
                                    </option>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                        </div>
                        
                        <!-- Emitente e Tomador -->
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label class="form-label required-field"><i class="bi bi-person-badge"></i> Emitente (Prestador)</label>
                                <select class="form-select" id="emitente_id" name="emitente_id" required>
                                    <option value="">Selecione o emitente</option>
                                    <?php foreach ($emitentes as $emitente): ?>
                                    <option value="<?php echo $emitente['id']; ?>" 
                                            data-cnpj="<?php echo $emitente['cnpj']; ?>"
                                            data-razao="<?php echo htmlspecialchars($emitente['razao_social']); ?>"
                                            data-inscricao="<?php echo $emitente['inscricao_municipal']; ?>"
                                            data-codigo-municipio="<?php echo $emitente['codigo_municipio']; ?>"
                                            data-cidade="<?php echo $emitente['cidade']; ?>"
                                            data-uf="<?php echo $emitente['uf']; ?>"
                                            data-optante="<?php echo $emitente['optante_simples_nacional']; ?>"
                                            data-logradouro="<?php echo $emitente['e_logradouro']; ?>"
                                            data-numero="<?php echo $emitente['e_numero']; ?>"
                                            data-bairro="<?php echo $emitente['e_bairro']; ?>"
                                            data-cep="<?php echo $emitente['e_cep']; ?>"
                                            <?php echo ($nota && $nota['emitente_id'] == $emitente['id']) ? 'selected' : ''; ?>>
                                        <?php echo htmlspecialchars($emitente['razao_social']); ?> (<?php echo formatarCnpj($emitente['cnpj']); ?>)
                                    </option>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                            <div class="col-md-6 mb-3">
                                <label class="form-label required-field"><i class="bi bi-people"></i> Tomador (Cliente)</label>
                                <select class="form-select" id="tomador_id" name="tomador_id" required>
                                    <option value="">Selecione o tomador</option>
                                    <?php foreach ($tomadores as $tomador): ?>
                                    <option value="<?php echo $tomador['id']; ?>"
                                            data-cnpj="<?php echo $tomador['cnpj']; ?>"
                                            data-cpf="<?php echo $tomador['cpf']; ?>"
                                            data-razao="<?php echo htmlspecialchars($tomador['razao_social']); ?>"
                                            data-email="<?php echo $tomador['email']; ?>"
                                            data-telefone="<?php echo $tomador['telefone']; ?>"
                                            data-inscricao-municipal="<?php echo $tomador['inscricao_municipal']; ?>"
                                            data-logradouro="<?php echo $tomador['logradouro']; ?>"
                                            data-numero="<?php echo $tomador['numero']; ?>"
                                            data-bairro="<?php echo $tomador['bairro']; ?>"
                                            data-cidade="<?php echo $tomador['cidade']; ?>"
                                            data-codigo-municipio="<?php echo $tomador['codigo_municipio']; ?>"
                                            data-uf="<?php echo $tomador['uf']; ?>"
                                            data-cep="<?php echo $tomador['cep']; ?>"
                                            <?php echo ($nota && $nota['tomador_id'] == $tomador['id']) ? 'selected' : ''; ?>>
                                        <?php echo htmlspecialchars($tomador['razao_social']); ?> (<?php echo $tomador['cnpj'] ? formatarCnpj($tomador['cnpj']) : formatarCpf($tomador['cpf']); ?>)
                                    </option>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                        </div>
                        
                        <!-- Referência -->
                        <div class="row">
                            <div class="col-md-12 mb-3">
                                <label class="form-label required-field"><i class="bi bi-hash"></i> Referência (ref)</label>
                                <input type="text" class="form-control" id="ref" name="ref" required value="<?php echo $nota ? $nota['ref'] : ''; ?>">
                                <small class="text-muted">Identificador único da nota. Será gerado automaticamente se deixar em branco.</small>
                            </div>
                        </div>
                        
                        <hr class="my-3">
                        <h6 class="mb-3"><i class="bi bi-tools"></i> Dados do Serviço</h6>
                        
                        <!-- Código do Serviço -->
                        <div class="row">
                            <div class="col-md-12 mb-3">
                                <label class="form-label required-field"><i class="bi bi-upc-scan"></i> Código de Serviço</label>
                                <select class="form-select" id="servico_id" name="servico_id" style="width: 100%;" required>
                                    <option value="">Selecione um serviço...</option>
                                    <?php foreach ($servicos_disponiveis as $servico): ?>
                                    <option value="<?php echo $servico['id']; ?>" 
                                            data-codigo="<?php echo htmlspecialchars($servico['codigo']); ?>"
                                            data-descricao="<?php echo htmlspecialchars($servico['descricao']); ?>"
                                            data-aliquota="<?php echo $servico['aliquota_iss']; ?>"
                                            data-tributacao="<?php echo $servico['tributacao']; ?>"
                                            <?php echo ($nota && $nota['codigo_servico'] == $servico['codigo']) ? 'selected' : ''; ?>>
                                        <?php echo htmlspecialchars($servico['codigo']); ?> - <?php echo htmlspecialchars(substr($servico['descricao'], 0, 80)); ?>
                                        <?php if ($servico['aliquota_iss']): ?> (<?php echo $servico['aliquota_iss']; ?>%)<?php endif; ?>
                                    </option>
                                    <?php endforeach; ?>
                                </select>
                                <div id="servico_detalhes" class="servico-detalhes" style="display: none;">
                                    <div class="row">
                                        <div class="col-12">
                                            <span class="servico-codigo" id="serv_codigo"></span>
                                            <span class="servico-descricao" id="serv_descricao"></span>
                                            <span class="servico-aliquota" id="serv_aliquota"></span>
                                        </div>
                                    </div>
                                </div>
                                <small class="text-muted">Selecione o serviço prestado. Os detalhes serão exibidos abaixo.</small>
                            </div>
                        </div>
                        
                        <!-- Descrição e Valor -->
                        <div class="row">
                            <div class="col-md-8 mb-3">
                                <label class="form-label required-field"><i class="bi bi-card-text"></i> Descrição do Serviço</label>
                                <textarea class="form-control" id="descricao" name="descricao" rows="3" required placeholder="Descreva detalhadamente o serviço prestado"><?php echo $nota ? htmlspecialchars($nota['discriminacao_servico']) : ''; ?></textarea>
                            </div>
                            <div class="col-md-4 mb-3">
                                <label class="form-label required-field"><i class="bi bi-currency-dollar"></i> Valor do Serviço (R$)</label>
                                <input type="number" step="0.01" class="form-control" id="valor_servico" name="valor_servico" required value="<?php echo $nota ? $nota['valor_servico'] : ''; ?>">
                            </div>
                        </div>
                        
                        <!-- Alíquota e Datas -->
                        <div class="row">
                            <div class="col-md-3 mb-3">
                                <label class="form-label"><i class="bi bi-percent"></i> Alíquota ISS (%)</label>
                                <input type="number" step="0.01" class="form-control" id="aliquota" name="aliquota" placeholder="Ex: 2.00, 4.00, 5.00" value="<?php echo $nota ? $nota['aliquota'] : '4.00'; ?>">
                            </div>
                            <div class="col-md-4 mb-3">
                                <label class="form-label"><i class="bi bi-calendar"></i> Data de Emissão</label>
                                <input type="datetime-local" class="form-control" id="data_emissao" name="data_emissao" value="<?php echo $nota ? date('Y-m-d\TH:i', strtotime($nota['data_emissao'])) : date('Y-m-d\TH:i'); ?>">
                            </div>
                            <div class="col-md-5 mb-3">
                                <label class="form-label"><i class="bi bi-calendar-check"></i> Data de Competência</label>
                                <input type="date" class="form-control" id="data_competencia" name="data_competencia" value="<?php echo $nota ? $nota['data_competencia'] : date('Y-m-d'); ?>">
                            </div>
                        </div>
                        
                        <!-- Retenção ISS e Regime Tributário -->
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label class="form-label required-field"><i class="bi bi-calculator"></i> Tipo de Retenção do ISSQN</label>
                                <select class="form-select" id="tipo_retencao_iss" name="tipo_retencao_iss" required>
                                    <option value="">Selecione a responsabilidade pelo ISSQN</option>
                                    <option value="1" <?php echo ($nota && $nota['tipo_retencao_iss'] == 1) ? 'selected' : ''; ?>>❌ Não Retido</option>
                                    <option value="2" <?php echo ($nota && $nota['tipo_retencao_iss'] == 2) ? 'selected' : ''; ?>>✅ Retido pelo Tomador</option>
                                    <option value="3" <?php echo ($nota && $nota['tipo_retencao_iss'] == 3) ? 'selected' : ''; ?>>🔄 Retido pelo Intermediário</option>
                                </select>
                                <small class="text-muted">Defina quem é responsável pelo recolhimento do ISSQN</small>
                            </div>
                            <div class="col-md-6 mb-3">
                                <label class="form-label required-field"><i class="bi bi-graph-up"></i> Regime Tributário</label>
                                <select class="form-select" id="regime_tributario" name="regime_tributario" required>
                                    <option value="">Selecione o regime tributário</option>
                                    <option value="1" <?php echo ($nota && $nota['codigo_opcao_simples_nacional'] == 1) ? 'selected' : ''; ?>>🏢 Não optante (Regime Normal)</option>
                                    <option value="2" <?php echo ($nota && $nota['codigo_opcao_simples_nacional'] == 2) ? 'selected' : ''; ?>>👤 MEI (Microempreendedor Individual)</option>
                                    <option value="3" <?php echo ($nota && $nota['codigo_opcao_simples_nacional'] == 3) ? 'selected' : ''; ?>>✅ Optante Simples Nacional (ME/EPP)</option>
                                    <option value="4" <?php echo ($nota && $nota['codigo_opcao_simples_nacional'] == 4) ? 'selected' : ''; ?>>⚠️ Simples Nacional - Excesso de sublimite</option>
                                </select>
                                <small class="text-muted">Regime tributário da empresa prestadora</small>
                            </div>
                        </div>
                        
                        <!-- Código Tributário Municipal e NBS -->
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label class="form-label"><i class="bi bi-upc-scan"></i> Código Tributário Municipal (cTribMun)</label>
                                <select class="form-select" id="codigo_tributario_municipal" name="codigo_tributario_municipal">
                                    <option value="">Não informar (padrão)</option>
                                    <option value="001" <?php echo ($nota && $nota['codigo_tributario_municipal'] == '001') ? 'selected' : ''; ?>>001 - Desdobramento Municipal</option>
                                    <option value="002" <?php echo ($nota && $nota['codigo_tributario_municipal'] == '002') ? 'selected' : ''; ?>>002 - Desdobramento Municipal 2</option>
                                    <option value="003" <?php echo ($nota && $nota['codigo_tributario_municipal'] == '003') ? 'selected' : ''; ?>>003 - Desdobramento Municipal 3</option>
                                </select>
                                <small class="text-muted">Obrigatório para Canoas/RS</small>
                            </div>
                            <div class="col-md-6 mb-3">
                                <label class="form-label"><i class="bi bi-code-square"></i> Código NBS</label>
                                <select class="form-select" id="codigo_nbs" name="codigo_nbs">
                                    <option value="">Selecione o código NBS</option>
                                    <option value="124032200" <?php echo ($nota && $nota['codigo_nbs'] == '124032200') ? 'selected' : ''; ?>>124032200 - Serviços de coleta de resíduos recicláveis, não perigosos</option>
                                    <option value="124033200" <?php echo ($nota && $nota['codigo_nbs'] == '124033200') ? 'selected' : ''; ?>>124033200 - Serviços de coleta de resíduos gerais, exceto de origem doméstica</option>
                                    <option value="121012200" <?php echo ($nota && $nota['codigo_nbs'] == '121012200') ? 'selected' : ''; ?>>121012200 - Serviços de tratamento de resíduos</option>
                                    <option value="1.0101.11.00" <?php echo ($nota && $nota['codigo_nbs'] == '1.0101.11.00') ? 'selected' : ''; ?>>1.0101.11.00 - Formato ponto</option>
                                </select>
                                <small class="text-muted">Nomenclatura Brasileira de Serviços</small>
                            </div>
                        </div>
                        
                        <!-- Observações -->
                        <div class="row">
                            <div class="col-md-12 mb-3">
                                <label class="form-label"><i class="bi bi-chat-text"></i> Observações</label>
                                <textarea class="form-control" id="observacoes" name="observacoes" rows="2" placeholder="Informações adicionais"><?php echo $nota ? htmlspecialchars($nota['observacoes']) : ''; ?></textarea>
                            </div>
                        </div>
                        
                        <div class="mt-4 d-flex gap-2">
                            <button type="button" class="btn btn-primary btn-lg flex-grow-1" id="btnSalvar">
                                <i class="bi bi-save"></i> Salvar Rascunho
                            </button>
                            <button type="submit" class="btn btn-success btn-lg flex-grow-1" id="btn_emitir">
                                <i class="bi bi-send"></i> Emitir Agora
                            </button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        
        <div class="col-md-4">
            <div class="card card-shadow mb-3 border-primary">
                <div class="card-header bg-primary text-white"><strong><i class="bi bi-building"></i> Empresa</strong></div>
                <div class="card-body info-card" id="info_empresa_card">Selecione uma empresa</div>
            </div>
            <div class="card card-shadow mb-3">
                <div class="card-header bg-info text-white"><strong><i class="bi bi-building"></i> Emitente</strong></div>
                <div class="card-body info-card" id="info_emitente_card">Selecione um emitente</div>
            </div>
            <div class="card card-shadow mb-3">
                <div class="card-header bg-secondary text-white"><strong><i class="bi bi-people"></i> Tomador</strong></div>
                <div class="card-body info-card" id="info_tomador_card">Selecione um tomador</div>
            </div>
            <div class="card card-shadow mb-3">
                <div class="card-header bg-warning"><strong><i class="bi bi-calculator"></i> Resumo da Nota</strong></div>
                <div class="card-body info-card" id="resumo_nota">Preencha os dados</div>
            </div>
        </div>
    </div>
</div>

<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://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script>
$(document).ready(function() {
    // Gerar referência única se estiver vazia
    function gerarReferenciaUnica() {
        var now = new Date();
        return 'NF_' + now.getFullYear() + 
               ('0' + (now.getMonth()+1)).slice(-2) + 
               ('0' + now.getDate()).slice(-2) + '_' +
               ('0' + now.getHours()).slice(-2) +
               ('0' + now.getMinutes()).slice(-2) +
               ('0' + now.getSeconds()).slice(-2) +
               '_' + Math.floor(Math.random() * 100);
    }
    
    if (!$('#ref').val()) {
        $('#ref').val(gerarReferenciaUnica());
    }
    
    // Select2
    $('#empresa_id, #emitente_id, #tomador_id, #servico_id').select2({ 
        theme: 'bootstrap-5', 
        width: '100%', 
        allowClear: true,
        placeholder: 'Selecione uma opção'
    });
    
    // Mudança de empresa
    $('#empresa_id').change(function() {
        var option = $(this).find(':selected');
        if (option.val()) {
            var ambiente = option.data('ambiente');
            var ambienteTexto = ambiente == 'producao' ? 'PRODUÇÃO' : 'HOMOLOGAÇÃO';
            $('#info_empresa_card').html('<strong>' + option.text().split(' ')[0] + '</strong><br><span class="badge bg-' + (ambiente == 'producao' ? 'danger' : 'warning') + '">' + ambienteTexto + '</span>');
            carregarServicos(option.val());
        } else {
            $('#info_empresa_card').html('Selecione uma empresa');
            $('#servico_id').empty().append('<option value="">Selecione um serviço...</option>');
            $('#servico_detalhes').hide();
        }
        atualizarResumo();
    });
    
    function carregarServicos(empresaId) {
        $('#loadingOverlay').show();
        $('#loadingText').text('Carregando serviços...');
        
        $.ajax({
            url: '/emissornota/api/buscar_servicos_empresa.php',
            method: 'GET',
            data: { empresa_id: empresaId },
            dataType: 'json',
            timeout: 30000,
            success: function(response) {
                var select = $('#servico_id');
                var selectedVal = select.val();
                select.empty().append('<option value="">Selecione um serviço...</option>');
                if (response.sucesso && response.itens && response.itens.length > 0) {
                    $.each(response.itens, function(i, s) {
                        var optionText = s.codigo + ' - ' + s.descricao.substring(0, 80);
                        if (s.aliquota_iss) {
                            optionText += ' (' + s.aliquota_iss + '%)';
                        }
                        select.append('<option value="'+s.id+'" data-codigo="'+s.codigo+'" data-descricao="'+s.descricao+'" data-aliquota="'+s.aliquota_iss+'" data-tributacao="'+s.tributacao+'">'+optionText+'</option>');
                    });
                } else {
                    select.append('<option value="" disabled>Nenhum serviço cadastrado</option>');
                }
                if (selectedVal) {
                    select.val(selectedVal);
                }
                select.trigger('change.select2');
            },
            error: function(xhr, status, error) {
                console.error('Erro ao carregar serviços:', error);
                $('#servico_id').empty().append('<option value="">Erro ao carregar serviços</option>');
            },
            complete: function() { 
                $('#loadingOverlay').hide(); 
            }
        });
    }
    
    // Mudança de emitente
    $('#emitente_id').change(function() {
        var opt = $(this).find(':selected');
        if (opt.val()) {
            $('#info_emitente_card').html('<strong>'+opt.data('razao')+'</strong><br>CNPJ: '+formatarCnpj(opt.data('cnpj'))+'<br>Insc. Municipal: '+opt.data('inscricao'));
        } else {
            $('#info_emitente_card').html('Selecione um emitente');
        }
        atualizarResumo();
    });
    
    // Mudança de tomador
    $('#tomador_id').change(function() {
        var opt = $(this).find(':selected');
        if (opt.val()) {
            $('#info_tomador_card').html('<strong>'+opt.data('razao')+'</strong><br>'+(opt.data('cnpj') ? 'CNPJ: '+formatarCnpj(opt.data('cnpj')) : 'CPF: '+formatarCpf(opt.data('cpf')))+'<br>Email: '+opt.data('email'));
        } else {
            $('#info_tomador_card').html('Selecione um tomador');
        }
        atualizarResumo();
    });
    
    // Mudança de serviço - Exibir detalhes
    $('#servico_id').change(function() {
        var opt = $(this).find(':selected');
        if (opt.val() && opt.data('codigo')) {
            $('#descricao').val(opt.data('descricao'));
            if (opt.data('aliquota')) $('#aliquota').val(opt.data('aliquota'));
            
            // Exibir detalhes do serviço
            $('#serv_codigo').html(opt.data('codigo'));
            $('#serv_descricao').html(' - ' + opt.data('descricao'));
            if (opt.data('aliquota')) {
                $('#serv_aliquota').html(' - Alíquota: ' + opt.data('aliquota') + '%');
            } else {
                $('#serv_aliquota').html('');
            }
            $('#servico_detalhes').show();
        } else {
            $('#servico_detalhes').hide();
        }
        atualizarResumo();
    });
    
    // Atualizar resumo
    $('#valor_servico, #aliquota, #regime_tributario, #tipo_retencao_iss').on('change keyup click', atualizarResumo);
    
    function atualizarResumo() {
        var valor = parseFloat($('#valor_servico').val()) || 0;
        var aliquota = parseFloat($('#aliquota').val()) || 0;
        var regime = $('#regime_tributario').val();
        var tipoRetencao = $('#tipo_retencao_iss').val();
        var valorISS = (valor * aliquota) / 100;
        var totalLiquido = (tipoRetencao == '2') ? (valor - valorISS) : valor;
        
        var regimeText = {1:'Não optante',2:'MEI',3:'Optante SN',4:'Excesso sublimite'}[regime] || '';
        var retencaoText = {1:'Não Retido',2:'Retido pelo Tomador',3:'Retido pelo Intermediário'}[tipoRetencao] || '';
        
        $('#resumo_nota').html('<strong>Valor Serviço:</strong> R$ '+valor.toFixed(2)+
            (aliquota>0 ? '<br><strong>ISS ('+aliquota+'%):</strong> R$ '+valorISS.toFixed(2) : '')+
            '<br><strong>Tipo Retenção:</strong> '+retencaoText+
            '<hr><strong>Valor Líquido:</strong> <span class="resumo-valor">R$ '+totalLiquido.toFixed(2)+'</span><br>'+
            '<span class="badge bg-secondary mt-2">'+regimeText+'</span>');
    }
    
    // Salvar rascunho
    $('#btnSalvar').click(function() {
        salvarNota(false);
    });
    
    function salvarNota(enviarAgora) {
        if (!$('#empresa_id').val()) { mostrarErro('Selecione uma empresa!'); return; }
        if (!$('#emitente_id').val()) { mostrarErro('Selecione um emitente!'); return; }
        if (!$('#tomador_id').val()) { mostrarErro('Selecione um tomador!'); return; }
        if (!$('#servico_id').val()) { mostrarErro('Selecione um serviço!'); return; }
        if (!$('#valor_servico').val() || parseFloat($('#valor_servico').val()) <= 0) { mostrarErro('Informe um valor válido!'); return; }
        if (!$('#tipo_retencao_iss').val()) { mostrarErro('Selecione o tipo de retenção do ISS!'); return; }
        if (!$('#regime_tributario').val()) { mostrarErro('Selecione o regime tributário!'); return; }
        
        var servicoOpt = $('#servico_id').find(':selected');
        var codigoServicoRaw = servicoOpt.data('codigo') || '';
        var codigoServico = codigoServicoRaw.replace(/[^0-9]/g, '');
        
        // Garantir 6 dígitos
        if (codigoServico.length === 4) {
            codigoServico = codigoServico + '01';
        } else if (codigoServico.length !== 6) {
            codigoServico = codigoServico.padEnd(6, '0').substring(0, 6);
        }
        
        var dados = {
            id: $('#nota_id').val() || 0,
            empresa_id: parseInt($('#empresa_id').val()),
            emitente: { 
                id: parseInt($('#emitente_id').val()), 
                cnpj: $('#emitente_id').find(':selected').data('cnpj'), 
                inscricao_municipal: $('#emitente_id').find(':selected').data('inscricao'), 
                codigo_municipio: $('#emitente_id').find(':selected').data('codigo-municipio') 
            },
            tomador: { 
                id: parseInt($('#tomador_id').val()), 
                cnpj: $('#tomador_id').find(':selected').data('cnpj'), 
                cpf: $('#tomador_id').find(':selected').data('cpf'), 
                razao_social: $('#tomador_id').find(':selected').data('razao'), 
                email: $('#tomador_id').find(':selected').data('email') 
            },
            nota: {
                ref: $('#ref').val().trim(),
                codigo_servico: codigoServico,
                valor_servico: parseFloat($('#valor_servico').val()),
                descricao: $('#descricao').val(),
                aliquota: parseFloat($('#aliquota').val()) || 0,
                tipo_retencao_iss: parseInt($('#tipo_retencao_iss').val()),
                codigo_opcao_simples_nacional: parseInt($('#regime_tributario').val()),
                codigo_tributario_municipal: $('#codigo_tributario_municipal').val(),
                codigo_nbs: $('#codigo_nbs').val(),
                data_emissao: $('#data_emissao').val(),
                data_competencia: $('#data_competencia').val(),
                observacoes: $('#observacoes').val()
            },
            enviar_agora: enviarAgora
        };
        
        $('#loadingOverlay').show();
        $('#loadingText').text(enviarAgora ? 'Enviando nota...' : 'Salvando rascunho...');
        $('#btnSalvar').prop('disabled', true);
        $('#btn_emitir').prop('disabled', true);
        
        $.ajax({
            url: '/emissornota/api/salvar_rascunho.php',
            method: 'POST',
            data: JSON.stringify(dados),
            contentType: 'application/json',
            dataType: 'json',
            timeout: 60000,
            success: function(response) {
                $('#loadingOverlay').hide();
                if (response.sucesso) {
                    if (enviarAgora) {
                        mostrarSucesso('✅ Nota emitida! Número: ' + (response.numero_nfse || 'N/A'));
                        setTimeout(() => window.location.href = 'consultar_notas.php?ref=' + encodeURIComponent(dados.nota.ref), 2000);
                    } else {
                        mostrarSucesso('✅ Rascunho salvo com sucesso!');
                        setTimeout(() => window.location.href = 'listar_rascunhos.php', 1500);
                    }
                } else {
                    mostrarErro('❌ ' + (response.erro || 'Erro desconhecido'));
                    $('#btnSalvar').prop('disabled', false);
                    $('#btn_emitir').prop('disabled', false);
                }
            },
            error: function(xhr) {
                $('#loadingOverlay').hide();
                mostrarErro('❌ Erro de comunicação com o servidor');
                $('#btnSalvar').prop('disabled', false);
                $('#btn_emitir').prop('disabled', false);
            }
        });
    }
    
    // Enviar nota
    $('#formEmissao').submit(function(e) {
        e.preventDefault();
        salvarNota(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; }
    
    function mostrarErro(msg) {
        var toast = $(`<div class="toast show" role="alert" data-bs-autohide="true" data-bs-delay="5000">
            <div class="toast-header bg-danger text-white"><strong class="me-auto"><i class="bi bi-exclamation-triangle"></i> Erro</strong><button type="button" class="btn-close btn-close-white" data-bs-dismiss="toast"></button></div>
            <div class="toast-body">${msg}</div></div>`);
        $('.toast-container').append(toast);
        toast.toast('show');
        setTimeout(() => toast.remove(), 5000);
    }
    
    function mostrarSucesso(msg) {
        var toast = $(`<div class="toast show" role="alert" data-bs-autohide="true" data-bs-delay="3000">
            <div class="toast-header bg-success text-white"><strong class="me-auto"><i class="bi bi-check-circle"></i> Sucesso</strong><button type="button" class="btn-close btn-close-white" data-bs-dismiss="toast"></button></div>
            <div class="toast-body">${msg}</div></div>`);
        $('.toast-container').append(toast);
        toast.toast('show');
        setTimeout(() => toast.remove(), 3000);
    }
    
    // Inicializar
    if ($('#empresa_id').val()) $('#empresa_id').trigger('change');
    if ($('#emitente_id').val()) $('#emitente_id').trigger('change');
    if ($('#tomador_id').val()) $('#tomador_id').trigger('change');
    if ($('#servico_id').val()) $('#servico_id').trigger('change');
});
</script>

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