Ir para conteúdo
  • Cadastre-se

Duplicando Itens da NFE


Ver Solução Respondido por Afonso Junior,
  • Este tópico foi criado há 121 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Explicando melhor:

Envio as informações para o ACBR tudo correto.

Executo o método ACBrNFe.Enviar o xml de retorno vem com os itens duplicado. Todo o resto esta correto, valores corretos (valor sem somar os duplicados), tudo, mas os itens estão duplicados no xml. Por consequência o DANFE vem com os itens duplicados.

  • Consultores
Postado

confere senão está chamando mais de uma vez 

.NFe.Det.New;   

 

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado
Em 04/11/2025 at 18:07, edudidu disse:

Parece que as tags são só geradas quando o padrão é Nacional até o momento. 

 

Em 09/01/2026 at 22:01, Juliomar Marchetti disse:

confere senão está chamando mais de uma vez 

.NFe.Det.New;   

 

Eu faço um por produto, mas o o xml vai correto, tanto que a NFE é enviada e validada. Consulto ela no SEFAZ está correta é só o xml que retorna após executar o envio que vem com os itens duplicados. Isso é esporádico, em um universo de 100 NFE acontece um caso ou dois. 

Postado
49 minutos atrás, Afonso Junior disse:

Eu faço um por produto, mas o o xml vai correto, tanto que a NFE é enviada e validada. Consulto ela no SEFAZ está correta é só o xml que retorna após executar o envio que vem com os itens duplicados. Isso é esporádico, em um universo de 100 NFE acontece um caso ou dois. 

Quando exatamente isso começou? Somete a título de desencargo de consciência. Em algum momento depois do retorno do XML, você invoca o loadfromfile? Nunca tive um problema dessa ordem, mas não custa conferir.

Prates, Agnaldo

  • 2 semanas depois ...
Postado

Instalei um monte de logs para pegar os xml antes e depois.
Quando monto um xml que guardo ele, então se der time out pego esse mesmo xml passo para a variável vsXMLDadoBinario e executo o comando abaixo.

NF.ACBrNFe.NotasFiscais.Clear;           
NF.ACBrNFe.NotasFiscais.LoadFromString(vsXMLDadoBinario);
NF.ACBrNFe.Configuracoes.Geral.ValidarDigest := ValidarDigest();

Coloquei um log antes para capturar o XML e ter certeza que estou enviando corretamente, sim ele está correto. Mas o XML que vem depois vem com os itens duplicados.
Ai vem meu questionamento o XML que monta após a execução do comando vem do SEFAZ ou é montado pelo componente?

  • Consultores
Postado
7 horas atrás, Afonso Junior disse:

Instalei um monte de logs para pegar os xml antes e depois.
Quando monto um xml que guardo ele, então se der time out pego esse mesmo xml passo para a variável vsXMLDadoBinario e executo o comando abaixo.

NF.ACBrNFe.NotasFiscais.Clear;           
NF.ACBrNFe.NotasFiscais.LoadFromString(vsXMLDadoBinario);
NF.ACBrNFe.Configuracoes.Geral.ValidarDigest := ValidarDigest();

Coloquei um log antes para capturar o XML e ter certeza que estou enviando corretamente, sim ele está correto. Mas o XML que vem depois vem com os itens duplicados.
Ai vem meu questionamento o XML que monta após a execução do comando vem do SEFAZ ou é montado pelo componente?

vem do sefaz. 

se tu usar F7 e entrar nas funções irá notar que vem de lá.

habilita os logs do componente. ele gera pra ti os varios xml

desde o soap que retorna inteiro sem as devidas tratativas

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Obrigado pela resposta, eu entrei em contato com o SEFAZ de GO estou aguardando uma resposta.

Quando tiver uma resposta deles posto aqui a resposta para caso alguém passe por isso também tenha essa informação.

  • Moderadores
Postado
17 horas atrás, Afonso Junior disse:

Ai vem meu questionamento o XML que monta após a execução do comando vem do SEFAZ ou é montado pelo componente?

A SEFAZ só retorna o protocolo de autorização.

Quem monta o XML é o ACBr, de acordo com o que é preenchido.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Coloquei vários logs e sei o momento exato que duplica.

NF.ACBrNFe.NotasFiscais.Items[0].XML := vsXMLDadoBinario; // Pego o xml já montado e coloco nessa variavel vsXMLDadoBinario

              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.tpAmb    := NF.ACBrNFe.WebServices.Consulta.protNFe.tpAmb;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.verAplic := NF.ACBrNFe.WebServices.Consulta.protNFe.verAplic;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.nProt    := NF.ACBrNFe.WebServices.Consulta.protNFe.nProt;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.digVal   := NF.ACBrNFe.WebServices.Consulta.protNFe.digVal;
              // nf.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.cStat   := nf.ACBrNFe.WebServices.Consulta.protNFe.cStat;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.xMotivo  := NF.ACBrNFe.WebServices.Consulta.protNFe.xMotivo;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.cStat    := NF.ACBrNFe.WebServices.Consulta.protNFe.cStat;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.chNFe    := NF.ACBrNFe.WebServices.Consulta.protNFe.chNFe;
              // nf.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.nProt   := nf.ACBrNFe.WebServices.Consulta.protNFe.nProt;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.dhRecbto := NF.ACBrNFe.WebServices.Consulta.protNFe.dhRecbto;

              if NF.ACBrNFe.NotasFiscais.Items[0].NFe.signature.DigestValue <>  NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.digVal  then
                NF.ACBrNFe.NotasFiscais.Items[0].NFe.signature.DigestValue :=  NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.digVal ;

         // Nesse momento duplica os items....

         NF.ACBrNFe.NotasFiscais.Items[0].GerarXML;

 

Estou fazendo algo errado?

NF.ACBrNFe.NotasFiscais.Items[0].GerarXML; // Essa linha faz duplicar os itens

NF.ACBrNFe.NotasFiscais.Items[0].GerarXML; // Essa linha faz duplicar os itens

  • Consultores
Postado
8 minutos atrás, Afonso Junior disse:

Coloquei vários logs e sei o momento exato que duplica.

NF.ACBrNFe.NotasFiscais.Items[0].XML := vsXMLDadoBinario; // Pego o xml já montado e coloco nessa variavel vsXMLDadoBinario

              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.tpAmb    := NF.ACBrNFe.WebServices.Consulta.protNFe.tpAmb;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.verAplic := NF.ACBrNFe.WebServices.Consulta.protNFe.verAplic;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.nProt    := NF.ACBrNFe.WebServices.Consulta.protNFe.nProt;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.digVal   := NF.ACBrNFe.WebServices.Consulta.protNFe.digVal;
              // nf.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.cStat   := nf.ACBrNFe.WebServices.Consulta.protNFe.cStat;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.xMotivo  := NF.ACBrNFe.WebServices.Consulta.protNFe.xMotivo;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.cStat    := NF.ACBrNFe.WebServices.Consulta.protNFe.cStat;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.chNFe    := NF.ACBrNFe.WebServices.Consulta.protNFe.chNFe;
              // nf.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.nProt   := nf.ACBrNFe.WebServices.Consulta.protNFe.nProt;
              NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.dhRecbto := NF.ACBrNFe.WebServices.Consulta.protNFe.dhRecbto;

              if NF.ACBrNFe.NotasFiscais.Items[0].NFe.signature.DigestValue <>  NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.digVal  then
                NF.ACBrNFe.NotasFiscais.Items[0].NFe.signature.DigestValue :=  NF.ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.digVal ;

         // Nesse momento duplica os items....

         NF.ACBrNFe.NotasFiscais.Items[0].GerarXML;

 

Estou fazendo algo errado?

NF.ACBrNFe.NotasFiscais.Items[0].GerarXML; // Essa linha faz duplicar os itens

NF.ACBrNFe.NotasFiscais.Items[0].GerarXML; // Essa linha faz duplicar os itens

tem algo a mais ai no meio. algum evento em outro local que dispara. 
veja se tem só o 0 (zero) que tem ou se tem mais notas. também veja se o NFe.Det.count tem quantos ali

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Moderadores
Postado
23 minutos atrás, Afonso Junior disse:

NF.ACBrNFe.NotasFiscais.Items[0].XML := vsXMLDadoBinario; // Pego o xml já montado e coloco nessa variavel vsXMLDadoBinario

Troque por:

NF.ACBrNFe.NotasFiscais.Clear;

NF.ACBrNFe.NotasFiscais.LoadFromString(vsXMLDadosBinario);

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

vou fazer essa alteração.

Mas eu pego o XML logo após passar o valor e está normal.

Codigo abaixo:

NF.ACBrNFe.NotasFiscais.Items[0].XML := vsXMLDadoBinario;
logger(NF.ACBrNFe.NotasFiscais.Items[0].XML);

 


faço isso em vários pontos do código e nesse ponto que duplica.

logger(NF.ACBrNFe.NotasFiscais.Items[0].XML); // XML NORMAL
NF.ACBrNFe.NotasFiscais.Items[0].GerarXML;
logger(NF.ACBrNFe.NotasFiscais.Items[0].XML); // XML DUPLICADO

NF.ACBrNFe.NotasFiscais.Items[0].XML := vsXMLDadoBinario;
logger(NF.ACBrNFe.NotasFiscais.Items[0].XML); // XML NORMAL

NF.ACBrNFe.NotasFiscais.Items[0].XML := vsXMLDadoBinario;
logger(NF.ACBrNFe.NotasFiscais.Items[0].XML); // XML NORMAL

logger(NF.ACBrNFe.NotasFiscais.Items[0].XML); // XML NORMAL
NF.ACBrNFe.NotasFiscais.Items[0].GerarXML;
logger(NF.ACBrNFe.NotasFiscais.Items[0].XML); // XML DUPLICADO

 

  • Moderadores
Postado

Vai duplicar mesmo, por causa do XML como setter que faz a leitura do arquivo para o objeto NotaFiscal, sem limpar os itens já carregados antes.

Ao chamar o GerarXML ele sobrepõe a propriedade XML com a informação duplicada.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Então devo alterar para:

NF.ACBrNFe.NotasFiscais.Clear;

NF.ACBrNFe.NotasFiscais.LoadFromString(vsXMLDadosBinario);

E remover a linha de codigo:
NF.ACBrNFe.NotasFiscais.Items[0].GerarXML;

é isso?

  • Moderadores
Postado

O GerarXML não é necessário, mas pode manter se desejar, ele após fazer a leitura vai atualizar o XML com base nos dados lidos.

O GerarXML inclusive por ser feito por parâmetro no LoadFromString.

NF.ACBrNFe.NotasFiscais.LoadFromString(vsXMLDadosBinario, True);

Desde que tenha antes o NotasFiscais.Clear não deve ter problema.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Consultores
Postado
33 minutos atrás, Afonso Junior disse:

Então devo alterar para:

NF.ACBrNFe.NotasFiscais.Clear;

NF.ACBrNFe.NotasFiscais.LoadFromString(vsXMLDadosBinario);

E remover a linha de codigo:
NF.ACBrNFe.NotasFiscais.Items[0].GerarXML;

é isso?

mar porque carregar o xml?
está no delphi preenche o objeto NFe e manda assinar e enviar.

garanto que não vai dar problemas.
tu está gerar o xml externo ao ACBr e carregar nele para enviar é isso?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

"está no delphi preenche o objeto NFe e manda assinar e enviar."
Sim isso é bem melhor trabalho dessa forma.

Isso eu só faço de carregar um XML pronto quando envio o XML para o SEFAZ e no meio do caminho ocorre um time out.
Então como já gerei ele guardei no banco não sei se o SEFAZ já aceitou ou não, pego o mesmo XML carrego consulto e se estiver tudo OK eu mando imprimir.

Agora se tiver uma outra forma de fazer e puder me explicar eu lhe agradeço.

  • Consultores
Postado
2 horas atrás, Afonso Junior disse:

Para melhor entendimento.

Dois XML um antes e o outro depois capturado pelo logger:xml-Errado.xmlxml-Correto.xml
Um errado com os itens dos produtos duplicados e o outro correto.

é isso que acontece apos o codigo:

NF.ACBrNFe.NotasFiscais.Items[0].GerarXML;

Muito estranho.

coloque um ponto de parada e entre na função gerarxml com F7 e vai entrando até chegar onde ele gera os DET pra ver

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Não consigo simular para debugar, pq isso não ocorre todas as vezes, o que dificulta a solução. E um universo de 100 NFE ocorre em 1 .

Por isso coloquei os loggers capturando os xmls pq não conseguia entender o que estava acontecendo.

Postado
53 minutos atrás, Afonso Junior disse:

Não consigo simular para debugar, pq isso não ocorre todas as vezes, o que dificulta a solução. E um universo de 100 NFE ocorre em 1 .

Rapá, que louco. Isso ocorre em todos os clientes ou em algum PC específco? Nesta situação eu voltava os olhos para o hardware. Pode ser alguma falha aleatória na memória ou mesmo no cache do So. Isso é osso até descobrir o que pode ser. Eu ja tive clientes que dizia que o "sistema sozinho, ligava o PC e dava baixa no contas a receber, sempre por volta das 23h e meia noite", até que instalaram uma câmera que solucioou o problema.

Confere o sistema operacional, especialmente a pasta temp deste pc, em alguns SO, a pasta temporárias fica lotada e o so não dá conta de gerenciar tudo. Processador, vefiqque se não está aquecendo muito, isso ja ocorreu comigo com somatórias, e não ocorria com frequencia, mas esporádicos, era um AMD com temperatura em 78º, mas foi osso até descobrir. 

Prates, Agnaldo

Postado

Estou com 5 clientes que reclamaram, mas todos bem esporádicos os casos, só tem um cliente que ocorre com mais frequência uma por dia (mas emite 100/200 NFE dia) esse usa maquina virtual o que é diferente dele para os demais. Mas tenho clientes que emite 300 NFE por dia e ocorre um caso a cada 3 dias até menos.

 

 

 

  • Consultores
Postado
34 minutos atrás, Afonso Junior disse:

esse usa maquina virtual o que é d

porque maquina virtual para uso de sistema? 
sugestão é fazer log dentro do gerarxml pra tu pegar

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

"porque maquina virtual para uso de sistema? "
O cliente fez dessa forma, infelizmente isso foge do meu controle, o cliente instala o sistema na maquina que ele quiser, nesse caso ele quis criar uma maquina virtual e instalar o programa de envio de nfe nela. Mas ocorreu também em outras máquinas que não eram virtuais.

"sugestão é fazer log dentro do gerarxml pra tu pegar"
Vou ver como posso implementar isso. Obrigado.

  • Este tópico foi criado há 121 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.