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

require_once 'includes/funcoes.php';

$pdo = conectarBanco();

echo "<h2>Teste Simplificado de Emissão em Lote</h2>";

// Buscar notas com erro
$notas = $pdo->query("
    SELECT n.id, n.ref, n.status, n.valor_servico,
           e.nome as empresa_nome,
           t.razao_social as tomador_nome
    FROM notas_fiscais n
    JOIN empresas e ON n.empresa_id = e.id
    JOIN tomadores t ON n.tomador_id = t.id
    WHERE n.status IN ('erro_validacao', 'erro_comunicacao', 'pendente', 'rascunho')
    ORDER BY n.id DESC
    LIMIT 10
")->fetchAll(PDO::FETCH_ASSOC);

echo "<h3>Notas encontradas: " . count($notas) . "</h3>";

if (count($notas) > 0) {
    echo "<table border='1' cellpadding='5'>";
    echo "<tr><th>ID</th><th>Ref</th><th>Empresa</th><th>Tomador</th><th>Valor</th><th>Status</th><th>Ação</th></tr>";
    
    foreach ($notas as $nota) {
        echo "<tr>";
        echo "<td>{$nota['id']}</td>";
        echo "<td>{$nota['ref']}</td>";
        echo "<td>{$nota['empresa_nome']}</td>";
        echo "<td>{$nota['tomador_nome']}</td>";
        echo "<td>R$ {$nota['valor_servico']}</td>";
        echo "<td>{$nota['status']}</td>";
        echo "<td><button onclick='reprocessar({$nota['id']})'>Reprocessar</button></td>";
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "<div style='color: red;'>Nenhuma nota encontrada com status de erro!</div>";
    echo "<br><a href='nova_nota.php'>Clique aqui para criar uma nova nota</a>";
}

// Teste de comunicação com a API
echo "<h3>Teste de Comunicação com API Focus</h3>";

$empresa = $pdo->query("SELECT id, nome, token, ambiente FROM empresas WHERE ativo = 1 LIMIT 1")->fetch(PDO::FETCH_ASSOC);

if ($empresa) {
    echo "Empresa: {$empresa['nome']}<br>";
    echo "Ambiente: {$empresa['ambiente']}<br>";
    
    $baseUrl = $empresa['ambiente'] == 'producao' 
        ? 'https://api.focusnfe.com.br/v2' 
        : 'https://homologacao.focusnfe.com.br/v2';
    
    // Testar endpoint de status
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $baseUrl . "/status");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Basic ' . base64_encode($empresa['token'] . ':')
    ]);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $resposta = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curlError = curl_error($ch);
    curl_close($ch);
    
    echo "HTTP Code: $httpCode<br>";
    if ($curlError) {
        echo "Erro CURL: $curlError<br>";
    } else {
        echo "Resposta: " . substr($resposta, 0, 200) . "<br>";
        if ($httpCode == 200) {
            echo "<span style='color: green;'>✅ API Focus está acessível!</span><br>";
        } else {
            echo "<span style='color: red;'>❌ API Focus retornou erro</span><br>";
        }
    }
}

// Função para reprocessar
if (isset($_GET['reprocessar'])) {
    $nota_id = (int)$_GET['reprocessar'];
    
    echo "<h3>Reprocessando nota ID: $nota_id</h3>";
    
    // Buscar dados da nota
    $stmt = $pdo->prepare("
        SELECT n.*, e.token, e.ambiente,
               em.cnpj as emitente_cnpj, em.inscricao_municipal,
               t.cnpj as tomador_cnpj, t.cpf as tomador_cpf, t.razao_social
        FROM notas_fiscais n
        JOIN empresas e ON n.empresa_id = e.id
        JOIN emitentes em ON n.emitente_id = em.id
        JOIN tomadores t ON n.tomador_id = t.id
        WHERE n.id = ?
    ");
    $stmt->execute([$nota_id]);
    $nota = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($nota) {
        echo "<pre>";
        print_r($nota);
        echo "</pre>";
        
        // Preparar payload
        $payload = [
            "data_emissao" => date('Y-m-d\TH:i:sP'),
            "data_competencia" => date('Y-m-d'),
            "codigo_municipio_emissora" => 4304606,
            "cnpj_prestador" => preg_replace('/[^0-9]/', '', $nota['emitente_cnpj']),
            "codigo_opcao_simples_nacional" => 3,
            "regime_especial_tributacao" => 0,
            "cnpj_tomador" => preg_replace('/[^0-9]/', '', $nota['tomador_cnpj']),
            "razao_social_tomador" => substr($nota['tomador_razao'], 0, 100),
            "codigo_municipio_tomador" => 4304606,
            "codigo_tributacao_nacional_iss" => $nota['codigo_servico'],
            "descricao_servico" => $nota['discriminacao_servico'],
            "valor_servico" => (float)$nota['valor_servico'],
            "valor_iss" => (float)$nota['valor_iss'],
            "tributacao_iss" => 1,
            "tipo_retencao_iss" => $nota['iss_retido'] == 1 ? 1 : 2
        ];
        
        echo "<h4>Payload:</h4>";
        echo "<pre>" . json_encode($payload, JSON_PRETTY_PRINT) . "</pre>";
        
        // Enviar
        $baseUrl = $nota['ambiente'] == 'producao' 
            ? 'https://api.focusnfe.com.br/v2' 
            : 'https://homologacao.focusnfe.com.br/v2';
        
        $url = $baseUrl . '/nfsen?ref=' . urlencode($nota['ref'] . '_reprocess_' . time());
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Authorization: Basic ' . base64_encode($nota['token'] . ':')
        ]);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        
        $resposta = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        echo "<h4>Resposta:</h4>";
        echo "HTTP Code: $httpCode<br>";
        echo "Resposta: $resposta<br>";
    }
}
?>

<script>
function reprocessar(id) {
    window.location.href = 'teste_lote_simples.php?reprocessar=' + id;
}
</script>

<br><br>
<a href="nova_nota.php" class="btn btn-primary">Criar Nova Nota</a>
<a href="emitir_lote.php" class="btn btn-secondary">Voltar para Emissão em Lote</a>