brazilian_documents 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/README.md +263 -15
- data/br_documents.gemspec +5 -5
- data/lib/br_documents.rb +3 -0
- data/lib/br_documents/documents/cnpj.rb +7 -10
- data/lib/br_documents/documents/cpf.rb +7 -10
- data/lib/br_documents/documents/ie.rb +43 -0
- data/lib/br_documents/documents/ie/ac.rb +15 -0
- data/lib/br_documents/documents/ie/al.rb +50 -0
- data/lib/br_documents/documents/ie/am.rb +12 -0
- data/lib/br_documents/documents/ie/ap.rb +61 -0
- data/lib/br_documents/documents/ie/ba.rb +84 -0
- data/lib/br_documents/documents/ie/ba/base.rb +37 -0
- data/lib/br_documents/documents/ie/ba/digits8/modulo_10.rb +12 -0
- data/lib/br_documents/documents/ie/ba/digits8/modulo_11.rb +12 -0
- data/lib/br_documents/documents/ie/ba/digits9/modulo_10.rb +19 -0
- data/lib/br_documents/documents/ie/ba/digits9/modulo_11.rb +20 -0
- data/lib/br_documents/documents/ie/ba/modulo_10.rb +19 -0
- data/lib/br_documents/documents/ie/ba/modulo_11.rb +18 -0
- data/lib/br_documents/documents/ie/base.rb +79 -0
- data/lib/br_documents/documents/ie/ce.rb +14 -0
- data/lib/br_documents/documents/ie/df.rb +16 -0
- data/lib/br_documents/documents/ie/es.rb +12 -0
- data/lib/br_documents/documents/ie/go.rb +14 -0
- data/lib/br_documents/documents/ie/ma.rb +14 -0
- data/lib/br_documents/documents/ie/mg.rb +66 -0
- data/lib/br_documents/documents/ie/ms.rb +14 -0
- data/lib/br_documents/documents/ie/mt.rb +14 -0
- data/lib/br_documents/documents/ie/pa.rb +14 -0
- data/lib/br_documents/documents/ie/pb.rb +14 -0
- data/lib/br_documents/documents/ie/pe.rb +38 -0
- data/lib/br_documents/documents/ie/pe/current.rb +13 -0
- data/lib/br_documents/documents/ie/pe/legacy.rb +12 -0
- data/lib/br_documents/documents/ie/pi.rb +14 -0
- data/lib/br_documents/documents/ie/pr.rb +13 -0
- data/lib/br_documents/documents/ie/rj.rb +25 -0
- data/lib/br_documents/documents/ie/rn.rb +14 -0
- data/lib/br_documents/documents/ie/ro.rb +44 -0
- data/lib/br_documents/documents/ie/ro/current.rb +24 -0
- data/lib/br_documents/documents/ie/ro/legacy.rb +13 -0
- data/lib/br_documents/documents/ie/rr.rb +19 -0
- data/lib/br_documents/documents/ie/rs.rb +12 -0
- data/lib/br_documents/documents/ie/sc.rb +12 -0
- data/lib/br_documents/documents/ie/se.rb +14 -0
- data/lib/br_documents/documents/ie/sp.rb +38 -0
- data/lib/br_documents/documents/ie/sp/industry.rb +22 -0
- data/lib/br_documents/documents/ie/sp/rural.rb +21 -0
- data/lib/br_documents/documents/ie/to.rb +14 -0
- data/lib/br_documents/version.rb +1 -1
- metadata +47 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65008c59e22e63794e434829f0d3cc5e9cf08177
|
4
|
+
data.tar.gz: 9debdbb0e043529ce7fa751984bccf6261ddb276
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc761c5adf13c794e00298234f0a4c67bb7f4310db294db5f837648f57c5417b4c13baee6ea029e89bb21142da92c3a1589125374c1ead2d4cf352162d768916
|
7
|
+
data.tar.gz: c8b0e5ee77de46928062cda93452104c2965a72506e45ddf4ff65b47ef719e1dd44af3b6e41149cb89e4bef93afbf53088001ae462d91a620e4477cf323c577f
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -5,13 +5,12 @@ Atualmente existem **validadores e geradores** para os seguintes documentos:
|
|
5
5
|
|
6
6
|
* CPF
|
7
7
|
* CNPJ
|
8
|
+
* Inscrição Estadual (dos 27 estados federativos do Brasil)
|
8
9
|
* RG (Carteira de Identidade) [TODO]
|
9
10
|
* Título de Eleitor [TODO]
|
10
11
|
|
11
12
|
Essa gem é construída em cima da gem [**digit_checksum**](https://github.com/fidelisrafael/digit_checksum), que torna todo o processo muito mais simples e padronizado!
|
12
13
|
|
13
|
-
Se você deseja validar `Inscrição Estadual` e integração dos validadores com models do ActiveRecord, veja a gem [`asseinfo/br_documents`](https://github.com/asseinfo/br_documents)
|
14
|
-
|
15
14
|
---
|
16
15
|
|
17
16
|
## Instalação
|
@@ -19,7 +18,7 @@ Se você deseja validar `Inscrição Estadual` e integração dos validadores co
|
|
19
18
|
Adicione no seu Gemfile:
|
20
19
|
|
21
20
|
```ruby
|
22
|
-
gem 'brazilian_documents'
|
21
|
+
gem 'brazilian_documents', '~> 0.1.2'
|
23
22
|
```
|
24
23
|
|
25
24
|
E execute:
|
@@ -32,7 +31,7 @@ Ou então instale separadamente (e globalmente) com:
|
|
32
31
|
|
33
32
|
---
|
34
33
|
|
35
|
-
## Como usar
|
34
|
+
## Como usar
|
36
35
|
|
37
36
|
Entenda que a proposta dessa gem não é gerar número de documentos, somente validar! A ideia é ser pequena e portátil.
|
38
37
|
|
@@ -90,6 +89,7 @@ BRDocuments::CPF.calculate_verify_digits(number)
|
|
90
89
|
### Exemplos:
|
91
90
|
|
92
91
|
# Número válido
|
92
|
+
BRDocuments::CPF.calculate_verify_digits("481.455.512-18")
|
93
93
|
BRDocuments::CPF.calculate_verify_digits("481.455.512") # [1, 8]
|
94
94
|
|
95
95
|
# Número inválido
|
@@ -101,39 +101,288 @@ BRDocuments::CPF.calculate_verify_digits("481.455.51") # []
|
|
101
101
|
```ruby
|
102
102
|
require 'br_documents'
|
103
103
|
|
104
|
-
BRDocuments::CPF.
|
104
|
+
BRDocuments::CPF.pretty(number) # (XXX.XXX.XXX-XX)
|
105
105
|
|
106
106
|
# Retorna CPF normalizado como Array ([X,X,X,X,X,X,X,X,X,X,X,X])
|
107
|
-
BRDocuments::CPF.
|
107
|
+
BRDocuments::CPF.normalize(number)
|
108
108
|
|
109
109
|
# Retorna CPF normalizado como String (XXXXXXXXXXXX)
|
110
|
-
BRDocuments::CPF.
|
110
|
+
BRDocuments::CPF.strip(number)
|
111
111
|
|
112
112
|
### Exemplos:
|
113
113
|
|
114
114
|
# Retorna CPF formatado
|
115
|
-
BRDocuments::CPF.
|
115
|
+
BRDocuments::CPF.pretty("48145551218") # 481.455.512-18
|
116
116
|
|
117
117
|
# Normaliza número e retorna como Array: [4, 8, 1, 4, 5, 5, 5, 1, 2, 1, 8]
|
118
|
-
BRDocuments::CPF.
|
118
|
+
BRDocuments::CPF.normalize("481.455.512-18")
|
119
|
+
|
120
|
+
BRDocuments::CPF.strip("481.455.512-18") # "48145551218"
|
121
|
+
```
|
122
|
+
|
123
|
+
---
|
124
|
+
|
125
|
+
## Inscrições Estaduais
|
126
|
+
|
127
|
+
É possível validar e gerar números de inscrições estaduais utilizando essa biblioteca, sendo que **SEMPRE** será respeitado todos os critérios para a definição de uma Inscrição Estadual, como por exemplo os dígitos fixos adicionados ao inicio de cada número de documento, que varia conforme o estado. (alguns estados não possuem dígitos fixos).
|
128
|
+
|
129
|
+
Além disso, alguns estados possuem **mais de 1 padrão de inscrição estadual válido** (PQ BRASIL???), que podem ser definidos como **atual** e **legado**, esses estados são:
|
130
|
+
|
131
|
+
<br />
|
132
|
+
|
133
|
+
* **BA** - Possui **4 formatos** de números válidos
|
134
|
+
* 8 dígitos calculados com modulo 10
|
135
|
+
* 8 dígitos calculados com modulo 11
|
136
|
+
* 9 dígitos calculados com modulo 10
|
137
|
+
* 9 dígitos calculados com modulo 11
|
138
|
+
|
139
|
+
* **PE** - Possui **2 formatos** de números válidos
|
140
|
+
* Legado (14 dígitos)
|
141
|
+
* Atual (9 dígitos)
|
142
|
+
|
143
|
+
* **R** - Possui **2 formatos** de números válidos
|
144
|
+
* Legado (9 dígitos)
|
145
|
+
* Atual (14 dígitos)
|
146
|
+
|
147
|
+
* **SP** - Possui **2 formatos** de números válidos
|
148
|
+
* Industrial (12 dígitos), com dígitos verificadores no "meio" do número
|
149
|
+
* Rural (12 dígitos), com dígitos verificadores no "meio" do número
|
119
150
|
|
120
|
-
|
151
|
+
---
|
152
|
+
|
153
|
+
### API Inscrições Estaduais
|
154
|
+
|
155
|
+
### Gerar números
|
156
|
+
|
157
|
+
```ruby
|
158
|
+
# BRDocuments::IE::{ESTADO}.generate
|
159
|
+
# {ESTADO} deve ser a sigla de cada unidade federativa do Brasil
|
160
|
+
# Para consultar todas as unidades federativas:
|
161
|
+
|
162
|
+
BRDocuments::IE.available_states
|
163
|
+
=> [
|
164
|
+
"AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO",
|
165
|
+
"MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR",
|
166
|
+
"RJ", "RN", "RO", "RR", "RS", "SE", "SP", "TO"
|
167
|
+
]
|
168
|
+
|
169
|
+
## Ex
|
121
170
|
|
171
|
+
BRDocuments::IE::MG.generate # "484322874.82-21"
|
172
|
+
|
173
|
+
BRDocuments::IE::DF.generate # "07.372.652.746-25"
|
122
174
|
```
|
175
|
+
|
176
|
+
Os estados com **mais de 1 tipo de padrão válido** possuem opções para gerar cada um dos formatos, veja:
|
177
|
+
|
178
|
+
|
179
|
+
#### Bahia (BA)
|
180
|
+
|
181
|
+
```ruby
|
182
|
+
# BA atual - 9 dígitos - modulo 10
|
183
|
+
# SEGUNDO dígito da I.E: 0,1,2,3,4,5,8
|
184
|
+
BRDocuments::IE::BA.generate
|
185
|
+
# => "031.112.264"
|
186
|
+
|
187
|
+
# BA Atual - 9 dígitos - modulo 11
|
188
|
+
# SEGUNDO dígito da I.E: 6, 7 ou 9
|
189
|
+
BRDocuments::IE::BA.generate(true, 9, 11)
|
190
|
+
=> "273.854.609"
|
191
|
+
|
192
|
+
# BA legado - 8 dígitos - modulo 10
|
193
|
+
# PRIMEIRO dígito da I.E: 0,1,2,3,4,5,8
|
194
|
+
BRDocuments::IE::BA.generate(true, 8, 10)
|
195
|
+
=> "476.354.65"
|
196
|
+
|
197
|
+
# BA legado - 8 dígitos - modulo 11
|
198
|
+
# PRIMEIRO dígito da I.E: 6, 7 ou 9
|
199
|
+
BRDocuments::IE::BA.generate(true, 8, 11)
|
200
|
+
=> "612.733.29"
|
201
|
+
```
|
202
|
+
|
203
|
+
#### Pernambuco (PE)
|
204
|
+
|
205
|
+
```ruby
|
206
|
+
# Padrão atual: 6 dígitos + 2 dígitos verificadores
|
207
|
+
BRDocuments::IE::PE.generate
|
208
|
+
=> "6920752-67"
|
209
|
+
|
210
|
+
# Padrão antigo: 13 dígitos + 1 dígito verificador
|
211
|
+
BRDocuments::IE::PE.generate(true, true)
|
212
|
+
=> "01.3.667.8339833-8"
|
213
|
+
|
214
|
+
# Checar se número é do padrão legado
|
215
|
+
BRDocuments::IE::PE.legacy?("01.3.667.8339833-8") # true
|
216
|
+
BRDocuments::IE::PE.legacy?("6920752-67") # false
|
217
|
+
```
|
218
|
+
|
219
|
+
#### Roraima (RO)
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
# Padrão atual: 13 dígitos + 1 dígito verificador
|
223
|
+
BRDocuments::IE::RO.generate
|
224
|
+
=> "0000000081197-1"
|
225
|
+
|
226
|
+
# Padrão legado: 3 dígitos(município) + 5 dígitos(inscrição) + 1 dígito verificador
|
227
|
+
BRDocuments::IE::RO.generate(true, true)
|
228
|
+
=> "557.88373-5"
|
229
|
+
|
230
|
+
# Para converter um número do padrão legado para o padrão atual:
|
231
|
+
BRDocuments::IE::RO.convert_legacy("557.88373-5")
|
232
|
+
=> "0000000088373-5"
|
233
|
+
|
234
|
+
# Checar se número é do padrão legado
|
235
|
+
BRDocuments::IE::RO.legacy?("557.88373-5") # true
|
236
|
+
BRDocuments::IE::RO.legacy?("0000000081197-1") # false
|
237
|
+
```
|
238
|
+
|
239
|
+
#### São Paulo (SP)
|
240
|
+
|
241
|
+
O estado de São Paulo não possui padrões **legados**, somente o padrão **Industriais** e de **Produtor Rural**, veja:
|
242
|
+
|
243
|
+
```ruby
|
244
|
+
# Padrão atual com 10 dígitos + 2 dígitos verificadores
|
245
|
+
# OBS: Os dígitos verificadores ficam nas posições 8 e 10
|
246
|
+
# E não convenialmente no final do documento
|
247
|
+
BRDocuments::IE::SP.generate
|
248
|
+
=> "593.024.470.190"
|
249
|
+
|
250
|
+
# Padrão de Produtor Rural
|
251
|
+
# P + 11 dígitos + 1 dígito verificador
|
252
|
+
# OBS: O digíto verificador fica na oitava posição do número
|
253
|
+
BRDocuments::IE::SP.generate(true, true)
|
254
|
+
=> "P-54855620.8/324"
|
255
|
+
|
256
|
+
|
257
|
+
# Checar se número é do padrão legado
|
258
|
+
BRDocuments::IE::SP.rural?("P-54855620.8/324") # true
|
259
|
+
BRDocuments::IE::SP.rural?("593.024.470.190") # false
|
260
|
+
```
|
261
|
+
|
262
|
+
---
|
263
|
+
|
264
|
+
### Validar Inscrições Estaduais
|
265
|
+
|
266
|
+
```ruby
|
267
|
+
BRDocuments::IE::{ESTADO}.generate
|
268
|
+
# {ESTADO} deve ser a sigla de cada unidade federativa do Brasil
|
269
|
+
|
270
|
+
## Ex:
|
271
|
+
BRDocuments::IE::MG.valid?('062013766.01-45') # true
|
272
|
+
BRDocuments::IE::SP.valid?('102.614.327.119') # true
|
273
|
+
BRDocuments::IE::RS.valid?('029/0487447') # true
|
274
|
+
```
|
275
|
+
|
276
|
+
---
|
277
|
+
|
278
|
+
### Calcular dígitos verificadores
|
279
|
+
|
280
|
+
```ruby
|
281
|
+
# número com dígitos verificadores já inclusos
|
282
|
+
BRDocuments::IE::SP.calculate_verify_digits('110.042.490.114') # => [0, 4]
|
283
|
+
|
284
|
+
# Número sem os dígitos verificadores
|
285
|
+
BRDocuments::IE::SP.calculate_verify_digits('110.042.49.11') # => [0, 4]
|
286
|
+
|
287
|
+
# É possível também calcular e adicionar os dígitos verificadores nas posições corretas utilizando:
|
288
|
+
# Na IE de SP os dígitos verificadores ficam nas posições 8 e 11.
|
289
|
+
# Evite inserir os dígitos verificadores manualmente no final do documento, utilize a API.
|
290
|
+
BRDocuments::IE::SP.append_verify_digits!('110.042.49.11') # => "110042490114"
|
291
|
+
|
292
|
+
BRDocuments::IE::PA.calculate_verify_digits("15.069.665") # => [5]
|
293
|
+
```
|
294
|
+
---
|
295
|
+
|
296
|
+
### Formatar Inscrições Estaduais
|
297
|
+
|
298
|
+
Cada estado possui um padrão diferente de formatação das IE, utilizando a API dessa gem você não precisa se preocupar com isso:
|
299
|
+
|
300
|
+
```ruby
|
301
|
+
BRDocuments::IE::SP.pretty('P011004243002') # => 'P-01100424.3/002'
|
302
|
+
|
303
|
+
BRDocuments::IE::PB.pretty('160158230') # => "16.015.823-0"
|
304
|
+
|
305
|
+
BRDocuments::IE::DF.pretty('0730000100109') # => "07.300.001.001-09"
|
306
|
+
|
307
|
+
# Para remover a formatação:
|
308
|
+
BRDocuments::IE::DF.stripped("07.300.001.001-09") # => "0730000100109"
|
309
|
+
```
|
310
|
+
|
311
|
+
---
|
312
|
+
|
313
|
+
### PORO - Plain Old Ruby Objects
|
314
|
+
|
315
|
+
Todos a API demonstrada nessa documentação (geralmente metodos de classe) são **apenas delegações de métodos para a instância de um objeto Ruby**, você pode trabalhar diretamente com os objetos da seguinte maneira:
|
316
|
+
|
317
|
+
```ruby
|
318
|
+
# A API é a mesma para TODOS os objetos, ex:
|
319
|
+
|
320
|
+
# object = BRDocuments::IE::DF.new("07.300.001.001-09")
|
321
|
+
# object = BRDocuments::IE::MG.new("07.300.001.001-09")
|
322
|
+
# object = BRDocuments::CNPJ.new("53.091.177/2847-09")
|
323
|
+
|
324
|
+
object = BRDocuments::CPF.new('481.455.512-18')
|
325
|
+
|
326
|
+
object.valid? # true
|
327
|
+
|
328
|
+
# Tenta obter os digitos verificadores baseado nas posições
|
329
|
+
object.current_verify_digits # [1,8]
|
330
|
+
|
331
|
+
# Remove os digitos verificadores do objeto
|
332
|
+
object.remove_verify_digits! # [1,8]
|
333
|
+
|
334
|
+
# Tenta obter os digitos verificadores baseado nas posições
|
335
|
+
object.current_verify_digits # []
|
336
|
+
|
337
|
+
object.number # object.to_s => 481455512
|
338
|
+
|
339
|
+
# Somente calcula, não adiciona ao objeto
|
340
|
+
object.calculate_verify_digits # [1,8]
|
341
|
+
|
342
|
+
# Utiliza o método `calculate_verify_digits` e adiciona os dígitos nas posições corretas
|
343
|
+
object.append_verify_digits! # "48145551218"
|
344
|
+
|
345
|
+
object.pretty # "481.455.512-18"
|
346
|
+
|
347
|
+
object.normalize
|
348
|
+
# => [4, 8, 1, 4, 5, 5, 5, 1, 2, 1, 8]
|
349
|
+
|
350
|
+
object.strip # 48145551218
|
351
|
+
|
352
|
+
object.size # 11
|
353
|
+
|
354
|
+
object.root_digits_count # 9
|
355
|
+
|
356
|
+
object.verify_digits_count # 2
|
357
|
+
|
358
|
+
# root_digits_count + verify_digits_count
|
359
|
+
object.full_size # 11
|
360
|
+
|
361
|
+
object.verify_digits_positions # [9,10]
|
362
|
+
```
|
363
|
+
|
364
|
+
|
365
|
+
---
|
366
|
+
|
367
|
+
## Ajuda requirida!
|
368
|
+
|
369
|
+
Olá, que bom que você chegou até aqui! Para o desenvolvimento dessa gem eu me guiei pelo [**péssimo guia**](www.sintegra.gov.br/insc_est.html) do Sintegra, que esquece de citar vários pontos importantes na definição dos padrões de cada estado, muito deles só fui saber enquanto eu testava, pois validei várias inscrições estaduais das maiores empresas de cada estado.
|
370
|
+
Por isso, se você tiver conhecimento dos padrões(ex: dígitos iniciais fixos) do seu estado - ou dos demais - por favor, dê uma olhada no código da gem e ajude a tornar a validação e geração mais exata! Obrigado!
|
371
|
+
|
123
372
|
---
|
124
373
|
|
125
374
|
## Desenvolvimento
|
126
375
|
|
127
376
|
Execute `bin/setup` para instalar as dependências to install dependencies. Em seguida execute `rake spec` para executar todos os testes. Você pode também executar `bin/console` para iniciar um shell interativo para seus experimentos
|
128
377
|
|
129
|
-
Para instalar essa gem localmente em sua máquina, execute `bundle exec rake install`.
|
378
|
+
Para instalar essa gem localmente em sua máquina, execute `bundle exec rake install`.
|
130
379
|
|
131
380
|
---
|
132
381
|
|
133
382
|
## Contribua!
|
134
383
|
|
135
|
-
Você pode enviar bugs reports, pull requests e abrir issues no GitHub: https://github.com/fidelisrafael/br_documents.
|
136
|
-
Para entender a arquitetura e padrão de cada arquivo, veja a pasta `lib/br_documents/documents` e leia a documentação da gem [**digit_checksum**](https://github.com/fidelisrafael/digit_checksum).
|
384
|
+
Você pode enviar bugs reports, pull requests e abrir issues no GitHub: https://github.com/fidelisrafael/br_documents.
|
385
|
+
Para entender a arquitetura e padrão de cada arquivo, veja a pasta `lib/br_documents/documents` e leia a documentação da gem [**digit_checksum**](https://github.com/fidelisrafael/digit_checksum).
|
137
386
|
Pense em cada documento como um **adapter** criado em cima da API da Gem `DigitCheckSum`.
|
138
387
|
|
139
388
|
Obrigado!
|
@@ -142,5 +391,4 @@ Obrigado!
|
|
142
391
|
|
143
392
|
## Licença
|
144
393
|
|
145
|
-
Essa biblioteca está disponível como projeto open source sob os termos da [Licença MIT](http://opensource.org/licenses/MIT
|
146
|
-
|
394
|
+
Essa biblioteca está disponível como projeto open source sob os termos da [Licença MIT](http://opensource.org/licenses/MIT.
|
data/br_documents.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.email = ["rafa_fidelis@yahoo.com.br"]
|
12
12
|
|
13
13
|
spec.summary = %q{Coleção de validadores para documentos brasileiros}
|
14
|
-
spec.description = %q{Esta gem implementa vários validadores de documentos oficiais brasileiros, como CPF, CNPJ, RG e Título de Eleitor}
|
14
|
+
spec.description = %q{Esta gem implementa vários validadores de documentos oficiais brasileiros, como CPF, CNPJ, Inscrição estadual, RG e Título de Eleitor}
|
15
15
|
spec.homepage = "https://github.com/fidelisrafael/brazilian_documents"
|
16
16
|
spec.license = "MIT"
|
17
17
|
|
@@ -20,8 +20,8 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
-
spec.add_dependency 'digit_checksum', '~> 0.
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
23
|
+
spec.add_dependency 'digit_checksum', '~> 0.2.3'
|
24
|
+
spec.add_development_dependency 'bundler','~> 1.12'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
27
|
end
|
data/lib/br_documents.rb
CHANGED
@@ -1,23 +1,20 @@
|
|
1
|
-
require "digit_checksum"
|
2
|
-
|
3
1
|
module BRDocuments
|
4
2
|
class CNPJ < ::DigitChecksum::BaseDocument
|
5
|
-
|
6
|
-
|
3
|
+
set_verify_digits_weights first: %w(5 4 3 2 9 8 7 6 5 4 3 2),
|
4
|
+
second: %w(6 5 4 3 2 9 8 7 6 5 4 3 2)
|
7
5
|
|
8
6
|
# MOD 11
|
9
|
-
|
7
|
+
set_division_modulo 11
|
10
8
|
|
11
9
|
# remove any non digit from document number
|
12
|
-
|
10
|
+
set_clear_number_regexp %r{[^(\d+)]}
|
13
11
|
|
14
12
|
# match format such as: 99.999.999/9999-99 | 99-999-999/9999-99 | 99999999/999999 | 99999999999999
|
15
|
-
|
13
|
+
set_format_regexp %r{(\d{2})[-.]?(\d{3})[-.]?(\d{3})[\/]?(\d{4})[-.]?(\d{2})}
|
16
14
|
|
17
|
-
|
18
|
-
pretty_format_mask %(%s.%s.%s/%s-%s)
|
15
|
+
set_pretty_format_mask %(%s.%s.%s/%s-%s)
|
19
16
|
|
20
17
|
# numbers sampled to generate new document numbers
|
21
|
-
|
18
|
+
set_generator_numbers (0..9).to_a
|
22
19
|
end
|
23
20
|
end
|
@@ -1,23 +1,20 @@
|
|
1
|
-
require "digit_checksum"
|
2
|
-
|
3
1
|
module BRDocuments
|
4
2
|
class CPF < ::DigitChecksum::BaseDocument
|
5
|
-
|
6
|
-
|
3
|
+
set_verify_digits_weights first: %w(10 9 8 7 6 5 4 3 2),
|
4
|
+
second: %w(11 10 9 8 7 6 5 4 3 2)
|
7
5
|
|
8
6
|
# MOD 11
|
9
|
-
|
7
|
+
set_division_modulo 11
|
10
8
|
|
11
9
|
# remove any non digit from document number
|
12
|
-
|
10
|
+
set_clear_number_regexp %r{[^(\d+)]}
|
13
11
|
|
14
12
|
# match format such as: 999.999.999-99 | 999-999-999-99 | 99999999999
|
15
|
-
|
13
|
+
set_format_regexp %r{(\d{3})[-.]?(\d{3})[-.]?(\d{3})[-.]?(\d{2})}
|
16
14
|
|
17
|
-
|
18
|
-
pretty_format_mask %(%s.%s.%s-%s)
|
15
|
+
set_pretty_format_mask %(%s.%s.%s-%s)
|
19
16
|
|
20
17
|
# numbers sampled to generate new document numbers
|
21
|
-
|
18
|
+
set_generator_numbers (0..9).to_a
|
22
19
|
end
|
23
20
|
end
|