Olá Amigos.
Recebi algumas solicitação de clientes na geração de boleto e arquivos de remessa pela ACBrBancoCaixa
(240 posições), mais para que boleto possa atualizado pelo cedente do boleto após o vencimento pelo
link abaixo
(https://bloquetoexpresso.caixa.gov.br/bloquetoexpresso/index.jsp) estaria com algumas divergentes contido arquivo de remessa com o boleto da Caixa .
Nos seguintes campos.
No segmento R
Campo 14.3R> Nome Código da Multa>Posição 066 > contém o valor 1, deve conter o valor 2
(Código da multa: 1- Valor fixo, 2- Percentual)
Porem quando o valor de multa for fixo de ser informado código de multa "1" e campo 16.3R Valor/Percentual Ser Aplicado , Posição 75 até 89
Preencher de acordo com a informação do campo 14.3R (Código da Multa),
utilizando duas casas decimais: Se 14.3R = '0', preencher com zeros; Se = ‘1’, informar Valor;
Se = ‘2’, informar percentual; Como não havia implementação para esse caso no fontes ACBrBancoCaixa
tive realizar algumas alteração fontes ACBrBoleto e ACBrBancoCaixa.
Caso não esteja no padrão do ACBr fico grato que seja analisando,
pois fiz algumas alterações para poder recebe valor 1 no campo código multa 1 e para recebe valor fixo da multa igual o valor contido campo observação
no boleto gerado pelo Acbr.
Seguir as alterações dos arquivos abaixo.
Na Classe TACBrTitulo property CodigoMulta : String read fCodigoMulta write SetCodigoMulta;
procedure TACBrTitulo.SetCodigoMulta(const AValue: String);
begin
if fCodigoMulta = AValue then
exit;
fCodigoMulta := AValue;
end;
Na ACBrBancoCaixa alteração feitas
{Multa}
if (PercentualMulta > 0) then
ADataMulta := IfThen(DataMoraJuros > 0,
FormatDateTime('ddmmyyyy', DataMoraJuros),
FormatDateTime('ddmmyyyy', Vencimento + 1))
else
begin
ADataMulta := PadLeft('', 8, '0');
CodigoMulta := '0';
end;
IfThen(CodigoMulta = '1' ,'1',
IfThen((PercentualMulta <> null) and (PercentualMulta > 0), '2', '0')) + // 66 a 66 - Código da Multa
ADataMulta + // 67 a 74 - Data da Multa
IfThen(CodigoMulta = '1',IntToStrZero(round(ValorDocumento * PercentualMulta),15),
IfThen(PercentualMulta > 0, IntToStrZero(round(PercentualMulta * 100), 15),
PadRight('', 15, '0'))) + // 75 a 89 - Valor/Percentual a ser aplicado
ACBrBancoCaixa.pas
ACBrBoleto.pas