Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vmarchesin/br-validate-dfe-access-key
Um validador de chave de acesso de DFes
https://github.com/vmarchesin/br-validate-dfe-access-key
chave-de-acesso cte dfe nfe sefaz validation
Last synced: about 5 hours ago
JSON representation
Um validador de chave de acesso de DFes
- Host: GitHub
- URL: https://github.com/vmarchesin/br-validate-dfe-access-key
- Owner: vmarchesin
- License: mit
- Created: 2019-01-07T20:31:59.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T02:44:41.000Z (almost 2 years ago)
- Last Synced: 2024-10-07T09:06:42.952Z (30 days ago)
- Topics: chave-de-acesso, cte, dfe, nfe, sefaz, validation
- Language: JavaScript
- Size: 1.84 MB
- Stars: 8
- Watchers: 1
- Forks: 5
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Validador de Chaves de Acesso de DFes (Documentos Fiscais Eletrônicos)
[![npm](https://img.shields.io/npm/v/br-validate-dfe-access-key.svg)]()
[![npm](https://img.shields.io/npm/dt/br-validate-dfe-access-key.svg)]()
![Travis](https://img.shields.io/travis/com/vmarchesin/br-validate-dfe-access-key.svg)
![Maintenance](https://img.shields.io/maintenance/yes/2019.svg)![Logo NFe](./assets/nfe-logo.png)
Uma **Chave de Acesso** é um identificador único que referencia um DFe (Documento Fiscal Eletrônico), controlado pela SEFAZ (Secretaria da Fazenda, órgão do governo que gerencia os DFes). Esta biblioteca valida apenas o formato da chave de acesso. Não é possível recuperar a informação ou confirmar a existência da chave de acesso através desta biblioteca.
Esta biblioteca possui zero dependências.
```js
import validateAccessKey from 'br-validate-dfe-access-key';validateAccessKey('35120859597245000190550000000095831710040056'); //true
validateAccessKey('35-12/08-59.597.245/0001-90-55-000-000.009.583-171.004.005-6'); //true
validateAccessKey('42100484684182000157550010000000020108042108'); //false
```## INSTALAÇÃO
[![NPM](https://nodei.co/npm/br-validate-dfe-access-key.png)](https://www.npmjs.com/package/br-validate-dfe-access-key)
```bash
npm i -S br-validate-dfe-access-key
```## VALIDAÇÕES INDIVIDUAIS
Para que a validação da chave de acesso seja feita, é necessário fazer várias validações menores em cada campo. A chave só será válida se todos os campos forem válidos. Também é possível fazer validações diretamente nos campos de forma individual:
```js
import validateAccessKey, { validate } from 'br-validate-access-key';validateAccessKey('42100484684182000157550010000000020108042108'); //false
validate.uf('42'); //true
validate.aamm('1004'); //true
validate.cnpj('84684182000157'); //true
validate.model('55'); //true
validate.series('001'); //true
validate.number('000000002'); //true
validate.type('0'); //false
validate.code('010804210'); //true
```## CONFIGURAÇÃO
É possível passar opções como o segundo argumento do método de validação.
* `ignoreType`: Ignora o campo **tpEmis** e considera o campo **cNF** com 9 dígitos.
```js
validateAccessKey('42100484684182000157550010000000020108042108', {
ignoreType: true,
}); //true```
* `describe`: Retorna um objeto com as validações individuais ao invés de um booleano.
> Todo campo possui as propriedades `isValid` e `value`.
>
> Para validar a chave de acesso a partir da descrição use:
>
> ```js
> validateAccessKey(accessKey, { describe: true })
> .every(field => field.isValid)
> ``````js
validateAccessKey('42100484684182000157550010000000020108042108', {
describe: true,
}); /* {
uf: {
isValid: true,
translation: 'Santa Catarina',
value: '42'
},
aamm: {
isValid: true,
value: '1004'
},
...
} */```
## CONSTRUÇÃO DE UMA CHAVE DE ACESSO
As chaves de acesso são únicas para cada documento, mas todas seguem um padrão. O valor semântico dos campos é diferente para cada tipo de documento, mas a sua distribuição ao longo dos 44 caracteres é sempre a mesma.
Os campos que compõem uma chave de acesso são, em ordem da esquerda para a direita:
* **cUF**: 02 dígitos
* **AAMM**: 04 dígitos
* **CNPJ**: 14 dígitos
* **mod**: 02 dígitos
* **serie**: 03 dígitos
* **nNf**: 09 dígitos
* **tpEmis**: 01 dígitos\*
* **cNF**: 08 dígitos\*
* **cDV**: 01 dígito\* O campo **tpEmis** passou a compor a chave de acesso a partir da versão 1.1 da NFe. Para as versões anteriores à 1.1 o campo **cNF** possui 9 dígitos.
## VALIDAÇÕES DE OUTROS TIPOS DE DFe
Esta biblioteca valida apenas chaves de acesso de NFes. Apesar do layout de todos os DFes ser o mesmo, o valor semântico de cada campo é importante para a validação da chave. Por exemplo: em uma NFe o campo **tpEmis** assume valores entre 1 e 5, porém em um CTe os valores 7 e 8 são válidos, e possuem significados diferentes.
Visto que existem vários tipos de DFe, com vários valores semânticos diferentes, a implementação da validação completa de todos os DFes se dará pela demanda de tal validação. Caso queira a validação de um DFe específico, faça uma contribuição ou abra uma Issue.
## CONTRIBUIÇÕES
Contribuições serão aceitas desde que acompanhadas da respectiva [Nota Técnica](http://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=tW+YMyk/50s=) que define a regra de validação. Contribuições serão aceitas para todos os tipos de DFe.
Contribuições que não possuam uma alta cobertura de testes não serão aceitas.
## LICENÇA
Esta biblioteca está publicada sob a licença MIT, o que significa que você é livre para modificar e/ou reusar o código gratuitamente ou para fins comerciais. Se você fizer alterações a partir do código original por favor faça referência ao autor.