Pular para conteúdo

Processos de Emissão

Para fácil entendimento de como funciona o processo de emissão pelo InvoiCy Framework, disponibilizamos um fluxo em anexo, contendo todas as possíveis situações que possam ocorrer. No processo de emissão vamos tratar a emissão Online e a emissão em Contingência Offline. Para ambos, a função utilizada é a "InvoiCyFramework_EmiteDocumento".

Formas de Emissão

A seguir, detalhamos o ciclo completo de emissão de documentos fiscais eletrônicos (DF-e) gerenciado pelo InvoiCy Framework. Este guia explora os diversos processos de autorização disponíveis, garantindo a continuidade operacional do seu Aplicativo Comercial sob quaisquer condições. A documentação aborda os procedimentos para a Emissão Online (Normal) e os diferentes mecanismos de contingência implementados pelo Framework.

Emissão Online

Este é processo ideal, onde a comunicação entre Aplicação Comercial, InvoiCy Framework, Plataforma InvoiCy e SEFAZ ocorre com sucesso.

Emissão em Contingência

O InvoiCy Framework está preparado para realizar emissões de NFC-e em contingência Offline e SAT. É importante mencionar que a NFC-e tem algumas particularidades em relação ao tipo de contingência conforme a UF em que se está emitindo a NFC-e. Na maioria das UFs exceto CE, SP e SC a contingência utilizada é a do tipo Offline, que consiste em gerar o XML da NFC-e com tpEmis= 9 e transmitir para a Secretária da Fazenda assim que for sanado o problema de conexão ou restabelecido o serviço da SEFAZ.

Em São Paulo a contingência Offline não é permitida, podendo ser utilizado a emissão de CF-e SAT ou então o EPEC (evento prévio de emissão em contingência). O InvoiCy Framework está preparado para emitir CF-e SAT como contingência da NFC-e mediante configurações.

No Ceará e em Santa Catarina existem particularidades que precisam ser tratadas para que seja possível a emissão de NFC-e em contingência. Para isso, entre em contato com a Migrate pelo e-mail integracao@migrate.info informando sua necessidade de implementação.

O Framework trata cada forma de contingência de maneira distinta dependendo da definição do parâmetro "TIPO_CONTINGENCIA", conforme decrito a seguir:

  • Sem Contingência (valor = 0): Ao utilizar esta opção o InvoiCy Framework só realizará emissão de NFC-e se conseguir comunicação com a API da Plataforma InvoiCy. Se o Framework não conseguir estabelecer a conexão com Plataforma InvoiCy, ou se não receber o retorno, o mesmo irá retornar o código 999 para o Aplicativo Comercial.

Caso receba algum retorno de erro da Plataforma, seja alguma rejeição ou falha de comunicação da Plataforma InvoiCy com a SEFAZ, este erro será repassado ao Aplicativo Comercial.

Neste cenário, o documento ficará com o status de Pendente na plataforma InvoiCy, aguardando o retorno da comunicação com a SEFAZ para ser reenviado.

  • Contingência Offline (valor = 1): Ao utilizar esta opção o InvoiCy Framework poderá tratar a contingência offline de duas formas que dependerão dos parâmetros AUTO_INCREMENTA e AUTO_PREENCHE.

É preciso definir se o controle do sequencial será feito pelo InvoiCy Framework ou pelo Aplicativo Comercial, pois isso impactará na forma de integração e utilização do InvoiCy Framework.

Se o sequencial estiver sendo controlado pelo InvoiCy Framework, ao receber um retorno de timeout 108, ele realizará o processo de emissão em Contingência Offline e o pedido de descarte da NFC-e substituída.

Se o controle do sequencial estiver sendo feito pelo Aplicativo Comercial e ocorrer o retorno 108, o mesmo deverá solicitar o descarte do sequencial original (ver ítem Descarte de Documentos) e solicitar novamente a emissão do documento, porém avançando o sequencial. Nesta situação, como o InvoiCy Framework entrou em contingência em função do retorno 108, consequentemente essa próxima tentativa de emissão será realizada em Contingência Offline.

  • Contingência via SAT (valor = 2): Nesta condição, ao receber retornos que indicam falha de comunicação ou SEFAZ SP em contingência, o InvoiCy Framework irá converter o XML da NFC-e em CF-e e realizará a emissão através do SAT.

No momento que o SAT retornar o XML do CF-e autorizado, este poderá ser enviado para armazenamento e gestão na Plataforma InvoiCy, desde que tenha a extensão de importação de documentos contratada.

Para ser utilizada esta opção de contingência é necessário ter a DLL do SAT disponibilizada pelo fabricante e indicar o seu nome e caminho onde está armazenada no computador através do parâmetro DLLSAT e também deve ser chamada a função "InvoiCyFramework_ConfiguraSAT".

Emissão Forçada em Contingência

Em situações onde PDV perder conexão com a Plataforma InvoiCy, o Aplicativo Comercial pode configurar o parâmetro EMITIR_EM_CONTINGENCIA e assim ativar a emissão de NFC-e em Contingência Offline forçada. Quando sanado os problemas de conectividade, este tipo de emissão deverá ser desativada, voltando a emissão online e permitindo a sincronização dos documentos pendentes com o InvoiCy.

Para utilizar esta configuração é preciso que o parâmetro TIPO_CONTINGENCIA esteja definido para 1 = Contingência Offline ou 2 = Contingência SAT.

Cancelamento de Documento

As NFC-es autorizadas e que não tiveram trânsito de mercadorias, podem ser canceladas quando necessário. Já as NFC-es que acobertaram trânsito de mercadorias e por algum motivo precisam ser canceladas, ou as NFC-e que estão fora do prazo de cancelamento, devem ser referenciadas em uma NF-e (modelo 55) de devolução para desfazer a operação de venda.

O cancelamento de documento pode ser realizado chamando a função "InvoiCyFramework_EmiteDocumento". Deverá ser passado um XML contendo os dados do emissor e do documento fiscal a ser cancelado, no campo XML entrada, conforme exemplo abaixo:

<EnvioEvento>
  <ModeloDocumento>NFe</ModeloDocumento>
  <Versao>4.00</Versao>
  <Evento>
    <NtfCnpjEmissor>99999999999999</NtfCnpjEmissor>
    <NtfNumero>100</NtfNumero>
    <NtfSerie>1</NtfSerie>
    <tpAmb>2</tpAmb>
    <EveInf>
      <EveDh>2017-07-18T10:18:21</EveDh>
      <EveFusoHorario>-03:00</EveFusoHorario>
      <EveTp>110111</EveTp>
      <EvenSeq>1</EvenSeq>
      <Evedet>
        <EveDesc>Cancelamento</EveDesc>
        <EvexJust>Cancelamento para testes</EvexJust>
        <EvenProt>0</EvenProt>
      </Evedet>
    </EveInf>
  </Evento>
</EnvioEvento>

Este evento de cancelamento pode ser utilizado tanto para NFC-e emitidos Online ou em Contingência Offline. O prazo do cancelamento normal é de 30 minutos a partir da data e hora de autorização da NFC-e.

Os emissores que controlam o sequencial e contingência, podem utilizar o evento de Cancelamento por substituição (EveTp = 110112) para NFC-e. Em que o emissor deve solicitar o cancelamento por substituição de uma NFC-e, desde que seja emitida outra NFC-e em contingência (tpEmis= 9) para substituir essa primeira operação, respeitando o prazo máximo de 168h, que pode variar para cada UF.

Inutilização de Documentos

A inutilização é utilizada quando ocorre um pulo no sequencial de numeração dos documentos, ou quando um documento é rejeitado e não se deseja corrigi-lo. Neste caso, podemos inutilizar aquela numeração e emitir um novo documento com um novo número. Não existe um prazo limite estipulado pela SEFAZ para realizar a inutilização de uma numeração.

Além do mais, pode ser realizada a inutilização de um único número, ou ainda de uma faixa de números em um único pedido de inutilização. A ação de inutilização pode ser realizada em qualquer momento, bastando chamar a função "InvoiCyFramework_EmiteDocumento" no campo XML entrada, conforme demonstrado no exemplo abaixo:

<Inutilizacao>
  <ModeloDocumento>NFe</ModeloDocumento>
  <Versao>4.00</Versao>
  <CnpjEmissor>06354976000149</CnpjEmissor>
  <tpAmb>2</tpAmb>
  <NumeroInicial>545</NumeroInicial>
  <NumeroFinal>545</NumeroFinal>
  <Serie>35</Serie>
  <Justificativa>Teste de inutilizacao</Justificativa>
</Inutilizacao>

Consulta de Documentos

A consulta de documentos pode ser utilizada para verificar o status de um documento, ou uma faixa de documentos, emitidos anteriormente.

Para realizar a consulta, a Aplicação Comercial deve chamar a função "InvoiCyFramework_EmiteDocumento". Deverá ser passado um XML contendo dados de identificação do emissor, a série e sequenciais dos documentos que se deseja consultar, no campo XML entrada, conforme exemplo abaixo:

<Consulta>
  <ModeloDocumento>NFCe</ModeloDocumento>
  <Versao>4.00</Versao>
  <tpAmb>2</tpAmb>
  <CnpjEmissor>06354976000149</CnpjEmissor>
  <NumeroInicial>1</NumeroInicial>
  <NumeroFinal>10</NumeroFinal>
  <Serie>1</Serie>
</Consulta>

Descarte de Documentos

Durante o processo de emissão dos documentos fiscais podem acontecer inúmeros imprevistos que impedem de obter o status final do documento. Quando o emitente desconhece o que aconteceu com o documento enviado, ou não possui o status final do mesmo, recomenda-se emitir um novo documento, avançando a numeração sequencial, e solicitar o descarte do documento emitido anteriormente.

Por exemplo: emitido o documento do sequencial 100 com tpEmis= 1 (emissão online), mas não recebeu retorno ou recebeu um 108 (timeout), este documento não terá seu DANFE NFC-e gerado, pois o 108 não é um status final. Devido a isto será necessário gerar a mesma venda, mas com numeração 101, que será emitido em contingência Offline (tpEmis= 9) que indiferente de estar autorizada ou não, terá seu DANFE NFC-e gerado para acobertar a venda.

Atenção: O avanço de numeração se faz necessário para evitar a duplicidade de documentos com a mesma chave de acesso.

Este processo de descarte trata a NFC-e 100 que recebeu o 108 timeout como sendo NFC-e substituída e a NFC-e 101 como NFC-e substituta. O processo de descarte consiste em se a NFC-e 100 não constar como autorizada na SEFAZ, deverá ser inutilizado este sequencial 100 e se constar como autorizada, deverá ser cancelada através do evento de cancelamento por substituição.

Atenção: Este processo é nativo no InvoiCy Framework desde que o mesmo esteja configurado para controlar o sequencial.

Caso o controle de sequencial for por conta do Aplicativo Comercial, este deverá estar preparado para receber o retorno 108 do InvoiCy Framework e assim gerar novo XML com avanço do sequencial e junto disponibilizar o XML de parâmetros adicionais para solicitar o descarte da NFC-e que recebeu o 108. Para isso, deve-se considerar o envio do descarte em uma das opçõe a seguir:

Pedido de Substituição

O InvoiCy disponibiliza no layout de integração um grupo chamado “SubstituirDocumento”, onde poderá ser informado o número e a série do documento que deverá ser substituído.

Este pedido deve ser informado através do parâmetro XML de parâmetros adicionais da função "InvoiCyFramework_EmiteDocumento". O InvoiCy detecta automaticamente quando a SEFAZ de origem do emissor voltar a operar e irá inutilizar ou cancelar o documento marcado como substituído, dependendo de qual status ele apresentar junto à SEFAZ. Basta enviar a estrutura de tags conforme exemplo abaixo:

<SubstituirDocumento>
  <nNF>2035</nNF>
  <serie>260</serie>
  <modelo>NFCe</modelo>
  <CNPJ_emit>1234567801234</CNPJ_emit>
  <nNFSubstituta>2036</nNFSubstituta>
  <serieSubstituta>260</serieSubstituta>
  </SubstituirDocumento>

É importante destacar que a nota substituída deve estar emitida com tpEmis=1, e a nota substituta sempre deve ser enviada com tpEmis=9, caso contrário o evento será rejeitado com código 920 – Tipo de Emissão inválido no Cancelamento por Substituição.

Além disso, a data de emissão da nota substituta não pode ser maior que 2 horas da data de emissão da nota que será descartada/cancelada, ou resultará na rejeição 915 – Data de emissão da NF-e Substituta maior que 2 horas da data de emissão da NFe a ser cancelada.

Atenção: A nota substituta sempre deve estar com status Autorizado, caso contrário o evento de cancelamento não será enviado, e resultará na rejeição 913 – NF-e Substituta Denegada ou Cancelada.

Pedido de Descarte

Outra forma é enviar somente o pedido de descarte de um documento pela função "InvoiCyFramework_EmiteDocumento". O InvoiCy irá inutilizar ou cancelar o documento de acordo com o seu status perante a SEFAZ. Basta enviar a seguinte estrutura de tags, como demonstrado a seguir:

<DescartarDocumento>
  <ModeloDocumento>NFCe</ModeloDocumento>
  <tpAmb>2</tpAmb>
  <CNPJ_emit>06354976000149</CNPJ_emit>
  <Numero>708</Numero>
  <Serie>500</Serie>
  <NumeroSubstituta>735</NumeroSubstituta>
  <SerieSubstituta>500</SerieSubstituta>
</DescartarDocumento>