Integração com Banco de Dados

 

Outra forma de realizar a integração dos retornos da Prefeitura é utilizando um Banco de Dados. Esta integração pode ser utilizada com os seguintes Sistemas Gerenciadores de Bancos de Dados:

 

Microsoft Server 2008;

Microsoft Server 2012;

Oracle 10g ou superior.

 

A tabela do banco de dados é chamada tbIntegration, e armazenará os retornos dos arquivos enviados para a Prefeitura. A tabela deverá conter campos específicos, conforme segue especificações abaixo:

 

DOCSTATUS: Status do documento onde:

0 = Não processado;

1 = Processado.

 

 

JOBKEY: Indicador de qual ponto emissor deverá processar o documento.

RPSNUMBER: Número do RPS.

RPSSERIES: Série do RPS.

RPSKIND: Tipo do RPS.

CODIBGE: Código IBGE do município.

INSERTDATE: Data do retorno da integração.

DOCDATA: Documento de retorno.

DOCKIND: Tipo do documento retornado onde:

1 = Autorização;

2 = Cancelamento;

3 = Erro.

4 = RPS convertida com sucesso.

PROCESSID: Id do processo.

 

Abaixo segue os scripts para criação das tabelas:

 

Importante:

O nome da tabela de integração não deve conter hífen (-) ou caracter especial.

 

Script para SQL:

 

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbIntegration]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[tbIntegration](

 [ID] [bigint] IDENTITY(1,1) NOT NULL,

 [DOCSTATUS] [bigint] NOT NULL,

 [JOBKEY] [bigint] NULL,

 [RPSNUMBER] [bigint] NOT NULL,

 [RPSSERIES] [varchar](5) NOT NULL,

 [RPSKIND] [tinyint] NULL,

 [CODIBGE] [bigint] NOT NULL,

 [INSERTDATE] [datetime] NOT NULL,

 [DOCDATA] [varchar](max) NOT NULL,

 [DOCKIND] [tinyint] NOT NULL,

 [PROCESSID] [bigint] NULL,

CONSTRAINT [PK_tbIntegration] PRIMARY KEY CLUSTERED

(

        [ID] ASC

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

) ON [PRIMARY]

 

GO

 

SET ANSI_PADDING OFF

GO

 

ALTER TABLE [dbo].[tbIntegration] ADD  CONSTRAINT [DF_tbIntegration_DOCSTATUS]  DEFAULT ((0)) FOR [DOCSTATUS]

GO

 

Script para Oracle:

 

CREATE SEQUENCE  "TBINTEGRATION_SEQ"  MINVALUE 1 MAXVALUE

999999999999999999999999999 INCREMENT BY 1 START WITH 80 CACHE 20 NOORDER  NOCYCLE ;

/

 CREATE TABLE "TBINTEGRATION"

  (        "ID" NUMBER(19,0),

 "DOCSTATUS" NUMBER(19,0) DEFAULT 0,

 "JOBKEY" NUMBER(19,0),

 "RPSNUMBER" NUMBER(19,0),

 "RPSSERIES" VARCHAR2(5),

 "RPSKIND" NUMBER(2,0),

 "CODIBGE" NUMBER(7,0),

 "INSERTDATE" TIMESTAMP (6),

 "DOCDATA" CLOB,

 "DOCKIND" NUMBER(2,0),

 "PROCESSID" NUMBER(19,0)

  ) ;

/

ALTER TABLE "TBINTEGRATION" MODIFY ("ID" NOT NULL ENABLE);

/

 ALTER TABLE "TBINTEGRATION" MODIFY ("DOCSTATUS" NOT NULL ENABLE);

/

 ALTER TABLE "TBINTEGRATION" MODIFY ("RPSNUMBER" NOT NULL ENABLE);

/

 ALTER TABLE "TBINTEGRATION" MODIFY ("RPSSERIES" NOT NULL ENABLE);

/

 ALTER TABLE "TBINTEGRATION" MODIFY ("CODIBGE" NOT NULL ENABLE);

/

 ALTER TABLE "TBINTEGRATION" MODIFY ("INSERTDATE" NOT NULL ENABLE);

/

 ALTER TABLE "TBINTEGRATION" MODIFY ("DOCDATA" NOT NULL ENABLE);

/

 ALTER TABLE "TBINTEGRATION" MODIFY ("DOCKIND" NOT NULL ENABLE);

/

 ALTER TABLE "TBINTEGRATION" ADD CONSTRAINT "TBINTEGRATION_PK" PRIMARY KEY ("ID") ENABLE;

/  

 CREATE INDEX "TBINTEGRATION_INDEX1" ON "TBINTEGRATION" ("JOBKEY", "INSERTDATE", "ID")   ;

/

 CREATE INDEX "TBINTEGRATION_INDEX2" ON "TBINTEGRATION" ("RPSNUMBER", "RPSSERIES", "RPSKIND", "INSERTDATE", "ID") ;

/

 CREATE INDEX "TBINTEGRATION_INDEX3" ON "TBINTEGRATION" ("CODIBGE", "INSERTDATE", "ID")  ;

/

 CREATE OR REPLACE TRIGGER "TBINTEGRATION_TRG" BEFORE INSERT ON TBINTEGRATION

FOR EACH ROW

BEGIN

 <<COLUMN_SEQUENCES>>

 BEGIN

   IF :NEW.ID IS NULL THEN

     SELECT TBINTEGRATION_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;

   END IF;

 END COLUMN_SEQUENCES;

END;

/

ALTER TRIGGER "TBINTEGRATION_TRG" ENABLE;