CFOP
Código Fiscal de Operações e Prestações: os códigos do Anexo II do Convênio SINIEF s/nº 1970.
Validar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca2 casos falham
- Ruby, biblioteca1 caso falha
- Rust, biblioteca2 casos falham
- .NET, biblioteca1 caso falha
- Erlang, biblioteca
Verifica se um código CFOP existe no Anexo II consolidado do Convênio SINIEF s/nº 1970 em vigor.
- Só contam os códigos operáveis: a função rejeita títulos de grupo e de subgrupo (códigos terminados em
00e50). - Aceita os 4 dígitos, a forma
N.NNNou um inteiro seguro não negativo. Uma string com máscara pode ter qualquer sequência de separadores (espaço,.,-ou/) entre os grupos:5..102é válido. Até a 2.4.0 a forma tinha um único separador e5..102era rejeitado. Qualquer outra string é rejeitada. - Espaços nas pontas são ignorados.
- Nenhum CFOP começa com zero, então a função não completa nada com zeros.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | boolean |
Valida um código CFOP (Código Fiscal de Operações e Prestações) contra a tabela oficial, o Anexo II consolidado do Convênio SINIEF s/nº 1970 em vigor.
- Só os códigos operáveis contam: os títulos de grupo e subgrupo, os códigos terminados em
00e50, são rejeitados. - Aceita uma string com os 4 dígitos ou com a forma
N.NNN, com qualquer sequência de separadores (espaço,.,-ou/) entre os grupos, ou um número. Qualquer outra string é rejeitada. - Nenhum código CFOP começa com zero, então nada é completado.
import { isValidCfop } from '@brazilian-utils/brazilian-utils';
isValidCfop('5102'); // true
isValidCfop('1.101'); // true
isValidCfop('7504'); // true (incluído na reescrita de 2022 do anexo)
isValidCfop('0000'); // false
isValidCfop('1150'); // false (título de subgrupo, não é um código operável)
isValidCfop('abc5102'); // false (não é uma forma documentada)
isValidCfop(-5102); // false (não é um inteiro seguro não negativo)Fonte: Anexo II consolidado do Convênio SINIEF s/nº 1970, última alteração pelo Ajuste SINIEF 39/25.
Código: brazilian-utils/javascriptTeste com JavaScript isValidCfop
Casos de teste compartilhados (26) e o resultado em cada biblioteca cfop.isValid
Formatar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Formata um código CFOP com a máscara N.NNN. Só a estrutura muda (use cfop.isValid para verificar o código na tabela).
- A máscara é aplicada até onde os dígitos vão, então um valor sendo digitado é mascarado progressivamente.
options.pad(padrãofalse) primeiro completa o valor com zeros à esquerda até 4 dígitos. Um número é tratado como a string dos seus dígitos, então só é completado compad.- Uma string é lida pelos seus dígitos: os outros caracteres são descartados e dígitos depois do último da máscara são ignorados.
- Um valor vazio, ou sem dígitos, retorna uma string vazia mesmo com
pad.nulleundefinedtambém retornam uma string vazia. - 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.
- Nenhum CFOP começa com zero, então
padsó serve a quem quer largura fixa. - Nova na 2.5.0 (#615), para que todo código com máscara tenha o seu formatador.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
options | FormatCfopOptions | não |
options.pad | boolean | não |
| retorna | string |
Formata um código CFOP (Código Fiscal de Operações e Prestações) na forma N.NNN que o anexo imprime. Só a estrutura muda; use isValidCfop para conferir um código com a tabela.
- Opções (
FormatCfopOptions):pad(padrãofalse) completa antes o valor com zeros à esquerda até os 4 dígitos de um código completo (nenhum CFOP começa com zero, então só serve para largura fixa). Sem ele a máscara é aplicada até onde o valor vai. Um valor vazio, ou sem dígitos, devolve''mesmo compad. - Caracteres fora da máscara são descartados, e um número só é lido como a string dos seus dígitos quando é um inteiro seguro não negativo: um número negativo, fracionário ou inseguro retorna
''. Retorna''quando não há dígito algum.
import { formatCfop } from '@brazilian-utils/brazilian-utils';
formatCfop('5102'); // 5.102
formatCfop('51'); // 5.1 (máscara aplicada até onde o valor vai)
formatCfop('102', { pad: true }); // 0.102 (completado até 4 dígitos antes)
formatCfop('abc5102'); // 5.102 (só os dígitos são lidos)
formatCfop(-5102); // '' (não é um inteiro seguro não negativo)Fonte: Convênio SINIEF s/nº 1970, Anexo II, que imprime os códigos como N.NNN.
Teste com JavaScript formatCfop
Casos de teste compartilhados (19) e o resultado em cada biblioteca cfop.format
Interpretar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca2 casos falham
- Ruby, biblioteca2 casos falham
- Rust, biblioteca
- .NET, biblioteca1 caso falha
- Erlang, biblioteca
Remove a formatação do CFOP e mantém apenas os dígitos, limitados a 4.
- A função não completa o resultado com zeros.
- Retorna string vazia quando não há nenhum dígito (
nulleundefinedincluídos). - 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âmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | string |
Remove a formatação do CFOP (Código Fiscal de Operações e Prestações), mantém apenas os dígitos e limita o resultado a 4 dígitos.
- Nenhum código CFOP começa com zero, então nada é completado aqui.
import { parseCfop } from '@brazilian-utils/brazilian-utils';
parseCfop('5.102'); // '5102'Teste com JavaScript parseCfop
Casos de teste compartilhados (9) e o resultado em cada biblioteca cfop.parse
Consultar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca1 caso falha
- Ruby, biblioteca1 caso falha
- Rust, biblioteca
- .NET, biblioteca1 caso falha
- Erlang, biblioteca
Consulta um código CFOP na tabela oficial e retorna o código e a descrição.
- Mesmas regras de entrada de
cfop.isValid, inclusive uma sequência de separadores entre os grupos (5..102retorna o registro; até a 2.4.0 retornavanull). Retornanullpara um título, um código desconhecido ou um valor fora das formas aceitas. - Retorna
nullexatamente quandocfop.isValidretornafalse.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | Cfop | null |
Consulta um código CFOP (Código Fiscal de Operações e Prestações) e retorna seu código e a descrição oficial. O resultado é um registro Cfop: { code, description }.
- Mesmas regras de
isValidCfop. Retornanullpara um título, um código desconhecido ou um valor fora das formas documentadas.
import { getCfop } from '@brazilian-utils/brazilian-utils';
getCfop('1101'); // { code: '1101', description: 'Compra para industrialização ou produção rural' }
getCfop('7504'); // { code: '7504', description: 'Exportação de mercadoria que foi objeto de formação de lote de exportação' }
getCfop('0000'); // null
getCfop('5350'); // null (título de subgrupo, não é um código operável)
getCfop('abc5102'); // null (não é uma forma documentada)Fonte: Anexo II consolidado do Convênio SINIEF s/nº 1970, última alteração pelo Ajuste SINIEF 39/25.
Código: brazilian-utils/javascriptTeste com JavaScript getCfop
Casos de teste compartilhados (22) e o resultado em cada biblioteca cfop.get
Fontes oficiais
Atualizado em
