<?php
// /home/w7master/public_html/emissornota/testar_tr_direto.php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// Configuração do banco
$host = 'localhost';
$dbname = 'seu_banco'; // ALTERE PARA SEU BANCO
$user = 'seu_usuario'; // ALTERE PARA SEU USUARIO
$pass = 'sua_senha';   // ALTERE PARA SUA SENHA

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("Erro no banco: " . $e->getMessage());
}

// Buscar dados da empresa TR (ID 2)
$empresa = $pdo->query("SELECT * FROM empresas WHERE id = 2")->fetch(PDO::FETCH_ASSOC);
$emitente = $pdo->query("SELECT e.*, end.codigo_municipio FROM emitentes e LEFT JOIN enderecos end ON e.endereco_id = end.id WHERE e.empresa_id = 2 LIMIT 1")->fetch(PDO::FETCH_ASSOC);
$tomador = $pdo->query("SELECT t.*, end.logradouro, end.numero, end.bairro, end.codigo_municipio, end.cep FROM tomadores t LEFT JOIN enderecos end ON t.endereco_id = end.id WHERE t.id = 3 LIMIT 1")->fetch(PDO::FETCH_ASSOC);

echo "<h2>Teste TR - Ambiente PRODUÇÃO</h2>";
echo "Empresa: " . $empresa['nome'] . "<br>";
echo "Ambiente: " . $empresa['ambiente'] . "<br>";
echo "Token: " . substr($empresa['token'], 0, 10) . "...<br>";

if (!$emitente) {
    die("Emitente não encontrado para empresa TR!");
}

if (!$tomador) {
    die("Tomador não encontrado!");
}

// Payload para TR em PRODUÇÃO
$ref = "TR_PROD_" . date('Ymd_His') . "_" . rand(100, 999);
$valorServico = 100.00;
$aliquota = 4.00;
$valorISS = 4.00;

$cnpjPrestador = preg_replace('/[^0-9]/', '', $emitente['cnpj']);
$cnpjTomador = preg_replace('/[^0-9]/', '', $tomador['cnpj']);

$payload = [
    "data_emissao" => date('Y-m-d\TH:i:sP'),
    "data_competencia" => date('Y-m-d'),
    "codigo_municipio_emissora" => 4304606,
    "cnpj_prestador" => $cnpjPrestador,
    "inscricao_municipal_prestador" => $emitente['inscricao_municipal'] ?? '',
    "codigo_opcao_simples_nacional" => 1,
    "regime_especial_tributacao" => 0,
    "cnpj_tomador" => $cnpjTomador,
    "razao_social_tomador" => substr($tomador['razao_social'], 0, 100),
    "codigo_municipio_tomador" => 4304606,
    "cep_tomador" => "92310000",
    "logradouro_tomador" => "AVENIDA GETULIO VARGAS",
    "numero_tomador" => "S/N",
    "bairro_tomador" => "CENTRO",
    "codigo_municipio_prestacao" => 4304606,
    "codigo_tributacao_nacional_iss" => "070901",
    "codigo_tributacao_municipal_iss" => "001",
    "descricao_servico" => "TESTE TR PRODUÇÃO - Coleta de resíduos",
    "valor_servico" => $valorServico,
    "valor_iss" => $valorISS,
    "tributacao_iss" => 1,
    "tpRetISSQN" => "2",
    "indicador_total_tributacao" => "0",
    "codigo_nbs" => "124032200"
];

echo "<pre>";
echo "=== PAYLOAD ===\n";
echo json_encode($payload, JSON_PRETTY_PRINT) . "\n\n";

$baseUrl = 'https://api.focusnfe.com.br/v2';
$url = $baseUrl . '/nfsen?ref=' . urlencode($ref);

echo "URL: $url\n\n";

$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',
    'Accept: application/json',
    'Authorization: Basic ' . base64_encode($empresa['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);
$curlError = curl_error($ch);
curl_close($ch);

echo "HTTP Code: $httpCode\n";
if ($curlError) {
    echo "CURL Error: $curlError\n";
}
echo "=== RESPOSTA ===\n";
$respostaJson = json_decode($resposta, true);
echo json_encode($respostaJson, JSON_PRETTY_PRINT) . "\n";

if ($httpCode == 200 || $httpCode == 201 || $httpCode == 202) {
    if (isset($respostaJson['numero']) || isset($respostaJson['data']['chaveAcesso'])) {
        $chave = $respostaJson['numero'] ?? $respostaJson['data']['chaveAcesso'] ?? 'N/A';
        echo "\n✅✅✅ NOTA AUTORIZADA! Chave: $chave\n";
        
        // Salvar no banco
        $stmt = $pdo->prepare("
            INSERT INTO notas_fiscais 
            (empresa_id, emitente_id, tomador_id, ref, codigo_servico, discriminacao_servico, 
             valor_servico, aliquota, valor_iss, iss_retido, status, numero_nfse, resposta_api, criado_em)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'autorizada', ?, ?, NOW())
        ");
        $stmt->execute([
            $empresa['id'], $emitente['id'], $tomador['id'], $ref,
            "070901", $payload['descricao_servico'], $valorServico, $aliquota, $valorISS, 1,
            $chave, $resposta
        ]);
        echo "Nota salva no banco! ID: " . $pdo->lastInsertId() . "\n";
    } else {
        echo "\n⚠️ Resposta sem chave de acesso\n";
    }
} elseif (isset($respostaJson['erros'])) {
    echo "\n❌ ERRO: " . $respostaJson['erros'][0]['Descricao'] . "\n";
} else {
    echo "\n❌ ERRO: " . ($respostaJson['mensagem'] ?? 'Erro desconhecido') . "\n";
}

echo "</pre>";
?>