Lista de serviços (LC 116)
Os subitens da lista de serviços anexa à Lei Complementar 116/2003, os serviços sobre os quais incide o ISS.
Validar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Verifica se um valor é um subitem vigente da lista de serviços anexa à Lei Complementar 116/2003.
- Aceita a forma que a lei imprime (
"1.01"), o item com zero à esquerda ("01.01"), os dígitos sem ponto ("0101","101", os 4 primeiros dígitos de um cTribNac) ou um inteiro não negativo (101). Espaços nas pontas são ignorados. - O subitem sempre tem 2 dígitos (
"1.1"é inválido). Qualquer sequência de separadores (espaço,.,-ou/) é aceita entre o item e o subitem, então"1-01","1 01"e"1..01"são válidos; qualquer outro caractere ("1_01","1,01") é rejeitado. Um número é lido como dígitos sem ponto, então o número fracionário1.01é inválido: escreva a forma com ponto como string. - Os subitens vetados 3.01, 7.14, 7.15, 13.01 e 17.07 são inválidos. Também são inválidos os títulos de item (
"1"), os códigos nacionais de 6 dígitos e o item 99 da lista nacional, que não faz parte da lei. - O subitem 11.05, incluído pela LC 183/2021, é válido.
- cTribNac e cTribMun ficam fora do escopo.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | boolean |
Verifica se um valor é um subitem em vigor da lista de serviços anexa à Lei Complementar 116/2003, a lista dos serviços sobre os quais incide o ISS.
- A lei numera o subitem como o item, um ponto e dois dígitos, de
1.01a40.01. - Aceita essa forma, o item preenchido com zero (
'01.01') ou os dígitos puros ('0101','101'ou o inteiro101), que são os quatro primeiros dígitos do códigocTribNacda NFS-e nacional, com espaços opcionais nas extremidades. - Qualquer sequência de separadores (espaço,
.,-ou/) é aceita entre o item e o subitem, como nos outros códigos com máscara de agrupamento impressa (isValidCfop,isValidNbs), então'1-01'e'1 01'também são válidos. - Um número só é lido quando é um inteiro seguro não negativo, então o decimal
1.01é rejeitado: escreva a forma com ponto como string. - Os subitens vetados (
3.01,7.14,7.15,13.01e17.07), os títulos de item, os códigos nacionais de 6 dígitos em que um subitem se desdobra e o item 99 da lista nacional, que não faz parte da lei, não são válidos. Códigos municipais de serviço estão fora do escopo.
import { isValidServiceItem } from '@brazilian-utils/brazilian-utils';
isValidServiceItem('1.01'); // true
isValidServiceItem('01.01'); // true
isValidServiceItem('0101'); // true
isValidServiceItem(101); // true
isValidServiceItem('3.01'); // false (vetado)
isValidServiceItem('99.01'); // false (só da lista nacional, não da lei)
isValidServiceItem(1.01); // false (não é um inteiro seguro não negativo)Teste com JavaScript isValidServiceItem
Casos de teste compartilhados (28) e o resultado em cada biblioteca serviceItem.isValid
Consultar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Consulta um subitem da lista de serviços da LC 116/2003 e retorna o código e a descrição.
- Mesmas regras de entrada de
serviceItem.isValid. Retornanullexatamente quando essa função retornafalse. - Os separadores de
serviceItem.isValidsão aceitos entre o item e o subitem ("1-01"dá o código1.01). - O código retornado é a forma que a lei imprime: o item sem zero à esquerda, um ponto e o subitem de 2 dígitos (
"1.01","40.01"). - A descrição é o texto da lista nacional (ANEXO B da NFS-e). O subitem 17.14 é "Advocacia", sem ponto final, como na planilha oficial.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | ServiceItem | null |
Consulta um subitem da lista de serviços anexa à Lei Complementar 116/2003 e retorna a sua descrição oficial. O resultado é um registro ServiceItem: { code, description }.
- Mesmas regras de
isValidServiceItem.codeé a forma em que a lei o imprime ('1.01'). Retornanullquando o subitem é desconhecido ou o valor não está em uma forma documentada.
import { getServiceItem } from '@brazilian-utils/brazilian-utils';
getServiceItem('1.01'); // { code: '1.01', description: 'Análise e desenvolvimento de sistemas.' }
getServiceItem('0101'); // { code: '1.01', description: 'Análise e desenvolvimento de sistemas.' }
getServiceItem('40.01'); // { code: '40.01', description: 'Obras de arte sob encomenda.' }
getServiceItem('3.01'); // null (vetado)Fonte: Lei Complementar 116/2003, cuja lista foi alterada pela última vez pela Lei Complementar 183/2021, e a planilha LISTA.SERV.NAC. do ANEXO B do Sistema Nacional NFS-e, a lista em vigor em formato legível por máquina.
Teste com JavaScript getServiceItem
Casos de teste compartilhados (33) e o resultado em cada biblioteca serviceItem.get
Fontes oficiais
Veja também NBS, Chave de acesso NFS-e
Atualizado em
