BoletoNet / boleto2net

Nova versão do Boleto.Net
Apache License 2.0
159 stars 138 forks source link

[Caixa - CNAB240] - Validação do Layout #329

Closed marcosgerene closed 1 year ago

marcosgerene commented 2 years ago

Senhores,

Estou com demanda para emissão de boletos Caixa, CNAB 240.

Segue o resultado da primeira validação:

image


Linha 1 - Pede-se 101 ou 107, mas no fonte temos 050 fixado.

https://github.com/BoletoNet/boleto2net/blob/1d68a4f3f1fe76994975e1ca6566efc1f0b47734/Boleto2.Net/Banco/BancoCaixa.cs#L326

reg.Adicionar(TTiposDadoEDI.ediNumericoSemSeparador_, 0164, 003, 0, "050", '0');

Manual:

image

image

Aqui, especificamente, temos ainda outra situação, valida-se sempre 6 dígitos ao formatar o cedente, (e depois pede 9, achei estranho), mas neste caso podemos ter 7 dígitos dependendo da versão do layout.

https://github.com/BoletoNet/boleto2net/blob/1d68a4f3f1fe76994975e1ca6566efc1f0b47734/Boleto2.Net/Banco/BancoCaixa.cs#L37

Cedente.Codigo = codigoCedente.Length <= 6 ? codigoCedente.PadLeft(6, '0') : throw Boleto2NetException.CodigoCedenteInvalido(codigoCedente, 9);

Linha 2: Pede-se 060 ou 067 e está fixado 030

https://github.com/BoletoNet/boleto2net/blob/1d68a4f3f1fe76994975e1ca6566efc1f0b47734/Boleto2.Net/Banco/BancoCaixa.cs#L352

reg.Adicionar(TTiposDadoEDI.ediNumericoSemSeparador_, 0014, 003, 0, "030", '0');

Manual: image

image

030, aparentemente, é para retorno.


Linha 3 - Falha interna minha.

rafd75 commented 2 years ago

@marcosgerene , boa tarde.

Os dois manuais que eu tenho aqui, da CEF 240 posições, são: V005 e V006 - ambos de Setembro de 2007.

Certamente, de lá pra cá, surgiram códigos de beneficiário com 7 dígitos, o que fez a versão ser alterada.

Acredito que o melhor seria atualizar para a versão mais recente. Porém, conforme o print do manual que você colocou ai, devemos ter muita atenção em verificar todo o resto dos campos do manual e comparar com o script do Boleto2Net. Isso pq, com 6 dígitos, existe um 0 na direita, e com 7 dígitos, não tem. Isso válido para remessa e retorno.

Provavelmente a versão implementada vai continuar funcionando (aliás, está funcionando, pois aqui tenho casos de uso dessa carteira) - mas novos clientes, precisam homologar na versão mais recente.

marcosgerene commented 2 years ago

@rafd75 Fiz um commit mas ainda não abri o PR, vou tentar ver se alguém daqui pode revisar o manual e vou fazer alguns testes, mas o problema meu é, se eu simplesmente "mudar" alguns campos como meu commit sugere pode haver uma quebra em casos como o seu.

rafd75 commented 2 years ago

Considerando que todos os campos (e posições) serão revisados, não acredito em quebra do que esteja funcionando não.

Veja - imagine um novo cliente aqui... vou precisar homologar e minha versão é antiga...

Então vou corrigir, mas a alteração irá acabar chegando para quem já usa a versão "antiga"... e eu acredito que a nova versão continuaria funcionando.

Obs: o outro caminho seria implementar multiplas versões de layout, e setar de alguma forma isso... Mas entendo que essa solução é terrível... imagina daqui um tempo, quantas versões não estariam dentro do componente.

marcosgerene commented 2 years ago

@rafd75 faz sentido.

Vou revisar o CNAB 240 porque é o que vou mexer no momento, acredito que eu abra o PR entre essa e a próxima semana,

rafd75 commented 2 years ago

OK... combinado.

marcosgerene commented 2 years ago

@rafd75

A remessa foi validada com meus ajustes. Tive que mexer no código de barras, mais especificamente no campo livre, então vamos validar também o boleto gerado.

Os testes já exitentes passaram com sucesso:

image

Assim que receber retorno dos boletos abro o PR.

rafd75 commented 2 years ago

Legal ... !!!

WillPvt commented 2 years ago

Senhores,

Estou com demanda para emissão de boletos Caixa, CNAB 240.

Segue o resultado da primeira validação:

imagem

Linha 1 - Pede-se 101 ou 107, mas no fonte temos 050 corrigido.

https://github.com/BoletoNet/boleto2net/blob/1d68a4f3f1fe76994975e1ca6566efc1f0b47734/Boleto2.Net/Banco/BancoCaixa.cs#L326

reg.Adicionar(TTiposDadoEDI.ediNumericoSemSeparador_, 0164, 003, 0, "050", '0');

Manual:

imagem

imagem

Aqui, especificamente, temos ainda outra situação, valida-se sempre 6 dígitos ao formatar o cedente, (e depois pede 9, achei estranho), mas neste caso podemos ter 7 dígitos dependendo da versão do layout.

https://github.com/BoletoNet/boleto2net/blob/1d68a4f3f1fe76994975e1ca6566efc1f0b47734/Boleto2.Net/Banco/BancoCaixa.cs#L37

Cedente.Codigo = codigoCedente.Length <= 6 ? codigoCedente.PadLeft(6, '0') : throw Boleto2NetException.CodigoCedenteInvalido(codigoCedente, 9);

Linha 2: Pede-se 060 ou 067 e está fixado 030

https://github.com/BoletoNet/boleto2net/blob/1d68a4f3f1fe76994975e1ca6566efc1f0b47734/Boleto2.Net/Banco/BancoCaixa.cs#L352

reg.Adicionar(TTiposDadoEDI.ediNumericoSemSeparador_, 0014, 003, 0, "030", '0');

Manual: imagem

imagem

030, aparentemente, é para retorno.

Linha 3 - Falha interna minha.

Bom dia amigo, estou com o mesmo problema, ja subiu essa alteração ?

rafd75 commented 2 years ago

@WillPvt

Acho que essa correção está no PR -> #330