Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 4115 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Prezados,

 

Estou tendo um erro no procedimento  "ACBrPAF.SaveFileTXT_N('lista_autenticados.txt')", quando chego nesta linha se eu tenho o arquivo no diretório ele da a exception "Arquivo: Auxiliar.txt inválido" e se eu não tenho ele da a exception "Arquivo: Auxiliar.txt Não encontrado". Gostaria de uma ajuda de como configurar o AcbrAAC e o AcbrEAD corretamente. O componente acbrECF está ligado ao componente acbrACC, no acbrACC está setada a propriedade NomeArquivoAux -> Auxiliar.txt e o arquivo Auxiliar.txt está na pasta setada no caminho. Não encontrei muitas informações no demo do acbrACC e nenhuma referencia no acbrECF. Configurei o acbrACC conforme o exemplo do demo , (troquei apenas o valor da chave mas mantive com 4 digitos),

O que pode estar ocorrendo ?

 

Se possível também confirmar se obrigatóriamente no Arquivo Auxiliar Criptografado devo colocar o  Número de Série da Impressora e o GT, e como fazer isso (de forma criptografada).

 

Abaixo código que estou usando :

 

Para o acbrEAD:

 

procedure TFDMPafEcf.ACBrEAD1GetChavePrivada(var Chave: String);
begin
  Chave := 'MIICXgIBAAKBgQDawShBJxM0rFLadxR8GSD5DaKVvxtlQ+OnuOZX/vOEP2pQXCiG';
  Chave := Chave + 'NpQfNMDm73dWpTaqFLhuFvU+MSF+ys9u6bI2IqOmWUfEaE16cK4nKTbIm69fLDB8';
  Chave := Chave + 'SnaocjMfO6LnbdJmG+dSxbLmrHE8BYX17/d7Vbuxcr1BoSDojGpubqP7OQIDAQAB';
  Chave := Chave + 'AoGBAK0+F+ExTvaCGsPFVsXJKOHUuJQbW1jhYSPtPQ8nbDep+UpXEgjopHnqT3MU';
  Chave := Chave + '5tAJ27bq3fzh1atBQaOmfoz6KxVZHEptcLPlpR+jSrBXyhG/mlvD54ZMKKZQb3qD';
  Chave := Chave + 'b1UvHAO2CYRH7f7Y9PEGAvqXCloUVkbKl9rS7MEfaukj3xq5AkEA+Qqi8c1j47Db';
  Chave := Chave + 'NyezJULfskNwK1wnxcLaFQBKfzpWD2dD0GS/dzWaB5T6d1zmxfXa8ZYv6WQULvqd';
  Chave := Chave + '/BGCs+FMcwJBAODd4aDvQf6py4FocklojYbDhpp040NGUyhsVnj702Gq/oj2HBgI';
  Chave := Chave + '4bce/b2H5+HwkyEsSZHMm5d/5HuNY35Y+qMCQQDoWCMTgvLZn8u1loVNkymOb9p7';
  Chave := Chave + 'qZu1poe+JiparrtR3Z7oEsaK2mhdAIH40KTBNhHRaLREg8lM1yaD4HZXii+/AkA2';
  Chave := Chave + 'L0EfNogAhYm0NSbU6Yyw3Iyiy2e33kpLg0+S95uH/Vw4RJWgdQNuzNj3wrftibrq';
  Chave := Chave + 'U3Gm4FbdusOjwf4ng+lhAkEApd6RF3AqJXtmgtZpXrO6P8riEpE1qZXBQwdfeRBX';
  Chave := Chave + 'Q22LlhcCq5vxgG78jKWeydtan9ue2ebXav/oUT+37LfHYA==';
end;           

procedure TFDMPafEcf.ACBrEAD1GetChavePublica(var Chave: String);
begin
  Chave := 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDawShBJxM0rFLadxR8GSD5DaKV';
  Chave := Chave + 'vxtlQ+OnuOZX/vOEP2pQXCiGNpQfNMDm73dWpTaqFLhuFvU+MSF+ys9u6bI2IqOm';
  Chave := Chave + 'WUfEaE16cK4nKTbIm69fLDB8SnaocjMfO6LnbdJmG+dSxbLmrHE8BYX17/d7Vbux';
  Chave := Chave + 'cr1BoSDojGpubqP7OQIDAQAB';
end;

 

 

Para o ACBRAcc :

 

procedure TFDMPafEcf.ACBrAAC1GetChave(var Chave: String);
begin                 
  Chave := '7777';
end;

procedure TFDMPafEcf.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
  FDMPAFECF.ACBrECF1.DadosUltimaReducaoZ;
 
  NumCRO     := FDMPAFECF.ACBrECF1.DadosReducaoZClass.CRO;
  NumCRZ     := FDMPAFECF.ACBrECF1.DadosReducaoZClass.CRZ;
  VendaBruta := FDMPAFECF.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; Aqui deixei sempre como true, para teste.
  OK:= TRUE;
 
  // 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;


procedure TFDMPafEcf.ACBrAAC1VerificarRecomporValorGT(
  const NumSerie: String; var ValorGT: Double);

var
  OK: Boolean;
  NumCRZ, NumCRO: Integer;    
  VendaBruta: Double;                       
begin
 
  // ler os dados da ultima Z no ECF
  FDMPAFECF.ACBrECF1.DadosUltimaReducaoZ;
 
  NumCRO     := FDMPAFECF.ACBrECF1.DadosReducaoZClass.CRO;
  NumCRZ     := FDMPAFECF.ACBrECF1.DadosReducaoZClass.CRZ;
  VendaBruta := FDMPAFECF.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; Aqui deixei sempre como true, para teste.
  OK:= TRUE;
 
  // setar o parametro se os valores (CRZ, CRO e Venda Bruta) forem iguais
  if OK then
    ValorGT := FDMPAFECF.ACBrECF1.GrandeTotal;
 
end;
 

 

if FileExists(ExtractFilePath(Application.ExeName) + 'Auxiliar.txt') then
      DeleteFile(ExtractFilePath(Application.ExeName) + 'Auxiliar.txt');

    AssignFile(F, ExtractFilePath(Application.ExeName) + 'Auxiliar.txt');
    Rewrite(F);
    closefile(F);

  // setar o diretório onde vai ser salvo o arquivo
  FdmPafEcf.ACBrPAF1.Path := ExtractFilePath(Application.ExeName) + 'PAF-ECF\';

  // registro dos dados do desenvolvedor
  //Self.PreencherHeaderArquivo(FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1);

  // registro dos dados do aplicativo
  FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.RAZAOSOCIAL := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.RazaoSocial;
  FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.UF          := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.Uf;
  FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.CNPJ        := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.CNPJ;
  FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.IE          := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.IE;
  FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.IM          := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.IM;
  FdmPafEcf.ACBrPAF1.PAF_N.RegistroN2.NOME        := FdmPafEcf.ACBrAAC1.IdentPAF.Paf.Nome;
  FdmPafEcf.ACBrPAF1.PAF_N.RegistroN2.VERSAO      := FdmPafEcf.ACBrAAC1.IdentPAF.Paf.Versao;
  FdmPafEcf.ACBrPAF1.PAF_N.RegistroN2.LAUDO       := FdmPafEcf.ACBrAAC1.IdentPAF.NumeroLaudo;

  // lista dos arquivo executaveis e seus respectivos MD5
  with FdmPafEcf.ACBrAAC1.IdentPAF.OutrosArquivos.New do //Aqui só está pegando e processando o ultimo nome (easyconfigurador.exe)
  begin
    Nome := 'EmpPafEcf.exe';
  end;

  with FdmPafEcf.ACBrAAC1.IdentPAF.OutrosArquivos.New do //Aqui só está pegando e processando o ultimo nome (easyconfigurador.exe)
  begin
    Nome := 'BemaFI32.dll';
  end;

  // Salvar o arquivo de autenticados
  FdmPafEcf.ACBrPAF1.SaveFileTXT_N('lista_autenticados.txt');

  // Carregar o MD5 do arquivo de autenticados
  FdmPafEcf.ACBrAAC1.IdentPAF.ArquivoListaAutenticados.Nome := 'lista_autenticados.txt';

  FdmPafEcf.ACBrAAC1.IdentPAF.ArquivoListaAutenticados.MD5  := FdmPafEcf.ACBrEAD1.MD5FromFile(ExtractFilePath(Application.ExeName) + 'PAF-ECF\' + 'lista_autenticados.txt');

  FdmPafEcf.ACBrAAC1.SalvarArquivo;

  // setar o MD5 do arquivo de autenticados que deve aparecer no rodapé do cupom
  // se a impressora for MFD então fazer a programação para que apareça nas informações complementares
  // se não for MFD setar a propriedade InfoRodapeCupom.MD5 do FdmPafEcf.ACBrECF
  if FdmPafEcf.ACBrECF1.MFD then
  begin                                               
    FdmPafEcf.ACBrECF1.InfoRodapeCupom.MD5 := EmptyStr;
    if FdmPafEcf.ACBrECF1.Estado = estLivre then
    begin
      FdmPafEcf.ACBrECF1.IdentificaPAF(
        FdmPafEcf.ACBrAAC1.IdentPAF.Paf.Nome + ' v' + FdmPafEcf.ACBrAAC1.IdentPAF.Paf.Versao,
        'MD-5: ' + FdmPafEcf.ACBrAAC1.IdentPAF.ArquivoListaAutenticados.MD5
      );
    end;
  end
  else
  begin
    FdmPafEcf.ACBrECF1.InfoRodapeCupom.MD5 := FdmPafEcf.ACBrAAC1.IdentPAF.ArquivoListaAutenticados.MD5;
  end;

 

 

Grato se alguem responder.

  • Consultores
Postado

Duplicado em:

Tópico trancado.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 4115 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.