Ir para conteúdo
  • Cadastre-se

dev botao

ACBrBoleto - Tratamento dos campos de descontos 2 e 3


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

Recommended Posts

Identifiquei que na maioria dos bancos os campos de descontos 2 e 3 não estão sendo tratados da forma que é tratado os campos de descontos "1".

Na classe TACBrBancoClass possui duas funções que podem ser implementadas e tratam o desconto "1" mas não existem algo parecido para os campos de descontos 2 e 3.

function DefineCodigoDesconto(const ACBrTitulo: TACBrTitulo): String; virtual;
function DefineDataDesconto(const ACBrTitulo: TACBrTitulo; AFormat: String = 'ddmmyyyy'): String; virtual;

Minha sugestão é também ter a mesma funcionalidade para os demais campos, facilitando e permitindo popular corretamente os registros de forma simples e reuso do código, ainda manda a função anterior já como deprecated.

function DefineCodigoDesconto(const ACBrTitulo: TACBrTitulo): String; virtual; deprecated 'Moved to the AnsiStrings unit';  //Utilizando para definir Código de Desconto na Remessa
function DefineCodigoDescontoId(const ATipo: TACBrTipoDesconto; const AValor: Currency): String; virtual;  //Utilizando para definir Código de Desconto na Remessa
function DefineDataDesconto(const ACBrTitulo: TACBrTitulo; AFormat: String = 'ddmmyyyy'): String; virtual; deprecated 'Moved to the AnsiStrings unit';   //Utilizado para definir a Data de Desconto na Remessa
function DefineDataDescontoId(const AData: TDateTime; const AValor: Currency; const AFormat: String = 'ddmmyyyy'): String; virtual;    //Utilizado para definir a Data de Desconto na Remessa

//...

function TACBrBancoClass.DefineCodigoDesconto(const ACBrTitulo: TACBrTitulo): String;
begin
  with ACBrTitulo do
  begin
    Result := DefineCodigoDescontoId(TipoDesconto, ValorDesconto);
  end;
end;

function TACBrBancoClass.DefineCodigoDescontoId(
  const ATipo: TACBrTipoDesconto; const AValor: Currency): String;
begin
  if (AValor > 0) then
  begin
    case ATipo of
       tdValorFixoAteDataInformada : Result := '1';
       tdPercentualAteDataInformada: Result := '2';
      else
        Result := '1';
    end;
  end
  else
    Result := '0';
end;

function TACBrBancoClass.DefineDataDesconto(const ACBrTitulo: TACBrTitulo; AFormat: String): String;
begin
  with ACBrTitulo do
  begin
    DefineDataDescontoId(DataDesconto, ValorDesconto, AFormat);
  end;
end;

function TACBrBancoClass.DefineDataDescontoId(const AData: TDateTime; const AValor: Currency; const AFormat: String): String;
begin
  if (AValor > 0) then
  begin
    if (AData > 0) then
      Result := FormatDateTime(AFormat, AData)
    else
      Result := PadRight('', Length(AFormat), '0');
  end
  else
    Result := PadRight('', Length(AFormat), '0');
end;

Assim simplifica o ajuste nas classes dos bancos, mantendo a mesma lógica do código:

image.thumb.png.2e31fd1d3edcb46a29beed0b22adc68f.png

Segue código com o ajuste.

ACBrBoleto.pas ACBrBancoSantander.pas

Link para o comentário
Compartilhar em outros sites

  • Administradores

Obrigado pela contribuição, em breve será validada para possível inclusão ao svn

TK-3328

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

Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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