Ir para conteúdo
  • Cadastre-se

msiscampos

Membros Pro
  • Total de ítens

    163
  • Registro em

  • Última visita

Posts postados por msiscampos

  1. 5 horas atrás, Juliomar Marchetti disse:

    Teste usar o arquivo em anexo e também precisei mudar aqui pois não tenho partes do seu projeto

    
    var
      chave, wdir: string;
      wn         : integer;
      fSeg       : TPortoSeguroIndY;
    begin
        //wdir          := dts_empresa.DataSet.FieldByName('PATH_RAIZ').AsString + 'x_dfe\_Cte\' + '20' + copy(edl_chave.Text, 3, 2) + copy(edl_chave.Text, 5, 2);
      od.InitialDir := ExtractFilePath(ParamStr(0));
    
      edl_averbado.Text := '';
      MemoDados.Lines.Clear;
      if oD.Execute then
      begin
        fSeg := TPortoSeguroIndy.create;
        try
          fSeg.UserName := 'xxxxxxx'; // atencão username e Password tem que solicitar junto a Porto Seguro
          fSeg.Password := 'xxxx'; // Esse é o meu acesso
    
          wn := pos('-', oD.FileName);
    
          if wn > 0 then
            chave := copy(od.FileName, wn - 44, 44);
    
          fSeg.Averbacao := maUpload;
          fSeg.UpLoad(oD.FileName);
    
          MemoDados.Lines.Add('Resultado do Envio');
          MemoDados.Lines.Add('Protocolo => ' + fSeg.Protocolo);
          MemoDados.Lines.Add('Chave     => ' + fSeg.Chave);
          MemoDados.Lines.Add(fSeg.MensagemRetorno);
    
          fSeg.Averbacao := maConsulta;
          fSeg.Chave     := chave;
    
          if fSeg.Consulta(oD.FileName) then
          Begin
    
            MemoDados.Lines.Add('Resultado da Consulta');
            MemoDados.Lines.Add('Protocolo => ' + Trim(fSeg.Protocolo));
            MemoDados.Lines.Add('Chave     => ' + fSeg.Chave);
            MemoDados.Lines.Add(stringreplace(fSeg.MensagemRetorno, ';', #13, [ rfReplaceAll ]));
    
            ShowMessage(stringreplace(fSeg.MensagemRetorno, ';', #13, [ rfReplaceAll ]));
            edl_averbado.Text := Trim(fSeg.Protocolo);
          End;
        finally
          fSeg.Free;
        end;
      end;
        //pn_card4Click(pn_card4);

     

    uPortoSeguroIndy.pas 7 kB · 1 download

    Mas ele pode ser melhorado. criado classe e convertido os JSON para elas e vice versa ao invés de ficar fazendo copy ou pos de texto que podem ocasionar erros

    Maravilha irmão, deu certo - obrigado pela sua dedicação em ajudar.

  2. uPortoSeguroIndy.pas

    Exemplo de uso com Opendialog

    procedure TF_Cte.wb_averbarExecute(Sender: TObject);
    var
     chave , wdir : string;
     wn : integer;
     fSeg: TPortoSeguroIndY;
     
    begin

      wdir := dts_empresa.DataSet.FieldByName('PATH_RAIZ').AsString+'x_dfe\_Cte\'+'20'+copy(edl_chave.Text,3,2)+copy(edl_chave.Text,5,2);
      od.InitialDir := wdir;


      edl_averbado.Text:='';
      MemoDados.Lines.Clear ;
      if oD.Execute then
      begin
       
       fSeg := TPortoSeguroIndy.create ;

       fSeg.UserName  := '00000000000000';  // atencão username e Password tem que solicitar junto a Porto Seguro 
       fSeg.Password  := '000';            // Esse é o meu acesso 

       wn :=  pos('-',oD.FileName);

       if wn>0 then
           chave := copy(od.FileName,wn-44,44);

        fSeg.Averbacao := maUpload ;
        fSeg.UpLoad(oD.FileName) ;
     
        MemoDados.Lines.Add('Resultado do Envio') ;
        MemoDados.Lines.Add('Protocolo => '+fSeg.Protocolo) ;
        MemoDados.Lines.Add('Chave     => '+fSeg.Chave) ;
        MemoDados.Lines.Add(fSeg.MensagemRetorno) ;
       
        fSeg.Averbacao := maConsulta ;
        fSeg.Chave     := chave ;
        fSeg.Consulta(oD.FileName) ;
       
        MemoDados.Lines.Add('Resultado da Consulta') ;
        MemoDados.Lines.Add('Protocolo => '+Trim(fSeg.Protocolo)) ;
        MemoDados.Lines.Add('Chave     => '+fSeg.Chave) ;
        MemoDados.Lines.Add(stringreplace(fSeg.MensagemRetorno,';',#13,[rfReplaceAll])) ;
       
       if fSeg.Sucesso then
        Begin
          ShowMessage(stringreplace(fSeg.MensagemRetorno,';',#13,[rfReplaceAll])) ;
         edl_averbado.Text:= Trim(fSeg.Protocolo);
        End;
        fSeg.Free ;
      end;
       pn_card4Click(pn_card4);
    end;
     

    • Curtir 2
  3. 1 hora atrás, i3sistemas disse:

    Vir la sua classe e eu tinha o mesmo problema de memory leek quando consumia qualquer API via rest, a solução foi passa a memorar o código usando Interfaces. No delphi usando interface o agenciamento de memoria é automático.

    eu tenho uma classe pronta de consumo de Json que eu mesmo fiz usando TRestClient com intefaces, vou publica no git se quiser posso de enviar, porem o Thulio tem um curso de solid que fala justamente isso seria melhor faze-lo

    Thulio Bittencourt - Interfaces

    meu git com a classe que uso para consumir API

    JsonRestClient
     

    Bom dia i3Sistemas , Agradeço à  disposição ,  eu até tenho esse curso, vamo na luta. obrigado.

  4. Boa Tarde -  eu  uso uma unit(anexo)  para enviar (xml)  e receber protocolo de averbação  da Porto seguro

    agora estou  tentando passar   aplicação para delphi Rio  10.3 - até que funciona + no final 

    dá um monte de memory leek  - fazem 3 dias que não saio do lugar. 

    para quem usa indy e Json com frequencia - talvez possa me dar uma ajuda,

    Obrigado  - Deus no Comando ! 

    o exemplo de uso é 

    procedure TF_Averba.bt_carregaClick(Sender: TObject);
    var
       fSeg: TPortoSeguroIndy ;
    begin
      ed_prot.Text:='';
      Memo1.Lines.Clear ;
      if OD.Execute then  // Opendialog1
      begin
        fSeg := TPortoSeguroIndy.create ;
      try
        fSeg.UserName  := '000000000000000';
        fSeg.Password  := '0000';

        fSeg.Averbacao := maUpload ;
        fSeg.UpLoad(OD.FileName) ;
        Memo1.Lines.Add('Resultado do Envio') ;
        Memo1.Lines.Add('Protocolo => '+fSeg.Protocolo) ;
        Memo1.Lines.Add('Chave     => '+fSeg.Chave) ;
        Memo1.Lines.Add(fSeg.MensagemRetorno) ;

        fSeg.Averbacao := maConsulta ;
       // fSeg.Chave     := 'Chave do CT-e ou MDF-e' ;

        fSeg.Consulta(OD.FileName) ;
        Memo1.Lines.Add('Resultado da Consulta') ;
        Memo1.Lines.Add('Protocolo => '+Trim(fSeg.Protocolo)) ;
        Memo1.Lines.Add('Chave     => '+fSeg.Chave) ;
        Memo1.Lines.Add(stringreplace(fSeg.MensagemRetorno,';',#13,[rfReplaceAll])) ;

        if fSeg.Sucesso then
        Begin
          ShowMessage(stringreplace(fSeg.MensagemRetorno,';',#13,[rfReplaceAll])) ;
          ed_prot.Text:= Trim(fSeg.Protocolo);
        End;
      finally
        fSeg.Free ;
      end;

      end;
    end;
     

     

     

    uPortoSeguroIndy.pas

  5. Bom dia, Quando um aparelho apresenta defeito, nesse caso em específico, toda vez que envia um comando,

    apaga todas as luzes e some o driver de comunicação, informado ao fabricante que está em analise  para 

    possível troca.

    No caso de substituição do aparelho, o que devemos fazer com relação à vinculação desse aparelho , já que 

    não se consegue fazer o bloqueio do mesmo via software.

     

  6. Bom dia - Substituição de Cte rejeitado pelo evento em desacordo.

    Tomador de serviços rejeitou vários ctes por não constar um número

    de controle interno deles no campo Obs, isso poderia ser resolvido com

    carta de correção, mas não foi o que aconteceu, simplesmente rejeitou os

    ctes através do SEFAZ e solicitou a Transportadora  a refazer os Ctes para

    poder pagar os fretes.  alguém poderia me ajudar nos passos a serem tomados?

     

     

  7. Bom dia 

    Eu sempre utilizo o SAT ELGIN LINKER 2 e impressora ELGIN I9 - porém o meu fornecedor

    está sem estoque dessa marca  e sugeriu o kit NITERE - o ACBrSAT funciona bem com esta 

    marca?  Quais configurações relevantes eu tenho que adotar?  

     

     

  8. Boa Tarde -

    Existe alguma propriedade  ou forma que eu possa  capturar a mensagem

    de rejeição da NFE - 

    Se eu deixo ACBRNFe1.Configuracoes.Salvar=False -> e a nota é rejeitada - fica tudo parado e não me mostra retorno nenhum.

    Se eu deixo ACBRNFe1.Configuracoes.Salvar=True -> e a nota é rejeitada - é gerado os  xmls na Pasta configurada, só que  se eu 

    quiser ver o resultado eu preciso ir na pasta e abrir os retornos pelo IE.

    Será que tem alguma forma de ativar isso?

    eu uso essa forma para enviar - quando tá tudo certo funciona  

    ACBrNFe1.Enviar(wnumlote, False);

      if ACBrNFe1.Consultar then
      begin
       WPROTOCOLO := ACBrNFe1.WebServices.Retorno.Protocolo;

        ACBrNFe1.NotasFiscais.Imprimir;
      end; 

     

     

  9. Perfeito Italo,   Averbação ELT -> nas duas situações 


     1- Envia o Arquivo e já retorna o Valor 

    Retorno da solicitação de Averbação
    CNPJ     : 08037620000107
    CTE      : 83394
    Data/Hora: 25/06/2019 14:34:24
    Arquivo  : 35190608037620000107570010000833941900833947-cte.xml
    Doc      : 
    Codigo   : 0
    Resultado: DOCUMENTO AVERBADO !!!!
    Protocolo: 0675112190803762000010757001000083394E87
    Status   : Enviado

    ===============================================

    2- Arquivo Já enviado retorna o Status Processado 

    Retorno da solicitação de Averbação
    CNPJ     : 08037620000107
    CTE      : 83394
    Data/Hora: 25/06/2019 14:35:23
    Arquivo  : 35190608037620000107570010000833941900833947-cte.xml
    Doc      : 
    Codigo   : 1
    Resultado: DOCUMENTO JA PROCESSADO!
    Protocolo: 0675112190803762000010757001000083394E87
    Status   : Enviado


    Muito Obrigado pela dedicação - Abraços 

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

The popup will be closed in 10 segundos...