Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)
Realizei algumas modificações na unit do Banco do Brasil e estou postando para análise e, se possível, inclusão na SVN.
 
São elas:
 
1. Quando a Carteira for 17 e CaracTitulo for 1 o Tipo de carteira deve ser  7.
 
2. Comparação de Data (TDateTime) <> Null (sempre será diferente).
Esta inserindo a data 30/12/1899 quando o ValorMoraJuros não era informado, por exemplo. Foi corrigido para Data > 0.
 
3. Correção nas posições:
  • 101 à 105: Agência Encarregada da Cobrança: Informar Zeros. A agência encarregada da Cobrança é definida de acordo com o CEP do sacado.
  • 106 à 106: Dígito Verificador da Agência: Informar 'branco' (espaço) 
4. Tratamento da ocorrência 17-Liquidação Após Baixa ou Liquidação de Título Não Registrado
 
 
Segue unit em anexo.
 

ACBrBancoBrasil.pas

Editado por RobertoSchuster
  • 2 semanas depois ...
Postado (editado)

Apenas para constar, verifiquei que o item 3 (referente às posições 101 à 106) já foi tratado na revisão 8378 do SVN.

 

No entanto, os itens 1, 2 e 4 ainda permanecem.

Existe a possibilidade de estas correções serem consideradas (sem pressa)?  :mrgreen:

 

(Só pergunto porque não recebi resposta no tópico)

Editado por RobertoSchuster
Postado
Olá Régis, obrigado por analisar e submeter as alterações.
 
No entanto, posteriormente acabei verificando a necessidade de novas alterações na mesma unit, que acredito serem bem importantes para a geração da remessa e importação de retorno. Não sabia se deveria criar um novo tópico então decidi reabrir este e submeter as novas melhorias e correções:
 
5. Função GerarRegistroTransacao240 - Segmento R - Campo "Data da Multa" (posições 67-74):
Considerando que não há uma propriedade DataMulta, como é o caso de DataDesconto e DataMoraJuros, verifiquei que a propriedade DataMoraJuros estava sendo utilizada como critério para a definição do campo Data da Multa no arquivo de remessa, conforme abaixo:
IfThen((PercentualMulta <> null) and (PercentualMulta > 0),
  FormatDateTime('ddmmyyyy', DataMoraJuros), '00000000')     

Ou seja, a multa será cobrada de acordo com a DataMoraJuros definida, o que me parece inadequado. Neste caso, julguei adequado alterar para a data de vencimento. O que acha?

IfThen((PercentualMulta <> null) and (PercentualMulta > 0),
  FormatDateTime('ddmmyyyy', Vencimento), '00000000') 

Caso esta maneira não seja correta, precisarei tratar de outra forma, pois atualmente se for definido um percentual de multa, mas não for definida uma data de mora juros, será gerada a data 30/12/1899 no arquivo de remessa.

 
6. Tratamento da ocorrência 20 para o layout c240
Segundo o manual do Banco do Brasil 240, assim como o manual da Febraban 240, a ocorrência 20 é referente a "Confirmação Recebimento Instrução de Sustação/Cancelamento de Protesto", e estava definida como "Débito em conta", que é referente ao layout de 400 posições.
 
PS: Tratei a ocorrência individualmente porque acredito que a maioria das outras pode ser compartilhada, uma vez que os métodos TipoOcorrenciaToDescricao, CodOcorrenciaToTipo, TipoOCorrenciaToCod e CodMotivoRejeicaoToDescricao não levam em consideração o layout do arquivo e, no caso da unit do Banco do Brasil, as ocorrências foram baseadas no layout c400.
 
7. Tratamento da ocorrência 28 para o layout c240
Segundo o manual do Banco do Brasil 240, assim como o manual da Febraban 240, a ocorrência 28 é referente a "Débito de Tarifas/Custas", e estava "Manutenção de titulo vencido", que é referente ao layout de 400 posições.
 
8. Limpeza do motivo na função CodMotivoRejeicaoToDescricao
Caso o motivo recebido não fosse tratado, estava retornando o motivo do registro anterior, até que um novo motivo fosse válido. Então esta linha de código garante que pelo menos o código não tratado seja retornado e inserido na lista de motivos.
Result := IntToStr(CodMotivo);
9. Tratamento dos motivos da ocorrência "28-Débito de Tarifas/Custas"
    toRetornoDebitoTarifas: // 28 - Débito de Tarifas/Custas (Febraban 240 posições, v08.9 de 15/04/2014)
      case CodMotivo of
        01: Result:='Tarifa de Extrato de Posição';
        02: Result:='Tarifa de Manutenção de Título Vencido';
        03: Result:='Tarifa de Sustação';
        04: Result:='Tarifa de Protesto';
        05: Result:='Tarifa de Outras Instruções';
        06: Result:='Tarifa de Outras Ocorrências';
        07: Result:='Tarifa de Envio de Duplicata ao Sacado';
        08: Result:='Custas de Protesto';
        09: Result:='Custas de Sustação de Protesto';
        10: Result:='Custas de Cartório Distribuidor';
        11: Result:='Custas de Edital';
        12: Result:='Tarifa Sobre Devolução de Título Vencido';
        13: Result:='Tarifa Sobre Registro Cobrada na Baixa/Liquidação';
        14: Result:='Tarifa Sobre Reapresentação Automática';
        15: Result:='Tarifa Sobre Rateio de Crédito';
        16: Result:='Tarifa Sobre Informações Via Fax';
        17: Result:='Tarifa Sobre Prorrogação de Vencimento';
        18: Result:='Tarifa Sobre Alteração de Abatimento/Desconto';
        19: Result:='Tarifa Sobre Arquivo mensal (Em Ser)';
        20: Result:='Tarifa Sobre Emissão de Bloqueto Pré-Emitido pelo Banco';
      end;  
10. Tratamento dos motivos 14 e 15 das ocorrências de Baixa de Títulos, pois são tratados diferentes nos layouts c240 e c400
De acordo com o manual Febraban 240 posições, o motivo 14 é equivalente a "Protestado", sendo que o motivo 15 é equivalente a "Título Excluído". Já no manual do Banco do Brasil CNAB400, o motivo 15 é tratado como "Protestado", sento que o 14 não é esperado.
 
 
Unit Banco do Brasil alterada:
 
Manuais utilizados:
 
 
  • Administradores
Postado

Boa noite.

 

Com relação a data de multa, acredito que está correto considerar a data de mora, já que dificilmente essas tarifas seriam cobradas em datas separadas. Acho que o correto em caso da não informação da data de mora, devemos considerar o dia de vencimento +1.

 

Com relação aos códigos de ocorrência, são diferentes para CNAB400 e CNA240?

 

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

  • 4 semanas depois ...
Postado

Com relação a data de multa, acredito que está correto considerar a data de mora, já que dificilmente essas tarifas seriam cobradas em datas separadas. Acho que o correto em caso da não informação da data de mora, devemos considerar o dia de vencimento +1.

 

 

Entendi. Se tem DataMora usa DataMora, senão usa o vencimento.

 

 

Com relação aos códigos de ocorrência, são diferentes para CNAB400 e CNA240?

 

Em relação às ocorrências 20, 28, e ao motivo 15 das ocorrências de baixa, sim.

Por isso foram acrescentados os motivos para o a ocorrência 28-toRetornoDebitoTarifas, que são esperadas no padrão de 240 posições.

  • Administradores
Postado

Boa Noite.

 

Alterações no svn.

 

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

  • 1 mês depois ...
Postado

Boa noite ,

 

 

Após atualização, a remessa do bb registrada cnab400 passou a gerar o header da conta errada

 

pelo que notei me parece ser aki 

 

 TamConvenioMaior6:= Length(trim(Convenio)) > 6;
      aAgencia:= PadR(Agencia, 4, '0');
      aConta   := PadR(Conta, 8, '0'); ele corta a conta formata errado
 
ajustei para 
 
   aConta   := IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Conta),0),8);
 
alguem poderia verificar ?
 
Obrigado
  • Administradores
Postado

Bom dia.

 

Por favor exemplifique como está sendo gerado o arquivo e qual é a informação correta.

 

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

Olá bom dia Juliana,

 

O arquivo esta sendo gerado 

01REMESSA01COBRANCA       15105000000023000000

 

vissto que o correto seria 

 

01REMESSA01COBRANCA       15105000228303000000

 

onde o numero da conta é : 22830 digito 3

 

Cobrança Banco do Brasil , Registrada,cnab400

 

 
Obrigado
Postado

Outro problema relatado foi o retorno do BB cnab 400;

 

o sistema faz a leitura do nosso numero porem me da um excesso dizendo que precisa informar a carteira,

 

como ira informar a carteia se ela é lida no titulo do retorno ?

 

voltei os fontes antigos do acbr e voltou a funcionar ;

 

Obrigado

  • 7 meses depois ...
  • Administradores
Postado

Boa tarde.

Alterações disponíveis no svn.

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

  • 4 semanas depois ...
Postado

Obrigado Juliana, porém ainda restam alguns ajustes, todos assinalados na unit com "DONE", a saber:

Método "GerarRegistroTransacao400":

     {Pegando Código da Ocorrencia}
     case OcorrenciaOriginal.Tipo of
       toRemessaBaixar                     : ATipoOcorrencia := '02'; {Pedido de Baixa}
       toRemessaConcederAbatimento         : ATipoOcorrencia := '04'; {Concessão de Abatimento}
       toRemessaCancelarAbatimento         : ATipoOcorrencia := '05'; {Cancelamento de Abatimento concedido}
       toRemessaAlterarVencimento          : ATipoOcorrencia := '06'; {Alteração de vencimento}
       toRemessaAlterarControleParticipante: ATipoOcorrencia := '07'; {Alteração do número de controle do participante}
       toRemessaAlterarNumeroControle      : ATipoOcorrencia := '08'; {Alteração de seu número}
       toRemessaProtestar                  : ATipoOcorrencia := '09'; {Pedido de protesto}
       // DONE -oJacinto Junior: Ajustar para utilizar ocorrência e descrição corretas.
//       toRemessaCancelarInstrucaoProtestoBaixa: ATipoOcorrencia := '10'; {Sustar protesto e baixar}
//       toRemessaCancelarInstrucaoProtesto  : ATipoOcorrencia := '10'; {Sustar protesto e manter na carteira}
       toRemessaCancelarInstrucaoProtesto  : ATipoOcorrencia := '10'; {Instrução para sustar protesto}
       toRemessaDispensarJuros             : ATipoOcorrencia := '11'; {Instrução para dispensar juros}
       toRemessaAlterarNomeEnderecoSacado  : ATipoOcorrencia := '12'; {Alteração de nome e endereço do Sacado}
       // DONE -oJacinto Junior: Ajustar para utilizar ocorrência e descrição corretas.
//       toRemessaOutrasOcorrencias          : ATipoOcorrencia := '31'; {Alteração de Outros Dados}
       toRemessaConcederDesconto           : ATipoOcorrencia := '31'; {Conceder desconto}
       toRemessaCancelarDesconto           : ATipoOcorrencia := '32'; {Não conceder desconto}
       toRemessaAlterarModalidade          : ATipoOcorrencia := '40'; {Alterar modalidade (Vide Observações)}
     else
       ATipoOcorrencia := '01'; {Remessa}
     end;

A ocorrência "toRemessaCancelarInstrucaoProtestoBaixa" não deve ser utilizada pois no manual consta somente "Instrução para sustar protesto", portanto a ocorrência "toRemessaCancelarInstrucaoProtesto" é a que deve ser utilizada.

 

Método "CodMotivoRejeicaoToDescricao":

        // DONE -oJacinto Junior: Ajustar para utilizar a descrição correta.
//        67: Result:='66-Título/carne rejeitado' ;
        67: Result:= '67-Título/carne rejeitado';

A descrição da ocorrência 67 consta como "66-Título/carne rejeitado", sendo que o correto é "67-Título/carne rejeitado".

Anexo segue unit atualizada.

ACBrBancoBrasil.pas

  • Administradores
Postado

Boa noite.

Alterações disponíveis no svn.

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