Ir para conteúdo
  • Cadastre-se

dev botao

Resposta ACBrMonitorPLUS em emissão de NFC-e automática em N segundos


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

Recommended Posts

Utilizo o ACBrMonitorPLUS em minha aplicação através da troca de arquivos plain text.

Estou desenvolvendo a emissão de NFC-e em modo de contingência automaticamente caso minha aplicação não obtenha a resposta do envio em N segundos. Muitos desenvolvedores desenvolveram este tipo de solução e, portanto, creio que seja válida.

Segue algoritmo descritivo da sequência que implementei:

1) Crio o XML (por exemplo, número da NFC-e igual a 50), valido, assino e envio no modo normal (tpEmis = 1)
2) Se a resposta chega em até 5 segundos, atualizo meu banco de dados e a venda está concluída. Porém, se a resposta não chega em até 5 segundos (tempo configurável na aplicação), procedo conforme a sequência a seguir.
3) Duplico a venda no banco de dados com número da NFC-e igual a 51, porém com tpEmis = 9 (contingência off-line).
4) Ao criar o XML da nota 51 através da função NFE.CriarNFe, a resposta deste comando não contém a resposta desta criação do XML, mas sim a resposta do envio da nota 50, que acaba contendo na maioria das vezes a informação de que a nota 50 foi autorizada.

A pergunta é: existe alguma forma de solicitar ao ACBrMonitorPLUS que cancele a operação de envio da nota 50, fazendo com que ele não mais gere o arquivo txt de resposta desse envio?

Sei que o ACBrMonitorPLUS está colocando meus comandos de requisições em uma fila.

A questão é que eu já criei um novo registro no banco de dados para a nota contingência 51 e já modifiquei o sequencial de numeração no banco. Uma solução seria ajustar minha aplicação para detectar que a resposta que chegou não é a resposta do comando NFE.CriarNFe e excluir o registro do banco e voltar a numeração sequencial de 51 para 50.

Tenho uma aplicação que monitora o banco de dados e envia as notas emitidas em contingência automaticamente. A ideia é que a nota 50 fique marcada para ser cancelada (se estiver autorizada) ou ter seu número inutilizado (se não estiver autorizada) assim que a nota 51 (que foi emitida em modo de contingência) for enviada.

Alguém tem alguma sugestão?

Desde já agradeço a colaboração.
 

Link para o comentário
Compartilhar em outros sites

  • Fundadores
3 horas atrás, Sandro TC disse:

A pergunta é: existe alguma forma de solicitar ao ACBrMonitorPLUS que cancele a operação de envio da nota 50, fazendo com que ele não mais gere o arquivo txt de resposta desse envio?

Não... o ACBrMonitorPLUS, não automatiza essa tarefa, e nem controla a fila de notas emitidas em modo Off-line

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Nelson A Sousa disse:

Olá,

Você ajustou o tempo de resposta do seu aplicativo igual o do MonitorPlus?

Olá, Nelson.

Por acaso é o campo "Timeout em segundos" (que possui valor padrão 15) do ACBrMonitorPLUS em DFe | Geral | Diversos ?

Se sim, devo colocar o valor de 5 segundos que comentei anteriormente em minha aplicação e nesse campo do ACBr ?

Este timeout em segundos do ACBr significa que se esse tempo for atingido e não houver resposta da Sefaz, o ACBr interrompe o processo e não mais captura resposta da Sefaz?

Editado por Sandro TC
Apenas para complementar a questão.
Link para o comentário
Compartilhar em outros sites

Olá,

O TimeOut do Monitor me parece que está em milissegundos.

Quando você envia o NFCe para a SEFAZ muita coisa pode acontecer no trajeto do mesmo, o XML pode nem chegar lá, pode chegar na SEFAZ mas não recebermos a resposta, etc, etc.

O Monitor aguarda a resposta por um tempo, esse tempo do Monitor tem que ser, no meu entender, menor do que o seu sistema para que o Monitor possa então gerar algum tipo de resposta com a qual seu sistema possa trabalhar.

Tem um tópico bastante esclarecedor sobre esse assunto, dá uma olhada lá: 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá, Nelson.

Farei testes ajustando o timeout do ACBr com valor menor do que o timeout de minha aplicação.

Seria interessante se houvesse um timeout do ACBr (TimeoutWebService) específico para o envio de notas e um outro timeout para as demais operações (consulta, cancelamento, inutilização etc.).
O motivo é que, quando eu defino um timeout do ACBr de, por exemplo, 5 segundos, é porque eu quero que minha aplicação não espere mais a resposta (se ela não chegar nesse tempo) e emita a NFC-e em contingência offline automaticamente. Precisamos fazer assim em alguns clientes que precisam de maior rapidez ao atender clientes nas filas.

Configurando somente 5 segundos para o envio é útil, porém o ideal é que houvesse um outro timeout na configuração do ACBr para as demais operações, porque essas outras operações (consulta, cancelamento, inutilização etc.) podem esperar.

Alguém sabe dizer se o ACBr lê a variável TimeoutWebService do arquivo ACBrMonitor.ini sempre antes de qualquer operação? Ou será que o ACBr inicializa essa variável somente quando o ACBr é inicializado?

Se sim, eu poderia alterar o valor de TimeoutWebService para, por exemplo, 5 imediatamente antes de enviar uma nota e, após a operação enviar eu voltaria o valor para 15.

Editado por Sandro TC
Ajustes para maior clareza.
Link para o comentário
Compartilhar em outros sites

Nesse ponto não posso te ajudar muito não.

Eu uso a conexão TCP/IP e não arquivos TXT.

Mas creio ser um novo txt pra cada comando, mas é bom confirmar com o pessoal aí.

Aliás, eu recomendo mudar pra TCP/IP, a resposta é melhor(menos tempo) e o processo de envio/recebimento de comandos e respostas fica mais "limpo".

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores
15 horas atrás, Sandro TC disse:

Nelson,

muito obrigado pela dica.

O ACBrMonitorPLUS aceita mais de um comando num mesmo arquivo ENTNFE.TXT ?
Fiz um teste e ele retorna resposta somente do primeiro comando.
Existe alguma forma dele retornar respostas para os dois comandos?

Por exemplo:

NFE.Versao()
NFE.LerIni()
 

Bom dia, você deve escrever um comando por vez no arquivo txt. Envia o Comando e Lê a resposta para enviar o próximo...

  • Obrigado 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Em 25/01/2018 at 08:05, Nelson A Sousa disse:

Olá,

O TimeOut do Monitor me parece que está em milissegundos.

Quando você envia o NFCe para a SEFAZ muita coisa pode acontecer no trajeto do mesmo, o XML pode nem chegar lá, pode chegar na SEFAZ mas não recebermos a resposta, etc, etc.

O Monitor aguarda a resposta por um tempo, esse tempo do Monitor tem que ser, no meu entender, menor do que o seu sistema para que o Monitor possa então gerar algum tipo de resposta com a qual seu sistema possa trabalhar.

Tem um tópico bastante esclarecedor sobre esse assunto, dá uma olhada lá: 

 

Olá, Nelson.

O Timeout do ACBrMonitorPLUS (campo "Timeout em segundos" em DFe | Geral | Diversos) possui valor padrão 15.
Modifiquei para o valor 5 e, mesmo se o envio de uma NFC-e demorar mais do que 5 segundos, o ACBr continua aguardando pela resposta da Sefaz.
Eu acreditei que se o ACBr não receber resposta em 5 segundos (valor que configurei para o Timeout) ele me retornaria um arquivo txt de resposta com mensagem de timeout, e não a resposta da Sefaz.

Gostaria que o ACBr parasse de aguardar pela resposta da Sefaz se a resposta não chegar em, por exemplo, 5 segundos.
Preciso disso para que minha aplicação decida emitir a NFC-e em contingência automaticamente se não chegar resposta nesse tempo, compreende?

Isto é particularmente útil para alguns estabelecimentos comerciais que não podem aguardar muito tempo, evitando enormes filas.

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

23 horas atrás, Sandro TC disse:

Olá, Nelson.

O Timeout do ACBrMonitorPLUS (campo "Timeout em segundos" em DFe | Geral | Diversos) possui valor padrão 15.
Modifiquei para o valor 5 e, mesmo se o envio de uma NFC-e demorar mais do que 5 segundos, o ACBr continua aguardando pela resposta da Sefaz.
Eu acreditei que se o ACBr não receber resposta em 5 segundos (valor que configurei para o Timeout) ele me retornaria um arquivo txt de resposta com mensagem de timeout, e não a resposta da Sefaz.

Gostaria que o ACBr parasse de aguardar pela resposta da Sefaz se a resposta não chegar em, por exemplo, 5 segundos.
Preciso disso para que minha aplicação decida emitir a NFC-e em contingência automaticamente se não chegar resposta nesse tempo, compreende?

Isto é particularmente útil para alguns estabelecimentos comerciais que não podem aguardar muito tempo, evitando enormes filas.

Desde já agradeço.

Experimente o TimeOut da Guia [Monitor]

Link para o comentário
Compartilhar em outros sites

Obrigado pela dica, Nelson.
Mas o campo timeout da guia Monitor refere-se à comunicação TCP/IP e eu utilizo a comunicação via arquivos TXT.


acbr-timeout.png

 

O colega marcosanjos também teve a mesma dúvida e não obteve resposta ainda, conforme a seguir.

 

Editado por Sandro TC
Adição de link
Link para o comentário
Compartilhar em outros sites

  • Moderadores
1 hora atrás, Sandro TC disse:

Mas o campo timeout da guia Monitor refere-se à comunicação TCP/IP e eu utilizo a comunicação via arquivos TXT.

Boa tarde, o ACBrMonitor não pode interferir no retorno do webService, gerando uma resposta antes do retorno do próprio WebService. Por isso essa configuração dever ser feita no TimeOut do WebService(Aba DFe / Geral). A resposta do ACBrMonitor deve ser a resposta de retorno do WebService ou de TimeOut do WebService...

Verifique também na aba Geral / WebServices: (Retorno de Envio NFe - Aguardar / Tentativas / Intervalo). Desmarque a opção Ajuste automático e deixe os valores = 0 

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
4 minutos atrás, Sandro TC disse:

Obrigado, José M. S. Junior.

Poderia, por favor, explicar a função exata de cada opção que você descreveu?

Aguardar - 
Tentativas - 
Intervalo - 

 

Convido a assinar o SAC nele tem disponíveis alguns videos e webinars com detalhes específicos que está a pedir aqui.

ajuda o projeto e o projeto lhe ajuda.

  • Curtir 1
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

  • Fundadores
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2280 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.