Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

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

  • Membros Pro
Postado

Bom dia, não não é , mas acho que até deveria ser, isso ficou do Italo verificar em 2017 - mas não houve  prosseguimento, 

única  averbação  que que Utiliza ACBr é da ATM

  • Administradores
Postado

Bom dia

Acredito que se movermos para a área aberta vc terá mais chances de outros membros da comunidade poderem te ajudar também, debugando vc não encontrou onde pode estar o problema?

Outra dúvida, o responsável por esta unit também não conseguiu lhe ajudar?

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membros Pro
Postado

Ok - então fica assim - eu uso o ACBr pra emitir o Cte para emitir o MDFe ,a NFe ,SAT, etc   , só que averbação eu 

só consigo usá-lo se o cliente for ATM ? - o autor que também é da comunidade créditos a (MCOB), gentilmente me respondeu  que essa classe foi feita em delphi XE2 e ele não tem tem delphi Rio

 

  • Moderadores
  • Solution
Postado
11 minutos atrás, msiscampos disse:

Ok - então fica assim - eu uso o ACBr pra emitir o Cte para emitir o MDFe ,a NFe ,SAT, etc   , só que averbação eu 

só consigo usá-lo se o cliente for ATM ? - o autor que também é da comunidade créditos a (MCOB), gentilmente me respondeu  que essa classe foi feita em delphi XE2 e ele não tem tem delphi Rio

A Indy sofreu muitas alterações no Delphi Rio, por isso a unit precisaria ser ajustada.

O problema é que a Porto Seguro não oferece um webservice real, pelo que cheguei a verificar os dados precisam ser passados simulando um formulário HTML (TIdMultiPartFormDataStream). Não sei se isso é possível usando as classes do ACBr.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Administradores
Postado

Boa tarde.

Sugiro colocar um anuncio nos classificados e ver se alguém se candidata a tarefa.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Fundadores
Postado

Não compreendi o seu descontentamento...

Pelo que li, você solicitou um recurso que não é do Escopo do ACBr, e nossa consultora lhe indicou um meio de auxiliar na localização de Profissional que possa ajuda-lo, em sua tarefa...

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Consultores
Postado

Boa tarde Campos,

Porque a NF-e, CT-e, MDF-e, BP-e funcionam?

Simples, todas as SEFAZ seguem um layout nacional.

Porque a NFS-e não funciona?

Simples, cada prefeitura contrata uma empresa para implementar o webservice que recepciona as notas, mas essas empresas que eu chamo de provedor não seguem um padrão nacional.

Não seria ótimo se todas as empresas que realizam averbação, como é o caso da Porto Seguro, ATM entre outras, seguissem um padrão nacional?

Infelizmente não é assim.

Os bancos agora estão disponibilizando webservice para que possamos registrar os boletos em vez de gerar um TXT e enviar através de programas de terceiros.

Adivinha, cada banco resolveu criar o seu próprio layout, imagina a zorra que isso vai virar.

Da mesma forma que você tem as suas limitações em não conseguir fazer alterações na unit que você anexou, nós também temos as nossas.

Para criar o componente ACBrANe usando o ATM não foi tão difícil pelo fato deles possuírem um webservice.

Como o Big Wings disse, no caso do Porto Seguro temos que gerar um HTML, que no meu entendimento é uma aberração.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Fundadores
Postado

https://www.projetoacbr.com.br/forum/sac/questoes-importantes/

Citar

 

Se aderir ao SAC, tenho direito a solicitar desenvolvimento específico ?

Não. Ser membro do SAC não dá o direito de solicitar o desenvolvimento de rotinas ou componentes específicos. A correção de erros sempre será a prioridade, mas antes é fundamental averiguar se o problema está realmente nos fontes do ACBr. Os usuários do SAC tem um peso maior nas decisões de quais componentes devem ser desenvolvidos ou melhorados

 

 

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Membros Pro
Postado

Tranquilo, eu só usei do meu direito de fazer n/perguntas p/mes, anexando uma 

classe que até está funcional, envia e recebe normal,  porém com vazamento de memória,  e a ajuda que eu imaginei , 

seria de alguém que acompanha mais a evolução do delphi pudesse me ajudar. e até disponibilizar no SVN.  

  • Moderadores
Postado
49 minutos atrás, msiscampos disse:

classe que até está funcional, envia e recebe normal,  porém com vazamento de memória,  e a ajuda que eu imaginei , 

Fiz alguns ajustes.

Teste com a unit anexo.

 

 

uPortoSeguroIndy.pas

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Membros Pro
Postado

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
 

  • Curtir 1
  • Membros Pro
Postado
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.

  • 1 mês depois ...
  • Membros Pro
Postado

Bom dia -  a solução que encontrei foi essa abaixo, mas parece que não  interfere no desempenho - rsrsrs 

initialization
ReportMemoryLeaksOnShutdown := False;
 

  • Moderadores
Postado
33 minutos atrás, msiscampos disse:

Bom dia -  a solução que encontrei foi essa abaixo, mas parece que não  interfere no desempenho - rsrsrs 

initialization
ReportMemoryLeaksOnShutdown := False;
 

Tu estava exibindo sempre os memoryleaks?

Chegou a efetuar mais alterações na classe? se sim por favor anexe novamente vou ver se consigo analisar ela com calma

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Membros Pro
Postado

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
  • Este tópico foi criado há 1574 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.