Ir para conteúdo
  • Cadastre-se

dev botao

Código De Mora - Sicredi, sugestão de alteração


Ver Solução Respondido por José M. S. Junior,
  • Este tópico foi criado há 2105 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Bom dia, segue abaixo sugestão de alteração no arquivo "ACBrBoleto.pas",  para corrigir mensagem de Juros no boleto, quando portador for Sicredi:

procedure TACBrBoleto.AdicionarMensagensPadroes(Titulo: TACBrTitulo;  AStringList: TStrings);

//      if ValorMoraJuros <> 0 then
//      begin
//         if DataMoraJuros <> 0 then
//            AStringList.Add(ACBrStr('Cobrar juros de '                        +
//                            ifthen(CodigoMora = '2', FloatToStr(ValorMoraJuros) + '%',
//                                   FormatCurr('R$ #,##0.00',ValorMoraJuros))         +
//                             ' por dia de atraso para pagamento a partir de ' +
//                             FormatDateTime('dd/mm/yyyy',ifthen(Vencimento = DataMoraJuros,
//                                                                IncDay(DataMoraJuros,1),DataMoraJuros))))
//         else
//            AStringList.Add(ACBrStr('Cobrar juros de '                +
//                                    ifthen(CodigoMora = '2', FloatToStr(ValorMoraJuros) + '%',
//                                           FormatCurr('R$ #,##0.00',ValorMoraJuros))         +
//                             ' por dia de atraso'));
//      end;
      if ValorMoraJuros <> 0 then
      begin
         if DataMoraJuros <> 0 then
            AStringList.Add(ACBrStr('Cobrar juros de '                        +
                            ifthen(((CodigoMora = '2') or (CodigoMora = 'B')), FloatToStr(ValorMoraJuros) + '%',
                                   FormatCurr('R$ #,##0.00',ValorMoraJuros))         +
                             ' por dia de atraso para pagamento a partir de ' +
                             FormatDateTime('dd/mm/yyyy',ifthen(Vencimento = DataMoraJuros,
                                                                IncDay(DataMoraJuros,1),DataMoraJuros))))
         else
            AStringList.Add(ACBrStr('Cobrar juros de '                +
                                    ifthen(((CodigoMora = '2') or (CodigoMora = 'B')), FloatToStr(ValorMoraJuros) + '%',
                                           FormatCurr('R$ #,##0.00',ValorMoraJuros))         +
                             ' por dia de atraso'));
      end;

 

  • 1 mês depois ...
  • 1 ano depois...
  • Administradores
Postado

Boa tarde Joel,

Notei que você alterou o construtor, porém no decorrer desta unit a propriedade CodigoMora continua trabalhando com os valores A e B, acredito que tem algo errado com sua alteração.

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

  • 3 semanas depois ...
  • Membros Pro
Postado

olá Juliana, desculpe a demora, eu achei que havia marcado para seguir esta conversa, mas acho que não marquei e acabei não sabendo de sua resposta. 

Estranho que eu fiz esta alteração e para mim resolveu o erro na homologação. Verifiquei que esta variável é utilizada apenas para validação ou seja ela não é alterada em nenhum lugar do código, por isso não entendi porque no seu teste ele manteve assim. não encontrei outro local onde definisse estes valores. 

  • Moderadores
Postado

Bom dia

O manual do CNAB400 deste banco segue a especificação "A" e "B" para o código de Mora. Talvez então seja necessário adicionar os dois tipos (''AB012'') no construtor.

Note que a propriedade "CodigoMora" não está sendo usada no CNAB240, por isso não houve a necessidade de alteração até o momento.

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

  • Membros Pro
Postado

Bom dia José, entendi a sua colocação. Pois olhando no código está assim: 

             IfThen(ValorMoraJuros = 0, '3', '1')       // 118 a 118 - Código do juro de mora 

então caso não tenha valor de mora ele envia 0, caso contrario envia 3.

Até funciona sim, mas como existe o campo Titulo.CodigoMora  no componente, e ele é utilizado não somente para este banco, eu preencho este campo sempre conforme exigências do banco. Este ifthen está fazendo uma "adaptação" para não usar este campo, porém como existe uma validação com uma variável no construtor e está desta forma:   fpCodigosMoraAceitos    := 'AB';   Por que não corrigi la conforme o padrão do banco como a gente sempre faz?  Ou eu terei que adaptar meu código com um if banco = sicredi não manda o campo Titulo.CodigoMora se não vai dar erro, pois o campo só aceita A ou B. 

Você acha que isto está correto? Eu penso que não. Tanto que estou enviando esta alteração para homologar o arquivo  ACBrBancoSicredi.pas . 

Se os moderadores não aceitarem a alteração, não posso fazer nada, simplesmente terei que manter esta alteração em meu arquivo e trabalhando com merge quando fizer comit deste arquivo. Olha, já homologuei alguns bancos neste forum e nunca tive este problema....

"O manual do CNAB400 deste banco segue a especificação "A" e "B" para o código de Mora. Talvez então seja necessário adicionar os dois tipos (''AB012'') no construtor."

O CNAB400 não é mais usado pela maioria dos bancos atualmente José. Tenho homologação, só este ano, o banco do brasil, itau, santander, sicoob, bradesco, caixa economica e agora o sicred, e todos exigem o CNAB240. 

  • Moderadores
  • Solution
Postado

Boa tarde

Adicionado ao SVN correção sugerida, mantendo validações anteriores para não haver quebra de compatibilidade, pois algumas Cooperativas deste banco continuam validando versão anteriores.

Obrigado

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

  • 2 semanas depois ...
Postado
Em 05/02/2019 at 11:45, Joel disse:

Bom dia José, entendi a sua colocação. Pois olhando no código está assim: 

             IfThen(ValorMoraJuros = 0, '3', '1')       // 118 a 118 - Código do juro de mora 

então caso não tenha valor de mora ele envia 0, caso contrario envia 3.

Até funciona sim, mas como existe o campo Titulo.CodigoMora  no componente, e ele é utilizado não somente para este banco, eu preencho este campo sempre conforme exigências do banco. Este ifthen está fazendo uma "adaptação" para não usar este campo, porém como existe uma validação com uma variável no construtor e es desta forma:   fpCodigosMoraAceitos    := 'AB';   Por que não corrigi la conforme o padrão do banco como a gente sempre faz?  Ou eu terei que adaptar meu código com um if banco = sicredi não manda o campo Titulo.CodigoMora se não vai dar erro, pois o campo só aceita A ou B. 

Você acha que isto está correto? Eu penso que não. Tanto que estou enviando esta alteração para homologar o arquivo  ACBrBancoSicredi.pas . 

Se os moderadores não aceitarem a alteração, não posso fazer nada, simplesmente terei que manter esta alteração em meu arquivo e trabalhando com merge quando fizer comit deste arquivo. Olha, já homologuei alguns bancos neste forum e nunca tive este problema....

"O manual do CNAB400 deste banco segue a especificação "A" e "B" para o código de Mora. Talvez então seja necessário adicionar os dois tipos (''AB012'') no construtor."

O CNAB400 não é mais usado pela maioria dos bancos atualmente José. Tenho homologação, só este ano, o banco do brasil, itau, santander, sicoob, bradesco, caixa economica e agora o sicred, e todos exigem o CNAB240. 

Bom dia Joel e demais participantes desse debate.

Os códigos de mora A e B não são aceitos pelo sicredi no layout CNAB240... descobri isso da pior forma, quando fui ver que mais de 150 boletos que eu enviei aos clientes nos últimos dias estão com o registro recusado devido ao código de mora.

Se possível, adicionar uma validação para não aceitar codigos inválidos, como A e B para o cnab 240.

Grato

  • Administradores
Postado

Boa tarde.

Acredito que seja o caso de adicionar um tratamento na rotina de geração da remessa CNAB240 de forma a converter para os valores aceitos o A e B. Caso já tenha feito algum ajuste, fique a vontade para nos enviar.

Att.

  • Curtir 1
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
4 minutos atrás, Juliana Tamizou disse:

Boa tarde.

Acredito que seja o caso de adicionar um tratamento na rotina de geração da remessa CNAB240 de forma a converter para os valores aceitos o A e B. Caso já tenha feito algum ajuste, fique a vontade para nos enviar.

Att.

Boa tarde Juliana,

Obrigado por responder, mas na minha humilde opinião, dessa forma o desenvolvedor tem a falsa sensação de que está tudo ok, como foi o que aconteceu comigo, eu so vi o problema estourar quando ja era bem tarde, ja havia varios boletos emitidos.

Creio que talvez fosse melhor separar a propriedade CodigosMoraAceitos em (CodigosMoraAceitosCnab400 e CodigosMoraAceitosCnab240).

Também seria interessante tirar a validação do metodo TACBrTitulo.SetCodigoMora e colocar na geração do arquivo de remessa, pois como teríamos uma validação para cada tipo de layout, esse método poderia ser falho.

Caso ache que fica interessante, eu me proponho a desenvolver sim.

Att,

  • Administradores
Postado
18 minutos atrás, marcianobandeira disse:

Obrigado por responder, mas na minha humilde opinião, dessa forma o desenvolvedor tem a falsa sensação de que está tudo ok, como foi o que aconteceu comigo, eu so vi o problema estourar quando ja era bem tarde, ja havia varios boletos emitidos.

Realmente, porém disparando a exceção acabaria gerando exceção e forçando correções em todos os usuários deste banco. (Nada difícil de corrigir é claro)

21 minutos atrás, marcianobandeira disse:

Também seria interessante tirar a validação do metodo TACBrTitulo.SetCodigoMora e colocar na geração do arquivo de remessa, pois como teríamos uma validação para cada tipo de layout, esse método poderia ser falho.

O CodigoMora não é usado somente na remessa.

Creio que  apesar falsa sensação de que o A/B é aceito em ambos os layouts, também não seria problemático termos o tratamento internamente.

@José M. S. Junior oque você acha?

Att.

 

 

  • Curtir 1
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
2 horas atrás, José M. S. Junior disse:

Acho que pode ter uma validação para ambos os casos, não permitindo código de mora invalido para o layout...

Bom dia, vou implementar uma sugestão e anexo os fontes aqui mais tarde.

  • Curtir 2
Postado

Boa tarde  @Juliana Tamizou e @José M. S. Junior

Temos duas propriedades na classe ACBrTitulo, CodigoMora e CodigoMoraJuros.

Notei que algumas classes provavelmente mais recentes, usam esta propriedade CodigoMoraJuros.

Estou criando as validações aqui para a propriedade CodigoMora, mas creio que talvez fosse melhor eliminar essa propriedade, deixando apenas a propriedade CodigoMoraJuros.

Assim cada classe de banco nova que fosse diferente do padrão, poderia simplesmente sobrescrever um método para deixar com o código correto, a exemplo da função CodJurosToStr que tem na unit TACBrBancoUnicredES.

Creio que neste caso também poderia ser eliminado a propriedade CodigosMoraAceitos, ou ao menso ser trocada para um Set of TACBrCodigoJuros ao invés de string.

O que acham?

 

Postado

Boa tarde Senhores,

Segue em anexo a minha proposta de mudança.

Basicamente eu removi a propriedade CodigoMora deixando apenas a propriedade CodigoMoraJuros.

Adicionei também a propriedade CodigoJurosMoraAceitos para que cada classe de banco possa informar quais sao os aceitos, caso sejam diferentes de (Valor por dia, Taxa mensal e Isento).

Criei os metodos CodigoMoraJurosToStr e StrToCodigoMoraJuros na classe TACBrBancoClass.. esse método pode ser sobrescrito por outras classes, mas a exemplo da classe TACBrBanrisul podem ver que não é necessário sobrescrever o método.

Algo que pode ser chato e provavelmente alguns desenvolvedores tenham que ajustar seus codigos é quanto a validação adicionada ao gerar o arquivo de remessa. Apesar de poder causar alguns transtornos, não causará a falsa sensação de estar tudo bem, podendo neste caso sim, gerar transtornos maiores no futuro.

Realizei os testes aqui basicamente com o sicredi.

Att,

ACBrBoleto.rar

  • Este tópico foi criado há 2105 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.