Dei uma revisada nas alterações e no meu entendimento a função funChecaCOD_CONS na unit ACBrTXTUtils não vai validar corretamente. Pelo o que eu entendi no manual o campo COD_CONS nem deve ser informado quando o tipo for 66. A função funChecaCOD_CONS Começa por padrão com result False, e depois testa o conteudo informado no COD_CONS de acordo com o tipo. Mas como o tipo 66 o conteudo do COD_CONS sempre vai ser passado como vazio, então do jeito que ficou iria estar validando errado. O que eu fiz foi somente alterar o Result padrão pra True e caso for dos modelos 06, 28 ou 29 ai sim valida se o conteudo é correto. se for o 66 nem deveria entrar nessa validacao pq ele não é preenchido.
função no repositório:
begin
Result := False;
// Se o modelo for 06 (energia elétrica) ou 28 (gás canalizado), os valores válidos são [01, 02, 03, 04, 05, 06, 07, 08]
if MatchText(COD_MOD, ['06', '28', '66']) then
begin
Result := MatchText(COD_CONS, ListaEnergia);
end
else
// Se o modelo for 29 (água canalizada), o valor deve constar da Tabela 4.4.2
if MatchText(COD_MOD, ['29']) then
begin
Result := MatchText(COD_CONS, ListaAgua);
end;
end;
função que eu modifiquei:
begin
Result := True;
// Se o modelo for 06 (energia elétrica) ou 28 (gás canalizado), os valores válidos são [01, 02, 03, 04, 05, 06, 07, 08]
if MatchText(COD_MOD, ['06', '28']) then
begin
Result := MatchText(COD_CONS, ListaEnergia);
end
else
// Se o modelo for 29 (água canalizada), o valor deve constar da Tabela 4.4.2
if MatchText(COD_MOD, ['29']) then
begin
Result := MatchText(COD_CONS, ListaAgua);
end;
end;