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; |