Ir para conteúdo
  • Cadastre-se

Duplicando Itens da NFE


Ver Solução Respondido por Afonso Junior,
  • Este tópico foi criado há 130 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á 130 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...