Retorno via banco de dados

Anterior
Próximo
Feedback
Imprimir

Retorno via banco de dados

Outra forma de realizar a integração dos retornos da SEFAZ é utilizando um banco de dados. Esta integração pode ser utilizada com qualquer um dos seguintes SGBD’s:

 

Microsoft SQL Server 2008;

Microsoft SQL Server 2012;

 

A tabela de integração de retornos deverá possuir, obrigatoriamente, as colunas a seguir:

 

DOCUMENTDATA conteúdo do documento retornado;

STATUS – será inserido sempre com o valor ZERO, permitindo que o ERP ou outro sistema possa controlar a captura dos registros;

KIND – Campo obrigatório que determina para o sistema que fará a leitura do registro, qual o tipo de retorno consta no registro. Este campo pode receber os seguintes valores:

 

0: Este kind é utilizado para integrações referentes a envio de notas (autorizado, rejeitado, denegado) e também para situações específicas quando enviado um ped_ajuste

1: Este kind é utilizado para integrações de cancelamento de documentos SAT (cancelado ou cancelamento rejeitado) e para alguns erros de CAN-INU e inutilização (exemplo: documento reenviado, ou erro no ws de consulta)

2: Este kind é utilizado para integrações de inutilizações

5: Este kind é utilizado para integrações de má formação de arquivo, tipo de emissão inválido e para erros de conversão de TXT - XML

7: Este kind é utilizado para integrações de evento (atualmente só cancelamento)

8: Este kind é utilizado para integrações de status de equipamentos SAT.

 

CONTENTENCONDING - Codificação configurada na integração podendo ter os seguintes valores:

0 – Default

1 – UTF8

2 – Ansi

3 – Ascii

 

INTEGRATIONNAME - Deverá ser gerado através da regra configurada no cadastro de integração via banco.

CONCENTRATORID - ID do concentrador que foi realizado o processo do documento.

AGENTID - ID do agente que foi realizado o processo do documento.

 

 

A tabela de integração de retornos pode possuir colunas adicionais, para controles do ERP, porém estas alterações sobre a estrutura padrão devem ser reportadas à NDDigital, a qual fará a análise evitando que ocorram problemas como concorrência de banco de dados, entre outros.

O ERP que utiliza integração via Web Service só vai ser possível utilizar integração via Banco de Dados.

 

A seguir são listados os scripts de criação da estrutura padrão, nos diferentes SGBD’s suportados:

SQL SERVER

CREATE TABLE [DBO].[TBINTEGRATIONNFCE](

    [CONNECTORINTEGRATIONID] [BIGINT] IDENTITY(1,1) NOT NULL,

    [DOCUMENTDATA] [VARBINARY](MAX) NOT NULL,

    [STATUS] [INT] NOT NULL,

    [KIND] [INT] NOT NULL,

    [CONTENTENCODING] [TINYINT] NOT NULL,

    [INTEGRATIONNAME] [VARCHAR](100) NOT NULL,

    [CONCENTRATORID] [BIGINT] NOT NULL,

    [AGENTID] [BIGINT] NULL,

    [MODEL] SMALLINT NULL,

    [DOCUMENTNUMBER] INT NULL,

    [SERIE] INT NULL,

    [INSERTDATE] DATETIME NULL,

CONSTRAINT [PK_TBINTEGRATIONNFCE] PRIMARY KEY CLUSTERED

(

    [CONNECTORINTEGRATIONID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

CREATE NONCLUSTERED INDEX [IX_TBINTEGRATIONNFCE] ON [DBO].[TBINTEGRATIONNFCE]

(

      [CONCENTRATORID] ASC,

      [AGENTID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

CREATE NONCLUSTERED INDEX [IX_TBINTEGRATIONNFCE_1] ON [DBO].[TBINTEGRATIONNFCE]

(

    [STATUS] ASC,

    [KIND] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

CREATE NONCLUSTERED INDEX [IX_TBINTEGRATIONNFCE_2] ON [DBO].[TBINTEGRATIONNFCE]

(

    [MODEL] ASC,

    [SERIE] ASC,

    [DOCUMENTNUMBER] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

CREATE NONCLUSTERED INDEX [IX_TBINTEGRATIONNFCE_3] ON [DBO].[TBINTEGRATIONNFCE]

(

    [STATUS] ASC,

    [INSERTDATE] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

 

ORACLE

 

CREATE TABLE TBINTEGRATIONNFCE(

    CONNECTORINTEGRATIONID NUMBER(38,0) NOT NULL ENABLE,

    DOCUMENTDATA BLOB NOT NULL,

    STATUS NUMBER(5,0) NOT NULL ENABLE,

    KIND NUMBER(5,0) NOT NULL ENABLE,

    CONTENTENCODING NUMBER(3,0) NOT NULL ENABLE,

    INTEGRATIONNAME VARCHAR2(100) NOT NULL ENABLE,

    CONCENTRATORID NUMBER(38,0) NOT NULL ENABLE,

    AGENTID NUMBER(38,0),

    MODEL NUMBER(3,0),

    DOCUMENTNUMBER NUMBER(9,0),

    SERIE NUMBER(9,0),

    INSERTDATE TIMESTAMP(3),

    CONSTRAINT "PK_TBINTEGRATIONNFCE" PRIMARY KEY (CONNECTORINTEGRATIONID)

)

/

CREATE SEQUENCE "TBINTEGRATIONNFCE_SEQ" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;

/

CREATE OR REPLACE TRIGGER "TBINTEGRATIONNFCE_BI" BEFORE INSERT ON TBINTEGRATIONNFCE

FOR EACH ROW

  WHEN (new.CONNECTORINTEGRATIONID IS NULL) BEGIN

  SELECT TBINTEGRATIONNFCE_SEQ.NEXTVAL INTO :new.CONNECTORINTEGRATIONID FROM dual;

END;

/

ALTER TRIGGER "TBINTEGRATIONNFCE_BI" ENABLE;

/

CREATE INDEX "NDD_NFCE"."IX_TBINTEGRATIONNFCE" ON "NDD_NFCE"."TBINTEGRATIONNFCE" ("CONCENTRATORID", "AGENTID")

/

CREATE INDEX "NDD_NFCE"."IX_TBINTEGRATIONNFCE_1" ON "NDD_NFCE"."TBINTEGRATIONNFCE" ("STATUS", "KIND")

/

CREATE INDEX "NDD_NFCE"."IX_TBINTEGRATIONNFCE_2" ON "NDD_NFCE"."TBINTEGRATIONNFCE" ("MODEL", "SERIE","DOCUMENTNUMBER")

/

 

 

O nome da tabela de integração é apenas uma sugestão.

 

Voltar