Ir para conteúdo
  • Cadastre-se

dev botao

Problema ao gerar o XML que não tem informado o cód. do Pais


ncc.star
  • Este tópico foi criado há 3706 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Estou fazendo um procedimento de importação de uma nota fiscal.

Eu eu importo o XML no componente (ACBrNFe1.NotasFiscais.LoadFromFile(ArquivoXML)), e em determinado momento eu uso parte do XML para realizar a importação dos dados do emitente da nota, nesse momento eu faço dessa maneira:

XML:=ACBrNFe1.NotasFiscais.Items[0].XML;
Acontece que em algumas notas, não foi informado as tags do país (que segundo o manual não são obrigatórias), e no momento retorna esse XML ele suprime as informações do CNPJ. Eu alterei a procedure abaixo, para que considere o código do país também diferente de 0.
procedure TGerador.wCampoCNPJCPF(const ID1, ID2: string; CNPJCPF: string; const cPais: Integer);

var

  Tamanho: integer;

begin

  if (cPais <> 1058) and (cPais <> 0) then

  begin

    wCampo(tcStr, ID1, 'CNPJ', 00, 00, 1, '');

    exit;

  end;

(...)

Não sei se há outra maneira de contornar isso, é possível adicionar essa alteração?

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores

Boa tarde ncc.star

Post como anexo o xml de uma NFe que não contem o código do Páis.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores

Boa tarde ncc.star,

Se você esta lendo o xml de uma NFe, para obter dados da mesma, dados estes que seram armazenados no banco de dados, porque você esta alterando uma procedure que é utilizada na geração do XML.

Desculpe não entendi.

Se você utilizar o LoadFromFile do ACBrNFe vai ler o XML e os dados vão ser armazenados cada um na sua propriedade ficando muito facil obte-los.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde Italo.

Acontece que eu tenho uma rotina implementada no sistema que realiza a importação do cliente/fornecedor com base somente no trecho do XML que tem os dados do emitente da nota. Além do emitente essa mesma rotina importa os dados do remetente/destinatário e outros participantes do CT-e e também é utilizada para outras integrações com outros sistemas. Ela se adapta de acordo com os tipos de tags que encontra no trecho do XML.

Essa rotina foi implementada bem antes de eu conhecer os componentes ACBR, porém como era uma rotina bem testada e funcionando perfeitamente, resolvi mantê-la.

O restante dos dados da NF-e eu faço como você falou, busco diretamente nas propriedades do componente, sem dúvida é 100% mais prático.

Caso não for viável essa alteração, não tem problema, pois eu contornei isso carregando o XML em uma stringlist para em seguida fazer um copy na parte que me interessa.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Pelo seu relato, você esta lendo os dados do XML.

O que não estou entendendo é o motivo de alterar uma procedure que gera o XML e não que lê.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

Isso é uma coisa para ser revista, visto que ao executar o LoadFromFile a string contendo todo o XML da NFe é atribuido a propriedade XML.

Mas ao ler essa propriedade é executado a função GetNFeXML que gera uma nova string com os dados da NFe armazenados nas propriedades do componente.

Desta forma provoca o problema que você esta enfrentando.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

É isso aí.

Como falei, para meu caso eu já resolvi carregando o xml em uma stringlist, pois precisava resolver logo o problema para meu cliente. Então não é um problema urgente para ser revisto, pois posso deixar dessa forma.

Três sugestões para resolver isso (não sei se são viáveis):

1 - Fazer um teste com várias notas oriundas de sistemas diversos e tentar fazer com que ao ler a propriedade XML resulte no mesmo XML original.

2 - Ao carregar o XML, verificar que o mesmo já está assinado e autorizado. Salvar o conteúdo integral do XML em uma variável, caso for ler a propriedade XML, não remontar e sim buscar diretamente dessa variável.

3 - Adicionar um parâmetro no LoadFromFile, onde que possa indicar se quer manter ou não o XML carregado original.

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Este topico foi criado em 2012 e já estamos em 2014 e o problema ainda continua, se o xml não vir o campo "cpais" que não é obrigatorio  quando é carregado pelo loadfromfile --> ACBrNFe1.NotasFiscais.LoadFromFile(Diretorio);

 

quando gravar  no banco.

XML:=ACBrNFe1.NotasFiscais.Items[0].XML;

 

e depois de gravado vc se for abrir o xml gravado o campo CNPJ vc vai perceber que ele não foi gravado e o estado e o municipio vai parecer como exterior.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Antonio,

 

Checando a unit responsável pela leitura do XML notei que esse problema já foi sanado, veja:

 

      (*C14*)NFe.Emit.enderEmit.cPais   := Leitor.rCampo(tcInt, 'cPais');

      if NFe.Emit.enderEmit.cPais = 0 then
        NFe.Emit.enderEmit.cPais := 1058;

 

Tanto para o Emitente quanto para o Destinatário.

 

Conclu-o que os seus fontes estão desatualizados.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Boa tarde, atualizei os fontes e na unit ACBrNFeNotasFiscais esta assim:

  FNFe.Emit.EnderEmit.xPais := 'BRASIL';
  FNFe.Emit.EnderEmit.cPais := 1058;
  FNFe.Emit.EnderEmit.nro   := 'SEM NUMERO';

  FNFe.Dest.EnderDest.xPais := 'BRASIL';
  FNFe.Dest.EnderDest.cPais := 1058;
  FNFe.Dest.EnderDest.nro   := 'SEM NUMERO';

 

Ou seja, não tem este if que vc etsa falando

NFe.Emit.enderEmit.cPais   := Leitor.rCampo(tcInt, 'cPais');

      if NFe.Emit.enderEmit.cPais = 0 then
        NFe.Emit.enderEmit.cPais := 1058;

na unit ACBrNFeNotasFiscais não existe e por isso o erro aidna persiste.

 

Aguardo resposta.

Link para o comentário
Compartilhar em outros sites

Na unit pcnNfer na procedure LerXml não existe este if

 

*C14*)NFe.Emit.enderEmit.cPais   := Leitor.rCampo(tcInt, 'cPais');

      if NFe.Emit.enderEmit.cPais = 0 then
        NFe.Emit.enderEmit.cPais := 1058;

 

Aguardo resposta, muito obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Existe sim veja:

 

o que você deve ter feito é alterado seu arquivo e ao efetuar o update do svn

ele não substituiu o mesmo, faça um revert no que tem alterado e um update 

com certeza vai estar lá o código

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3706 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.