Boa tarde a todos. Estou com a mesma situação do dígito da agência no Santander citada na primeira postagem desse tópico. Eu consegui contornar a situação de uma outra forma, porém gostaria da opinião de vocês.
A situação é a seguinte:
Para homologar o boleto de um cliente o próprio banco Santander exigiu que no campo "Agência/Código do Cedente" do boleto que fosse exibido o código da agência SEM DÍGITO verificador. A partir daí eu comecei uma série de testes de utilização do componente:
1 - Tentei não preencher o dígito verificador da agência. Ao tentar imprimir o boleto o próprio componente reclama que o campo não está preenchido.
2- Tentei preencher o dígito verificador da agência com um espaço " ", o boleto imprimou o campo "Agência/Código do Cedente" da seguinte forma: "Agência- / CodigoCedente", ainda o banco rejeitou falando que não deveria ter o traço depois da agência (além disso o CNAB gerou com o dígito em branco e foi rejeitado porque é um campo numérico e não alfanumérico).
3 - Tentei pesquisar no forum do ACBR sobre isso e encontrei este aqui.
Tentei implementar a resposta dada neste tópico, onde foi informado que o dígito da agência deve ser um último caractere por exemplo: Agência 3917 o dígito seria 7, então preenchi dessa forma, porém isso gerou um erro no CNAB onde a posição destinada a agência ficou com o valor "0391", que deveria ser "3917" e o dígito ficou com "7" que deveria ser "0" conforme o manual, pois quando não existe dígito deve enviar zerado no CNAB por ser um campo numérico.
Então eu percebi que o banco queria que no boleto saísse apenas a agência SEM NADA DE DÍGITO, NEM O VALOR ZERO e no CNAB fosse enviado Agência preenchida e o campo dígito zerado pro ser numérico.
O que eu fiz, eu alterei a unit "ACBrBancoSantander" para que a função MontarCampoCodigoCedente não considere o dígito verificador da agência, visto que o banco Santander nunca tem dígito na agência. Essa função só é utilizada para montar o campo no boleto, não é utilizada para gerar CNAB. Dessa forma o boleto gerou igual o banco queria com o campo "Código do Cedente" da seguinte forma: Agencia/Convenio (sem nada de dígito nem traço, nem dígito zerado) e o CNAB gerou certinho o campo de agência e dígito preenchido com zeros. Dessa forma o banco homologou o boleto e o atendente do banco me falou que no CNAB vai zerado não porque o dígito é zero e sim porque o campo é numérico, logo quando não existe dígito deve ir zerado, isso não significa que o digito é zero e que deve ser impresso com zero no boleto.
A função alterada ficou da seguinte forma:
function TACBrBancoSantander.MontarCampoCodigoCedente (
const ACBrTitulo: TACBrTitulo ) : String;
begin
Result := ACBrTitulo.ACBrBoleto.Cedente.Agencia+'/'+
ACBrTitulo.ACBrBoleto.Cedente.CodigoCedente;
end;
Eu gostaria de saber a opinião de vocês sobre isso, existe alguma forma de configurar para que não saía nada de dígito no boleto Santander? Eu posso ter configurado errado?
Ou acham válida a alteração na UNIT, visto que o banco Santander não tem dígito de agência?
Obrigado.