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

15 horas atrás, ssouzaacbr disse:

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...

essa linha não fui eu que alterei, já herdei essa Unit alterada nesse ponto :)
minhas alterações foram para os campos da agencia que no meu caso começavam com 0...

aconselho a pegar essa Unit e tentar a homologação.

Link para o comentário
Compartilhar em outros sites

11 minutos atrás, ssouzaacbr disse:

Bom dia Lowry, usei a sua Unit mas mesmo assim, ele adiciona um número a mais na posição 71, nas posições 63 a 71 deveria ser usada pelo Nosso Número, vou tentar descobrir o motivo..

no final do nosso numero o componente gera o digito verificador, estou trabalhando utilizando ele, então nas minhas configurações eu comecei com o nosso numero setado em 1.

Editado por Lowry David da Silva Pereira Reis
Link para o comentário
Compartilhar em outros sites

você alterou alguma coisa no arquivo ACBrBoleto.pas?

se eu alterar o tamanho do nosso numero para 8 ele para nesse trecho:

 

procedure TACBrTitulo.SetNossoNumero ( const AValue: String ) ;
var
   wTamNossoNumero: Integer;
   wNossoNumero: String;
begin
   wNossoNumero:= OnlyNumber(AValue);
   with ACBrBoleto.Banco do
   begin
      wTamNossoNumero:= CalcularTamMaximoNossoNumero(Carteira, wNossoNumero,
                                                     ACBrBoleto.Cedente.Convenio);

      if Length(trim(wNossoNumero)) > wTamNossoNumero then
         raise Exception.Create( ACBrStr('Tamanho Máximo do Nosso Número é: '+ IntToStr(wTamNossoNumero) ));

      fNossoNumero := PadLeft(wNossoNumero,wTamNossoNumero,'0');
   end;
end;
 

 

Link para o comentário
Compartilhar em outros sites

17 minutos atrás, ssouzaacbr disse:

você alterou alguma coisa no arquivo ACBrBoleto.pas?

se eu alterar o tamanho do nosso numero para 8 ele para nesse trecho:

 

procedure TACBrTitulo.SetNossoNumero ( const AValue: String ) ;
var
   wTamNossoNumero: Integer;
   wNossoNumero: String;
begin
   wNossoNumero:= OnlyNumber(AValue);
   with ACBrBoleto.Banco do
   begin
      wTamNossoNumero:= CalcularTamMaximoNossoNumero(Carteira, wNossoNumero,
                                                     ACBrBoleto.Cedente.Convenio);

      if Length(trim(wNossoNumero)) > wTamNossoNumero then
         raise Exception.Create( ACBrStr('Tamanho Máximo do Nosso Número é: '+ IntToStr(wTamNossoNumero) ));

      fNossoNumero := PadLeft(wNossoNumero,wTamNossoNumero,'0');
   end;
end;
 

 

não mexi no acbrboleto, apenas no ACBrBancoSafra, como tenho clientes em vários bancos, não posso fazer uma alteração no acbrboleto, isso pode provocar erros nos outros.

Editado por Lowry David da Silva Pereira Reis
Link para o comentário
Compartilhar em outros sites

para ele não acrescentar mais o digito verificador na posição 71, seria só alterar essa linha:

              IfThen(NossoNumero = '000000000', '000000000',
                                 PadLeft(RightStr(NossoNumero,8),8,'0') +
                                 CalcularDigitoVerificador(ACBrTitulo)) +                      //  63 a  71 - Número do título no banco
 

se remover esse  CalcularDigitoVerificador(ACBrTitulo)) deve funcionar preciso só ver qual o impacto dessa remoção..

Link para o comentário
Compartilhar em outros sites

alterei assim:

    wLinha := '1'                                                                            + //   1 a   1 - Identificação do Registro de Transação
              tipoInscricao                                                                  + //   2 a   3 - Tipo de Inscrição da Empresa
              PadLeft(OnlyNumber(ACBrBoleto.Cedente.CNPJCPF), 14, '0')                       + //   4 a  17 - Número da Inscrição da Empresa
              aAgencia + aConta                                                              + //  18 a  31 - Identificação da Empresa no Banco
              Space(6)                                                                       + //  32 a  37 - "Brancos"
              PadRight(NumeroDocumento,25)                                                   + //  38 a  62 - Uso exclusivo da Empresa
              IfThen(NossoNumero = '000000000', '000000000',
                                 PadLeft(RightStr(NossoNumero,TamanhoMaximoNossoNum),TamanhoMaximoNossoNum,'0')) +
                                 //CalcularDigitoVerificador(ACBrTitulo)) +                      //  63 a  71 - Número do título no banco
              Space(30)                                                                      + //  72 a 101 - "Brancos"
              '0'                                                                            + // 102 a 102 - Código de IOF sobre Operações de Seguro
              '00'                                                                           + // 103 a 104 - Identificação do Tipo de Moeda, 00=Real
              Space(1)                                                                       + // 105 a 105 - "Branco"
              IntToStrZero(StrToIntDef(Instrucao3,0), 2)                                     + // 106 a 107 - Terceira Instrução de Cobrança. Utilizar somente quando Instrução2 é igual a 10
              Carteira                                                                       + // 108 a 108 - Identificação do Tipo de Carteira
              Ocorrencia                                                                     + // 109 a 110 - Identificação do Tipo de Ocorrência
 

Conseguiu preencher corretamente, vou enviar para homologação..

ficou assim: 001143055, ele removeu o digito verificador e inseriu o zero a esquerda

Link para o comentário
Compartilhar em outros sites

Boa noite, conseguiu concluir a sua homologação?  no meu caso já estou nos últimos ajustes, o boleto já está ok, só falta um ajuste na remessa, eles pediram para armazenar o percentual da multa e não o valor na posição 212 a 2016 ainda não descobri aonde posso alterar mas amanhã bato mais cabeça....se souber de alguma coisa e puder compartilhar te agradeço...

Link para o comentário
Compartilhar em outros sites

Em 23/10/2019 at 17:14, Lowry David da Silva Pereira Reis disse:

Conforme prometi, acabo de receber a mensagem de Homologação, acabo de recebe-la, estou enviando a Unit que foi alterada para esse caso aonde a agencia começa com 0.

Screenshot_1.png

ACBrBancoSafra.pas 71 kB · 5 downloads

Olá pessoal!

Estou com o mesmo problema aqui, peguei essa unit, irei testar.

Informarei se o banco aprovou.

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

Em 23/10/2019 at 17:51, Sidney_Souza 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...

Tenho um cliente na mesma situação do Lowry David:

agência: 6500 conta corrente: 580375 Dv: 1;

A agência não tem dígito verificador, eles indicam colocar 0(zero).

O dígito da agência não entra nos cálculos.

O tamanho do número da agência é de 5 dígitos. Quando for menor, "COLOCAR ZERO À ESQUERDA".

A conta corrente de oito dígitos. Quando for menor, "COLOCAR ZERO À ESQUERDA".

Obs: O tamanho da conta corrente, eles consideram com o dígito verificador, ou seja, 8+1=9.

Ficaria assim:

(06500/005803751)

da mesma forma que o Lowry David colocou.

 

Com relação à função, fiz assim:

function TACBrBancoSafra.MontarCampoCodigoCedente(
  const ACBrTitulo: TACBrTitulo): string;
begin
  with ACBrTitulo.ACBrBoleto.Cedente do Result:=Agencia+'/'+Conta+ContaDigito;

                                                                                          (06500/005803751)

end;

Na remessa ficou correto.

Link para o comentário
Compartilhar em outros sites

Em 29/10/2019 at 09:22, DouglasGV disse:

Olá pessoal!

Estou com o mesmo problema aqui, peguei essa unit, irei testar.

Informarei se o banco aprovou.

Desde já agradeço.

Boa tarde!

Só passando para agradecer, e indicar que com essa unit funcionou, homologou remessa e boleto no layout CNAB 400.

Agradeço  novamente o auxílio de todos.

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

  • 2 semanas depois ...
  • Moderadores

Bom dia,

Estamos com divergências quanto ao layout deste banco, para realizar as alterações solicitadas. Por isso estamos centralizando o assunto em um único tópico.

Favor acompanhar em: 

 

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

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.