Ir para conteúdo
  • Cadastre-se

dev botao

LOGICA ENVIO DE NFCe


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

Recommended Posts

Caros descobri que a logica que utilizo na NFe não serve para a NFCe.

Na NFe eu 

Try
   gerar_nfe
   // ENVIAR
   ACBrNFe.Enviar(iLote,True,False) <<< ASSINCRONO
   // PEGAR RETORNOS E TRATAR
   if ACBrNFe.WebServices.Retorno.cStat = 100 then ....else < nota nao enviada tratar >


EXCEPT
  // PEGAR EXCEÇÃO E FAZER CONSULTA
END;

Entretanto tem momentos que existe um retorno cStat = 0 acho que na NFce :  ACBrNFe.Enviar(iLote,True,True); << sincrono

acaba caindo no bloco  < nota nao enviada > , logico que isso ocorrendo, aqui posso consultar pelo XML 

Não sei se fizeram de forma proposital, mas o XML que era assinado e gravado, agora passou tanto ele quanto o de retorno passou a ter a gravação do retorno

Dai que PRIMEIRO verifico no XML gerado se o cStat= 100 e NORMALIZO no banco e se não tiver eu consulto pelo xml.

A unica informação que não consigo no meto de consulta é o recibo, mas não sei se por sincrono esse recibo não existe

Estou procedendo de forma correta ?

Att.

Antonio Carlos

 

Editado por Antonio Carlos L
Link para o comentário
Compartilhar em outros sites

Estou no RJ passo essa informação pois não sei se cada webservice tem uma forma de proceder, o que vejo é que procedo ao envio e quando vou proceder a leitura não existe retorno. Com sua resposta  ACBrNFe1.WebServices.Enviar.cStat voce quer dizer que a resposta está no envio no modelo 65 ? Mas isso não é válido com o modelo 55 ? 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Antonio,

Se tratando da NF-e, ou seja, nota modelo 55 o envio no modo assíncrono, portanto só sabemos se a nota foi autorizada ou não após realização da consulta.

Ao enviar o que temos como resposta é o numero do recibo, ao consultar informado o numero do recibo sabemos se a mesma foi autorizada ou não.

Por outro lado a NFC-e, ou seja, nota modelo 65 o envio pode ser pelo modo assíncrono (funcionamento igual ao da NF-e) ou pelo modo síncrono.

Se o envio ocorrer pelo modo síncrono o que temos com resposta logo após o envio já é o resultado do processamento, ou seja, autorizada ou não.

O método Enviar possui 3 parâmetros sendo que o último se não for informado o valor padrão é False, isso significa que o envio será pelo modo Assíncrono.

Se formos enviar NF-e o terceiro parâmetro sempre deverá ser False a não ser que alguma SEFAZ venha disponibilizar o modo Síncrono para a NF-e.

Se formos enviar NFC-e o terceiro parâmetro deverá ser False caso o lote tenha 2 ou mais notas ou True caso o lote tenha somente uma nota.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Oi ítalo, bom dia, obrigado pela resposta. No meu caso a nota nfce sempre será enviada uma a uma então será true. A solucao passada foi utilizar o métodoACBrNFe1.WebServices.Enviar.cStat ao invés do ACBrNFe.WebServices.Retorno.cStat como forma de saber se foi autorizada. Qual a diferença entre os dois ? Percebi que depois de uma atualização do ACBrNFe tanto no modelo 55 e 65 o XML gerado e assinado, que era salvo apenas caso fosse necessário consulta posterior,  passou a conter o retorno tal qual o XML de retorno. Isso será o padrão ou é um erro ?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • Consultores

Antonio,

No envio Síncrono não se faz necessário realizar uma consulta, pois ao enviar o lote contendo apenas UMA nota a SEFAZ já retorna o protocolo de autorização caso a mesma tenha sido autorizada.

Dai o motivo de ler o status do Enviar em vez do de Retorno.

Desculpe não entendi direito a sua segunda pergunta, reformule ela novamente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Oi Italo, obrigado pela atenção.

Eu ate postei isso em outro tópico, mas não obtive resposta.

Mando Gerar o XML, e salvo ele em uma pasta, ( a esse xml denominei de básico ) que uso para consultas quando algo da errado.

Depois ele é transmitido, adicionado o protocolo em outra pasta.

Não se se isso sempre ocorreu e eu nunca prestei atenção, mas a partir da atualização de 23/10 o xml gerado, passou a conter também o protocolo, ou seja o componente esta fazendo isso tanto no XML transmitido como no gerado, por isso a pergunta se isso é default ou um erro.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Antonio,

Se o XML ainda não foi enviado para a SEFAZ é impossível que o mesmo já tenha o protocolo de autorização.

Agora após gerar o XML (eu preciso verificar) pode ser que o mesmo venha ser automaticamente assinado.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Antonio,

O protocolo é acrescentado no XML somente depois do seu envio a SEFAZ.

Se após alimentar o componente com os dados da venda você executar o método GravarXML será salvo em disco o XML sem assinatura e sem protocolo como é de se esperar.

Por outro lado se após alimentar o componente, você executar o método Assinar será salvo em disco o XML com a assinatura e sem o protocolo como é de se esperar.

Um detalhe importante, antes de alimentar o componente com os dados da primeira nota (uma vez que podemos ADD até 50 notas) devemos executar o seguinte linha:

 ACBrNFe1.NotasFiscais.Clear;
 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Oi Italo estou fazendo assim para que não haja duvida :

1 - Gero o XML;

2 - Gravo o XML gerado na pasta GERADOS, através de  GravarXML(Nome_do_arquivo)

o nome desse arquivo é a chave + a extensão  -nfe.xml  

Neste ponto o xml esta sem assinatura e protocolo

3 -  ACBrNFe.Enviar(iLote,True,False)

Em desenvolvimento acaba sendo sempre autorizado, dai que o Acbr salva no local definido em Arquivos o xml autorizado com a assinatura e protocolo

Mas se vou abrir o xml da pasta GERADOS ele TAMBÉM, neste momento, esta com a assinatura e o protocolo.

Ficou claro ?

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Antonio,

Pelo que eu entendi o XML referente a NF-e esta sendo salvo em duas pastas distintas, correto?

Se sim, acho que encontrei o motivo:

Quando você utiliza o GravarXML você acaba setando uma propriedade chamada NomeArq.

O componente ao atualizar o XML com o protocolo de autorização executa as seguintes linhas:

            // Salva o XML da NF-e assinado e protocolado
            if NaoEstaVazio(NomeArq) and FileExists(NomeArq) then
              FPDFeOwner.Gravar( NomeArq, XML );  // Atualiza o XML carregado

            GravarXML; // Salva na pasta baseado nas configurações do PathNFe

No IF ele checa se a propriedade NomeArq esta vazia ou não, no seu caso não esta, portanto o XML é salvo com a assinatura e protocolo de autorização.

Depois é executado o GravarXML que vai salvar o XML com a assinatura e com o protocolo na pasta definida em PathNFe.

Agora caso você queira manter o XML sem assinatura (não sei para que?) e sem protocolo na pasta "GERADOS" será preciso após executar o GravarXML(Nome_do_Arquivo) atribuir uma string vazia a propriedade NomeArq.

Por exemplo:

ACBrNFe1.NotasFiscais.Items[X].NomeArq := '';

Onde X é a posição da nota dentro da lista, caso você tenha apenas uma nota o valor de X é zero.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Obrigado, bom Italo, eu mantenho esse XML apenas para quando não ocorre retorno eu efetuar a consulta pelo xml, creio ate ser sido sugerido isso no forum mesmo por um dos moderadores. Mas para mim não tem nenhum problema ele ser assinado também, apenas qeria saber se não estava imaginando o que não existe. Obrigado

Link para o comentário
Compartilhar em outros sites

  • Consultores

Antonio,

Na minha aplicação depois que o componente é alimentado com os dados pertinentes a venda, executo o método Assinar e depois o Validar e por fim o Enviar.

Desta forma se a minha aplicação chegar a enviar eu tenho certeza que o XML foi gerado assinado e validado.

Caso ocorra algum problema no retorno da SEFAZ, ou seja, queda de conexão com a internet ou timeout, o procedimento a ser feito é: carregar o XML assinado e depois executo o método Consultar.

Se o problema realmente foi no retorno e se nessa consulta tudo ocorrer bem com a conexão e a nota foi autorizada, o componente se encarrega de acrescentar o protocolo de autorização ao XML.

Desta forma o XML fica completo, ou seja, assinado e protocolado, portanto passa a ser um documento fiscal eletrônico com validade jurídica.

Desculpe, mas um XML de uma NF-e sem assinatura não serve para nada.

Não serve para ser enviado para SEFAZ e nem para realizar a consulta em caso de falha no retorno.

Pois para ser enviado precisa estar assinado e um XML sem assinatura e com protocolo de autorização também não serve para nada, pois não tem validade.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

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.