Skip to content

feat: adiciona suporte a CNPJ alfanumérico nos campos de CPF/CNPJ - #19

Merged
lcsLucas merged 1 commit into
masterfrom
feat/IIP-17-cnpjAlfanumerico
Oct 21, 2026
Merged

lcsLucas merged 1 commit into
masterfrom
feat/IIP-17-cnpjAlfanumerico

Conversation

@lcsLucas

Copy link
Copy Markdown
Collaborator

O que muda

Desde julho de 2026, a Receita Federal atribui CNPJ alfanumérico às novas inscrições: 12 caracteres [A-Z0-9] mais 2 DVs numéricos. O asCnpj da kubinyete/assertation descarta letras, então o SDK recusava esses CNPJs.

Entrada Antes Depois
12.ABC.345/01DE-35 MutatorAttributeException 12ABC34501DE35
12.abc.345/01de-35 MutatorAttributeException 12ABC34501DE35
12.ABC.345/01DE-36 (DV errado) MutatorAttributeException MutatorAttributeException
CPF 074.598.263-83 07459826383 MutatorAttributeException

A última linha é a mudança de comportamento: as letras deixam de ser descartadas.

Como foi testado

  • Testes:
    • de DocumentUtil, com os vetores oficiais do código de referência da Receita;
    • dos models;
    • de CustomerEndpoint::create, que inspeciona o body.
  • Fuzz de 60 mil entradas (cruas, com máscara e em minúsculas) contra o DigitoVerificador de referência da Receita, sem nenhuma divergência.
  • Suíte verde em PHP 7.4, 8.3 e 8.4 (508 testes).
  • Validado contra uma API local atualizada. Ela aceita e grava CNPJ alfanumérico e recusa os inválidos com o mesmo veredito do SDK.

Release

MINOR, v1.5.0, depois da v1.4.2. A entrada no CHANGELOG.md e a seção "CPF e CNPJ" do README estão neste PR.

Closes #17

🤖 Generated with Claude Code

- adiciona Util\DocumentUtil::cnpj(), que valida CNPJ numérico ou
  alfanumérico pelo cálculo de DV da Receita Federal e o retorna sem
  máscara e em maiúsculas
- DocumentUtil::cpfCnpj() passa a tratar um documento com letras como
  CNPJ alfanumérico, em vez de descartar as letras
- cobre com os vetores oficiais da Receita, testes dos models e da
  request do CustomerEndpoint::create
- documenta as regras de documento no README e no docs/sdk.md e
  registra a v1.5.0 no CHANGELOG
@lcsLucas
lcsLucas merged commit f12bd60 into master Oct 21, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Suporte a CNPJ alfanumérico nos campos de CPF/CNPJ

2 participants