Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde.

Atualizei esses dias o ACBr e tive problemas com geração de remessa para o Banco do Brasil.

Comparando com uma versão antiga, vi que a variável " fpTamanhoMaximoNossoNum " antigamente tinha valor = 5, e agora está com valor = 0

Alterei para 5 e tudo voltou ao normal.

 

constructor TACBrBancoBrasil.create(AOwner: TACBrBanco);
begin
   inherited create(AOwner);
   fpDigito := 9;
   fpNome   := 'Banco do Brasil';
   fpNumero := 001;
   fpTamanhoMaximoNossoNum := 0; //   o correto é fpTamanhoMaximoNossoNum := 5;
   fpTamanhoConta   := 12;
   fpTamanhoAgencia := 4;
   fpTamanhoCarteira:= 2;

end;

 

 

[]´s

Edson.

  • Administradores
Postado

Boa tarde.

Qual foi o problema que você teve?

Att.

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

Postado

Boa noite Juliana.

O problema éra na formatação no nosso numero.

Quando a variável  fpTamanhoMaximoNossoNum está zerada, o nosso numero ficava em branco.

 

Tive outro problema com o Header (cnab400), nas variáveis  "aAgencia e aConta" também por deslocamento de colunas.

procedure TACBrBancoBrasil.GerarRegistroHeader400(NumeroRemessa: Integer; aRemessa:TStringList);
var
  TamConvenioMaior6 :Boolean;
  aAgencia, aConta  :String;
  wLinha: String;
begin
  with ACBrBanco.ACBrBoleto.Cedente do
  begin
    TamConvenioMaior6:= Length(trim(Convenio)) > 6;

    //Alterado em 01/02/2016 por Edson Polonio
    aAgencia:= IntToStrZero(StrToIntDef(OnlyNumber(Agencia),0),4);
    aConta  := IntToStrZero(StrToIntDef(OnlyNumber(Conta),0),8);
    //aAgencia:= RightStr(Agencia, 4); -> Desta forma está causando deslocamento das colunas
    //aConta  := RightStr(Conta, 8);

Outro ponto que causou problemas foi na transação (cnab400), quando é informada uma data para protesto superior a 6 dias.

Não estava gerando as instruçoes:

     if (DataProtesto > 0) and (DataProtesto > Vencimento) then
      begin
       DiasProtesto := '  ';
       case (DaysBetween(DataProtesto,Vencimento)) of
          3: // Protestar no 3º dia util após vencimento
          begin
            if (trim(Instrucao1) = '') or (trim(Instrucao1) = '03') then
              AInstrucao := '03'+ PadLeft(trim(Instrucao2),2,'0');
          end;
          4: // Protestar no 4º dia util após vencimento
          begin
            if (trim(Instrucao1) = '') or (trim(Instrucao1) = '04') then
              AInstrucao := '04'+ PadLeft(trim(Instrucao2),2,'0');
          end;
          5: // Protestar no 5º dia util após vencimento
          begin
            if (trim(Instrucao1) = '') or (trim(Instrucao1) = '05') then
              AInstrucao := '05'+ PadLeft(trim(Instrucao2),2,'0');
          end;
       else
         if (trim(Instrucao1) = '') or (trim(Instrucao1) = '06') then
             AInstrucao := '06'+ PadLeft(trim(Instrucao2),2,'0')
         else
             //Alterado em 01/02/2016 Edson Polonio
             //Se informado data de protesto com mais de 6 dias e Instrucao1 não for brancos ou 06
             AInstrucao := PadLeft(trim(Instrucao1),2,'0') + PadLeft(trim(Instrucao2),2,'0');

         DiasProtesto:=IntToStr(DaysBetween(DataProtesto,Vencimento));
       end;
      end
     else
      begin
       Instrucao1  := '07'; //Não Protestar
       AInstrucao  := PadLeft(Trim(Instrucao1),2,'0') + PadLeft(Trim(Instrucao2),2,'0');
       DiasProtesto:= '  ';
      end;

Em anexo a unit alterada.

[]´s

Edson. 

ACBrBancoBrasil.pas

  • Curtir 1
  • Administradores
Postado

Boa tarde.

Em relação ao TamanhoMaximoNossoNum, seu problema é na geração da remessa ou na leitura do arquivo retorno?

Quanto as linhas abaixo, não vi necessidade de toda essa formatação, uma vez que o próprio componente tem os métodos Set responsáveis por formatar corretamente as propriedades. Verifique se antes de setar estes dados, foi configurado o TipoCobranca.

aAgencia:= IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Agencia),0),4);
aConta  := IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Conta),0),8);

Att.

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

Postado

Boa noite...

O problema  com o TamanhoMaximoNossoNum é no arquivo remessa.

 

Sobre as variáveis,vou tentar explicar melhor:

O TipoCobranca esta setado corretamente:

ACBrBoleto.Banco.TipoCobranca := cobBancoDoBrasil;

 

Se a conta estiver cadastrada com 5 dígitos, o comando RightStr não gera zeros a esquerda.

ACBrBoleto.Cedente.Conta := '60123';

  aConta := RightStr(ACBrBoleto.Cedente.Conta, 8);  // retorna '60123'
  aConta := IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Conta),0),8); // retorna '00060123'
  aConta := PadLeft(ACBrBoleto.Cedente.Conta, 8, '0'); // retorna '00060123'

O problema é com RightStr.

Poderia ser usado o PadLeft, para ajustar o número da conta para 8 dígitos, e não "descolunar" o arquivo.

[]´s

Edson.

  • Administradores
Postado

Boa noite.

Não foi possível reproduzir a situação descrita por você no demo, mesmo setando 5 dígitos na conta.

Att.

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

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.