Sim, porem...
Analisando o código abaixo, ele está sugerindo que CodigoMora = '2' ou 'B', vai ser '% ao mês':
if ValorMoraJuros <> 0 then
begin
if DataMoraJuros <> 0 then
AStringList.Add(ACBrStr('Cobrar juros de ' +
ifthen(((CodigoMora = '2') or (CodigoMora = 'B')), FloatToStr(ValorMoraJuros) + '% ao mês',
FormatCurr('R$ #,##0.00 por dia',ValorMoraJuros)) +
' de atraso para pagamento '+
ifthen(Vencimento = DataMoraJuros, 'após o vencimento.',
'a partir de '+FormatDateTime('dd/mm/yyyy',DataMoraJuros))))
else
AStringList.Add(ACBrStr('Cobrar juros de ' +
ifthen(((CodigoMora = '2') or (CodigoMora = 'B')), FloatToStr(ValorMoraJuros) + '% ao mês',
FormatCurr('R$ #,##0.00 por dia',ValorMoraJuros)) +
' de atraso'));
end;
Já analisando este trecho de código da geração de remessa 240 do ACBRBancoBancoob, percebemos que a propriedade "CodigoMora" é definida de acordo com o valor do "CodigoMoraJuros" quando a mesma está em branco, dispensando o preenchimento da propriedade "CodigoMora".
if CodigoMora = '' then
begin
CodigoMora := '0'; //assume como cjIsento
// cjValorDia, cjTaxaMensal, cjIsento
if ValorMoraJuros > 0 then // Se tem juro atribuido, mudar de acordo com o tipo que o banco processa
begin
if CodigoMoraJuros = cjValorDia then
CodigoMora :='1'
else if CodigoMoraJuros = cjTaxaMensal then
CodigoMora :='2';
end;
end;
Assim temos a seguinte situação:
Se preencher apenas "CodigoMoraJuros := cjTaxaMensal" e não preencher "CodigoMora" teremos resultados diferentes para o arquivo de remessa e para a impressão.
Arquivo de remessa: Será gerado com sucesso, informando o juro de mora em "10,00% ao Mês"
Impressão do boleto: Será impresso com a mensagem "Cobrar juros de R$ 10,00 por dia a partir de dd/mm/yyyy"
Acredito que seria importante manter o mesmo padrão para geração de remessa e impressão.