NBS
Nomenclatura Brasileira de Serviços: os códigos de classificação de serviços da tabela NBS 2.0, informados na NFS-e nacional.
Validar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Verifica se um código NBS existe na tabela NBS 2.0 publicada pelo MDIC (Portarias Conjuntas RFB/SCS 1.429/2018 e 2.000/2018).
- Um código tem 9 dígitos, impressos como
N.NNNN.NN.NN: o dígito 1, o capítulo, a posição, os dois níveis de subposição, o item e o subitem. - Aceita os 9 dígitos, a máscara
N.NNNN.NN.NNou um inteiro seguro não negativo. A máscara aceita qualquer sequência de separadores entre os grupos: espaço,.,-ou/("1..0101.11.00"é válido). Espaços nas pontas são ignorados. - Qualquer outra string é rejeitada (
"1.0101abc11.00"). A função não extrai os dígitos dela. Nada é completado com zeros: todo código começa com 1. - Só códigos completos são válidos. Os cabeçalhos de capítulo, posição e subposição (
"1.01","1.0101","1.0101.1") não são. A tabela tem 920 códigos completos. - A função segue a nomenclatura do MDIC. 1.0402.29.00, 1.0403.29.00 e 1.0904.40.00 são válidos aqui, embora a NFS-e os recuse. O placeholder
9.9999.99.99do ANEXO B da NFS-e não é válido.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | boolean |
Valida um código NBS (Nomenclatura Brasileira de Serviços, Intangíveis e Outras Operações que Produzam Variações no Patrimônio) contra a tabela oficial da NBS 2.0, o código que a NFS-e nacional leva em cNBS.
- O código tem 9 dígitos, impressos como
N.NNNN.NN.NN: o algarismo 1, o capítulo, a posição, os dois níveis de subposição, o item e o subitem. - Aceita uma string com os 9 dígitos ou com a máscara, com qualquer sequência de separadores (espaço,
.,-ou/) entre os grupos e espaços opcionais nas extremidades, ou um inteiro seguro não negativo. Qualquer outra string é rejeitada em vez de ter os dígitos pinçados. - Só códigos completos são válidos: os títulos de capítulo (
1.01), posição (1.0101) e subposição (1.0101.1) não classificam nada por si sós. - O ANEXO B do Sistema Nacional NFS-e lista os mesmos 920 códigos menos três (
1.0402.29.00,1.0403.29.00e1.0904.40.00), então um código válido aqui ainda pode ser recusado pela NFS-e.
import { isValidNbs } from '@brazilian-utils/brazilian-utils';
isValidNbs('1.0101.11.00'); // true
isValidNbs('101011100'); // true
isValidNbs(101011100); // true
isValidNbs('1.0101'); // false (título de posição, não um código completo)
isValidNbs('1.9999.99.99'); // false
isValidNbs('1.0101abc11.00'); // false (não é uma forma documentada)Teste com JavaScript isValidNbs
Casos de teste compartilhados (22) e o resultado em cada biblioteca nbs.isValid
Formatar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Formata um código NBS com a máscara N.NNNN.NN.NN. Só a estrutura muda (use nbs.isValid para verificar o código).
- A função lê os dígitos de uma string e aplica a máscara até onde eles vão, então um código parcial é formatado aos poucos. Outros caracteres e os dígitos depois do nono são descartados.
options.pad(padrãofalse) primeiro completa os dígitos com zeros à esquerda até os 9 dígitos de um código completo:"1"dá0.0000.00.01. Todo código NBS começa com 1, então o preenchimento só serve a quem quer largura fixa.- Um valor vazio, ou sem dígitos, retorna uma string vazia mesmo com
pad(ele não é completado até a máscara de zeros). - Um número só é lido se for um inteiro seguro não negativo. Qualquer outro número retorna uma string vazia.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
options | FormatNbsOptions | não |
options.pad | boolean | não |
| retorna | string |
Formata um código NBS (Nomenclatura Brasileira de Serviços) na máscara N.NNNN.NN.NN em que a nomenclatura o imprime. Só a estrutura muda; use isValidNbs para conferir um código com a tabela.
- Opções (
FormatNbsOptions):pad(padrãofalse) completa antes o valor com zeros à esquerda até os 9 dígitos de um código completo (todo código NBS começa com 1, então só serve para largura fixa). Um valor vazio, ou sem dígitos, devolve''mesmo compad. - No resto, mesmas regras de
formatCnae: a máscara é aplicada até onde o valor vai, os caracteres fora dela são descartados e um número só é lido como a string dos seus dígitos quando é um inteiro seguro não negativo; qualquer outro número retorna''.
import { formatNbs } from '@brazilian-utils/brazilian-utils';
formatNbs('101011100'); // 1.0101.11.00
formatNbs(101011100); // 1.0101.11.00
formatNbs('10101'); // 1.0101 (mascarado até onde vai)
formatNbs('1', { pad: true }); // 0.0000.00.01 (completado até 9 dígitos antes)
formatNbs('abc101011100'); // 1.0101.11.00 (só os dígitos são lidos)
formatNbs(-101011100); // '' (não é um inteiro seguro não negativo)Teste com JavaScript formatNbs
Casos de teste compartilhados (26) e o resultado em cada biblioteca nbs.format
Interpretar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Remove a formatação do NBS e mantém somente os dígitos, limitados a 9 dígitos.
- Não completa nada com zeros à esquerda. Um código parcial (um capítulo, uma posição ou uma subposição ainda sendo digitada) fica como está escrito, porque todo código NBS começa com 1.
- 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.
- Retorna string vazia quando não há nenhum dígito.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | string |
Remove a formatação do NBS (Nomenclatura Brasileira de Serviços), mantém apenas os dígitos e limita o resultado aos 9 dígitos de um código completo.
- Mesmas regras de
parseCbo: nada é completado com zeros à esquerda aqui.
import { parseNbs } from '@brazilian-utils/brazilian-utils';
parseNbs('1.0101.11.00'); // '101011100'Teste com JavaScript parseNbs
Casos de teste compartilhados (9) e o resultado em cada biblioteca nbs.parse
Consultar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Consulta um código NBS na tabela NBS 2.0 e retorna o código e a descrição oficial.
- Uma sequência de separadores entre os grupos é aceita, como em
nbs.isValid("1..0101.11.00"). - Mesmas regras de entrada de
nbs.isValid. Retornanullexatamente quando essa função retornafalse. - O código retornado tem os 9 dígitos sem máscara.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | Nbs | null |
Consulta um código NBS (Nomenclatura Brasileira de Serviços) e retorna a sua descrição oficial. O resultado é um registro Nbs: { code, description }.
- Mesmas regras de
isValidNbs.codesão os 9 dígitos, sem a máscara. Retornanullquando o código é desconhecido ou o valor não está em uma forma documentada.
import { getNbs } from '@brazilian-utils/brazilian-utils';
getNbs('1.0101.11.00');
// { code: '101011100', description: 'Serviços de construção de edificações residenciais de um e dois pavimentos' }
getNbs(126050000); // { code: '126050000', description: 'Serviços domésticos' }
getNbs('1.0101'); // null (título de posição, não um código completo)
getNbs('1.9999.99.99'); // nullFonte: tabela da NBS 2.0 publicada pelo MDIC, aprovada pela Portaria Conjunta RFB/SCS 1.429/2018 e alterada pela Portaria Conjunta RFB/SCS 2.000/2018.
Código: brazilian-utils/javascriptTeste com JavaScript getNbs
Casos de teste compartilhados (28) e o resultado em cada biblioteca nbs.get
Fontes oficiais
Veja também Lista de serviços (LC 116), Chave de acesso NFS-e
Atualizado em
