(RESOLVIDO) - Importar XML NF-E

essa função é de qual biblioteca?

$emit_endereco = strtoupper(url_amigavel(trim($emit->getElementsByTagName(“xLgr”)->item(0)->nodeValue)));

jean,
este arquivo nao depende de nenhuma rotina ele faz a leitura do XML recebido de um fornecedor… e grava estes informações em uma tabela

$emit->getElementsByTagName(“xLgr”)->item(0)->nodeValue)
Esta éo objeto XML gerado para fazer a leitura assim voce consegue ler tudo que esta abaxio de um node…

a outra é para trocar os caracteres especiais pelos normais

e a outra e uma funcao php para transformar em maiuscula

Segue um novo arquivo com a estrutura das tabelas usadas.


Importar_xml_nfe_novo.txt (49.5 KB)

as tabelas foram crias em base Postgres…

Obrigado por compartilhar, tenho um sistema que faz isso e está bem parecido.
Também importo tudo que está em um diretótio específico. No final da importação renomeio o arquivo xml com “-” antes do nome e faço um foreach lendo todo diretório com opendir pegando apenas o que for extensão xml e que o nome do arquivo não inicie com “-”, assim o usuário importa diversos xmls ao mesmo tempo.

Rodrigo,
obrigado…
mas pelo jeito o seu esta mlhor que o meu se tiver como compartilhar esta aplicação seria legal…
por que todos precisamos de algo muito parecido com o que eu fiz e o que voce fez…

Tenho uma pergunta pra todos aqui…nao sei como definir isso pra que fique automatico:

Na minha tabela tenho muitos campos defido como moeda e decimal, mas no SC eu tenho que ir campo a campo pra informar:
==> Tipo Moeda
==> Tamanho do Campo…
==> Casa Decimal
==> Completa com zero

Existe alguma forma de fazer isso automático… pra que todos os campos ja venham em uma definição que eu coloque?

Bom o que fiz é quase igual ao seu porém com o início para ler tudo que está no diretório:
Vou passar o resumo como fiz para não ficar confuso e cada um pode fazer de acordo com a necessidade.

$diretorioup = "C:/Program Files (x86)/NetMake/v8/wwwroot/xml";

// Verificando se a pasta é valida
if (is_dir($diretorioup))
{
    //Abrindo a pasta selecionada
    if ($dh = opendir($diretorioup))
    {
        //Percorrendo todos os arquivos da pasta selecionada
        while (($file = readdir($dh)) !== false)
        {
	      if(substr($file,0,2) != "--" && trim($file) != "." && trim($file)!=".." && (substr(trim($file),-3)=='xml' || substr(trim($file),-3)=='XML'))
             {
                //Obtendo caminho completo até o arquivo
                $xmlUrl = $diretorioup."/".$file;
				 
                //Transformando o XML em array
		$arrXml = simplexml_load_file($xmlUrl);

              ----------------------- daqui para baixo pego as tags assim:
              $varcnpj_temp = trim($nfe->infNFe->dest->CNPJ); //outras linhas devem ser geradas igual essa com o caminho das tags
              
              //Obtendo dos itens	da NF
              $docDom = new DomDocument;
              $docDom->Load($xmlUrl);
              $items = $docDom->getElementsByTagName('prod');
              for ($i=0; $i < $items->length; $i++) 
              {
                         --------------daqui para baixo pego as tags com o DOM
                        $D1_CF       = (isset($items->item($i)->getElementsByTagName('CFOP')->item(0)->nodeValue))?  $items->item($i)->getElementsByTagName('CFOP')->item(0)->nodeValue  : ""; //outras linhas devem ser geradas igual essa com o caminho das tags (dessa maneira irá percorrer todos os itens

                         nessa parte que faço o insert na tabela de itens
               }
               nessa parte faço o insert na tabela de cabeçalho
               também renomeio para não pegar o arquivo novamente
               rename($diretorioup."/".$file,$diretorioup."/--importado--".$file);
            }
        }
    }
}

me refiro ao -> (url_amigavel(…

olha o retorno->

Fatal error: Call to undefined function url_amigavel() in C:\Program Files (x86)\NetMake\v8\wwwroot\scriptcase\app\MAM_Gestao_ISO_PBQPH\control_grava_nfe\control_grava_nfe_apl.php on line 2337

Dá uma olhada nesse tópico tem exatamente o que você precisa
https://github.com/nfephp-org/nfephp/blob/master/libs/NFe/UnConvertNFePHP.class.php

Obrigado Rodrigo…resolvido…

Resolvi de outra forma…

Qual a finalidade em Transformar o XML da NF-e em TXT ?

Na verdade passei o link apenas para explorar e verificar como pegar as tags que são de mesmo nome pelo getelementbyname do dom.
Se for gerar em txt ou em XML, ou apenas pegar o valor seria da mesma maneira.

Porém alguns sistemas geram em TXT e convertem para XML, o que eu particularmente não faço.

@miguell agradeço o arquivo compartilhado, mas estranhei apenas uma coisa e não entendi o motivo do uso… um exemplo…

$emit_nome = strtoupper(url_amigavel(trim($emit->getElementsByTagName(“xNome”)->item(0)->nodeValue)));

Pra quê este lance de “url_amigavel”?

Outra pergunta, no seu arquivo tem um método…

php_grava_emitente([vg_empresa_id],[vg_empresa_id],$emit_cnpj,$ide_nr_notafis,
$ide_serie_nf,$emit_nome,$emit_endereco,$emit_num_ende,
$emit_compl_end,$emit_bairro,$emit_cod_muni,$emit_nome_muni,
$emit_estado,$emit_cep,$emit_cod_pais,$emit_nome_pais,
$emit_telefone,$emit_insc_est,$emit_crt,{tx_arquivo},$emit_fantasia);

O que tem dentro neste método?