Boa prática para o tratamento do retorno 105 - Lote em processamento

4,679 views
Skip to first unread message

Evandro

unread,
Jul 10, 2013, 5:57:14 AM7/10/13
to nfe...@googlegroups.com
Srs. bom dia!

Qual a melhor pratica para se tratar o retorno 105 - Lote em processamento?

Visto que num script corrido esse retorno pede um tratamento mais especial.

Atrasar o processamento do script e refazer a chamada do metodo getProtocol ou realmente tentar algum tempo depois num script a parte?

Att,

Roberto Leite Machado

unread,
Jul 10, 2013, 6:05:19 AM7/10/13
to nfe...@googlegroups.com
Evandro;

Nesses casos se possível deve ser retornado a informação ao usuário e permitir que ele refaça a solicitação novamente algum tempo depois.

Eu tinha uma rotina automática que ficava em loop, mas isso se mostrou uma péssima ideia pois :
1 - ficava as vezes tempo demais e abortava o processo no servidor, causando outros problemas
2 - o excesso de tentativas pode ser bloqueado pela própria sefaz 

As minhas rotinas agora sempre retornam para o usuário cada resposta do SEFAZ e se a tarefa não foi concluída não altero o status da NFe (ou seja não passa para a etapa seguinte) até que retorne um status conclusivo.

Roberto

Evandro

unread,
Jul 10, 2013, 6:22:23 AM7/10/13
to nfe...@googlegroups.com
Roberto,

É o tipo de situação que requer uma consolidação melhor do script para poder se aplicar uma boa solução, e as vezes na angustia de atender o sistema com "um clique", isso se complica.

E nessa parte do retorno 105 que obviamente acontece nos momentos mais inesperados, meu script tem se perdido

Roberto Machado

unread,
Jul 10, 2013, 6:32:23 AM7/10/13
to nfe...@googlegroups.com
Exatamente ... eu adotei um sistema onde cada "fase" da NFe necessita de uma intervenção do usuário :

- emite (aqui pode retornar erro de dados na primeira filtragem/validação)
- assina (aqui pode retornar erro de dados na validação com o xsd)
- envia (aqui pode retornar erro ou indisponibilidade da SEFAZ)
- consulta (nesse ponto da consulta do recibo, pode haver esse caso 105 ou um erro da SEFAZ)
- imprime danfe
- envia email (isso eu deixo mais automático, dependendo do cadastro do destinatário)
 
Roberto

Evandro

unread,
Jul 10, 2013, 6:55:24 AM7/10/13
to nfe...@googlegroups.com
É.. o que eu fiz depois dos problemas de comunicação com o SEFAZ foi gravar o status do passo a passo das execuções no MySQL, mas ainda está a nível de log, não impactando nos intermédios da execução, que como lhe informei ainda é corrido, em um único método.

Hoje o meu script ao retornar 105, aguarda 30 segundos e chama o getProtocol novamente... o perigo esta em duas partes que eu vejo, nesse absurdo de retardo do php e também que o getProtocol só irá ser chamado 2 vezes, sendo a primeira vez e esta ultima após os 30 segundos, não to fazendo looping na execução, mas não justifica.

Fernando Mertins

unread,
Jul 10, 2013, 12:04:09 PM7/10/13
to nfe...@googlegroups.com
Olá, eu faço 3 tentativas, aguardando alguns segundos entre cada uma. Ou seja: assino, valido e transmito a NF-e. Aguardo os 5 segundos e consulto o lote. Até aqui é corrido, sem loops.

Agora em diante faço um loop de no máximo 3 repetições, tentando consultar o lote. Se após a 3ª tentativa continuar em processamento, retorno erro ao usuário e ele deve por conta própria mais adiante tentar consultar novamente.

Agora tem um ponto *muito* importante aqui: se você ainda não tem o retorno do lote, como saber se a NF-e foi autorizada, denegada ou rejeitada? É um grande ponto de interrogação, não tem como saber... Então o que precisamos garantir é que o usuário não consiga refazer o processo de emissão da NF-e e sim apenas a consulta do lote.



--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você está recebendo esta mensagem porque se inscreveu no grupo "NFePHP" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para nfephp+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Roberto Machado

unread,
Jul 10, 2013, 12:21:21 PM7/10/13
to nfe...@googlegroups.com
Exato... o processo parou em um ponto e desse ponto em diante tem que aguardar uma resposta ... não é algo que me deixe muito confortável mas é assim que funciona.
--
Roberto
Nisi utile est quod facimus stulta est gloriae (Julius Phaedous)

Evandro

unread,
Jul 10, 2013, 1:30:21 PM7/10/13
to nfe...@googlegroups.com
Interessante que sempre na primeira emissão retorna 105.

Vou ser franco com vcs, após ter colocado a segunda chamada pra 30 segundos, nao retornou mais o 105, deve ter um timer intermediario nessas ações quando o lote ainda não é processado. Agora, minha preocupação é tbm com o meu servidor, mesmo eu gerando nota a nota.

Não tem jeito, se quiser dar um conforto maior pro operador, ou até mesmo garantir que o mesmo não execute nada em paralelo, pelo que venho observado, so fazendo essas magias no codigo.

Tenho duas linhas pra seguir, loop moderado ou step-by-step

Quem sabe os dois

Abs,

Evandro

Roberto Leite Machado

unread,
Jul 10, 2013, 2:33:46 PM7/10/13
to nfe...@googlegroups.com
Evandro;

Sempre mantenha um "sleep" entre o envio da NFe e a busca do protocolo de pelo menos 1 minuto, eu mesmo mantenho até mais ...

Roberto 

Fernando Mertins

unread,
Jul 10, 2013, 4:59:33 PM7/10/13
to nfe...@googlegroups.com
Mas Roberto, eu aguardo apenas 5 segundos entre o envio do lote e a consulta do processamento, não é este o tempo mínimo sugerido pelas boas práticas? Você aguarda um minuto mesmo? Em muitos casos a empresa tem pressa para emitir a NF-e e 1 minuto de espera pode atrapalhar a logística, hehehe...


Evandro

unread,
Jul 10, 2013, 6:46:42 PM7/10/13
to nfe...@googlegroups.com
Bom.. isto me leva a crer que racionalmente não estou muito enganado, por mais critico que pareça.

Neste momento eu utilizo um sleep 15 na primeira execução, e um sleep 30 na segunda execução, pela lógica se colocar 45 na primeira execução, cairá drasticamente a chance do script passar para a segunda execução, isso no meu caso.

Como o Fernando falou, acho que isso deve impactar caso a demanda seja diferente do "nota-a-nota", o que pode inviabilizar boas praticas.

Mas imagino que neste caso, deve ser aplicar um processo diferenciado nos scripts, talvez uma rotina mais robusta com mais envios e respostas simultâneas (como encontrada no emblemático método Auto, com muitas mudanças é claro)




On Wednesday, July 10, 2013 6:57:14 AM UTC-3, Evandro wrote:

Vinícius Couto

unread,
Sep 11, 2016, 9:05:26 AM9/11/16
to NFePHP
Pessoal, sei que o post é antigo mas surgiu aqui uma dúvida que acredito já terem resolvido no sistema de vocês. Quando acontece essa situação do lote ficar em processamento e mesmo depois de alguns minutos permanece nesse status eu posso "reservar" o número da nfe que foi enviado para essa nota que está em processamento e a próxima emitir com o próximo número? 

Por exemplo a nota de número 100 está em processamento e o usuário precisa enviar outra. Posso enviar a 101 sem saber se a 100 foi autorizada, rejeitada ou denegada? 

Se sim, suponhamos que a nota de número 100 tenha sido rejeitada e a nota de número 101 foi autorizada. Eu posso emitir a nota de número 100 com a data posterior à nota 101?

Desde já muito obrigado...

Roberto Machado

unread,
Sep 11, 2016, 9:13:20 AM9/11/16
to nfe...@googlegroups.com
A resposta é NÃO ....

Não podem ser emitidas notas com numeração retroativa !!

Se a nota está em espera e outra for emitida:

1 - Nota anterior APROVADA, registre a nota normalmente 
2 - Nota anterior DENEGADA, registre a nota denegada ... elá não pode ser usada e esta congelada
3 - Nota anterior REJEITADA, registre a rejeição e INUTILIZE o numero, essa nota DEPOIS de corrigida deve ser reenviada com um novo numero 


Roberto

Vinícius Couto

unread,
Sep 11, 2016, 3:09:24 PM9/11/16
to NFePHP
Obrigado Roberto, bem esclarecedor.

rbsoftte...@gmail.com

unread,
Dec 21, 2018, 1:52:47 PM12/21/18
to NFePHP
Notas rejeitadas nao é preciso inutilizar o numero!!! ;)


Em domingo, 11 de setembro de 2016 10:13:20 UTC-3, linux.rlm escreveu:

Roberto Machado

unread,
Dec 24, 2018, 5:39:00 AM12/24/18
to nfe...@googlegroups.com
Sim o colega está certo, não se deve inutilizar notas rejeitadas e sim CORRIGI-LAS e reenviar !!

Somente devem ser inutilizadas notas PULADAS (números não usados, que não resultaram em nota aprovada ou denegada) !

Roberto

Reply all
Reply to author
Forward
0 new messages