Closed lcallegari closed 4 years ago
Essa Issue foi marcada automáticamente como obsoleta, devido a um longo periodo de inatividade. Se nenhuma interação ocorrer nos próximos dias, ela será encerrada. Agradecemos a sua contribuição, esse processo é apenas para manter o repositório mais organizado.
Olá pessoal! Identifiquei uma situação com o cálculo do dígito verificador de códigos de barra, ao menos de acordo com as regras do manual da Febraban (https://portal.febraban.org.br/pagina/3166/33/pt-br/layour-arrecadacao). No manual a regra para o cálculo do mod 11 é a seguinte:
Note que na observação, que trata das condições especiais para os valores do dígito verificador, é considerado o resto da divisão, e não o resultado da subtração. Assim sendo, seria necessário fazer a validação das substituições antes do cálculo complementar.
Segue um código de barras cujo dígito verificador do último grupo foi calculado errado. 85860000000 4 20000278120 7 20012102000 5 03623607923 0
O último grupo possui DV 0 (correto), porém a rotina calcula 1, pois o resto da divisão é 1. Segundo o manual, o DV deveria ser 0 quando o resto da divisão for 1, porém o cálculo complementar ocorre antes desta validação (11 - 1) calculando 10 e fixando o DV como 1.
Não sei ao certo se há alguma alternativa para esta situação que eu não tenha encontrado na lib.
Abaixo a configuração que usei para o cálculo do DV pelas regras da Febraban