Jump to content

Promoção de Natal SAC Mensal

Contrate e ganhe 1 Kit agenda + Caneta
Saiba mais

LANÇAMENTO
Curso Completo - Dominando o ACBrMonitor

Conheça o Curso

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

maxdatasistema

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

Recommended Posts

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;

 

Share this post


Link to post
Share on other sites

Bom dia, favor anexar o  manual com essa especificação técnica do Sicred, com relação a Código Mora.


Consultor SAC ACBr

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

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

Share this post


Link to post
Share on other sites

Bom dia, no fonte ACBrBancoSicredi o CodigoMora deve ser "A" ou "B", mas no ACBrBoleto é aceito somente "1" ou "2". Obrigado.

Share this post


Link to post
Share on other sites

Boa tarde pessoal. Precisamos atualizar a unit ACBrBancoSicredi; 

No seu construtor está: 

fpCodigosMoraAceitos    := 'AB';

precisamos alterar para: 

fpCodigosMoraAceitos:= '012';

 

Segue unit alterada em anexo e manual do sicred cnab240.

Muito obrigado! 

 

sicredi manual-cnab-240.pdf

ACBrBancoSicredi.pas

  • Like 1

Share this post


Link to post
Share on other sites

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
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Share this post


Link to post
Share on other sites

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. 

Share this post


Link to post
Share on other sites

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.

  • Like 1

Consultor SAC ACBr

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

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

Share this post


Link to post
Share on other sites

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. 

Share this post


Link to post
Share on other sites

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

  • Like 1

Consultor SAC ACBr

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

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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.

  • Like 1

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Share this post


Link to post
Share on other sites
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,

Share this post


Link to post
Share on other sites
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.

 

 

  • Like 1

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Share this post


Link to post
Share on other sites
15 horas atrás, Juliana Tamizou disse:

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

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

  • Like 2

Consultor SAC ACBr

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

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

Share this post


Link to post
Share on other sites
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.

  • Like 2

Share this post


Link to post
Share on other sites

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?

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Bom dia, vamos avaliar com calma, visto que afetará o funcionamento de algumas classes...

  • Like 1

Consultor SAC ACBr

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...