Ir para conteúdo
  • Cadastre-se

nazarenoneto

Membros Pro
  • Total de ítens

    209
  • Registro em

  • Última visita

Posts postados por nazarenoneto

  1. Gostaria que dessem uma analisada nas alterações que fiz.

    ACBrAAC.IdentPaf.OutrosArquivos essa propriedade são os arquivos usados pelo paf?

    Se sim, quando abro o arquivo e insiro algum arquivo com seu respectivo md5, que salvo o mesmo.

    E depois abro ele novamente não estava vindo os dados salvos no mesmo.

    Não sei se é permitido salvar a lista de arquivos no arquivo auxiliar, se for possivel eu implementei essa alteração.

    
    //Arquivo ACBrAAc.pas
    
    procedure TACBrAAC.AbrirArquivo ;
    
    var
    
      Ini: TMemIniFile;
    
      SL : TStringList;
    
      MS : TMemoryStream ;
    
      I  : Integer ;
    
      S, R : AnsiString ;
    
      Linha, Ident : String ;
    
      Continua : Boolean ;
    
      CRC : Word ;
    
    begin
    
      GravaLog( 'AbrirArquivo');
    
    
      Continua := True;
    
      if Assigned( fsOnAntesAbrirArquivo ) then
    
         fsOnAntesAbrirArquivo( Continua );
    
    
      if not Continua then
    
      begin
    
         GravaLog( 'AbrirArquivo abortado' );
    
         exit;
    
      end ;
    
    
      if NomeArquivoAux = '' then
    
         raise EACBrAAC_SemNomeArquivo.Create( ACBrStr('Nome do Arquivo não Informado em: ACBrAAC.NomeArquivoAux') ) ;
    
    
      if not FileExists( fsNomeCompleto ) then
    
         raise EACBrAAC_ArqNaoEncontrado.Create(
    
            ACBrStr( 'Arquivo Auxiliar Criptografado'+sLineBreak+
    
                     '"'+NomeArquivoAux+'"'+sLineBreak+
    
                     'não encontrado') );
    
    
      fsDtHrArquivo := FileDateToDateTime( FileAge( fsNomeCompleto ) );
    
    
      // Lê arquivo de modo binário e transfere para a AnsiString = S //
    
      MS := TMemoryStream.Create;
    
      try
    
        MS.LoadFromFile( fsNomeCompleto );
    
        MS.Position := 0;
    
        SetLength(S, MS.Size);
    
        MS.ReadBuffer(PChar(S)^, MS.Size);
    
      finally
    
        MS.Free;
    
      end;
    
    
      SL  := TStringList.Create ;
    
      Ini := TMemIniFile.Create('') ;
    
      try
    
         // DEBUG
    
         // GravaLog('Arquivo Lido: '+sLineBreak+ S );
    
         R := DesCriptografar( S ) ;
    
         // DEBUG
    
         //GravaLog('Arquivo Descriptografado: '+sLineBreak+ R );
    
    
         SL.Text := R;
    
         Ini.SetStrings( SL );
    
    
         if GravarDadosSH then
    
         begin
    
            fsIdentPAF.Empresa.Cep         := Ini.ReadString('SH','Cep','');
    
            fsIdentPAF.Empresa.Cidade      := Ini.ReadString('SH','Cidade','');
    
            fsIdentPAF.Empresa.CNPJ        := Ini.ReadString('SH','CNPJ','');
    
            fsIdentPAF.Empresa.Contato     := Ini.ReadString('SH','Contato','');
    
            fsIdentPAF.Empresa.Email       := Ini.ReadString('SH','Email','');
    
            fsIdentPAF.Empresa.Endereco    := Ini.ReadString('SH','Endereco','');
    
            fsIdentPAF.Empresa.IE          := Ini.ReadString('SH','IE','');
    
            fsIdentPAF.Empresa.IM          := Ini.ReadString('SH','IM','');
    
            fsIdentPAF.Empresa.RazaoSocial := Ini.ReadString('SH','Nome','');
    
            fsIdentPAF.Empresa.Telefone    := Ini.ReadString('SH','Telefone','');
    
            fsIdentPAF.Empresa.Uf          := Ini.ReadString('SH','Uf','');
    
         end ;
    
    
         if GravarDadosPAF then
    
         begin
    
            fsIdentPAF.NumeroLaudo           := Ini.ReadString('PAF','NumeroLaudo',''); // Número do Laudo
    
            fsIdentPAF.VersaoER              := Ini.ReadString('PAF','VersaoER','');    // Versão do Roteiro Executado na Homologação
    
            fsIdentPAF.Paf.Nome              := Ini.ReadString('PAF','Nome','');        // Nome do Sistema PAF
    
            fsIdentPAF.Paf.Versao            := Ini.ReadString('PAF','Versao','');      // Versão do Sistema PAF
    
            fsIdentPAF.Paf.PrincipalExe.Nome := Ini.ReadString('PAF','NomeExe','');     // Nome do Principal EXE do PAF
    
            fsIdentPAF.Paf.PrincipalExe.MD5  := Ini.ReadString('PAF','MD5Exe','');      // MD5 do Principal EXE do PAF
    
         end ;
    
         fsIdentPAF.ArquivoListaAutenticados.MD5 := Ini.ReadString('PAF','MD5','');     // MD5 do arquivo que contem a lista de arquivos autenticados
    
    
         if GravarDadosPAF and GravarDadosSH then
    
         begin
    
           CRC := StringCrc16( fsIdentPAF.Empresa.RazaoSocial +
    
                               fsIdentPAF.Empresa.CNPJ +
    
                               fsIdentPAF.Empresa.IE +
    
                               fsIdentPAF.Empresa.IM +
    
                               fsIdentPAF.Paf.Nome +
    
                               fsIdentPAF.Paf.Versao +
    
                               fsIdentPAF.ArquivoListaAutenticados.MD5 );
    
           if Ini.ReadInteger('CHK','CRC16',0) <> CRC then
    
              raise EACBrAAC_ArquivoInvalido.Create(
    
                 ACBrStr('Arquivo: '+NomeArquivoAux+' inválido') );
    
         end ;
    
    
         fsIdentPAF.ECFsAutorizados.Clear;
    
         I := 0 ;
    
         while True do
    
         begin
    
            Ident := 'ECF_'+IntToStrZero(I,4);
    
            Linha := Ini.ReadString( 'ECFs', Ident, '*FIM*' );
    
    
            if Linha = '*FIM*' then
    
               break ;
    
    
            with fsIdentPAF.ECFsAutorizados.New do
    
            begin
    
               LinhaDados := Linha;
    
            end;
    
    
            Inc( I ) ;
    
         end ;
    
         //Inicio da Alteração
    
         fsIdentPAF.OutrosArquivos.Clear;
    
         I := 0 ;
    
         while True do
    
         begin
    
            Ident := 'ARQ_'+IntToStrZero(I,4);
    
            Linha := Ini.ReadString( 'ARQs', Ident, '*FIM*' );
    
    
            if Linha = '*FIM*' then
    
               break ;
    
    
            with fsIdentPAF.OutrosArquivos.New do
    
            begin
    
               LinhaDados := Linha;
    
            end;
    
    
            Inc( I ) ;
    
         end ;
    
         //Fim da Alteração
    
         Params.Clear;
    
         I := 0 ;
    
         while True do
    
         begin
    
            Ident := 'L_'+IntToStrZero(I,4);
    
            Linha := Ini.ReadString( 'Params', Ident, '*FIM*' );
    
    
            if Linha = '*FIM*' then
    
               break ;
    
    
            Params.Add( Linha );
    
            Inc( I ) ;
    
         end ;
    
    
         if Assigned( fsOnDepoisAbrirArquivo ) then
    
            fsOnDepoisAbrirArquivo( Self );
    
    
      finally
    
         Ini.Free ;
    
         SL.Free;
    
      end ;
    
    end ;
    
    
    procedure TACBrAAC.SalvarArquivo ;
    
    var
    
      Ini: TMemIniFile;
    
      SL : TStringList;
    
      I  : Integer ;
    
      Ident  : String ;
    
      ArqBak : String ;
    
      R      : AnsiString ;
    
      Continua : Boolean ;
    
      CRC : Word ;
    
    begin
    
      GravaLog( 'GravarArqRegistro' );
    
    
      Continua := True;
    
      if Assigned( fsOnAntesGravarArquivo ) then
    
        fsOnAntesGravarArquivo( Continua );
    
    
      if not Continua then
    
      begin
    
        GravaLog( 'GravarArqRegistro abortado' );
    
        exit;
    
      end ;
    
    
      if NomeArquivoAux = '' then
    
        raise EACBrAAC_SemNomeArquivo.Create( ACBrStr('Nome do Arquivo não Informado em: ACBrAAC.NomeArquivoAux') ) ;
    
    
      if GravarDadosSH then
    
      begin
    
        if (fsIdentPAF.Empresa.RazaoSocial = '') or (fsIdentPAF.Empresa.CNPJ = '') then
    
          raise EACBrAAC_ArquivoInvalido.Create(
    
             ACBrStr('SH_RazaoSocial e/ou SH_CNPJ não informados') );
    
      end ;
    
    
      if GravarDadosPAF then
    
      begin
    
        if (fsIdentPAF.Paf.Nome = '') or (fsIdentPAF.Paf.Versao = '')then
    
          raise EACBrAAC_ArquivoInvalido.Create(
    
             ACBrStr('PAF_Nome e/ou PAF_Versao não informados') );
    
      end ;
    
    
      SL  := TStringList.Create ;
    
      Ini := TMemIniFile.Create( '' ) ;
    
      try
    
         if GravarDadosSH then
    
         begin
    
            Ini.WriteString('SH','CNPJ',fsIdentPAF.Empresa.CNPJ);
    
            Ini.WriteString('SH','Nome',fsIdentPAF.Empresa.RazaoSocial);
    
            Ini.WriteString('SH','Cep',fsIdentPAF.Empresa.Cep);
    
            Ini.WriteString('SH','Cidade',fsIdentPAF.Empresa.Cidade);
    
            Ini.WriteString('SH','Contato',fsIdentPAF.Empresa.Contato);
    
            Ini.WriteString('SH','Email',fsIdentPAF.Empresa.Email);
    
            Ini.WriteString('SH','Endereco',fsIdentPAF.Empresa.Endereco);
    
            Ini.WriteString('SH','IE',fsIdentPAF.Empresa.IE);
    
            Ini.WriteString('SH','IM',fsIdentPAF.Empresa.IM);
    
            Ini.WriteString('SH','Telefone',fsIdentPAF.Empresa.Telefone);
    
            Ini.WriteString('SH','Uf',fsIdentPAF.Empresa.Uf);
    
         end ;
    
    
         if GravarDadosPAF then
    
         begin
    
            Ini.WriteString('PAF','Nome',fsIdentPAF.Paf.Nome);                 // Nome do Sistema PAF
    
            Ini.WriteString('PAF','Versao',fsIdentPAF.Paf.Versao);             // Versão do Sistema PAF
    
            Ini.WriteString('PAF','NumeroLaudo',fsIdentPAF.NumeroLaudo);       // Número do Laudo
    
            Ini.WriteString('PAF','VersaoER',fsIdentPAF.VersaoER);             // Versão do Roteiro Executado na Homologação
    
            Ini.WriteString('PAF','NomeExe',fsIdentPAF.Paf.PrincipalExe.Nome); // Nome do Principal EXE do PAF
    
            Ini.WriteString('PAF','MD5Exe',fsIdentPAF.Paf.PrincipalExe.MD5);   // MD5  do Principal EXE do PAF
    
         end ;
    
         Ini.WriteString('PAF','MD5',fsIdentPAF.ArquivoListaAutenticados.MD5); // MD5 do arquivo que contem a lista de arquivos autenticados
    
    
         // Lista de ECFs autorizados a usar o PAF-ECF no estabelecimento
    
         For I := 0 to fsIdentPAF.ECFsAutorizados.Count-1 do
    
         begin
    
            Ident := 'ECF_'+IntToStrZero(I,4);
    
            Ini.WriteString( 'ECFs', Ident, fsIdentPAF.ECFsAutorizados[I].LinhaDados );
    
         end ;
    
    
         //Inicio da Alteração
    
         // Lista de Arquivos
    
         For I := 0 to fsIdentPAF.OutrosArquivos.Count-1 do
    
         begin
    
            Ident := 'ARQ_'+IntToStrZero(I,4);
    
            Ini.WriteString( 'ARQs', Ident, fsIdentPAF.OutrosArquivos[I].LinhaDados );
    
         end ;
    
         //Fim da Alteração
    
    
         // Lista de parametros adicionais
    
         For I := 0 to Params.Count-1 do
    
         begin
    
            Ident := 'L_'+IntToStrZero(I,4);
    
            Ini.WriteString( 'Params', Ident, Params[I] );
    
         end ;
    
    
         if GravarDadosPAF and GravarDadosSH then
    
         begin
    
           // Calculando o CRC //
    
           CRC := StringCrc16( fsIdentPAF.Empresa.RazaoSocial +
    
                               fsIdentPAF.Empresa.CNPJ +
    
                               fsIdentPAF.Empresa.IE +
    
                               fsIdentPAF.Empresa.IM +
    
                               fsIdentPAF.Paf.Nome +
    
                               fsIdentPAF.Paf.Versao +
    
                               fsIdentPAF.ArquivoListaAutenticados.MD5 );
    
           Ini.WriteInteger('CHK','CRC16',CRC);
    
         end ;
    
    
         Ini.GetStrings( SL );
    
    
         // DEBUG
    
         //GravaLog('Arquivo em Memoria: '+sLineBreak+ SL.Text );
    
         R := Criptografar( SL.Text );
    
         // DEBUG
    
         //GravaLog('Arquivo Criptografado: '+sLineBreak+ R );
    
    
         if fsCriarBAK then
    
         begin
    
            ArqBak := ChangeFileExt( fsNomeCompleto, '.bak');
    
            DeleteFile( ArqBak );
    
            RenameFile( fsNomeCompleto, ArqBak );
    
         end ;
    
    
         WriteToTXT( fsNomeCompleto, R, False, False );
    
    
         if fsEfetuarFlush then
    
            FlushToDisk( fsNomeCompleto );
    
    
         fsDtHrArquivo := FileDateToDateTime( FileAge( fsNomeCompleto ) );
    
    
         if Assigned( fsOnDepoisGravarArquivo ) then
    
            fsOnDepoisGravarArquivo( Self );
    
      finally
    
         Ini.Free ;
    
         SL.Free;
    
      end ;
    
    end ;
    
    
    
    //Arquivo ACBrPAFClass
    
      { TACBrECFArquivo }
    
    
      TACBrECFArquivo = class( TPersistent )
    
      private
    
        fsMD5: string;
    
        fsNome: String;
    
        //Linha Adicionada
    
        function GetLinhaDados : String ;
    
        //Linha Adicionada
    
        procedure SetLinhaDados(const AValue : String) ;
    
        procedure SetMD5(const AValue : string) ;
    
        procedure SetNome(const AValue : String) ;
    
      published
    
        property Nome: String read fsNome write SetNome;
    
        property MD5: string read fsMD5 write SetMD5;
    
        //Linha Adicionada
    
        property LinhaDados : String read GetLinhaDados write SetLinhaDados ;
    
      end;
    
    
    //Função Adicionada
    
    function TACBrECFArquivo.GetLinhaDados: String;
    
    begin
    
      Result := Nome+ '|' +
    
                MD5;
    
    end;
    
    
    //Procedimento Adicionada
    
    procedure TACBrECFArquivo.SetLinhaDados(const AValue: String);
    
    var
    
       SL : TStringList ;
    
    begin
    
      SL := TStringList.Create;
    
      try
    
         SL.Text := StringReplace( AValue, '|', sLineBreak, [rfReplaceAll] ) ;
    
    
         if SL.Count < 2 then exit ;
    
    
         Nome    := SL[0] ;
    
         MD5     := SL[1] ;
    
      finally
    
         SL.Free;
    
      end ;
    
    end;
    
    

    Segue arquivos alterados:

    ACBrAAC.pas

    ACBrPAFClass.pas

  2. No paf aqui da empresa, temos 3 opções de preço: Preço de Venda, Atacado e Promoção

    Para efetuar a venda dos itens, vendemos com o preço de venda, e damos um desconto para chegar no preço de atacado ou promoção se for o caso.

    Não sei como ficaria no caso das quantidades, mas poderia ser da mesmo forma.

    1 unidade = 5,00

    2 a 5 unidades = 2% 0,10 Desconto

    6 a 10 unidades = 6% 0,30 Desconto

    11 ou mais = 10% 0,50 Desconto

    Não sei se atenderia seu cliente, sem falar que desse modo vai ter que sair destacado os descontos dados nos item no cupom.

  3. Pessoal, estou recebendo um erro estendido 140 (relógio inoperante) de uma impressora daruma, gostaria de saber se alguém ai sabe se isso é erro com a impressora ou com o meu sistema?

    Porque estou ligando na assistência e eles so falam que é erro com o sistema.

  4. Regys, eu consegui pegando a propriedade Parcelas do RespostasPendentes, mas esta vindo com os dados zerados.

    O que eu achei estranho é que vem a quantidade certa de parcelas, mas quando eu percorro elas não tem nenhum dado, sera q é por causa que eu to usando o demo da cielo?

  5. Pessoal, tem como eu capturar algumas informações do arquivo de resposta?

    Porque estou querendo pegar alguns dados da transação, tipo: numero de parcelas, vencimentos e valor de cada parcela.

    Quero pegar essas informações para fazer uma conciliação

    Alguém tem alguma ideia de como e em que evento fazer isso.

  6. Eu acho que algumas pessoas estão confundindo o intuito do SAC, pelo fato de ser o Daniel que esta a frete do projeto.

    Se não fosse o Daniel que criasse esse serviço, qualquer um de vocês poderia ter criado.

    E claro que assinando o SAC você vai estar ajudando o ACBr diretamente ou indiretamente, mas ao meu ver o SAC é serviço oferecido como qualquer outro.

    Pensem pessoal, se você vai no seu cliente e implanta alguma versão do linux, você pode cobrar pelo SO? Não, mas você pode cobrar pelo serviço de instalação, manutenção da rede, etc.

    É assim que se ganha dinheiro com software livre!

  7. Pessoal estava lendo o roteiro e fiquei curioso com o requisito XVIII, porque na PAF que estou desenvolvendo, no momento da emissão do cupom/dav/pré-venda tem uma tela de consulta de produtos, que nessa tela consta alguns dados do produto, tipo: preço, descrição, código, unidade, etc.

    Mas dai me veio a duvida, essa tela terá que ler as informações do arquivo do requisito XI?

    Tipo, porque no meu sistema eu tenho uma unica query centralizando as consultas a produtos no banco, tipo: quando vo inserir um produto, eu capturo o código digitado ou do produto selecionado na tela de consulta de produtos, ai vou e faço a pesquisa no DM para pegar todos os dados do produto, para fazer calculo de impostos e outros controles. Nesse caso, eu também teria que trabalhar com o arquivo do Requisito XI?

    Estou em uma imensa duvida quanto a isso, alguém poderia me dar uma luz?

  8. Se no caso for gerado uma exception de access violation, posso ser que o problema seja o seguinte. No evento OnBobinaAdicionaLinhas do ACBrECF, estaja igual ao demo que tem o seguinte código:

    
      WB_LoadHTML(wbBobina, mBobina.Text);
    
      Application.ProcessMessages ;
    
    
      WB_ScrollToBottom(wbBobina);
    
    

    Que serve justamente para simular a bobina da impressora.

    Mas provavelmente você esteja passando um TWebBrowser (wbBobina) que não foi criado ou instanciado, dai o exception.

    Mas isso se você utilizar esse comando para reproduzir sua bobina.

  9. Desculpe ai, eu não tinha chegado a ler a parte de perguntas e repostas.

    Mas acabei de decidir aqui com meu chefe que não vamos implementar pré-venda, vamos fazer apenas o DAV.

    Fica menos burocrático unir nossos sistemas de ecf e nfe.

    Vlw ai pela dicas.

  10. Pessoal, estava na duvida do seguinte, o meu cliente vai ser atendido no balcão da minha loja, ele faz todo o pedido e vendedor gera uma pré-venda, so que quando ele chega ai caixa ele informa que vai pagar em dinheiro e querer uma nfe envés de um cupom fiscal.

    Teria como emitir a nfe sem ter a necessidade de emitir o cupom fiscal?

    tipo, a nfe ficar vinculada a pre-venda?

    posso fazer isso com o DAV?

  11. Para desenvolver acho melhor a A1, pois vc pode instalar ele em mais de uma maquina, mas em contrapartida, se vc não fizer o backup do certificado e precisar formatar o pc de desenvolvimento vc perde o certificado, ja o A3 é melhor nessa parte, pois ele é físico, mas ainda se vc vai usar esse seu certificado para gerar SPED'S (Fiscal e Contábil), só é possível assinar tais documentos com certificado A3 (ate onde sei, se eu tiver errado alguém me corrija por favor).

    Resumindo:

    A1 = + mobilidade - segurança - serviços

    A3 = - mobilidade + segurança + serviços

×
×
  • 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.