BoletoNet / boleto2net

Nova versão do Boleto.Net
Apache License 2.0
162 stars 139 forks source link

Problema ao validar a remessa gerada #347

Closed EriksJunior closed 6 months ago

EriksJunior commented 2 years ago

Motivação: Realizei a alteração devido a um problema no segmento Q no leiaute CNAB240, pois ao validar o arquivo no validador de remessas estava retornando o seguinte problema

POSIÇÃO: 210 a 212 NOME DO CAMPO: 20.3Q - Cód. Bco. Corresp. na Compensação CONTEÚDO OBSERVADO: [ ] ERRO/ALERTA: Foi informado caractere não numérico ou brancos. SOLUÇÃO/RECOMENDAÇÃO: Campo numérico: Verificar o preenchimento. / Preencher com zeros à esquerda.

Solução: tive que adicionar o zero onde estava puxando vazio

Link para o validador de leiautes: https://gmtedi.bb.com.br/validaleiaute/#/

carloscds commented 2 years ago

@EriksJunior Quebrou um teste, valida por favor.

EriksJunior commented 2 years ago

Dei uma olhada nos testes, porém aqui esta dando problema somente no teste do Banco Sicredi REM 240 e 400.

Dei uma olhada no manual https://www.sicredi.com.br/media/manual_cnab_400_28062021.pdf pagina-4, na função ValidaBoleto esta sendo passado como parâmetro o boleto com a EspecieDocumento DM, porém na documentação só existe DMI e no switch só tem o caso para TipoEspecieDocumento.DMI

================================================================================== public void ValidaBoleto(Boleto boleto) { switch (boleto.EspecieDocumento) { case TipoEspecieDocumento.DMI: case TipoEspecieDocumento.DR: case TipoEspecieDocumento.NP: case TipoEspecieDocumento.NPR: case TipoEspecieDocumento.NS: case TipoEspecieDocumento.RC: case TipoEspecieDocumento.LC: case TipoEspecieDocumento.ND: case TipoEspecieDocumento.DSI: case TipoEspecieDocumento.OU: break; //TIPOS POSSÍVEIS DE ACORDO COM A DOCUMENTAÇÃO DO SICREDI default: throw new Exception($"Especie de documento: {boleto.EspecieDocumento} inválida para o banco {Nome}."); }
}

==================================================================================

Atualmente a Função GerarBoleto esta desta forma abaixo, EspecieDocumento = TipoEspecieDocumento.DM

*var boleto = new Boleto(banco) { Sacado = GerarSacado(), DataEmissao = DateTime.Now.AddDays(-3), DataProcessamento = DateTime.Now, DataVencimento = DateTime.Now.AddMonths(i), ValorTitulo = (decimal)100 i, NossoNumero = NossoNumeroInicial == 0 ? "" : (NossoNumeroInicial + _proximoNossoNumero).ToString(), NumeroDocumento = "BB" + _proximoNossoNumero.ToString("D6") + (char)(64 + i), EspecieDocumento = TipoEspecieDocumento.DM, Aceite = aceite, CodigoInstrucao1 = "11", CodigoInstrucao2 = "22", DataDesconto = DateTime.Now.AddMonths(i), ValorDesconto = (decimal)(100 i 0.10), DataMulta = DateTime.Now.AddMonths(i), PercentualMulta = (decimal)2.00, ValorMulta = (decimal)(100 i (2.00 / 100)), DataJuros = DateTime.Now.AddMonths(i), PercentualJurosDia = (decimal)0.2, ValorJurosDia = (decimal)(100 i (0.2 / 100)), MensagemArquivoRemessa = "Mensagem para o arquivo remessa", NumeroControleParticipante = "CHAVEPRIMARIA=" + _proximoNossoNumero }**

Fiz a alteração passando TipoEspecieDocumento.DMI e passou no teste tranquilo,

carloscds commented 2 years ago

@EriksJunior Precisa corrigir o teste

rafd75 commented 2 years ago

@carloscds tarde!!!

Eu acho que o problema do teste não é do código, e sim no github mesmo: https://github.com/BoletoNet/boleto2net/pull/349#issuecomment-1217155640

tem outro PR com o mesmo problema.

carloscds commented 2 years ago

@rafd75 Vou verificar.

carloscds commented 2 years ago

@rafd75 @EriksJunior Eu corrigi o problema. A falha, de acordo com este post: https://www.giorgi.dev/miscellaneous/how-cloudflare-broke-my-build-and-how-i-fixed-it/ foi causada pela Cloudfare, que esta impedindo o envio dos resultados do Coverall para a nuvem. Isto foi corrigido na ultima versão do Coveralls.NET, mas esta versão só é compativel com .NET Core. Sendo assim eu "comentei" a sessão do build que envia o Coveralls, por enquanto.

Para corrigir os PRs é preciso que você atualizem, em seus repositorios, o arquivo "build.cake", é so copiar do projeto principal e refazer o commit, que ja ajusta.

Outra coisa é que existem "realmente" dois testes falhando, que eu tambem ajustei, causado por um erro do TipoDocumento.DM, que ficou faltando na validação do Boleto do Sicredi.

Qualquer dúvida me avisem.