Business - Automação Comercial

PAF-ECF: Arquivo Criptografado

No roteiro de testes do PAF-ECF no requisito XXII, testes 4 e 5 é solicitada a gravação do número de série e do grande total, para isto desenvolvemos quatro funções na DarumaFrameowork.dll que facilitam este trabalho todo de ter que criptografar os valores e depois descriptografar para a devida comparação.

por Daruma Developer



Número de Série e GT Codificado

No roteiro de testes do PAF-ECF no requisito XXII, testes 4 e 5 é solicitada a gravação do número de série e do grande total, para isto desenvolvemos quatro funções na DarumaFrameowork.dll que facilitam este trabalho todo de ter que criptografar os valores e depois descriptografar para a devida comparação.

GT – Grande Total

rRetornarGTCodificado_ECF_Daruma

Definição:

Este método retorna o Grande Total da Impressora codificado.

Número de Série

rRetornarNumeroSerieCodificado_ECF_Daruma

Definição:

Este método retorna o Número Série da Impressora codificado.

rVerificaNumeroSerieCodificado_ECF_Daruma

Definição:

Este método recebe o Número de Série da Impressora codificado e informa se é válido ou não.

Obs: Caso o valor informado for diferente do GT da impressora, o comando irá retornar -12 e erro "Parâmetro inválido".

Na prática

Os exemplos abaixo demonstram as funções de Retorno e Verificação do Grande Total codificado, mas a forma de utilização é a mesma para as funções do Número de Série Codificado.

C(Sharp)

private void button1_Click(object sender, EventArgs e)

        {

            int int_erro = 0;

            int int_aviso = 0;

            StringBuilder Str_GTCodificado = new StringBuilder(38);

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp

.rRetornarGTCodificado_ECF_Daruma(Str_GTCodificado);

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.rVerificarGTCodificado_ECF_Daruma(

Convert.ToString(Str_GTCodificado));

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.rStatusUltimoCmdInt_ECF_Daruma(ref int_erro, ref int_aviso);

     }

Debug mode

http://www.daruma.com.br/ddemkt_imagem/dde015_002.jpg

Podemos observar na primeira imagem que a função rRetornarGTCodificado_ECF_Daruma devolve o grande total já codificado e na segunda linha envia para a função rVerificarGTCodificado_ECF_Daruma, para verificar se o mesmo é válido ou não. Na segunda imagem podemos observar que a função retornou = 1, o que vem a indicar que o método foi executado com sucesso.

Agora vou demonstrar como se o arquivo fosse violado e o GT alterado manualmente, para verificarmos o retorno. Acrescentei mais valores a string com o GT devolvido pela função rRetornarGTCodificado_ECF_Daruma, da seguinte maneira:

rVerificarGTCodificado_ECF_Daruma(Convert.ToString(Str_GTCodificado+"ABC"));

Podemos observar que agora o retorno da função nos devolveu -12 e o erro 195, Parâmetros inválidos. Com o Número de Série as funcionalidades são exatamente as mesmas.

Delphi

function rRetornarGTCodificado_ECF_Daruma(pszGTCriptografado:string): Integer; StdCall;

External 'DarumaFramework.dll';

function rVerificarGTCodificado_ECF_Daruma(pszGTCriptografado:string): Integer; StdCall;

External 'DarumaFramework.dll';

procedure TFR_FISCAL_rRetornarGTCodificado_ECF_Daruma.BT_ENVIARClick(

  Sender: TObject);

Var Str_GT_Codificado: String;

begin

          SetLength (Str_GT_Codificado,38);

          Int_Retorno := rRetornarGTCodificado_ECF_Daruma(Str_GT_Codificado);

          Int_Retorno := rVerificarGTCodificado_ECF_Daruma(Str_GT_Codificado);

          Edt_GTCodificado.Text := (Str_GT_Codificado);

end;

VB6

Public Declare Function rRetornarGTCodificado_ECF_Daruma Lib "DarumaFramework.dll"

(ByVal pszGT As String) As Integer   

Public Declare Function rVerificarGTCodificado_ECF_Daruma Lib "DarumaFramework.dll"

(ByVal pszVerificaGT As String) As Integer

Private Sub BotaoGT_Click(Index As Integer)

Dim Str_GTCodificado As String

          Str_GTCodificado = Space(38)

        iRetorno = rRetornarGTCodificado_ECF_Daruma(Str_GTCodificado)

        DarumaFramework_Mostrar_Retorno_ECF (iRetorno)

       

End Sub

Um abraço e até a próxima!

Daruma Developer

Daruma Developer