Skip to content

Commit

Permalink
Merge branch 'master' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
the-darc committed Jul 15, 2015
2 parents 0c67076 + ca90549 commit 45c687b
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 4 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,10 @@ See: [Conferência de Inscrições Estaduais](http://www.sintegra.gov.br/insc_es

__Not implemented yet__

### PIS/PASEP ###

```javascript
var BrV = require('./br-validations');
var pis = '120.5825.883-7';
var isValid = BrV.pis.validate(pis);
```
3 changes: 2 additions & 1 deletion gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ gulp.task('build', function(done) {
' return {',
' ie: IE,',
' cpf: CPF,',
' cnpj: CNPJ',
' cnpj: CNPJ,',
' pis: PIS',
' };',
'}));'].join('\n');

Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
"validation",
"cpf",
"cnpj",
"inscrição estadual"
"inscrição estadual",
"pis pasep"
],
"author": {
"name": "Daniel Campos",
Expand Down
30 changes: 29 additions & 1 deletion releases/br-validations.js
Original file line number Diff line number Diff line change
Expand Up @@ -635,9 +635,37 @@ IErules.AP = [{
validate: function(value) { return validateIE(value, this); }
}];


var PIS = {};

PIS.validate = function(pis) {
pis = pis.replace(/[^\d]+/g,'');
var r = /^(0{11}|1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11})$/;

if (!pis || pis.length !== 11 || r.test(pis)) {
return false;
}

var pisi = pis.substring(0,10);
var pisd = pis.substring(10);

function calculateDigit(pis){
var p = [3,2,9,8,7,6,5,4,3,2];
var s = 0;
for(var i = 0; i <= 9; i++){
s += parseInt(pis.charAt(i)) * p[i];
}
var r = 11 - (s%11);
return (r == 10 || r == 11) ? 0 : r;
}

return pisd == calculateDigit(pisi);
};

return {
ie: IE,
cpf: CPF,
cnpj: CNPJ
cnpj: CNPJ,
pis: PIS
};
}));
2 changes: 1 addition & 1 deletion releases/br-validations.min.js

Large diffs are not rendered by default.

26 changes: 26 additions & 0 deletions src/pis.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

var PIS = {};

PIS.validate = function(pis) {
pis = pis.replace(/[^\d]+/g,'');
var r = /^(0{11}|1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11})$/;

if (!pis || pis.length !== 11 || r.test(pis)) {
return false;
}

var pisi = pis.substring(0,10);
var pisd = pis.substring(10);

function calculateDigit(pis){
var p = [3,2,9,8,7,6,5,4,3,2];
var s = 0;
for(var i = 0; i <= 9; i++){
s += parseInt(pis.charAt(i)) * p[i];
}
var r = 11 - (s%11);
return (r == 10 || r == 11) ? 0 : r;
}

return pisd == calculateDigit(pisi);
};
27 changes: 27 additions & 0 deletions test/pis.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
var should = require('should'),
BrV = require('../releases/br-validations.min');

describe('br-validations', function(){
describe('PIS ', function() {
it('should validate 120.5825.883-7', function(done) {
should(BrV.pis.validate('120.5825.883-7')).be.true;
done();
});
it('should validate 120.4664.181-9', function(done) {
should(BrV.pis.validate('120.4664.181-9')).be.true;
done();
});
it('should validate 120.6505.135-5', function(done) {
should(BrV.pis.validate('120.6505.135-5')).be.true;
done();
});
it('should not validate 124.3302.435-1', function(done) {
should(BrV.pis.validate('124.3302.435-1')).be.false;
done();
});
it('should not validate 120.6505.135-4', function(done) {
should(BrV.pis.validate('120.6505.135-4')).be.false;
done();
});
});
});

0 comments on commit 45c687b

Please sign in to comment.