Olá pessoal!
Enviamos um arquivo de remessa (240) contendo Data de Protesto, e o banco recusou, acusando erro nos dados informados nas posições 222-223 (Dias Protesto), 224-224 (Código de Baixa/Devolução) e 228-229 (Código da Moeda).
Analisando a rotina do ACBrSantander, no método GerarRegistroTransacao240, identifiquei que a variável Instrucao1, responsável por receber a instrução de protesto, não estava sendo alimentada, ficando vazia e consequentemente mexendo nos campos posteriores.
A rotina estava verificando a variável Instrucao2 (conforme código abaixo):
{Instruções}
if (DataProtesto <> 0) and
(DataProtesto > Vencimento) then
begin
if (Trim(Instrucao2) = '') then {*********************** AQUI ********************}
Instrucao2 := '1' // Protestar Dias Corridos {*********************** AQUI ********************}
else
begin
if not MatchText(Instrucao2, ['0', '1', '2', '3', '9']) then {*********************** AQUI ********************}
raise Exception.Create('Código de protesto informado incorretamente!');
end;
// Calcular os dias para protesto
sDiasProtesto := PadLeft(IntToStr(Trunc(DataProtesto) - Trunc(Vencimento)), 2, '0');
end
else
begin
Instrucao1 := '0'; // Não protestar
SDiasProtesto := '00';
end;
Pra resolver, bastou trocarmos Instrucao2 por Instrucao1 nas linhas marcadas com {*********************** AQUI ********************}.
[]´s
Everton Garcia