Integração Banco de Dados

Premissas básicas

Esta integração ocorre diretamente no banco de dados, sem necessidade de geração ou processamento de arquivos.

Neste modelo de integração, o ERP do cliente é responsável por inserir as informações das NF-e na estrutura de dados do NFePACK, bem como buscar os retornos necessários para fazer a consistência das informações.

Criação dos objetos necessários

Para o controle da atualização das informações entre o NFePACK e o ERP, sugerimos a criação de algumas colunas de controle na tabela de notas fiscais diretamente no banco de dados do ERP. Deve-se verificar em cada caso, a melhor estratégia para garantir que requisitos como confiabilidade das informações e segurança sejam preservados.

Recomenda-se criar na tabela de notas fiscais do ERP, as seguintes colunas, de uso exclusivo para o retorno das informações do NFePACK (vamos considerar no exemplo, a tabela de notas como sendo a tabela “NF”)

1
2
3
4
5
6
ALTER TABLE NF ADD (
    "NUM_ID_NFE" VARCHAR2(44)
    ,"IND_STATUS_NFE" NUMBER(3)
    ,"IND_STATUS_CANCEL_NFE" NUMBER(3)
    ,"IND_STATUS_INUTLZ_NFE" NUMBER(3)
    );

Onde:

  • NUM_ID_NFE corresponde a chave de acesso da NF-e na SEFAZ;
  • IND_STATUS_NFE corresponde ao status de retorno da situação da NF-e no NFePACK;
  • IND_STATUS_CANCEL_NFE corresponde ao status de retorno da situação de cancelamento da NFe no NFePACK;
  • IND_STATUS_INUTLZ_NFE corresponde ao status de retorno da situação de inutilização da NF-e no NFePACK;

Envio de Notas Fiscais (ERP -> NFePACK)

Para possibilitar o envio de notas fiscais do ERP para o NFePACK, deve-se utilizar procedures que implementem:

  • Buscar as informações da NF-e no ERP;
  • Tratar os dados necessários;
  • Inserir os dados na base de dados do NFePACK;

Modelo de implementação:

  • P_PEND_TRANSF_NFE
    Seleciona todas as NF-e que ainda não foram disponibilizadas no NFEPACK e faz a chamada da procedure P_TRANSF_NFE.
  • P_TRANSF_NFE
    Esta procedure pode ser utilizada individualmente (sem a procedure P_PEND_TRANSF_NFE), em situações em que o ERP pode realizar a chamada direta do procedimento após a disponibilização de todas as informações da nota fiscal. Um bom exemplo de chamada é após a criação da nota no ERP.

Envio da Solicitação de Cancelamento (ERP -> NFePACK)

Existem regras específicas para o cancelamento, as quais são instituídas e validadas pela SEFAZ.

A principal regra sobre os cancelamentos, é que as notas fiscais somente poderão ser canceladas caso a mercadoria ainda não tenha saído do pátio da empresa emitente da nota fiscal.

O ERP poderá solicitar o cancelamento de notas fiscais já autorizadas pela SEFAZ. Para tal deve-se utilizar uma procedure, que implementará:

  • Buscar as informações da NF-e a ser cancelada;
  • Tratar os dados necessários;
  • Inserir os dados na base de dados do NFePACK;

Modelo de implementação:

  • P_TRANSF_CANCEL_NFE
    Disponibiliza a solicitação de cancelamento para o NFePACK (tabela INTERF_CANCEL_NFE);

Envio da Solicitação de Inutilização (ERP -> NFePACK)

Existem regras específicas para a inutilização, as quais são instituídas e validadas pela SEFAZ.

A principal regra para as inutilizações, é que as notas fiscais somente poderão ser inutilizadas, caso ainda não tenham sido aprovadas ou denegadas pela SEFAZ.

Uma situação comum para inutilização, é quando uma sequência de nota é perdida (pula-se um número de nota) ou deseja-se cancelar no ERP uma NF-e que ainda não está autorizada na SEFAZ como autorizada. Neste caso, embora exista um cancelamento de nota no sistema corporativo, deve-se solicitar a inutilização da mesma no NFePACK (e consequentemente na SEFAZ).

O ERP poderá solicitar a inutilização de notas fiscais ainda não autorizadas pela SEFAZ. Para tal deve-se utilizar uma procedure, que implementará:

  • Buscar as informações da Inutilização;
  • Tratar os dados necessários;
  • Inserir os dados na base de dados do NFePACK;

Modelo de implementação:

  • P_TRANSF_INUTLZ_NFE
    Disponibiliza a solicitação de inutilização para o NFePACK (tabela INTERF_INUTLZ_NUM_NFE)

Envio de Evento de Carta de Correção Eletrônica (ERP -> NFePACK)

Para gerar eventos de CC-e via Banco de Dados, é necessário implementar uma rotina de inserção para o seguinte comando:

Oracle
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
INSERT INTO interf_evento_fiscal (
    num_seq_evento_fiscal
    ,ind_status_evento_fiscal
    ,cnpj
    ,tp_evento
    ,num_seq_nfe
    ,x_correcao
    ,flg_envio_email
    )
VALUES (
    seq_interf_evento_fiscal.NEXTVAL
    ,1
    ,[CNPJ]
    ,110110
    ,[NUM_SEQ_NFE]
    ,[DESCRIÇÃO]
    ,[ENVIO EMAIL]
    )

Onde:

  • seq_interf_evento_fiscal.NEXTVAL: Será o identificador da tabela “interf_evento_fiscal”;
  • CNPJ: CNPJ do Emissor da NF-e;
  • NUM_SEQ_NFE: Campo “num_seq_nfe” da tabela “interf_nfe”, correspondente a NF-e em questão;
  • DESCRIÇÃO: Descrição da correção;
  • ENVIO E-MAIL: Utilizar “S” ou “N”. “S” para enviar e “N” para não enviar e-mail da CC-e para o destinatário da NF-e;
SQL Server
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
INSERT INTO interf_evento_fiscal (
    ind_status_evento_fiscal
    ,cnpj
    ,tp_evento
    ,num_seq_nfe
    ,x_correcao
    ,flg_envio_email
    )
VALUES (
    1
    ,[CNPJ]
    ,110110
    ,[NUM_SEQ_NFE]
    ,[DESCRIÇÃO]
    ,[ENVIO E-MAIL]
    )

Onde:

  • CNPJ: CNPJ do Emissor da NF-e;
  • NUM_SEQ_NFE: Campo “num_seq_nfe” da tabela “interf_nfe”, correspondente a NF-e em questão;
  • DESCRIÇÃO: Descrição da correção;
  • ENVIO E-MAIL: Utilizar “S” ou “N”. “S” para enviar e “N” para não enviar e-mail da CC-e para o destinatário da NF-e;

Retorno da situação da CC-e (ERP -> NFePACK)

O retorno da CC-e para o ERP, pode ser feito através de consultas na tabela “interf_evento_fiscal”, que contém todas as informações sobre a situação do evento.

Os principais campos de retorno dos eventos fiscais são o “ind_status_evento_fiscal” (status do evento fiscal), o “x_motivo”(descrição do retorno da SEFAZ) e o “dat_hor_reg_evento”(data e hora de registro do evento na SEFAZ).

Retorno da situação da Nota Fiscal (ERP -> NFePACK)

Após o processamento dos lotes de NF-e pelas SEFAZ, é necessário que estas informações sejam disponibilizadas para o ERP, a fim de garantir a integridade das informações do ERP, facilitando outros processos, como a movimentação do financeiro e do estoque da empresa.

Modelo de implementação:

  • P_PEND_TRANSF_RETORN_NFE
    Seleciona todas as NF-e que ainda não tiveram o status atualizado no ERP, após o processamento de lotes na SEFAZ. Faz a chamada da procedure P_TRANSF_RETORN_NFE, que trata individualmente o retorno de status de cada NF-e.
  • P_TRANSF_RETORN_NFE
    Esta procedure trata o retorno de NF-e pendentes. Após a execução desta procedure, as informações específicas do NFEPACK que foram criadas no ERP, tais como NUM_ID_NFE, IND_STATUS_NFE, DAT_RETORN_NFE_ERP deverão estar preenchidas com as respectivas informações.

Retorno da situação do Pedido de Cancelamento (NFePACK -> ERP)

Após o processamento do cancelamento pela SEFAZ, o NFEPACK disponibiliza estas informações para que o ERP tenha controle do status do cancelamento da NF-e.

Importante: O pedido de cancelamento pode ser rejeitado, e neste caso, um novo cancelamento poderá ser solicitado.

As informações de retorno, considerarão sempre a última solicitação de cancelamento realizada pelo ERP.

Modelo de implementação:

  • P_PEND_TRANSF_RETORN_CANCEL
    Identifica solicitações de cancelamento que já foram processadas e ainda não retornaram ao ERP. Realiza a chamada da procedure P_TRANSF_RETORN_CANCEL para as ocorrênciasidentificadas.
  • P_TRANSF_RETORN_CANCEL
    Disponibiliza o resultado do cancelamento da NF-e junto à SEFAZ. Neste caso é atualizada a coluna IND_STATUS_CANCEL_NFE, onde o valor 2 significa que o cancelamento foi autorizado e o valore 3 significa que o cancelamento não foi autorizado.

Retorno da situação do Pedido de Inutilização (NFePACK -> ERP)

Após o processamento da inutilização pela SEFAZ, o NFePACK disponibiliza estas informações para que o ERP tenha controle do status da inutilização da NF-e.

Importante: O pedido de inutilização pode ser rejeitado, e neste caso, uma nova inutilização poderá ser solicitada.

As informações de retorno, considerarão sempre a última solicitação de inutilização realizada pelo ERP.

Modelo de implementação:

  • P_PEND_TRANSF_RETORN_INUTLZ
    Identifica solicitações de inutilização que já foram processadas e ainda não retornaram ao ERP. Realiza a chamada da procedure P_TRANSF_RETORN_INUTLZ para as ocorrências identificadas.
  • P_TRANSF_RETORN_INUTZ_NFE
    Disponibiliza o resultado da inutilização da NF-e junto à SEFAZ. Neste caso é atualizada a coluna IND_STATUS_INUTLZ_NFE, onde o valor 2 significa que a inutilização foi autorizada e o valore 3 significa que a inutilização não foi autorizada.

Controle de status da NF-e

As seguintes situações de retorno (IND_STATUS_NFE) devem ser tratadas:

3 – CRÍTICA VALIDAÇÃO

Este retorno indica que houve alguma crítica no processo. Deve-se ajustar a nota ou registrar uma solicitação de inutilização.

No caso de correção da NF-e, após a alteração dos campos que estavam incorretos, será necessário alterar o campo “ind_status_nfe” da tabela “interf_nfe” para 1, além de mudar os campos “b_dhemi”, “b_dhsaient”, “b_dhcont” e “w_vtotTrib” da mesma tabela para NULL.

6 – AUTORIZADA

Indica que a NF-e está com uso autorizado pela SEFAZ. Não há ação a tomar neste caso, exceto a solicitação de cancelamento, caso seja necessária.

7 – DENEGADA

Indica que a NF-e está com uso denegado pela SEFAZ. Esta nota está portanto registrada na SEFAZ e não pode-se mais utilizar esta numeração.

8 – REJEITADA

Indica que alguma crítica foi apontada para esta nota na SEFAZ. Há duas saídas neste caso. Solicitar uma inutilização, ou corrigir a nota e reutilizá-la. Neste caso (reutilização), deve-se proceder conforme o status 3 (crítica de validação).

10 – PENDENTE DE RETORNO CONTINGÊNCIA

Indica que a NF-e foi enviada à SEFAZ, mas devido a problemas técnicos foi necessária a entrada em contingência. As notas com este status, devem ser reservadas para futuramente serem canceladas ou inutilizadas.

As notas com status “pendente de retorno” devem ser geradas novamente, com uma nova numeração, a fim de garantir o seu reenvio.

As notas com este status, após a saída de contingência passarão para “11 – A CANCELAR” (quando identificada a autorização da respectiva NFe na SEFAZ) e “12 – A INUTILIZAR” (quando não foi identificada a respectiva NFe na SEFAZ) caso estas configurações estejam ativas no portal NfePackMonitor (Verificar no guia de utilização do WebMonitor disponibilizado em nossa central de relacionamento - MovieDesk).

11 – A CANCELAR

Indica que após o retorno de contingência, a nota fiscal deverá ser cancelada. Neste caso, deve ser enviada a solicitação de cancelamento da respectiva nota para o NFePACK.

12 – A INUTILIZAR

Indica que após o retorno de contingência, a nota fiscal deverá ser inutilizada. Neste caso, deveser enviada a solicitação de inutilização da respectiva nota para o NFePACK.

Controles de Integração Complementares

Existe a possibilidade de controlar situações específicas relativas ao envio, impressão e distribuição das NF-e, para isto, há um conjunto de campos disponíveis no NFePACK na tabela INTERF_NFE, conforme a lista abaixo:

  • e-mailDestXML (DSC_END_EMAIL_ENVIO_NFE)

    E-mail do destinatário do arquivo contendo o XML e protocolo de autorização da NFe. Pode-se informar mais de um e-mail, separando-os com ”;”.

    Exemplo para um destinatário: fulano@empresa.com.br

    Exemplo para vários destinatários: fulano@empresa.com.br; ciclano@empresa.com.br; contador@contabilidade.com.br

  • e-mailDestPDFDanfe (DSC_END_EMAIL_ENVIO_PDF_NFE)

    E-mail do destinatário do PDF do DANFe. Pode ser utilizado para processos de exportação/importação, onde o despachante necessita de uma cópia do DANFe para o desembaraço de cargas.

    Exemplo para um destinatário: fulano@empresa.com.br

    Exemplo para vários destinatários: fulano@empresa.com.br; ciclano@empresa.com.br; contador@contabilidade.com.br

  • QtdViaAdicDanfe (????????????????????)

    Quantidade de vias adicionais para emissão do DANFe. Define um volume adicional de impressões do DANFe

  • LocalEmisDanfeNormal (NOM_IMPRES_DANFE_NORMAL)

    Local alternativo de emissão do DANFe nomral. Esta informação tem prioridade sobre qualquer outra configuração de emissão do NFePACK.

    Exemplo 01: Lexmark XYZ

    Exemplo 02: \PrintServerLexmark XYZ

  • LocalEmisDanfeConting (NOM_IMPRES_DANFE_CONTNG)

    Local alternativo de emissão do DANFe em contingência. Esta informação tem prioridade sobre qualquer outra configuração de emissão do NFePACK.

    Exemplo 01: Lexmark XYZ

    Exemplo 02: \PrintServerLexmark XYZ

  • IndReimpDanfe (IND_REIMP_DANFE)

    Indicador de reimpressão de DANFe. Possibilita marcar via integração a reimpressão de um DANFe, sem que seja necessária intervenção via portal (WebMonitor). Quando configurado para não utilizar impresão automática, pode-se controlar via ERP a impressão e ordem de impressão utilizando-se os campos IndReimpDanfe, NumGrpOrdemImp e NumItemOrdemImp.

    Valor 01: Reimpressão solicitada

    Valor 02: Reimpressão realizada pelo NFePACK

  • NumGrpOrdemImp (NUM_GRP_ORDEM_IMP)

    Possibilita agrupar e ordenar lotes de impressão. A ordenação da impressão é realizada por CNPJ, NumGrpOrdemImp, NumItemOrdemImp, SerieNF, NumNF.

  • NumItemOrdemImp (NUM_ITEM_ORDEM_IMP)

    Pode ser utilizado em conjunto com o campo NumGrpOrdemImp ou individualmente]

  • FlgNaoImpDanfe (FLG_NAO_IMP_DANFE)

    Indica a impressão do DANFe DA NF-e. O valor “S” indica que o DANFE não deverá ser impresso automaticamente.

  • DscUsuarERP (DSC_USUAR_ERP)

    Indica o usuário do ERP que gerou a nota fiscal.

  • DscUrlDanfeRemoto (DSC_URL_DANFE_REMOTO)

    Endereço do servidor onde está localizado o Inventti PrintService. Informar IP:porta. Essa informação tem prioridade sobre qualquer outra configuração de emissão do NFePACK

    Exemplo 01: 192.168.1.2:1032

Leiautes de Integração

Para iniciar a fase de implementação do leiaute NF-e ou atualizar sua integração atual para o leiaute 4.00 da NF-e, acesse a seção “4.3 – Integração Banco de Dados” deste guia clicando na descrição anterior.