Jump to content

chamada diadoacbr

Assista tectoy.png

Refactory AcbrBoleto


digao_go
Go to solution Solved by José M. S. Junior,
  • Este tópico foi criado há 597 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde,

09/04/2020
-- ACBrBoleto, ACBrBancoBradesco, ACBrBancoUnicredRS, ACBrBancoUnicredSC, ACBrBancoUnicredES --
[*] Realização de Refactory nas classes dos Bancos, unificando funcionalidades criadas na classe principal ACBrBancoClass, notei que a função LerRetorno240, agora fica dentro da AcbrBoleto, vale lembrar que alguns bancos retorna o "Valor pago" e o "Valor Creditado", isso havia sido padronizado um tempo atrás, e depois modificou. Estou trabalhando no Bradesco neste momento e conforme manual existe o Valor Pago, e Valor Creditado, que antes vinha no campo valor Recebido. Sugiro que mesmo que alguns bancos não retorne o valor recebido, seja utilizado da forma que estava, pois acredito ser o 2 commit que altera e afeta.

Sugiro que mantenha o padrão anterior pois no banco do Brasil volta dados na posição 93, diferente do Bradesco que por algum motivo não informa o valor creditado.

ValorPago           := StrToFloatDef(copy(Linha, 78, 15), 0) / 100;
ValorRecebido       := StrToFloatDef(copy(Linha, 93, 15), 0) / 100;

 

image.thumb.png.7ea7937bcc9ea5901d2cdef19256eeb9.png

Existe um outro Tópico também sobre o assunto que achei

 

ACBrBoleto.pas

Edited by digao_go
Posição informada errada
Link to comment
Share on other sites

  • Consultores

Boa tarde

O Refactory realizado até o momento afeta apenas as classes Bradesco e Unicred. Note que os demais bancos permanecem com todas as funções implementadas na própria classe, portanto não utilizam os métodos unificados na classe ACBrBoleto. Isso está sendo ajustado a medida que for sendo realizado a reescrita de cada classe.

Talvez esse problema possa ser local dessa classe. Chegou a fazer um debug?

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link to comment
Share on other sites

19 minutos atrás, José M. S. Junior disse:

Boa tarde

O Refactory realizado até o momento afeta apenas as classes Bradesco e Unicred. Note que os demais bancos permanecem com todas as funções implementadas na própria classe, portanto não utilizam os métodos unificados na classe ACBrBoleto. Isso está sendo ajustado a medida que for sendo realizado a reescrita de cada classe.

Talvez esse problema possa ser local dessa classe. Chegou a fazer um debug?

Boa tarde,

Não estou na verdade tendo problemas, apenas indicando que siga o padrão de nomenclatura do manual, ao invés do campo ValorRecebido, usar o ValorPago, pois é o nome que volta no manual na posição 78. Assim quando unificar banco que tem valor pago e valor recebido não teremos novamente problemas como citados no Post que coloquei de referência.

ValorPago           := StrToFloatDef(copy(Linha, 78, 15), 0) / 100;
ValorRecebido       := StrToFloatDef(copy(Linha, 93, 15), 0) / 100;

 

Link to comment
Share on other sites

Bom dia!

 

tem 3 campos que não esta sendo tratado 

    fBancoCobrador     : String;
    fAgenciaCobrador      : String;
    fDvAgenciaCobrador    : String;

 

sempre tenho que ajustar quando baixo o acbrboleto, estes campos são do Bradesco, não sei se afeta outros bancos.

LerRetorno400:

 BancoCobrador        := Copy(Linha,166,3);
  AgenciaCobrador        := Copy(Linha,169,5);

 

Seria possível adicionar estes campos no repositório?


Desde já agradeço

Link to comment
Share on other sites

  • Administradores

Boa tarde.

3 horas atrás, hugo_fabricio disse:

sempre tenho que ajustar quando baixo o acbrboleto, estes campos são do Bradesco, não sei se afeta outros bancos.

Por favor crie um novo tópico anexando os fontes.

Att.

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

Link to comment
Share on other sites

Boa tarde,

Segue novos ajustes para o Refactory. Falei no Bradesco para homologação e no manual onde diz carteira posição 58(Carteira) na verdade é a característica do Titulo, notei pois estava vindo um digito 1 e estou usando a carteira 09.

Então foi alterado conforme instruções.

          Carteira := copy(Linha, 39, 2);
          case strtoint(copy(Linha, 58, 1)) of
           '1': CaracTitulo := tcSimples;
           '2': CaracTitulo := tcVinculada;
           '3': CaracTitulo := tcCaucionada;
           '4': CaracTitulo := tcDescontada;
           '5': CaracTitulo := tcVendor;
          end;

image.png.86ae5a14e7c03608be7a1fa7de7dcd9a.png

image.png.db61eed864d44dfe31f54e6096cfe49c.png

image.thumb.png.b297d4663ebaccbbefb98cac482b0f89.png

ACBrBoleto.pas

  • Like 1
Link to comment
Share on other sites

  • Administradores

Bom dia.

Deverá ser analisado em breve pelo @José M. S. Junior

Att.

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

Link to comment
Share on other sites

  • 2 weeks later...
  • 5 months later...
  • Consultores

Boa tarde, mesmo algumas funções sendo migradas para a unit ACBrBoleto, aparentemente não houve mudanças quanto ao campo, aparentemente diversos Bancos utilizam apenas um campo para a leitura do valor pago. Se houver alterações por favor anexe a sugestão e o manual para análise.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link to comment
Share on other sites

Em 03/11/2020 at 17:00, José M. S. Junior disse:

Boa tarde, mesmo algumas funções sendo migradas para a unit ACBrBoleto, aparentemente não houve mudanças quanto ao campo, aparentemente diversos Bancos utilizam apenas um campo para a leitura do valor pago. Se houver alterações por favor anexe a sugestão e o manual para análise.

Bom dia,

Antes do refactory temos a leitura dos 2 campos, seja Valor pago e valor liquido previsto no manual. Depois do refactory não temos. Segue em anexo a Unit, acredito que se eles existem, devemos manter e os nomes poderiam ser sugestivos conforme layout do banco (Vlr pago e Vlr Liquido). No componente é Vlr Pago e valor Recebido, gera uma ambiguidade. Segue foto do banco do brasil que ainda está sem ajustes pelo que notei.

Outro detalhe ValorRecebido agora no refactory mudou a posição:

Antes:

 ValorPago           := StrToFloatDef(copy(Linha, 78, 15), 0) / 100;
 ValorRecebido       := StrToFloatDef(copy(Linha, 93, 15), 0) / 100;

Agora 

 ValorRecebido       := StrToFloatDef(copy(Linha, 78, 15), 0) / 100;

Ou seja eu tenho uma rotina para leitura de Arquivos retornos unica, porém quando vem do BB preciso ler ValorPago para ter acesso a 78 com 15, quando vem de outro banco preciso ler ValorRecebido para ter acesso.

 

image.thumb.png.01686fc5e86e8284b5ebe9473ac8fc2f.png

ACBrBoleto.pas

Link to comment
Share on other sites

  • Consultores

Boa tarde, o Banco do Brasil ainda não faz uso desta função unificada, note que a função LerRetorno deste banco permanece a mesma na Unit do Banco do Brasil. Quando essa Unit for refatorada precisaremos realizar adaptações.  Mas no momento note que permanece a leitura nos campos ValorPago e ValorRecebido na classe do BB.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link to comment
Share on other sites

1 hora atrás, José M. S. Junior disse:

Boa tarde, o Banco do Brasil ainda não faz uso desta função unificada, note que a função LerRetorno deste banco permanece a mesma na Unit do Banco do Brasil. Quando essa Unit for refatorada precisaremos realizar adaptações.  Mas no momento note que permanece a leitura nos campos ValorPago e ValorRecebido na classe do BB.

Correto, mas ai no caso eu precisaria ficar testando (Se banco = 237 leia ValorRecebido, se 001 - Valor Pago) pois mudou as posições. Acredito que de toda forma por existir as posições vai precisar de ajustar como eu fiz pois temos 2 informações distintas no retorno. Primeiro houve uma mudança no nome do campo, ao ser transportado para a Unificada, permaneceu o ValorRecebido, que antes lia uma determina posição e agora passou a ler outras, isso gerou inconsistência no sistema todo. Se for mudar elas, teria que manter no mesmo padrão até todos os bancos serem transportados para a Unificada, assim eu sei que estou lendo ValorPago/ValorRecebido, e a posição é a mesma para todos os bancos. Agora da foram que foi feito, mudou posição

Antes
ValorRecebido       := StrToFloatDef(copy(Linha, 93, 15), 0) / 100;

Agora  
 ValorRecebido       := StrToFloatDef(copy(Linha, 78, 15), 0) / 100;

Se manter igual, fica transparente essa modificação até tudo ser unificado. #Sugestão

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.