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:
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] |
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. |