<?php

$chave = filter_var( $_GET['chave'], FILTER_SANITIZE_STRING);
$endereco = filter_var( $_GET['endereco'], FILTER_SANITIZE_STRING);


$caminho_xml = "$endereco/$chave.xml"; // Defina o caminho do arquivo XML da NF-e

// Faz o parsing do XML
$xml = simplexml_load_file($caminho_xml);

// Namespace
$namespace = $xml->getNamespaces(true)[''];

// Função para obter o valor de um elemento
function obter_valor($elemento, $tag, $namespace) {
    return (string) $elemento->children($namespace)->{$tag};
}

// Função para obter os dados de endereço
function obter_endereco($elemento, $namespace) {
    $endereco = $elemento->children($namespace)->enderEmit;
    return array(
        'logradouro' => (string) $endereco->xLgr,
        'numero' => (string) $endereco->nro,
        'bairro' => (string) $endereco->xBairro,
        'cidade' => (string) $endereco->cMun,
        'uf' => (string) $endereco->UF,
        'cep' => (string) $endereco->CEP
    );
}

// Obtém os dados do XML
$emitente = $xml->NFe->infNFe->emit;
$cnpj = obter_valor($emitente, 'CNPJ', $namespace);
$razao_social = obter_valor($emitente, 'xNome', $namespace);
$endereco_emitente = obter_endereco($emitente, $namespace);

// Exibe os dados
echo 'CNPJ: ' . $cnpj . '<br>';
echo 'Razão Social: ' . $razao_social . '<br>';
echo 'Endereço:<br>';
echo 'Logradouro: ' . $endereco_emitente['logradouro'] . '<br>';
echo 'Número: ' . $endereco_emitente['numero'] . '<br>';
echo 'Bairro: ' . $endereco_emitente['bairro'] . '<br>';
echo 'Cidade: ' . $endereco_emitente['cidade'] . '<br>';
echo 'UF: ' . $endereco_emitente['uf'] . '<br>';
echo 'CEP: ' . $endereco_emitente['cep'] . '<br>';
echo 'CHAVE: ' . $chave . '<br>';


echo "<p>";
echo "<hr>";


// Função para obter a data de emissão
function obter_data_emissao($xml, $namespace) {
    return (string) $xml->NFe->infNFe->ide->dhEmi;
}

// Obtém a data de emissão do XML
$data_emissao = obter_data_emissao($xml, $namespace);

// Exibe a data de emissão
echo 'Data de Emissão: ' . $data_emissao . '<br>';

echo "<p>";
echo "<hr>";

// Função para obter os dados das mercadorias
function obter_mercadorias($xml, $namespace) {
    $mercadorias = [];
    foreach ($xml->NFe->infNFe->det as $item) {
        $produto = $item->prod;
        $mercadoria = array(
            'codigo' => (string) $produto->cProd,
            'descricao' => (string) $produto->xProd,
            'quantidade' => (float) $produto->qCom,
            'valor_unitario' => (float) $produto->vUnCom,
            'valor_total' => (float) $produto->vProd
        );
        $mercadorias[] = $mercadoria;
    }
    return $mercadorias;
}

// Obtém os dados das mercadorias do XML
$dados_mercadorias = obter_mercadorias($xml, $namespace);

// Exibe os dados das mercadorias
echo 'Mercadorias:<br>';
foreach ($dados_mercadorias as $mercadoria) {
    echo 'Código: ' . $mercadoria['codigo'] . '<br>';
    echo 'Descrição: ' . $mercadoria['descricao'] . '<br>';
    echo 'Quantidade: ' . $mercadoria['quantidade'] . '<br>';
    echo 'Valor Unitário: ' . $mercadoria['valor_unitario'] . '<br>';
    echo 'Valor Total: ' . $mercadoria['valor_total'] . '<br><br>';

    echo "<hr>";
}
