Como funciona emissão de NFC-e em contingência?

303 views
Skip to first unread message

Ian Cléver Sales Fernandes

unread,
Dec 5, 2016, 8:43:06 AM12/5/16
to NFePHP
Bom dia,

Estou desenvolvendo um módulo de emissão de NFC-e, já fiz as seguintes partes do processo:

geração do xml;
assinar xml;
validar xml;
enviar xml;
adicionar protocolo;
envio por email.

Esse é "o caminho feliz", agora estou programando a parte de contingência, mas eu não entendi direito onde eu devo proceder com a ativação e desativação da emissão em contingência. 

Sei que devo usar o método "ativaContingencia" para habilitar a emissão em contingência, mas eu não entendi onde eu irei verificar se a SEFAZ habilitou o SVC. No envio da nota para a SEFAZ ele me retorna alguma exception indicando que a SEFAZ esta com problemas técnicos?
Como proceder?

Roberto Machado

unread,
Dec 5, 2016, 8:58:12 AM12/5/16
to nfe...@googlegroups.com
Estou refatorando a classe e escrevi um documento que pode te ajudar 


Ignore a parte especifica referente a classe pois não se aplica a versão atual da mesma.

Para NFCe em teoria podemos usar a contingência SVC (AN ou RS) e OFFLINE, mas isso é estabelecido também por legislações especificas de cada estado da federação, por exemplo em SP não é permitido o uso da contingência OFFLINE em SP é obrigatório o uso do SAT@

Não tem como saber se a SEFAZ ativou a contingência se não for consultada a pagina da SEFAZ, as vezes pode demorar de minutos a horas entre o inicio de problemas na SEFAZ e a ativação da contingência. O caso de NFCe não tenho muita certeza como proceder pois não sou usuário desse tipo de documento.


Roberto

Roberto Machado

unread,
Dec 5, 2016, 9:11:00 AM12/5/16
to nfe...@googlegroups.com
Retificando ... para NFCe apenas as contingências OFFLINE, FS-DA e SAT@ são aceitas !!! 

Portanto no caso de NFCe a ativação da contingência pela classe ToolsNFe é INÚTIL, pois não haverá nenhuma transmissão em contingência FS-DA, nem OFFLINE (evidentemente) e a emissão com o SAT@ é diferente e não requer envio posterior. 

Roberto 

Ian Cléver Sales Fernandes

unread,
Dec 5, 2016, 9:47:03 AM12/5/16
to NFePHP
Então no caso da OFFLINE vai ser só gerar o xml com as configurações de contingência, assinar e gerar o DANFE no caso?

Eu penso o seguinte (pode ser que eu esteja falando besteira), considerando que eu envie a nota para a SEFAZ e ocorra timeout, não seria esse o caso de considerar que a SEFAZ está offline, ativar a contingência e passar a emitir as notas em contingência.

No caso dessa primeira nota que foi com o envio normal e se perdeu(ou não) no caminho, seria o caso emitir uma nota em contingência, com uma numeração diferente e enviar ela para a SEFAZ quando os problemas pararem. Nesse momento seria verificado também se aquela primeira nota que se perdeu foi autorizada, e caso tenha sido autorizada cancela ela e mantem a nota que foi emitida em contingência.

No caso a questão de desativar a contingência isso ficaria a critério do cliente, no caso de um PDV isso viria na hora que fosse fazer o fechamento do caixa, onde obrigatoriamente todas as notas em contingência seriam enviadas para a SEFAZ, já que o tempo máximo para envio dessas notas para a SEFAZ varia de 24 a 48 hs dependendo do estado.

O que acha?

Roberto Machado

unread,
Dec 5, 2016, 10:17:58 AM12/5/16
to nfe...@googlegroups.com
É difícil escrever sobre isso de forma clara ! Pois existem muitos poréns ...

Como saber como iniciar em contingência ?
Isso depende de um monte de coisas, como o modelo da nota, liberação, legislação (do estado em questão), conhecimento do usuário, e por ai vai.
Considerar entrar em contingência quando ocorre timeout é ABSURDO  !!! e ILEGAL. No caso da NFe (modelo 55) nem adianta tentar enviar para SVC-AN ou SVC-RS sem que tenha havido a liberação pela SEFAZ autorizadora, simplesmente não vai funcionar.
Não tem uma resposta simples para isso.
No caso da NFCe, fora de SP, acredito que não haja problema entrar em contingência OFFLINE mas novamente isso depende da legislação de cada estado. E no caso de SP é só usar o SAT@ (lembre-se que o SAT@ trabalha em USB e não em rede, mas tem alguns aparelhos cujo fabricante fornece conexão por rede a partir de um servidor local).

Como saber quando desativar a contingência ?
A volta de uma condição de contingência para operação normal, até pode ser automatizada, mas teríamos que estudar isso um pouco mais a fundo para não fazer besteira, mas em principio poderíamos buscar o status do serviço e caso estiver novamente "ONLINE" a contingência pode ser desabilitada automaticamente. Apenas teria o cuidado de verificar se o retorna da operação está estável antes de desativar.

Mas como eu disse tem que estudar melhor isso. Eu não sei tudo, preciso discutir isso com outros desenvolvedores para poder estabelecer um critério mais logico e permanente.

Roberto

Ian Cléver Sales Fernandes

unread,
Dec 5, 2016, 1:17:40 PM12/5/16
to NFePHP
Ok, entendi.

Bem semana passada eu tinha visto esse vídeo aqui sobre contingência da NFC-E do pessoal da Daruma, que dizem ser os primeiros a implementar NFC-e no brasil.

O vídeo é longo, de início tem a propaganda(claro), mas depois começa a explicar as idéias sobre a contingência da NFC-e. Não sei se o que eles falam vale de alguma coisa, mas vou deixar o link aqui:


Roberto Machado

unread,
Dec 5, 2016, 2:11:52 PM12/5/16
to nfe...@googlegroups.com
Olha Ian, para mim a explicação da Daruma está muito bem feita mas o FOCO é exclusivamente para NFCe (modelo 65) nunca use esses critérios para NFe (modelo 55).

Mas a explicação deles é realmente muito boa.

Roberto

Denis Dos Santos Silva

unread,
Dec 5, 2016, 4:19:56 PM12/5/16
to NFePHP
Apenas como complemento,

Sobre emissão de NFC-e no tpEmis=9 (contingência offline) conforme os manuais, vale ressaltar que: sua aceitação depende de cada UF.

SP mesmo não aceita, já que a contigência do NFC-e é o S@T, p. ex.
MT e AM, aceitam.

A contingência da NF-e não tem nada com NFC-e
Reply all
Reply to author
Forward
0 new messages