{parts/gtag_head.html} {parts/gtag_body.html}
Conheça  A Ferramenta LowCode mais moderna e veloz para desenvolvimento PHP: Adianti Creator
CNPJ Alfanumérico Boa tarde a todos. Venho ressaltar que a partir do dia 27/07/2026 será a entrada em produção dos sistemas adaptados ao CNPJ Alfanumérico. E no dia 31/07/2026 será a emissão do primeiro CNPJ Alfanumérico. Ou seja, a classe TCNPJValidator parará de validar corretamente os CNPJs. Não estou na versão mais atual do Adianti, mas na versão 7.6, esse problema ainda ocorre. Obriga...
NF
CNPJ Alfanumérico  
Boa tarde a todos.

Venho ressaltar que a partir do dia 27/07/2026 será a entrada em produção dos sistemas adaptados ao CNPJ Alfanumérico.

E no dia 31/07/2026 será a emissão do primeiro CNPJ Alfanumérico.

Ou seja, a classe TCNPJValidator parará de validar corretamente os CNPJs.

Não estou na versão mais atual do Adianti, mas na versão 7.6, esse problema ainda ocorre.

Obrigado.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (1)


BA

Dá pra atualizar, eu fiz assim (usei o novo manual de validação da receita) e está funcionando:

 
  1. <?php
  2. namespace Adianti\Validator;
  3. use Adianti\Core\AdiantiCoreTranslator;
  4. use Exception;
  5. class TCNPJValidator extends TFieldValidator
  6. {
  7. public function validate($label, $value, $parameters = NULL)
  8. {
  9. $cnpj = preg_replace('/[^a-zA-Z0-9]/', '', (string) $value);
  10. $cnpj = strtoupper($cnpj);
  11. if (strlen($cnpj) !== 14 || !preg_match('/^[A-Z0-9]{12}[0-9]{2}$/', $cnpj))
  12. {
  13. throw new Exception(AdiantiCoreTranslator::translate('The field ^1 has not a valid CNPJ', $label));
  14. }
  15. $pesos1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
  16. $pesos2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
  17. $soma1 = 0;
  18. for ($i = 0; $i < 12; $i++) {
  19. $char = substr($cnpj, $i, 1);
  20. $valor = ord($char) - 48;
  21. $soma1 += $valor * $pesos1[$i];
  22. }
  23. $resto1 = $soma1 % 11;
  24. $digito1 = $resto1 < 2 ? 0 : 11 - $resto1;
  25. $soma2 = 0;
  26. for ($i = 0; $i < 12; $i++) {
  27. $char = substr($cnpj, $i, 1);
  28. $valor = ord($char) - 48;
  29. $soma2 += $valor * $pesos2[$i];
  30. }
  31. $soma2 += $digito1 * $pesos2[12];
  32. $resto2 = $soma2 % 11;
  33. $digito2 = $resto2 < 2 ? 0 : 11 - $resto2;
  34. $dv1Informado = (int) substr($cnpj, 12, 1);
  35. $dv2Informado = (int) substr($cnpj, 13, 1);
  36. if ($dv1Informado !== $digito1 || $dv2Informado !== $digito2)
  37. {
  38. throw new Exception(AdiantiCoreTranslator::translate('The field ^1 has not a valid CNPJ', $label));
  39. }
  40. }
  41. }
  42. ?>