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 SGBDs:
A tabela de saída de dados deverá possuir, obrigatoriamente, as colunas a seguir:
|
A tabela de saída de dados deverá possuir, obrigatoriamente, as colunas a seguir: |
|
|
idoutput |
Identificador único do registro. Tipo int (auto incremento); |
|
insertdate |
Data e hora de inserção do registro na tabela; Tipo datetime (timestamp); |
|
filename |
É o Nome do Arquivo. Tipo varchar(255); |
|
DocumentData |
É o conteudo do documento. Tipo varbinary(MAX); |
|
documentkey |
Chave do documento - Tipo texto com 44 dígitos - Deverá ser lido do documento conforme regra abaixo; |
|
protocol |
Protocolo de autorização; |
|
documentkey1 |
Chave do documento - Tipo inteiro com os primeiros 18 digitos da chave; |
|
documentkey2 |
Chave do documento - Tipo inteiro contendo do digito 19 ao digito 36 da chave do documento; |
|
documentkey3 |
Chave do documento - Tipo inteiro com os ultimos 8 dígitos da chave; |
|
codreturn |
Código de retorno da SEFAZ; |
|
msgreturn |
Mensagem de retorno da SEFAZ; |
|
contingency |
Valor 0 para processamento normal e valor 1 para processamento em contingência; |
|
idinput |
Valor do input da tabela de entrada a qual este registro faz referência; |
|
status |
Valor 0 para não lido e 1 para lido. |
Query de criação da tabela de saída no MYSQL:
CREATE TABLE `nfceoutput` (
`idoutput` int(11) NOT NULL AUTO_INCREMENT,
`insertdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`filename` varchar(100) NOT NULL,
`documentdata` mediumtext NOT NULL,
`documentkey` varchar(44) NOT NULL,
`protocol` varchar(50) NOT NULL,
`documentkey1` bigint(20) DEFAULT NULL,
`documentkey2` bigint(20) DEFAULT NULL,
`documentkey3` bigint(20) DEFAULT NULL,
`codreturn` int(11) NOT NULL,
`msgreturn` text NOT NULL,
`contingency` int(11) NOT NULL COMMENT 'Valor zero para processamento normal e valor 1 para contingencia',
`idinput` int(11) NOT NULL COMMENT 'valor do idinput da tabela de entrada a qual este registro faz referencia.',
`status` int(11) NOT NULL COMMENT 'valor zero para não lido e um para lido.',
PRIMARY KEY (`idoutput`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
Abaixo encontra o script para realizar alteração da tabela nfceoutput.
ALTER TABLE nfceoutput ADD INDEX idx_nfceoutput_idinput (idinput DESC);
Query de criação da tabela de saída no SQL:
CREATE TABLE [DBO].[NFCEOUTPUT] (
[IDOUTPUT] [BIGINT] IDENTITY(1,1) NOT NULL,
[INSERTDATE] DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
[FILENAME] [VARCHAR](100) NOT NULL,
[DOCUMENTDATA] [VARCHAR](MAX) NOT NULL,
[DOCUMENTKEY] [VARCHAR](44) NOT NULL,
[PROTOCOL] [VARCHAR](50) NOT NULL,
[DOCUMENTKEY1] [BIGINT] DEFAULT NULL,
[DOCUMENTKEY2] [BIGINT] DEFAULT NULL,
[DOCUMENTKEY3] [BIGINT] DEFAULT NULL,
[CODRETURN] INT NOT NULL,
[MSGRETURN] [VARCHAR](MAX) NOT NULL,
[CONTINGENCY] INT NOT NULL,
[IDINPUT] INT NOT NULL,
[STATUS] INT NOT NULL,
CONSTRAINT [PK_IDOUTPUT] PRIMARY KEY CLUSTERED
(
[IDOUTPUT] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Importante
O formato do nome do arquivo a ser retornado, deverá seguir o padrão descrito no manual do e-Forms NFC-e na sessão de Arquivos de integração.