Ir para conteúdo
  • Cadastre-se

dev botao

Homologação Banco SAFRA 422


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

Recommended Posts

Bom dia, iniciei um processo de homologação do banco safra (cobBancoSafra) e me deparei com dois problemas que não estou conseguindo resolver...

1º  o nosso numero gerado no arquivo de remessa esta divergente do impresso pois ele esta adicionando um digito verificador na 9ª posição do NN.

              IfThen(NossoNumero = '000000000', '000000000',
                                 PadLeft(RightStr(NossoNumero,8),8,'0') +
                                 CalcularDigitoVerificador(ACBrTitulo)) + 

não consegui realizar a impressão utilizando esse digito verificador.

2º o banco esta obrigando que não tenha uma logo e esteja escrito 'BANCO SAFRA S/A' em seu lugar, esse eu posso simplesmente alterar para que escreva o texto, mas na próxima vez que o ACBR for atualizado eu teria que alterar novamente.

Screenshot_1.png

Link para o comentário
Compartilhar em outros sites

6 horas atrás, Lowry David da Silva Pereira Reis disse:

Bom dia, iniciei um processo de homologação do banco safra (cobBancoSafra) e me deparei com dois problemas que não estou conseguindo resolver...

1º  o nosso numero gerado no arquivo de remessa esta divergente do impresso pois ele esta adicionando um digito verificador na 9ª posição do NN.

              IfThen(NossoNumero = '000000000', '000000000',
                                 PadLeft(RightStr(NossoNumero,8),8,'0') +
                                 CalcularDigitoVerificador(ACBrTitulo)) + 

não consegui realizar a impressão utilizando esse digito verificador.

2º o banco esta obrigando que não tenha uma logo e esteja escrito 'BANCO SAFRA S/A' em seu lugar, esse eu posso simplesmente alterar para que escreva o texto, mas na próxima vez que o ACBR for atualizado eu teria que alterar novamente.

Screenshot_1.png

boa tarde.

fiz alguns ajustes nessa unit, tente usar a que está neste post: 

tenho varios clientes emitindo, inclusive fiz a homologação de mais 1 esta semana.

 

att

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Emerson Teixeira disse:

boa tarde.

fiz alguns ajustes nessa unit, tente usar a que está neste post: 

tenho varios clientes emitindo, inclusive fiz a homologação de mais 1 esta semana.

 

att

eu vou testar com a sua Unit :)
mas eu tenho medo de precisar atualizar o ACBR e acabar esquecendo de voltar a unit.... ai causar um stress desnecessário....

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Você tem um manual fornecido do banco com estas exigências documentadas? Vale lembrar que temos outros membros da comunidade emitindo para este banco.

At.

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

9 minutos atrás, Juliana Tamizou disse:

Boa tarde.

Você tem um manual fornecido do banco com estas exigências documentadas? Vale lembrar que temos outros membros da comunidade emitindo para este banco.

At.

eu só tenho o retorno do e-mail com todos os dizeres, alguns eu ja resolvi, ficaram apenas esses dois citados.

NO BOLETO: 

  • alterar campos marcados em vermelho no boleto modelo abaixo:
  • o campo nosso número informado no boleto está divergente do informado na remessa, o mesmo deve ser idêntico contendo 9 números sem cálculo do dígito final;
  • ag e conta deve seguir o formato 05200 / 005834915;
  • o nome do banco não deve conter logo, somente BANCO SAFRA S/A.;
  • alterar mensagem de local de pagamentos;
  • recalcular linha digitável e código de barras conforme orientação abaixo:

1B592555.gif

Link para o comentário
Compartilhar em outros sites

13 horas atrás, Lowry David da Silva Pereira Reis disse:

eu só tenho o retorno do e-mail com todos os dizeres, alguns eu ja resolvi, ficaram apenas esses dois citados.

NO BOLETO: 

  • alterar campos marcados em vermelho no boleto modelo abaixo:
  • o campo nosso número informado no boleto está divergente do informado na remessa, o mesmo deve ser idêntico contendo 9 números sem cálculo do dígito final;
  • ag e conta deve seguir o formato 05200 / 005834915;
  • o nome do banco não deve conter logo, somente BANCO SAFRA S/A.;
  • alterar mensagem de local de pagamentos;
  • recalcular linha digitável e código de barras conforme orientação abaixo:

1B592555.gif

bom dia.

esta usando a unit que passei?

14 horas atrás, Juliana Tamizou disse:

Boa tarde.

Você tem um manual fornecido do banco com estas exigências documentadas? Vale lembrar que temos outros membros da comunidade emitindo para este banco.

At.

Bom dia Juliana.

para fazer as alterações que estão na unit do outro post, segui o manual que esta no repositório do acbr, estas alterações estão comentadas na unit, informei a pagina em cada mudança.

att.

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

42 minutos atrás, Emerson Teixeira disse:

bom dia.

esta usando a unit que passei?

Bom dia Juliana.

para fazer as alterações que estão na unit do outro post, segui o manual que esta no repositório do acbr, estas alterações estão comentadas na unit, informei a pagina em cada mudança.

att.

 

Bom dia, ainda não, vou enviar uma remessa de teste utilizando ela ainda hoje

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

21 minutos atrás, ssouzaacbr disse:

Bom dia amigos, podem me dizer se existe uma propriedade para mostrar a quantidade de parcelas na  impressão do tipo carnê? no meu caso, quando defino que é do tipo carnê ele só mostra duas parcelas em cada página.

Obrigado...

bom dia

@ssouzaacbr a unit que esta no repositório está errada, pois após atualizar o acbr tive problemas com vários clientes que usavam o boleto banco safra a tempos, por isso tive que ajusta-la novamente.

se quiser comparar as units, as alterações que fiz estão documentadas, está bem fácil de entender.

att. 

 

Link para o comentário
Compartilhar em outros sites

  • Administradores

@ssouzaacbr

 

2.2 - Permaneça no assunto - Quando tiver uma dúvida diferente do assunto no tópico, poste em novo tópico. Não use algo equivalente a "aproveitando o gancho... [dúvida não relacionada com o tópico aqui]". Favor leia as regras do fórum.

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

Em 11/10/2019 at 08:39, Lowry David da Silva Pereira Reis disse:

Bom dia, ainda não, vou enviar uma remessa de teste utilizando ela ainda hoje

Enviei a remesse utilizando a sua Unit, e eles me questionaram as seguintes coisas:
 

  • alterar campos marcados em vermelho no boleto modelo abaixo:
  • o campo nosso número informado no boleto está divergente do informado na remessa, o mesmo deve ser idêntico contendo 9 números sem cálculo do dígito final; -- (ou seja, o nosso numero deve conter 9 digitos + o digito verificador, na Unit do ACBR ele imprime 9 dígitos sem o digito verificar e preenche na remessa 9 dígitos contando com o dígito verificador)
  • ag e conta deve seguir o formato 05200 / 005834915 ; -- (na Unit do ACBR ele escreveu correto)
  • o nome do banco não deve conter logo, somente BANCO SAFRA S/A.; -- (em nenhuma das duas units saiu escrito)

Screenshot_2.png

unnamed.gif

Link para o comentário
Compartilhar em outros sites

Bom dia, estou mantendo esse tópico pois ainda não consegui terminar as validações, mesmo com a Unit do companheiro acima, que esta validada e em produção e eu continuo tendo problemas...
agora o dilema esta na linha digitável, a agencia do meu meu cliente é 05200 porem a agencia esta sendo informada na linha digitável sem o 0 a esquerda (apenas 5200), conforme a imagem abaixo.

13566094.gif

Link para o comentário
Compartilhar em outros sites

14 minutos atrás, Lowry David da Silva Pereira Reis disse:

Bom dia, estou mantendo esse tópico pois ainda não consegui terminar as validações, mesmo com a Unit do companheiro acima, que esta validada e em produção e eu continuo tendo problemas...
agora o dilema esta na linha digitável, a agencia do meu meu cliente é 05200 porem a agencia esta sendo informada na linha digitável sem o 0 a esquerda (apenas 5200), conforme a imagem abaixo.

13566094.gif

conforme a página 23 do manual CNAB400, a agencia é representada pelos 4 primeiros dígitos, então deveria estar 0520.

 

 

link manual: https://www.safra.com.br/data/files/92/E1/A0/49/B7C39510FDF7C195181808FF/Leiaute de Arquivos - Cobranca CNAB 400.pdf

Screenshot_5.png

Link para o comentário
Compartilhar em outros sites

20 horas atrás, Lowry David da Silva Pereira Reis disse:

conforme a página 23 do manual CNAB400, a agencia é representada pelos 4 primeiros dígitos, então deveria estar 0520.

 

 

link manual: https://www.safra.com.br/data/files/92/E1/A0/49/B7C39510FDF7C195181808FF/Leiaute de Arquivos - Cobranca CNAB 400.pdf

Screenshot_5.png

Lowry, também presenciei um problema semelhante com a agência. Realizei algumas modificações na unit do Emerson e logo foram homologadas pelo banco.

ACBrBancoSafra.pas

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Murilo Neves disse:

Lowry, também presenciei um problema semelhante com a agência. Realizei algumas modificações na unit do Emerson e logo foram homologadas pelo banco.

ACBrBancoSafra.pas 71 kB · 3 downloads

Testei com a sua Unit e o problema infelizmente é o mesmo, no meu caso a agencia é 05200 e deve ter o 0 a esquerda.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Murilo Neves disse:

Lowry, também presenciei um problema semelhante com a agência. Realizei algumas modificações na unit do Emerson e logo foram homologadas pelo banco.

ACBrBancoSafra.pas 71 kB · 3 downloads

bom dia @Murilo Neves.

quais foram as alterações que você fez?

Pelo que vi aqui, vc mudou a ordem o campo SeuNumero/NumeroDocumento, apagou os comentários que fiz, aparentemente não vai resolver o problema do @Lowry David da Silva Pereira Reis

o que pude observar é que o no caso da agencia 05200 e a função de montar o codigo de barras esta removendo este zero a esquerda, no meu caso a agencia nao tinha esse zero a esquerda.

Ajustei a unit novamente, favor passar a agencia = 052

se funcionar, me avise...

att

 

ACBrBancoSafra.pas

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

15 minutos atrás, Emerson Teixeira disse:

bom dia @Murilo Neves.

quais foram as alterações que você fez?

Pelo que vi aqui, vc mudou a ordem o campo SeuNumero/NumeroDocumento, apagou os comentários que fiz, aparentemente não vai resolver o problema do @Lowry David da Silva Pereira Reis

o que pude observar é que o no caso da agencia 05200 e a função de montar o codigo de barras esta removendo este zero a esquerda, no meu caso a agencia nao tinha esse zero a esquerda.

Ajustei a unit novamente, favor passar a agencia = 052

se funcionar, me avise...

att

 

ACBrBancoSafra.pas 71 kB · 0 downloads

Muito obrigado pela atenção :)

testei novamente com a sua Unit e agora ela escreve corretamente a agencia na impressão e na remessa.

só precisei alterar a function abaixo para poder gerar a linha digitável corretamente.

function TACBrBancoSafra.MontarCodigoBarras(const ACBrTitulo: TACBrTitulo): string;
var
  CodigoBarras, FatorVencimento, DigitoCodBarras ,
  valorDocumento, agencia, agenciaDigito, conta,
  ContaDigito, NossoNumero: string;
begin
  with ACBrTitulo.ACBrBoleto do
  begin
    FatorVencimento  := CalcularFatorVencimento(ACBrTitulo.Vencimento);
    valorDocumento   := IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10);
    agencia          := PadRight(RightStr(Cedente.Agencia, 5), 5, '0'); //***ALTERADO DE 4 PARA 5****// aqui 4 posicoes da agencia + 1 posicao do digito pagina 23
    agenciaDigito    := PadLeft(Cedente.AgenciaDigito, 1, '0');
    conta            := PadLeft(Cedente.Conta, TamanhoConta, '0');
    ContaDigito      := PadLeft(Cedente.ContaDigito, 1, '0');
    NossoNumero      := PadLeft(RightStr(ACBrTitulo.NossoNumero,TamanhoMaximoNossoNum),TamanhoMaximoNossoNum,'0')  + CalcularDigitoVerificador(ACBrTitulo);

    CodigoBarras := IntToStr(Banco.Numero) + '9' + FatorVencimento +   valorDocumento +
                    '7' + agencia + trim(agenciaDigito) + trim(conta) + ContaDigito + NossoNumero + '2';

    DigitoCodBarras := CalcularDigitoCodigoBarras(CodigoBarras);
  end;

  Result := IntToStr(Numero) + '9' + DigitoCodBarras + Copy(CodigoBarras, 5, 39);

end;

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Lowry David da Silva Pereira Reis disse:

Muito obrigado pela atenção :)

testei novamente com a sua Unit e agora ela escreve corretamente a agencia na impressão e na remessa.

só precisei alterar a function abaixo para poder gerar a linha digitável corretamente.

function TACBrBancoSafra.MontarCodigoBarras(const ACBrTitulo: TACBrTitulo): string;
var
  CodigoBarras, FatorVencimento, DigitoCodBarras ,
  valorDocumento, agencia, agenciaDigito, conta,
  ContaDigito, NossoNumero: string;
begin
  with ACBrTitulo.ACBrBoleto do
  begin
    FatorVencimento  := CalcularFatorVencimento(ACBrTitulo.Vencimento);
    valorDocumento   := IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10);
    agencia          := PadRight(RightStr(Cedente.Agencia, 5), 5, '0'); //***ALTERADO DE 4 PARA 5****// aqui 4 posicoes da agencia + 1 posicao do digito pagina 23
    agenciaDigito    := PadLeft(Cedente.AgenciaDigito, 1, '0');
    conta            := PadLeft(Cedente.Conta, TamanhoConta, '0');
    ContaDigito      := PadLeft(Cedente.ContaDigito, 1, '0');
    NossoNumero      := PadLeft(RightStr(ACBrTitulo.NossoNumero,TamanhoMaximoNossoNum),TamanhoMaximoNossoNum,'0')  + CalcularDigitoVerificador(ACBrTitulo);

    CodigoBarras := IntToStr(Banco.Numero) + '9' + FatorVencimento +   valorDocumento +
                    '7' + agencia + trim(agenciaDigito) + trim(conta) + ContaDigito + NossoNumero + '2';

    DigitoCodBarras := CalcularDigitoCodigoBarras(CodigoBarras);
  end;

  Result := IntToStr(Numero) + '9' + DigitoCodBarras + Copy(CodigoBarras, 5, 39);

end;

olha o que diz o manual sobre o tamanho da agencia... 

Sao 5 digitos = 4 da agencia + 1 do digito,  no seu codigo ficaria 6 digitos.

confirma se sua conta esta sendo informada com o tamanho correto 8 posicoes da conta + 1 posicao do digito da conta = 9 posicoes com digito  = pagina 4 manual.

att

image.png.0492d9d862b1e7f3645b2284f147ba79.png

image.thumb.png.0d235fe02376a6c89d1bad8c4914d937.png

Link para o comentário
Compartilhar em outros sites

25 minutos atrás, Emerson Teixeira disse:

olha o que diz o manual sobre o tamanho da agencia... 

Sao 5 digitos = 4 da agencia + 1 do digito,  no seu codigo ficaria 6 digitos.

confirma se sua conta esta sendo informada com o tamanho correto 8 posicoes da conta + 1 posicao do digito da conta = 9 posicoes com digito  = pagina 4 manual.

att

image.png.0492d9d862b1e7f3645b2284f147ba79.png

image.thumb.png.0d235fe02376a6c89d1bad8c4914d937.png

verifique que na verdade não existe digito da agencia e ele utiliza apenas os 4 primeiros dígitos para escrever a linha digitável, ou seja, se é 05200 ele vai escrever apenas 0520...

não foi a melhor forma de alterar, mas a linha digitável ficou exatamente igual ao que eles estão pedindo, agora estou esperando a resposta do banco, caso ela seja de homologado, vou fazer uma alteração "decente".

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Lowry David da Silva Pereira Reis disse:

verifique que na verdade não existe digito da agencia e ele utiliza apenas os 4 primeiros dígitos para escrever a linha digitável, ou seja, se é 05200 ele vai escrever apenas 0520...

não foi a melhor forma de alterar, mas a linha digitável ficou exatamente igual ao que eles estão pedindo, agora estou esperando a resposta do banco, caso ela seja de homologado, vou fazer uma alteração "decente".

mas nesse caso recomendo passar 0 como digito da agencia, pois pode quebrar a compatibilidade com quem esta usando esta unit.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Estou com dois problemas iguais ao seu, 1: nosso numero divergente, resolvi assim:

function TACBrBancoSafra.MontarCampoCodigoCedente(const ACBrTitulo: TACBrTitulo): string;
begin
  with ACBrTitulo.ACBrBoleto.Cedente do
  begin
        //Result := PadLeft(RightStr(Agencia,4), 4, '0') + PadLeft(AgenciaDigito, 1, '0') + ' / ' + PadLeft(ACBrBoleto.Cedente.Conta, 8, '0') + PadLeft(ACBrBoleto.Cedente.ContaDigito, 1, '0');
        Result := PadLeft(RightStr(Agencia,5), 5, '0') + ' / ' + PadLeft(ACBrBoleto.Cedente.Conta, 8, '0') + PadLeft(ACBrBoleto.Cedente.ContaDigito, 1, '0');
  end;
end;

Quanto ao digito que ele inclui no final do nosso numero na remessa ainda estou batendo cabeça...

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, ssouzaacbr disse:

Estou com dois problemas iguais ao seu, 1: nosso numero divergente, resolvi assim:

function TACBrBancoSafra.MontarCampoCodigoCedente(const ACBrTitulo: TACBrTitulo): string;
begin
  with ACBrTitulo.ACBrBoleto.Cedente do
  begin
        //Result := PadLeft(RightStr(Agencia,4), 4, '0') + PadLeft(AgenciaDigito, 1, '0') + ' / ' + PadLeft(ACBrBoleto.Cedente.Conta, 8, '0') + PadLeft(ACBrBoleto.Cedente.ContaDigito, 1, '0');
        Result := PadLeft(RightStr(Agencia,5), 5, '0') + ' / ' + PadLeft(ACBrBoleto.Cedente.Conta, 8, '0') + PadLeft(ACBrBoleto.Cedente.ContaDigito, 1, '0');
  end;
end;

Quanto ao digito que ele inclui no final do nosso numero na remessa ainda estou batendo cabeça...

você baixou essa Unit para testar?

Link para o comentário
Compartilhar em outros sites

percebi que vc alterou essa linha (a baixo), sendo que no manual pede que o nosso numero tenha 9 posições, é isso mesmo?  

fpTamanhoMaximoNossoNum := 8; // 9 posicoes com o digito pagina 20 do manual ex: (XXX XXXXX X);

poderia citar o trecho de código que você alterou para resolver essa questão do numero a mais no arquivo de remessa?

 

Obrigado Lowry...

Editado por ssouzaacbr
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1591 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.