Um dos vários requisitos do Paf-ECF obrigatórios e a recomposição do Valor do GT ou Número de Série do ECF no arquivo auxiliar cripotografado. A suíte de componentes ACBr já possui a um bom tempo o componente ACBrAAC que quando é ligado ao componente ACBrECF permite a geração, controle e manipulação do arquivo criptografado automaticamente, conforme se vai utilizando o ECF, facilitando em muito a vida de quem programa para Paf ECF.
Segue o trecho referente ao requisito XXII:
1. O PAF-ECF deve garantir que será utilizado com ECF cujo pedido de autorização de uso tenha cumprido a legislação da unidade da federação de jurisdição do usuário do equipamento, adotando, no mínimo, as seguintes rotinas:
2. não possuir menus de configuração que possibilitem a desativação do ECF;
3. não possuir tela que possibilite configurar o ECF a ser utilizado, exceto quanto à porta de comunicação serial;
4. ao ser inicializado, ao viabilizar o acesso à tela de registro de venda e ao enviar ao ECF comando para abertura de documento fiscal, comparar o número de fabricação do ECF conectado neste momento com os números de fabricação dos ECFs autorizados para uso fiscal no estabelecimento, cadastrados em arquivo auxiliar criptografado, que somente poderá ser acessível ao estabelecimento usuário no caso de PAF-ECF exclusivo-próprio, observando-se que o cadastro de ECFs autorizados no arquivo auxiliar deve ser realizado exclusivamente pela empresa desenvolvedora do PAF;
5. ao ser inicializado, ao viabilizar o acesso à tela de registro de venda e ao enviar ao ECF comando para abertura de documento fiscal, comparar o valor acumulado no Totalizador Geral (GT) do ECF conectado neste momento com o valor correspondente armazenado em arquivo auxiliar criptografado, que somente poderá ser acessível ao estabelecimento usuário no caso de PAF-ECF exclusivo-próprio, observando-se que:
a) o registro inicial do valor correspondente ao Totalizador Geral no arquivo auxiliar criptografado deve ser realizado exclusivamente pela empresa desenvolvedora do PAF-ECF;
b) em cada emissão de documento fiscal o PAF-ECF deve atualizar o valor armazenado no arquivo auxiliar, correspondente ao Totalizador Geral do ECF respectivo.6. caso não haja coincidência na comparação descrita no item 4 deste requisito e não havendo perda de dados gravados no arquivo auxiliar criptografado, impedir o seu próprio funcionamento, exceto para as funções descritas no item 1 do Requisito XVII.
7. caso não haja coincidência na comparação descrita no item 5 deste requisito e não havendo perda de dados gravados no arquivo auxiliar criptografado, impedir o seu próprio funcionamento, exceto:
- para as funções previstas no item 6 deste requisito;
- se, a critério da unidade federada, tiver ocorrido incremento do CRO, hipótese em que deverá recompor o valor do Totalizador Geral no arquivo auxiliar criptografado a partir do valor correspondente gravado no ECF.
8. caso não haja coincidência nas comparações descritas nos itens 4 ou 5 deste requisito e havendo perda, por motivo acidental, de dados gravados no arquivo auxiliar criptografado:
- comparar os números do CRZ e do CRO e o valor da Venda Bruta Diária, referentes à última Redução Z gravada na Memória Fiscal com os números e valor correspondentes no banco de dados a que se refere o item 2 do requisito XXV (campos 06, 08 e 12 do Registro tipo R02 constante no Anexo VI) e:
- se os números e valor forem iguais, recompor os dados no arquivo auxiliar (número de série de fabricação do ECF conectado e valor do Totalizador Geral atual do ECF conectado).
- se os números ou valor forem diferentes, impedir o seu próprio funcionamento, permitindo-se o funcionamento para as funções descritas no item 1 do Requisito XVII.
Para a recomposição do valor de GT e número de série o ACBrAAC possui dois eventos, onde as verificações devem ser feitas e se tudo estiver OK deve-se então passar ao eventos os novos valores, segue abaixo um exemplo simples de uso dos eventos de recuperação.
Recomposição do número de série:
procedure TForm1.ACBrAAC1VerificarRecomporNumSerie(const NumSerie: string;
const ValorGT: Double; var CRO, CNI: Integer);
var
OK: Boolean;
NumCRZ, NumCRO: Integer;
VendaBruta: Double;
begin
// ler os dados da ultima Z no ECF
ACBrECF1.DadosUltimaReducaoZ;
NumCRO := ACBrECF1.DadosReducaoZClass.CRO;
NumCRZ := ACBrECF1.DadosReducaoZClass.CRZ;
VendaBruta := ACBrECF1.DadosReducaoZClass.ValorVendaBruta;
// comparar os dados obtidos com os dados da ultima redução Z gravada no Banco de dados
OK := Comparar com dados do BD;
// setar os parametros se os valores (CRZ, CRO e Venda Bruta) forem iguais
if OK then
begin
CRO := NumCRO;
CNI := 010101; // codigo nacional de identificação do ECF conforme tabela
end;
end;
Recomposição do grande total:
procedure TForm1.ACBrAAC1VerificarRecomporValorGT(const NumSerie: string;
var ValorGT: Double);
var
OK: Boolean;
NumCRZ, NumCRO: Integer;
VendaBruta: Double;
begin
// ler os dados da ultima Z no ECF
ACBrECF1.DadosUltimaReducaoZ;
NumCRO := ACBrECF1.DadosReducaoZClass.CRO;
NumCRZ := ACBrECF1.DadosReducaoZClass.CRZ;
VendaBruta := ACBrECF1.DadosReducaoZClass.ValorVendaBruta;
// comparar os dados obtidos com os dados da ultima redução Z gravada no Banco de dados
OK := Comparar com dados do BD;
// setar o parametro se os valores (CRZ, CRO e Venda Bruta) forem iguais
if OK then
ValorGT := ACBrECF1.GrandeTotal;
end;
Descubra mais sobre Régys Borges da Silveira
Assine para receber nossas notícias mais recentes por e-mail.