Skip to content

Commit 2c256ef

Browse files
authored
Merge pull request #93 from thicolares/valida-inscricao-estadual
Valida Inscrição Estadual para cada Unidade Federativa
2 parents 57a16aa + b8b2941 commit 2c256ef

File tree

6 files changed

+165
-2
lines changed

6 files changed

+165
-2
lines changed

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ _Validação de documentos do Brasil usando **Laravel 6/7/8**_
1313

1414
> Para a versão compatível com Laravel 5 consulte o branch https://github.com/geekcom/validator-docs/tree/5.x.x
1515
16-
Biblioteca Laravel para validação de CPF, CNPJ, CPF/CNPJ (quando salvos no mesmo atributo), CNH, PIS/PASEP/NIT/NIS, Título de Eleitor, Cartão Nacional de Saúde(CNS) e Certidões(nascimento/casamento/óbito).
16+
Biblioteca Laravel para validação de CPF, CNPJ, CPF/CNPJ (quando salvos no mesmo atributo), CNH, PIS/PASEP/NIT/NIS, Inscrição Estadual, Título de Eleitor, Cartão Nacional de Saúde(CNS) e Certidões(nascimento/casamento/óbito).
1717

1818
## Instalação
1919

@@ -83,6 +83,14 @@ $this->validate($request, [
8383
]);
8484
```
8585

86+
* **inscricao_estadual** - Verifica se uma Inscrição Estadual é valida para uma unidade federarativa (UF).
87+
88+
```php
89+
$this->validate($request, [
90+
'inscricao_estadual' => 'required|inscricao_estadual:BA',
91+
]);
92+
```
93+
8694
* **nis** - Verifica se um PIS/PASEP/NIT/NIS é válido.
8795

8896
```php
@@ -211,6 +219,7 @@ public function store(Request $request)
211219
* **NIS** - https://www.4devs.com.br/gerador_de_pis_pasep
212220
* **CNS** - https://geradornv.com.br/gerador-cns/
213221
* **CERTIDÃO** - https://www.treinaweb.com.br/ferramentas-para-desenvolvedores/gerador/certidao
222+
* **INSCRIÇÃO ESTADUAL** - https://www.4devs.com.br/gerador_de_inscricao_estadual
214223
* **RENAVAM** - https://www.4devs.com.br/gerador_de_renavam
215224
* **PLACA** - https://www.4devs.com.br/gerador_de_placa_automoveis
216225

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
}
1010
],
1111
"require": {
12-
"php": "^7.2"
12+
"php": "^7.2",
13+
"thiagocfn/inscricaoestadual": "^1.1"
1314
},
1415
"require-dev": {
1516
"phpunit/phpunit": "^8.4",
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace geekcom\ValidatorDocs\Rules;
5+
6+
use Thiagocfn\InscricaoEstadual\Util\Validador;
7+
8+
final class InscricaoEstadual extends Sanitization
9+
{
10+
public function validateInscricaoEstadual($attribute, $value, $parameters)
11+
{
12+
if(empty($parameters[0]) || !is_string($parameters[0])) {
13+
return false;
14+
}
15+
$siglaUf = $this->sanitizeSiglaUf($parameters[0]);
16+
$inscricaoEstadual = $this->sanitize($value);
17+
return Validador::check($siglaUf, $inscricaoEstadual);
18+
}
19+
20+
/**
21+
* @param mixed $siglaUf
22+
* @return false|string|string[]
23+
*/
24+
private function sanitizeSiglaUf($siglaUf)
25+
{
26+
return mb_strtoupper($siglaUf);
27+
}
28+
}

src/validator-docs/Validator.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use geekcom\ValidatorDocs\Rules\Cnpj;
1515
use geekcom\ValidatorDocs\Rules\Cnh;
1616
use geekcom\ValidatorDocs\Rules\Certidao;
17+
use geekcom\ValidatorDocs\Rules\InscricaoEstadual;
1718

1819
use function preg_match;
1920

@@ -106,6 +107,13 @@ protected function validateCertidao($attribute, $value): bool
106107
return $certidao->validateCertidao($attribute, $value);
107108
}
108109

110+
protected function validateInscricaoEstadual($attribute, $value, $parameters): bool
111+
{
112+
$inscricaoEstadual = new InscricaoEstadual();
113+
114+
return $inscricaoEstadual->validateInscricaoEstadual($attribute, $value, $parameters);
115+
}
116+
109117
protected function validateRenavam($attribute, $value): bool
110118
{
111119
$renavam = new Renavam();

src/validator-docs/ValidatorProvider.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ protected function getMessages()
4040
'cpf_cnpj' => 'CPF ou CNPJ inválido',
4141
'nis' => 'PIS/PASEP/NIT/NIS inválido',
4242
'cns' => 'Cartão Nacional de Saúde inválido',
43+
'inscricao_estadual' => 'Inscrição Estadual ou UF inválidas',
4344
'certidao' => 'Número da Certidão inválido',
4445
'formato_cnpj' => 'Formato inválido para CNPJ',
4546
'formato_cpf' => 'Formato inválido para CPF',

tests/TestValidator.php

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,125 @@ public function formatoDacertidao()
266266
$this->assertTrue($correct->passes());
267267
}
268268

269+
public function inscricoesEstaduais()
270+
{
271+
$inscricoesEstaduaisValidas = [
272+
"AC" => "0184765932153",
273+
"AL" => "248308335",
274+
"AP" => "039895661",
275+
"AM" => "292278012",
276+
"BA" => "96338555",
277+
"CE" => "980874165",
278+
"DF" => "0740769300107",
279+
"ES" => "342048090",
280+
"GO" => "107900459",
281+
"MA" => "122917510",
282+
"MT" => "55160385510",
283+
"MS" => "283814659",
284+
"MG" => "0526366324132",
285+
"PA" => "158330005",
286+
"PB" => "439622301",
287+
"PR" => "5714953410",
288+
"PE" => "920145698",
289+
"PI" => "758505183",
290+
"RJ" => "61804315",
291+
"RN" => "208627715",
292+
"RS" => "3821957672",
293+
"RO" => "52059985926850",
294+
"RR" => "249977060",
295+
"SC" => "696192667",
296+
"SP" => "653172024009",
297+
"SE" => "646597361",
298+
"TO" => "75036274184",
299+
];
300+
301+
foreach ($inscricoesEstaduaisValidas as $siglaUf => $inscricaoEstadual) {
302+
$inscricoesEstaduaisValidas[$siglaUf] = [
303+
'data' => $inscricaoEstadual,
304+
'rules' => "inscricao_estadual:$siglaUf",
305+
'assert' => 'passes'
306+
];
307+
}
308+
309+
return $inscricoesEstaduaisValidas + [
310+
// válidas
311+
'válida sem formatação' => [
312+
'data' => '82679341',
313+
'rules' => 'inscricao_estadual:BA',
314+
'assert' => 'passes'
315+
],
316+
'válida com estado (UF) em letras minúsculas' => [
317+
'data' => '82679341',
318+
'rules' => 'inscricao_estadual:ba',
319+
'assert' => 'passes'
320+
],
321+
'válida com formatação' => [
322+
'data' => '826793-41',
323+
'rules' => 'inscricao_estadual:BA',
324+
'assert' => 'passes'
325+
],
326+
'válida com formatação qualquer não-numérica' => [
327+
'data' => '8 2__6-7*9.3/41',
328+
'rules' => 'inscricao_estadual:BA',
329+
'assert' => 'passes'
330+
],
331+
332+
// inválidas
333+
'inválida cálculo errado' => [
334+
'data' => '82679342', // último digito deveria ser 1
335+
'rules' => 'inscricao_estadual:BA',
336+
'assert' => 'fails'
337+
],
338+
'inválida se estado (UF) errado' => [
339+
'data' => '82679341',
340+
'rules' => 'inscricao_estadual:SP', // deveria ser BA
341+
'assert' => 'fails'
342+
],
343+
'inválida se estado (UF) inexistente' => [
344+
'data' => '82679341',
345+
'rules' => 'inscricao_estadual:ZA',
346+
'assert' => 'fails'
347+
],
348+
'inválida se estado (UF) invalido (maior)' => [
349+
'data' => '82679341',
350+
'rules' => 'inscricao_estadual:askdjahsd',
351+
'assert' => 'fails'
352+
],
353+
'inválida se estado (UF) invalido (menor)' => [
354+
'data' => '82679341',
355+
'rules' => 'inscricao_estadual:y',
356+
'assert' => 'fails'
357+
],
358+
'inválida se estado (UF) invalido (numerico)' => [
359+
'data' => '82679341',
360+
'rules' => 'inscricao_estadual:12',
361+
'assert' => 'fails'
362+
],
363+
'inválida se estado (UF) não informado' => [
364+
'data' => '82679341',
365+
'rules' => 'inscricao_estadual',
366+
'assert' => 'fails'
367+
],
368+
];
369+
}
370+
269371
/**
270372
* @test
373+
* @dataProvider inscricoesEstaduais
374+
* @param $data
375+
* @param $rules
376+
* @param $assert
271377
*/
378+
public function inscricaoEstadual($data, $rules, $assert)
379+
{
380+
$correct = Validator::make(
381+
['input_inscricao_estadual' => $data],
382+
['input_inscricao_estadual' => $rules]
383+
);
384+
$this->assertTrue($correct->{$assert}());
385+
}
386+
387+
/** @test**/
272388
public function formatoRenavam()
273389
{
274390
$correct = Validator::make(

0 commit comments

Comments
 (0)