CNO

Cadastro Nacional de Obras, o cadastro de obras de construção civil na Receita Federal (substituiu o CEI para elas, com a mesma numeração).

  • Matriz de paridade

Validar

Valida um CNO. O CNO substituiu o CEI para obras de construção civil e manteve a numeração dele.

  • Mesmas regras de cei.isValid.
  • Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro é inválido.
  • Nenhuma fonte oficial publica a regra do dígito verificador. Só as 12 posições e a manutenção do número do CEI no CNO (Manual de Orientação do eSocial S-1.3, item 9.1) são oficiais. A IN RFB 2.061/2021 não traz dígito verificador, e o eSocial só verifica se o número existe na base da Receita. A regra vem de implementações de referência de terceiros, conferidas com os dados abertos do CNO e com o exemplo do SERPRO, 000000336854.
  • Um número perde os zeros à esquerda, então um valor que começa com 0 só é aceito como string: "000000336854" é válido e 336854 não é.
ParâmetroTipoObrigatório
valuestring | numbersim
retornaboolean

Valida um número de CNO (Cadastro Nacional de Obras). O CNO substituiu o CEI para obras e manteve a mesma numeração.

  • Mesmas regras de isValidCei, inclusive os zeros à esquerda de um número.
import { isValidCno } from '@brazilian-utils/brazilian-utils';

isValidCno('11.084.01680/62'); // true
isValidCno('111130137368'); // true
isValidCno(401800097960); // true
isValidCno(-401800097960); // false (não é um inteiro seguro não negativo)
isValidCno('110840168063'); // false (dígito verificador inválido)
isValidCno('000000000000'); // false (dígitos repetidos)

Fonte: página do CNO da Receita Federal, SERPRO, cadastro CNO, MOS do eSocial S-1.3, item 9.1 e a base de dados aberta do CNO.

Código: brazilian-utils/javascript
Teste com JavaScript isValidCno
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (22) e o resultado em cada biblioteca cno.isValid

Formatar

Formata um CNO com a máscara 00.000.00000/00 (a numeração do CEI).

  • Mesmas regras de cei.format: a máscara é aplicada até onde os dígitos vão, e os dígitos além do 12º são descartados. options.pad primeiro completa com zeros à esquerda até 12 dígitos.
  • Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro retorna uma string vazia (a 2.4.0 lia os dígitos de qualquer número, descartando sinal e ponto decimal).
  • options.pad num valor sem dígitos ("", "---", null) continua retornando uma string vazia. Até a 2.4.0 "" e "---" retornavam a máscara inteira de zeros.
ParâmetroTipoObrigatório
valuestring | numbersim
optionsFormatCnoOptionsnão
options.padbooleannão
retornastring

Formata um número de CNO (Cadastro Nacional de Obras).

  • Mesmas regras de formatCei: a máscara 00.000.00000/00, com pad em FormatCnoOptions.
import { formatCno } from '@brazilian-utils/brazilian-utils';

formatCno('111130137368'); // 11.113.01373/68
formatCno(401800097960); // 40.180.00979/60
formatCno('979', { pad: true }); // 00.000.00009/79
Código: brazilian-utils/javascript
Teste com JavaScript formatCno
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (20) e o resultado em cada biblioteca cno.format

Interpretar

Remove a formatação do CNO e mantém somente os dígitos, limitados a 12 dígitos.

  • Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro retorna uma string vazia (a 2.4.0 lia os dígitos de qualquer número, descartando sinal e ponto decimal).
ParâmetroTipoObrigatório
valuestring | numbersim
retornastring

Remove a formatação do CNO (Cadastro Nacional de Obras), mantém apenas os dígitos e limita o resultado a 12 dígitos, a numeração que o CNO herdou do CEI.

import { parseCno } from '@brazilian-utils/brazilian-utils';

parseCno('11.113.01373/68'); // '111130137368'
Código: brazilian-utils/javascript
Teste com JavaScript parseCno
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (9) e o resultado em cada biblioteca cno.parse

Fontes oficiais

Veja também CEI, CAEPF

Atualizado em

Nesta página