Bloco VII do PAF-ECF
Autor: Guilherme Braga | Publicado: 2011-07-14T09:50:00-07:00

Esse bloco serve para que seja identificado na visualização dos arquivos  eletrônicos quais os registros que sofreram alterações que não foram  feitas pelo PAF-ECF, ou seja, se algum registro for alterado via banco  de dados ou por qualquer outro programa que não seja o PAF-ECF é para  ser identificado com o caracter "?" conforme o requisito "b".

Abaixo irei mostrar como implementei esse requisito utilizando o ER-PAF-ECF versão 01.07:



BLOCO VII
DADOS TÉCNICOS PARA GERAÇÃO DA ASSINATURA DIGITAL DO
REGISTRO TIPO EAD
ANEXO VIII DO ATO COTEPE 06/08

REQUISITO – Observações – “b”

b) A alteração de dados no arquivo eletrônico assinado digitalmente deverá ser evidenciada,
apenas&nbsp; nos&nbsp; registros&nbsp; alterados,&nbsp; mediante&nbsp; a&nbsp; substituição&nbsp; de&nbsp; brancos&nbsp; pelo&nbsp; caractere&nbsp; “?”&nbsp; no
campo:
b.1) “Modelo do ECF” no caso do registro tipo D2 constante no Anexo III;
b.2) “Unidade” no caso do registro tipo E2 constante no Anexo IV;
b.3) “Unidade” no caso do registro tipo P2 constante no Anexo V;
b.4)&nbsp; “Modelo&nbsp; do&nbsp; ECF”&nbsp; no&nbsp; caso&nbsp; dos registros&nbsp; tipo&nbsp; R01,&nbsp; R02, R03,&nbsp; R04, R05,&nbsp; R06&nbsp; e&nbsp; R07
constantes no Anexo VI;
b.5) “Tipo de documento” no caso do registro tipo T2 constante no Anexo VII.

Vou fazer um exemplo da geração do arquivo E2 (Estoque) para demostrar a lógica que utilizei:

No  banco de dados do PAF-ECF criei um campo chamado "chave" no final de  todas as tabelas envolvidas diretamente na construção dos arquivos  eletrônicos do requisito "b". Esse campo "chave" guarda a combinação de  todos os dados do registro criptografado (estou utilizando o algoritmo  de criptografia do MD5, mas nesse caso pode utilizar qualquer  algoritmo).

Vamos tomar como base a estrutura da tabela de produto abaixo:



Toda  vez que inserir ou alterar os registros nessa tabela é feito a  criptografia dos campos desse registro e o resultado é colocado no campo  chave. Na prática, é gerar a criptografia da combinação dos campos  (Codigo, Descricao, Unidade, Estoque e DataEstoque) e colocar o  resultado no campo Chave, toda vez que incluir ou alterar o produto.

Incluimos o seguinte produto:



Na  geração dos arquivos eletrônicos é feito uma validação desse campo  chave para verificar se os dados criptografado batem com o dado do campo  chave. Se não bater é porque o registro foi modificado fora do PAF-ECF,  nesse caso irá ser colocado o caracter "?".

Quando geramos o arquivo eletrônico de estoque, sem modificar esse registro fora do PAF-ECF, ele irá ficar assim: 

E21137675300011200000000001001Blusa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Un&nbsp;&nbsp;&nbsp; +00000000020110518


Quando geramos o arquivo eletrônico de estoque modificando esse registro fora do PAF-ECF ele irá ficar assim: 

E21137675300011200000000001001Blusa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ??????+00001000020110518

Nesse caso alterei o valor do estoque, via banco de dados, para 100. 


E assim utilize essa lógica para as demais tabelas e os demais tipos de arquivos eletrônicos.

Boa Sorte !!