virt2/api/jquery/check.js

255 lines
7.1 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function validateBik(bik, error) {
var result = false;
if (typeof bik === 'number') {
bik = bik.toString();
} else if (typeof bik !== 'string') {
bik = '';
}
if (!bik.length) {
error.code = 1;
error.message = 'БИК пуст';
} else if (/[^0-9]/.test(bik)) {
error.code = 2;
error.message = 'БИК может состоять только из цифр';
} else if (bik.length !== 9) {
error.code = 3;
error.message = 'БИК может состоять только из 9 цифр';
} else {
result = true;
}
return result;
}
function validateInn(inn, error) {
var result = false;
if (typeof inn === 'number') {
inn = inn.toString();
} else if (typeof inn !== 'string') {
inn = '';
}
if (!inn.length) {
error.code = 1;
error.message = 'ИНН пуст';
} else if (/[^0-9]/.test(inn)) {
error.code = 2;
error.message = 'ИНН может состоять только из цифр';
} else if ([10, 12].indexOf(inn.length) === -1) {
error.code = 3;
error.message = 'ИНН может состоять только из 10 или 12 цифр';
} else {
var checkDigit = function (inn, coefficients) {
var n = 0;
for (var i in coefficients) {
n += coefficients[i] * inn[i];
}
return parseInt(n % 11 % 10);
};
switch (inn.length) {
case 10:
var n10 = checkDigit(inn, [2, 4, 10, 3, 5, 9, 4, 6, 8]);
if (n10 === parseInt(inn[9])) {
result = true;
}
break;
case 12:
var n11 = checkDigit(inn, [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]);
var n12 = checkDigit(inn, [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]);
if ((n11 === parseInt(inn[10])) && (n12 === parseInt(inn[11]))) {
result = true;
}
break;
}
if (!result) {
error.code = 4;
error.message = 'Неправильное контрольное число';
}
}
return result;
}
function validateKpp(kpp, error) {
var result = false;
if (typeof kpp === 'number') {
kpp = kpp.toString();
} else if (typeof kpp !== 'string') {
kpp = '';
}
if (!kpp.length) {
error.code = 1;
error.message = 'КПП пуст';
} else if (kpp.length !== 9) {
error.code = 2;
error.message = 'КПП может состоять только из 9 знаков (цифр или заглавных букв латинского алфавита от A до Z)';
} else if (!/^[0-9]{4}[0-9A-Z]{2}[0-9]{3}$/.test(kpp)) {
error.code = 3;
error.message = 'Неправильный формат КПП';
} else {
result = true;
}
return result;
}
function validateKs(ks, bik, error) {
var result = false;
if (validateBik(bik, error)) {
if (typeof ks === 'number') {
ks = ks.toString();
} else if (typeof ks !== 'string') {
ks = '';
}
if (!ks.length) {
error.code = 1;
error.message = 'К/С пуст';
} else if (/[^0-9]/.test(ks)) {
error.code = 2;
error.message = 'К/С может состоять только из цифр';
} else if (ks.length !== 20) {
error.code = 3;
error.message = 'К/С может состоять только из 20 цифр';
} else {
var bikKs = '0' + bik.toString().slice(4, 6) + ks;
var checksum = 0;
var coefficients = [7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1];
for (var i in coefficients) {
checksum += coefficients[i] * (bikKs[i] % 10);
}
if (checksum % 10 === 0) {
result = true;
} else {
error.code = 4;
error.message = 'Неправильное контрольное число';
}
}
}
return result;
}
function validateOgrn(ogrn, error) {
var result = false;
if (typeof ogrn === 'number') {
ogrn = ogrn.toString();
} else if (typeof ogrn !== 'string') {
ogrn = '';
}
if (!ogrn.length) {
error.code = 1;
error.message = 'ОГРН пуст';
} else if (/[^0-9]/.test(ogrn)) {
error.code = 2;
error.message = 'ОГРН может состоять только из цифр';
} else if (ogrn.length !== 13) {
error.code = 3;
error.message = 'ОГРН может состоять только из 13 цифр';
} else {
var n13 = parseInt((parseInt(ogrn.slice(0, -1)) % 11).toString().slice(-1));
if (n13 === parseInt(ogrn[12])) {
result = true;
} else {
error.code = 4;
error.message = 'Неправильное контрольное число';
}
}
return result;
}
function validateOgrnip(ogrnip, error) {
var result = false;
if (typeof ogrnip === 'number') {
ogrnip = ogrnip.toString();
} else if (typeof ogrnip !== 'string') {
ogrnip = '';
}
if (!ogrnip.length) {
error.code = 1;
error.message = 'ОГРНИП пуст';
} else if (/[^0-9]/.test(ogrnip)) {
error.code = 2;
error.message = 'ОГРНИП может состоять только из цифр';
} else if (ogrnip.length !== 15) {
error.code = 3;
error.message = 'ОГРНИП может состоять только из 15 цифр';
} else {
var n15 = parseInt((parseInt(ogrnip.slice(0, -1)) % 13).toString().slice(-1));
if (n15 === parseInt(ogrnip[14])) {
result = true;
} else {
error.code = 4;
error.message = 'Неправильное контрольное число';
}
}
return result;
}
function validateRs(rs, bik, error) {
var result = false;
if (validateBik(bik, error)) {
if (typeof rs === 'number') {
rs = rs.toString();
} else if (typeof rs !== 'string') {
rs = '';
}
if (!rs.length) {
error.code = 1;
error.message = 'Р/С пуст';
} else if (/[^0-9]/.test(rs)) {
error.code = 2;
error.message = 'Р/С может состоять только из цифр';
} else if (rs.length !== 20) {
error.code = 3;
error.message = 'Р/С может состоять только из 20 цифр';
} else {
var bikRs = bik.toString().slice(-3) + rs;
var checksum = 0;
var coefficients = [7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1];
for (var i in coefficients) {
checksum += coefficients[i] * (bikRs[i] % 10);
}
if (checksum % 10 === 0) {
result = true;
} else {
error.code = 4;
error.message = 'Неправильное контрольное число';
}
}
}
return result;
}
function validateSnils(snils, error) {
var result = false;
if (typeof snils === 'number') {
snils = snils.toString();
} else if (typeof snils !== 'string') {
snils = '';
}
if (!snils.length) {
error.code = 1;
error.message = 'СНИЛС пуст';
} else if (/[^0-9]/.test(snils)) {
error.code = 2;
error.message = 'СНИЛС может состоять только из цифр';
} else if (snils.length !== 11) {
error.code = 3;
error.message = 'СНИЛС может состоять только из 11 цифр';
} else {
var sum = 0;
for (var i = 0; i < 9; i++) {
sum += parseInt(snils[i]) * (9 - i);
}
var checkDigit = 0;
if (sum < 100) {
checkDigit = sum;
} else if (sum > 101) {
checkDigit = parseInt(sum % 101);
if (checkDigit === 100) {
checkDigit = 0;
}
}
if (checkDigit === parseInt(snils.slice(-2))) {
result = true;
} else {
error.code = 4;
error.message = 'Неправильное контрольное число';
}
}
return resu