Ir para conteúdo
  • Cadastre-se

dev botao

Tratamento para envio de nfc-e offline


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

Recommended Posts

  • 4 semanas depois ...

Olá amigos, boa tarde!
Estou com um problema com relação à contingência e talvez alguém desse tópico possa me ajudar.
Quando o meu aplicativo emite a NFC-e em contingência o arquivo.xml  armazenado não possui o protocolo de autorização.
Quanto eu envio o mesmo arquivo.xml em um segundo momento, eu recebo o protocolo de autorização e armazeno no registro da venda no banco de dados.
Existe uma forma de recuperar esse arquivo.xml com o protocolo no corpo no momento em que envio o xml da nota Offline?

Alguns sistemas contábeis só importam o arquivo.xml se o o mesmo estiver autorizado, ou seja, estiver com o protocolo de autorização no corpo do arquivo.

Algum amigo pode me informar algo a respeito?
 

Link para o comentário
Compartilhar em outros sites

Categoria 12029 = latência da internet (ruim no momento, muito baixa)...

Aproveitando, Régys te pergunto em que momento usaria

Eu prefiro tratar os codigos de retorno:

         (pos('12007 - ', E.Message.ToUpper) > 0) or // erro de conexão
         (pos('12002 - ', E.Message.ToUpper) > 0) or // timeout
         (pos('12029 - ', E.Message.ToUpper) > 0) or // limite de tempo de conexão
         (pos('ERRO NAO CATALOGADO', E.Message.ToUpper) > 0) then // erros de tratamento do webservice

 

Obrigado,

Leão

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
Em 19/11/2015 15:03:46, desenvolvedor2 disse:

Olá amigos, boa tarde!
Estou com um problema com relação à contingência e talvez alguém desse tópico possa me ajudar.
Quando o meu aplicativo emite a NFC-e em contingência o arquivo.xml  armazenado não possui o protocolo de autorização.
Quanto eu envio o mesmo arquivo.xml em um segundo momento, eu recebo o protocolo de autorização e armazeno no registro da venda no banco de dados.
Existe uma forma de recuperar esse arquivo.xml com o protocolo no corpo no momento em que envio o xml da nota Offline?

Alguns sistemas contábeis só importam o arquivo.xml se o o mesmo estiver autorizado, ou seja, estiver com o protocolo de autorização no corpo do arquivo.

Algum amigo pode me informar algo a respeito?
 

Olá...

Rapaz, no momento que você consegue fazer o envio ONLINE da sua nota, que inicialmente foi emitida OFFLINE, o próprio componente salva o XML com o protocolo no diretório especificado por você.

Dá uma conferida ai

Link para o comentário
Compartilhar em outros sites

  • Moderadores
3 horas atrás, Leao disse:

Categoria 12029 = latência da internet (ruim no momento, muito baixa)...

Aproveitando, Régys te pergunto em que momento usaria

Eu prefiro tratar os codigos de retorno:

         (pos('12007 - ', E.Message.ToUpper) > 0) or // erro de conexão
         (pos('12002 - ', E.Message.ToUpper) > 0) or // timeout
         (pos('12029 - ', E.Message.ToUpper) > 0) or // limite de tempo de conexão
         (pos('ERRO NAO CATALOGADO', E.Message.ToUpper) > 0) then // erros de tratamento do webservice

 

Obrigado,

Leão

No envio, ao enviar eu texto em um bloco try except estes erros.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Boa tarde,

Estou com um problema para obter esses retornos que vocês estão falando. No meu caso só estou conseguindo obter a mensagem, exemplo: 

#$D#$A'O nome ou o endereço do servidor não pôde ser resolvido - URL:https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeAutorizacao3 - SOAPAction:http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao'

 

Meu fonte esta da seguinte maneira:


                try
                   cNFe.Enviar(1, False, True);
                except
                   On E: Exception do
                      begin
                         showmessage(e.message);
                      end;
                end;

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Boa tarde pessoal,

Consegui solucionar o problema da emissão de um cupom caso ocorra o erro do buraco negro, gero uma nova numeração para a venda, e depois verifico se o cupom anterior foi autorizado ou não na sefaz, se foi realizo um cancelamento do mesmo, senão inutilizo a numeração... O grande porém é se esse cupom foi autorizado mas por algum motivo (CONEXÃO DE INTERNET, SEFAZ FORA) não consegui realizar o cancelamento no prazo de 30 minutos! hoje faço uma devolução do mesmo, porém na receita esse cupom esta duplicado para o cliente! alguém já enfrentou esse problema ? pode haver dois cupons autorizados para o cliente porém um com uma nfe de devolução atrelada a ele? Desde já agradeço a atenção de todos...  

 

Link para o comentário
Compartilhar em outros sites

  • 8 meses depois ...
  • 2 meses depois ...

Olá amigos, 

estou tendo um problema relacionado a timeout.

Em certos clientes do interior, a internet é muito ruim, via rádio, há perda de pacotes, cai no meio da transmissão, e por aí vai...

Quando isso acontece durante o processo de envio o sistema leva muito tempo para retornar uma exception, as vezes fica 2 ou 3 minutos processando o envio.

Estou tentando usar o timeout do componente, especificamente a propriedade ACBrNFe.Configuracoes.WebServices.TimeOut=10000, o que eu acredito que faria com que o processo fosse interrompido

caso eu não tivesse um retorno em 10 segundos, mas isso não acontece.

Não sei se estou no caminho certo, agradeço qualquer ajuda,

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois ...

Revivendo o assunto da contingência offline.

Notei que na loja Decathlon (pelo menos aqui em Londrina) todas as NFCe saem em modo offline, pelo jeito eles não transmitem no momento da venda.

Sei que as práticas discutidas aqui neste tópico englobam maneiras de realizar a venda e transmissão, mas pelo jeito eles não seguem essa ideia.

Agora sobre a legislação, é correto agir desta maneira, tudo offline e transmitir depois?

Londrina - PR

Link para o comentário
Compartilhar em outros sites

  • Moderadores
29 minutos atrás, armando.boza disse:

Agora sobre a legislação, é correto agir desta maneira, tudo offline e transmitir depois?

A SEFAZ de RO já emitiu comunicado ameaçando de aplicar penalizações para as empresas que adotam esse procedimento.

http://www.nfce.sefin.ro.gov.br/lerNoticia.jsp?id=9

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
Em 2015-9-5 at 22:55, Régys Silveira disse:

Eu prefiro tratar os codigos de retorno:

         (pos('12007 - ', E.Message.ToUpper) > 0) or // erro de conexão
         (pos('12002 - ', E.Message.ToUpper) > 0) or // timeout
         (pos('12029 - ', E.Message.ToUpper) > 0) or // limite de tempo de conexão
         (pos('ERRO NAO CATALOGADO', E.Message.ToUpper) > 0) then // erros de tratamento do webservice

Eu estava usando essa lógica para descobrir se houve problema na transmissão da nota para entrar em contingência e vinha funcionando, porém de uma hora pra outra parou de funcionar.

Fui investigar e vi que mo message de Exception o formato mudou, não vem mais com o  " - " ao lado do código, está vindo só o código (por exemplo 12007) e a descrição da mensagem.

Mais alguém está passando por isso?

Link para o comentário
Compartilhar em outros sites

  • Moderadores
20 horas atrás, jhoerlle disse:

Eu estava usando essa lógica para descobrir se houve problema na transmissão da nota para entrar em contingência e vinha funcionando, porém de uma hora pra outra parou de funcionar.

Fui investigar e vi que mo message de Exception o formato mudou, não vem mais com o  " - " ao lado do código, está vindo só o código (por exemplo 12007) e a descrição da mensagem.

Mais alguém está passando por isso?

houveram algumas alterações no acbr que podem ter influenciado, bastaria remover o " - " e deixar somente o numero, assim você conseguiria tratar normalmente.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Sim Régys, eu fiz exatamente essa alteração que você comentou removendo o "-", só quis comentar aqui para ver se mais alguém tinha passado pela mesma situação, ou até mesmo alertar para alguém que talvez tenha implementado dessa maneira e possa começar a ter problemas no seu sistema devido a essa mudança.

Obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

23 horas atrás, jhoerlle disse:

Eu estava usando essa lógica para descobrir se houve problema na transmissão da nota para entrar em contingência e vinha funcionando, porém de uma hora pra outra parou de funcionar.

Fui investigar e vi que mo message de Exception o formato mudou, não vem mais com o  " - " ao lado do código, está vindo só o código (por exemplo 12007) e a descrição da mensagem.

Mais alguém está passando por isso?

Mesmo vindo como você citou. Ainda está funcionando aqui no meu código. Está entrando na e condição sem tirar o "-".

Link para o comentário
Compartilhar em outros sites

53 minutos atrás, carlosinfoteen disse:

Mesmo vindo como você citou. Ainda está funcionando aqui no meu código. Está entrando na e condição sem tirar o "-".

Que bom Carlos, menos mal assim.

Eu postei porque pra mim não estava mais funcionando, estava passando reto na exception e não entrando no meu "if" que testava os códigos.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
Em 22/10/2015 at 20:15, doidopb disse:

Acho que "matei" o problema através do vídeo https://www.youtube.com/watch?v=znVzIe8T4PE. E a solução é mais uma questão de não observar o óbvio do que pode ser feito.

Se observarem o vídeo e trazerem a nossa realidade do ACBR, a contingência só pode acontecer através de 2 motivos:

1 - Falta de internet

2 - Timeout (ou o tal BURACO NEGRO citado no vídeo)

No caso da falta da internet é fácil, emite em contingência e pronto. Pois temos a certeza que a nota não foi autorizada.

Vejo que temos 2 problemas nessa rotina, um é o tempo de cancelamento caso a empresa fique sem internet, porém o principal é que a receita deixa bem claro "uma das exigências legais é que o cancelamento ocorra antes da ocorrência do fato gerador". Ou seja, cancelar uma nota depois que a venda já aconteceu (cliente já levou o produto) é errado e pode dar dores de cabeça

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
Em 09/06/2017 at 12:55, Régys Silveira disse:

houveram algumas alterações no acbr que podem ter influenciado, bastaria remover o " - " e deixar somente o numero, assim você conseguiria tratar normalmente.

Desculpem reabrir esse tópico.. Comecei a desenvolver minha contingência e quando vi a solução do Regis para o tratamento de erros e que o erro 1202 era só um problema de conexão fiquei feliz..

Mas ao fazer testes desconectando a internet na hora da emissão,constatei que o erro 1202 também entra em 'buraco negro' . Quando fui rodar a rotina que envia e valida os xmls,deu duplicidade com diferença na chave de acesso,ou seja ela foi transmitida,porém não recebida. 

Nesse caso como fazer? pulo a numeração no erro 1202 e emito a próxima em contingencia? 

Link para o comentário
Compartilhar em outros sites

4 horas atrás, Aprendiz disse:

Desculpem reabrir esse tópico.. Comecei a desenvolver minha contingência e quando vi a solução do Regis para o tratamento de erros e que o erro 1202 era só um problema de conexão fiquei feliz..

Mas ao fazer testes desconectando a internet na hora da emissão,constatei que o erro 1202 também entra em 'buraco negro' . Quando fui rodar a rotina que envia e valida os xmls,deu duplicidade com diferença na chave de acesso,ou seja ela foi transmitida,porém não recebida. 

Nesse caso como fazer? pulo a numeração no erro 1202 e emito a próxima em contingencia? 

Bom dia,

dá uma conferida no Manual_de_especificacoes_tecnicas_da_Contingencia_Off-line_versao_2.0.pdf disponível no portal da NFe.

Lá existe a sugestão de "pular a numeração" da nota/cupom quando detectado erro de comunicação, justamente a fim de evitar a duplicidade na autorização.

Att

Ricardo

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, RicardoVoigt disse:

Bom dia,

dá uma conferida no Manual_de_especificacoes_tecnicas_da_Contingencia_Off-line_versao_2.0.pdf disponível no portal da NFe.

Lá existe a sugestão de "pular a numeração" da nota/cupom quando detectado erro de comunicação, justamente a fim de evitar a duplicidade na autorização.

Att

Ricardo

Boa sugestão Ricardo, eu iria postar isso agora também.

Este manual é bastante didático na explicação dos procedimentos.

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...

Pessoal tenho uma dúvida com relação a esse procedimento

-----  Gero o XML com a propriedade 
  ACBrNFe1.Configuracoes.Geral.FormaEmissao :=teOffLine ; 
-----Depois Imprimo a NFce sem enviar para a Sefaz
  ACBrNFe.NotasFiscais.GerarNFe;  <--- gera o xml corretamente
  ACBrNFe.NotasFiscais.Assinar; <-- assina utilizando o certificado
  ACBrNFe.NotasFiscais.Valida; <-- valida o xml perante os schemas
  ACBrNFe1.NotasFiscais.Imprimir ;

Ocorreu tudo bem, suponhamos que fiz 10 cupons offline, depois quero transmiti-los..
como eu faço para carregar os 10 cupons eu tenho que gerar novamente o XML mudando a propriedade
ACBrNFe1.Configuracoes.Geral.FormaEmissao :=teOffLine ;  para 
ACBrNFe1.Configuracoes.Geral.FormaEmissao :=teNormal ;


e atualizar os Xmls de cada Nota do lote, pois agora a sefaz os retornara com os dados de transmissão..

como eu faço para pegar o retorno dos 10 cupons para atualizar no meu BD?

 

e onde obtenho esse retorno   (pos('12007 - ', E.Message.ToUpper) > 0) or // erro de conexão 

???

Abs

Link para o comentário
Compartilhar em outros sites

  • Moderadores
16 minutos atrás, netsolutions disse:

como eu faço para carregar os 10 cupons eu tenho que gerar novamente o XML mudando a propriedade
ACBrNFe1.Configuracoes.Geral.FormaEmissao :=teOffLine ;  para 
ACBrNFe1.Configuracoes.Geral.FormaEmissao :=teNormal ;

Você não deve mudar nada no XML, apenas carregar e enviar.
 

ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.LoadFromFile('C:\PATH\TO\ARQUIVO-nfe.xml', False);
ACBrNFe1.WebServices.Envia(nLote, True);

O envio da NFCe é síncrono e só permite o envio de um arquivo por vez.

19 minutos atrás, netsolutions disse:

como eu faço para pegar o retorno dos 10 cupons para atualizar no meu BD?

Da mesma forma que quando tratando o envio normal.
 

cStat := ACBrNFe1.WebServices.Enviar.cStat;

XML := ACBrNFe1.NotasFiscais.Items[0].XML;
nProt := ACBrNFe1.NotasFiscais[0].NFe.procNFe.nProt;
chNFe := ACBrNFe1.NotasFiscais[0].NFe.procNFe.chNFe;
dhRecbto := ACBrNFe1.NotasFiscais[0].NFe.procNFe.dhRecbto;

 

31 minutos atrás, netsolutions disse:

e onde obtenho esse retorno   (pos('12007 - ', E.Message.ToUpper) > 0) or // erro de conexão 

No exception gerado pelo método de envio:
 

try
  ACBrNFe1.WebServices.Envia(nLote, True);
except
  on E:Exception do
  begin
    if (Pos('12007 - '. E.Message.ToUpper) > 0) or // erro de conexão
    ...
  end;
end;

 

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

@BigWings  Muito obrigado pelos esclarecimentos!  Foi bem claro acho que conseguirei resolver tudo aqui! abs

@BigWings só mais uma coisa então quando eu faço isso ... 

 

try
  ACBrNFe1.WebServices.Envia(nLote, True);
except
  on E:Exception do
  begin
    if (Pos('12007 - '. E.Message.ToUpper) > 0) or // erro de conexão
    ...
  end;
end;

Se o retorno for falta de conexão eu posso fazer o envio offline para posteriormente transmitir? ou seja.. eu deixo por padrão sempre enviar o cupom para a sefaz e caso aconteça o erro por falta de conexão e emito o cupom offline e depois quando retornar a internet só reenvio o mesmo??

 

 

Link para o comentário
Compartilhar em outros sites

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