Ir para conteúdo
  • Cadastre-se

dev botao

Classe TACBrTitulo: não suporta Multa Fixa?


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

Recommended Posts

No Banco do Brasil (BB) há a opção de "multa fixa" que utiliza um valor ao invés de um percentual. Alguns clientes usam regras como "Acima de R$ 250 a multa é 2%, abaixo é R$ 5". Na posição 66 do segmento R há um campo onde o BB espera 1=Valor Fixo ou 2=Percentual. No entanto, a procedure TACBrBancoBrasil.GerarRegistroTransacao240 tem no segmento R o seguinte trecho de código:

IfThen((PercentualMulta <> null) and (PercentualMulta > 0), '2', '0')   + // 66 - 66 1-Cobrar Multa / 0-Não cobrar multa

Além da discrepância entre o comentário e o código, aqui somente será passado o valor 2 (percentual), nunca 1 (valor fixo). Não existe suporte à multa por Valor Fixo? Imagino que poderia ser criada uma nova propriedade em TACBrTitulo para informar o tipo de multa (com default em percentual), talvez um MultaValorFixo boolean por exemplo, reusando a propriedade PercentualMulta como ValorMulta quando MultaValorFixo for true. Assim o código acima ficaria:

IfThen((PercentualMulta <> null) and (PercentualMulta > 0), IfThen(MultaValorFixo,'1','2'), '0')   + // 66 - 66 1=Valor Fixo; 2=Percentual

Que tal? Segue em anexo o novo ACBrBoleto.pas e um diff dele com o trunk2 de hoje:

alex@alex-desenvolvimento:~/fontes/ACBr/Fontes/ACBrBoleto$ svn diff ACBrBoleto.pas 
Index: ACBrBoleto.pas
===================================================================
--- ACBrBoleto.pas	(revisão 10389)
+++ ACBrBoleto.pas	(cópia de trabalho)
@@ -794,6 +794,7 @@
     fOcorrenciaOriginal: TACBrOcorrencia;
     fParcela           : Integer;
     fPercentualMulta   : Double;
+    fMultaValorFixo    : Boolean;
     fSeuNumero         : String;
     fTipoDiasProtesto: TACBrTipoDiasIntrucao;
     fTipoImpressao     : TACBrTipoImpressao;
@@ -908,6 +909,7 @@
      property Versao               : String   read fVersao                write fVersao;
      property SeuNumero            : String   read fSeuNumero             write fSeuNumero;
      property PercentualMulta      : Double   read fPercentualMulta       write fPercentualMulta;
+     property MultaValorFixo       : Boolean   read fMultaValorFixo       write fMultaValorFixo;
      property ValorDescontoAntDia  : Currency read fValorDescontoAntDia  write  fValorDescontoAntDia;
      property TextoLivre : String read fTextoLivre write fTextoLivre;
      property CodigoMora : String read fCodigoMora write SetCodigoMora;
@@ -1334,6 +1336,7 @@
    fValorRecebido        := 0;
    fValorDescontoAntDia  := 0;
    fPercentualMulta      := 0;
+   fMultaValorFixo       := false;
    fReferencia           := '';
    fVersao               := '';
 
@@ -1604,8 +1607,8 @@
       end;
 
       if PercentualMulta <> 0 then
-         AStringList.Add(ACBrStr('Cobrar Multa de ' +
-                         FormatCurr('R$ #,##0.00',ValorDocumento*( 1+ PercentualMulta/100)-ValorDocumento) +
+         AStringList.Add(ACBrStr('Cobrar Multa de ' + FormatCurr('R$ #,##0.00',
+           IfThen(MultaValorFixo, PercentualMulta, ValorDocumento*( 1+ PercentualMulta/100)-ValorDocumento)) +
                          ' após o vencimento.'));
    end;
 end;
alex@alex-desenvolvimento:~/fontes/ACBr/Fontes/ACBrBoleto$ 

Desde já agradeço.

ACBrBoleto.pas

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

Alguma objeção? Num outro post a Juliana lembrou que o nome da propriedade é PercentualMulta e pareceu ser contra a reutilização proposta.

Se acharem melhor uma nova propriedade ValorMulta double ao invés da MultaValorFixo boolean que criei, avisem.

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa noite.

Ainda não pude analisar seu código, porém assim que possível retorno aqui.

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

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa noite.

Alterações disponíveis  no svn.

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

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • 1 mês depois ...
Em 04/11/2015 at 16:30, Alexsander disse:

No Banco do Brasil (BB) há a opção de "multa fixa" que utiliza um valor ao invés de um percentual. Alguns clientes usam regras como "Acima de R$ 250 a multa é 2%, abaixo é R$ 5". Na posição 66 do segmento R há um campo onde o BB espera 1=Valor Fixo ou 2=Percentual. No entanto, a procedure TACBrBancoBrasil.GerarRegistroTransacao240 tem no segmento R o seguinte trecho de código:


IfThen((PercentualMulta <> null) and (PercentualMulta > 0), '2', '0')   + // 66 - 66 1-Cobrar Multa / 0-Não cobrar multa

Além da discrepância entre o comentário e o código, aqui somente será passado o valor 2 (percentual), nunca 1 (valor fixo). Não existe suporte à multa por Valor Fixo? Imagino que poderia ser criada uma nova propriedade em TACBrTitulo para informar o tipo de multa (com default em percentual), talvez um MultaValorFixo boolean por exemplo, reusando a propriedade PercentualMulta como ValorMulta quando MultaValorFixo for true. Assim o código acima ficaria:


IfThen((PercentualMulta <> null) and (PercentualMulta > 0), IfThen(MultaValorFixo,'1','2'), '0')   + // 66 - 66 1=Valor Fixo; 2=Percentual

Que tal? Segue em anexo o novo ACBrBoleto.pas e um diff dele com o trunk2 de hoje:


alex@alex-desenvolvimento:~/fontes/ACBr/Fontes/ACBrBoleto$ svn diff ACBrBoleto.pas 
Index: ACBrBoleto.pas
===================================================================
--- ACBrBoleto.pas	(revisão 10389)
+++ ACBrBoleto.pas	(cópia de trabalho)
@@ -794,6 +794,7 @@
     fOcorrenciaOriginal: TACBrOcorrencia;
     fParcela           : Integer;
     fPercentualMulta   : Double;
+    fMultaValorFixo    : Boolean;
     fSeuNumero         : String;
     fTipoDiasProtesto: TACBrTipoDiasIntrucao;
     fTipoImpressao     : TACBrTipoImpressao;
@@ -908,6 +909,7 @@
      property Versao               : String   read fVersao                write fVersao;
      property SeuNumero            : String   read fSeuNumero             write fSeuNumero;
      property PercentualMulta      : Double   read fPercentualMulta       write fPercentualMulta;
+     property MultaValorFixo       : Boolean   read fMultaValorFixo       write fMultaValorFixo;
      property ValorDescontoAntDia  : Currency read fValorDescontoAntDia  write  fValorDescontoAntDia;
      property TextoLivre : String read fTextoLivre write fTextoLivre;
      property CodigoMora : String read fCodigoMora write SetCodigoMora;
@@ -1334,6 +1336,7 @@
    fValorRecebido        := 0;
    fValorDescontoAntDia  := 0;
    fPercentualMulta      := 0;
+   fMultaValorFixo       := false;
    fReferencia           := '';
    fVersao               := '';
 
@@ -1604,8 +1607,8 @@
       end;
 
       if PercentualMulta <> 0 then
-         AStringList.Add(ACBrStr('Cobrar Multa de ' +
-                         FormatCurr('R$ #,##0.00',ValorDocumento*( 1+ PercentualMulta/100)-ValorDocumento) +
+         AStringList.Add(ACBrStr('Cobrar Multa de ' + FormatCurr('R$ #,##0.00',
+           IfThen(MultaValorFixo, PercentualMulta, ValorDocumento*( 1+ PercentualMulta/100)-ValorDocumento)) +
                          ' após o vencimento.'));
    end;
 end;
alex@alex-desenvolvimento:~/fontes/ACBr/Fontes/ACBrBoleto$ 

Desde já agradeço.

ACBrBoleto.pas

Bom dia a todos!

Como o default é false para a propriedade MultaValorFixo logo no IfThen o valor verdadeiro não pode ser o PercentualMulta e sim o ValorFixoEmR$, e polindo um pouco mais o código podemos simplifica-lo para algo assim já que temos o IfThen que atende as duas situações "PercentualMulta" ou ValorFixoEmR$:

*** Unit ACBrBoleto.pas, linha 1609.

      if PercentualMulta <> 0 then
      begin
         AStringList.Add(ACBrStr('Cobrar multa de ' +
           ifthen(MultaValorFixo,
                  FormatCurr('R$ #,##0.00', ValorDocumento*( 1+ PercentualMulta/100)-ValorDocumento),
                  FloatToStr(PercentualMulta) + '%') + ' após o vencimento.'));
      end;

 

ACBrBoleto.pas

Editado por assdias
Segue unit alterada
Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

Favor anexar a unit alterada.

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

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Administradores

Boa tarde.

Recentemente foram postadas alterações nesta unit que contemplam as sugestões deste  post.

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

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Membros Pro

Boa tarde,

Ao consulta esse post percebi (vi) que a remessa da caixa não está implementada para "multa fixa" que seria um valor fixado em reais. Com isso fiz a alteração no código fonte "ACBrBancoCaixa.pas" para o sistema considera a multa fixa.

Trecho do código implementado C240:

GerarRegistroTransacao240

SEGMENTO R

IfThen((PercentualMulta <> null) and (PercentualMulta > 0), IfThen(MultaValorFixo,'1','2'), '0')   + // 66 - 66 1=Valor Fixo; 2=Percentual

Atc,

Jadielson Rodrigues

obs.: funciono 100%

 

ACBrBancoCaixa.pas

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Este tópico foi criado há 2380 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.