Ir para conteúdo
  • Cadastre-se

dev botao

Dúvida: Como validar retorno de transmissão de NF-e


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

Recommended Posts

Boa tarde,

Supondo que dois computadores da mesma empresa tentem transmitir uma NF-e ao mesmo tempo (duas notas diferentes, e em virtude disso a chave de acesso gerada seja a mesma entre os dois, existe a possibilidade de um computador obter o retorno do outro computador e vice versa?

Se sim, existe alguma maneira de prevenir esta situação, algum código, protocolo que possa ser validado?

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution
19 minutos atrás, RobertoSFilho disse:

Supondo que dois computadores da mesma empresa tentem transmitir uma NF-e ao mesmo tempo (duas notas diferentes, e em virtude disso a chave de acesso gerada seja a mesma entre os dois, existe a possibilidade de um computador obter o retorno do outro computador e vice versa?

Creio não ser possível, você deve ter rejeição de duplicidade de NFe em uma delas. Caso faça a consulta do protocolo após esse erro é possível que o XML seja atualizado com o protocolo incorreto, entretanto.

19 minutos atrás, RobertoSFilho disse:

Se sim, existe alguma maneira de prevenir esta situação, algum código, protocolo que possa ser validado?

Marcar a configuração "ValidarDigest" do componente impede que um XML seja atualizado com um protocolo de outro XML após a consulta.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
15 horas atrás, RobertoSFilho disse:

(duas notas diferentes, e em virtude disso a chave de acesso gerada seja a mesma entre os dois, existe a possibilidade de um computador obter o retorno do outro computador e vice versa?

Bom dia! 
Este controle terá que ser feito pelo teu sistema. 

Vou sugerir duas formas que vc poderá usar para controlar isto:
1 - Só gerar o número da nota após o operador clicar no botão enviar. 
 - Neste caso o operador não sabe que número de nota está gerando, até o momento em que clica no botão enviar.  
 - Ao clicar no botão enviar, você gera o número da nota e já muda a sequencia de forma que o outro terminal pegaria o próximo numero. 
 - Após isto fica gravado no teu banco de dados a informação da nota. (Caso ela não seja transmitido, dê um problema e se desista dela, você terá que mostrar o controle de notas não transmitida e dar a opção para o usuário usar este número novamente ou inutilizar o número se outros terminais já avançaram na emissão de outras notas)
- O contra deste processo é que algumas empresas necessitam informar a numeração da nota em campos de observação (dados adicionais) e como isto deve ser feito antes de enviar a nota, este procedimento dificultaria para o operador que ainda não saberia que número de nota ele tem.

2 - Ao iniciar a nota gerar o número.   
- Desta forma ao abrir o formulário da emissão da nota, vc pode gerar o número para este terminal e se o outro terminal clicar no formulário de emissão também já receberá o próximo número. 
- Da mesma forma que o anterior, vc terá que controlar as notas que foram transmitidas e as que ficaram pendentes de transmissão, caso tenha ocorrido algum problema. 
- A vantagem desta é que ao iniciar o form de emissão o operador já saberá o número da nota, porém se desistir dela tem que se ter os cuidados necessários. 

 

Já para NFCe com vários terminais emitindo o sugerido é que cada terminal siga uma sequência dentro do seu controle serial.
 
Exemplo: 
Terminal 1 - Serie 1
Terminal 2 - Serie 2

 

  • Curtir 1
  • Obrigado 1


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Em 27/10/2017 at 18:53, BigWings disse:

Creio não ser possível, você deve ter rejeição de duplicidade de NFe em uma delas. Caso faça a consulta do protocolo após esse erro é possível que o XML seja atualizado com o protocolo incorreto, entretanto.

Marcar a configuração "ValidarDigest" do componente impede que um XML seja atualizado com um protocolo de outro XML após a consulta.

Bom dia, obrigado pela dica @BigWings, eu não conhecia esta propriedade. Se não houver alguma contra indicação, vou deixar ela sempre marcada.

 

Em 28/10/2017 at 10:05, Kiko Fernandes disse:

Bom dia! 
Este controle terá que ser feito pelo teu sistema. 

Vou sugerir duas formas que vc poderá usar para controlar isto:
1 - Só gerar o número da nota após o operador clicar no botão enviar. 
 - Neste caso o operador não sabe que número de nota está gerando, até o momento em que clica no botão enviar.  
 - Ao clicar no botão enviar, você gera o número da nota e já muda a sequencia de forma que o outro terminal pegaria o próximo numero. 
 - Após isto fica gravado no teu banco de dados a informação da nota. (Caso ela não seja transmitido, dê um problema e se desista dela, você terá que mostrar o controle de notas não transmitida e dar a opção para o usuário usar este número novamente ou inutilizar o número se outros terminais já avançaram na emissão de outras notas)
- O contra deste processo é que algumas empresas necessitam informar a numeração da nota em campos de observação (dados adicionais) e como isto deve ser feito antes de enviar a nota, este procedimento dificultaria para o operador que ainda não saberia que número de nota ele tem.

2 - Ao iniciar a nota gerar o número.   
- Desta forma ao abrir o formulário da emissão da nota, vc pode gerar o número para este terminal e se o outro terminal clicar no formulário de emissão também já receberá o próximo número. 
- Da mesma forma que o anterior, vc terá que controlar as notas que foram transmitidas e as que ficaram pendentes de transmissão, caso tenha ocorrido algum problema. 
- A vantagem desta é que ao iniciar o form de emissão o operador já saberá o número da nota, porém se desistir dela tem que se ter os cuidados necessários. 

 

Já para NFCe com vários terminais emitindo o sugerido é que cada terminal siga uma sequência dentro do seu controle serial.
 
Exemplo: 
Terminal 1 - Serie 1
Terminal 2 - Serie 2

 

Obrigado pelas orientações @Kiko Fernandes! Vou tentar seguir estas práticas.

 

Só pra vocês entenderem o que ocorreu: o computador A e B transmitiram "ao mesmo tempo", a nota do computador A autorizou, mas o retorno foi recebido pelo computador B. Por consequência, a nota do computador B salvou e o computador A recebeu o retorno de duplicidade (que deveria ser do computador B). Foi um caso isolado, mas deu um bom trabalho pra corrigira situação.

Além das boas práticas sugeridas acima, vocês acham que se a a propriedade "ValidarDigest" estivesse marcada, este caso teria sido evitado?

Link para o comentário
Compartilhar em outros sites

  • Moderadores
8 horas atrás, RobertoSFilho disse:

Além das boas práticas sugeridas acima, vocês acham que se a a propriedade "ValidarDigest" estivesse marcada, este caso teria sido evitado?

Boa tarde!
De enviar em duplicidade  nesta condição de emissão simultânea não. 
Ele evita a atualização do protocolo de autorização em cima do XML que não pertence a ele.  

  • Curtir 1


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.