Маленький скрипт по проверке валидности ИНН на eScript
function CheckINN(Inputs:PropertySet, Outputs:PropertySet)
{
try
{
var sINN:String=Inputs.GetProperty("INN");
var re = /\D+/g;
var RezCode:Number=1; //0-ошибка,1-успех
var RezText:String="ИНН - корректный"; //результат проверки в текстовом виде
var ControlNumber1:Number=0;
var ControlNumber2:Number=0;
if (!re.test(sINN.toString()))
{
if (sINN.length==10)
{
//расчет контрольного числа для ЮЛ
ControlNumber1=((2*ToInteger(sINN[0]) + 4*ToInteger(sINN[1])+ 10*ToInteger(sINN[2])+
3*ToInteger(sINN[3]) + 5*ToInteger(sINN[4])+ 9*ToInteger(sINN[5])+
4*ToInteger(sINN[6]) + 6*ToInteger(sINN[7])+ 8*ToInteger(sINN[8])
)%11)%10;
if(ControlNumber1!=ToNumber(sINN[9]))
{
RezCode=0;
RezText="Контрольная сумма ИНН не совпадает";
}
}
else
{
if (sINN.length==12)
{
//расчет контрольного числа для ФЛ
ControlNumber1=((7*ToInteger(sINN[0]) + 2*ToInteger(sINN[1])+ 4*ToInteger(sINN[2])+
10*ToInteger(sINN[3]) + 3*ToInteger(sINN[4])+ 5*ToInteger(sINN[5])+
9*ToInteger(sINN[6]) + 4*ToInteger(sINN[7])+ 6*ToInteger(sINN[8])+ 8*ToInteger(sINN[9])
)%11)%10;
ControlNumber2=((3*ToInteger(sINN[0]) + 7*ToInteger(sINN[1])+ 2*ToInteger(sINN[2])+
4*ToInteger(sINN[3]) + 10*ToInteger(sINN[4])+ 3*ToInteger(sINN[5])+
5*ToInteger(sINN[6]) + 9*ToInteger(sINN[7])+ 4*ToInteger(sINN[8])+
6*ToInteger(sINN[9])+8*ControlNumber1
)%11)%10;
if(ControlNumber1!=ToNumber(sINN[10]) || ControlNumber2!=ToNumber(sINN[11]))
{
RezCode=0;
RezText="Контрольная сумма ИНН не совпадает";
}
}
else
{
RezCode=0;
RezText="ИНН должен содержать 10 или 12 цифр";
}
}
}
else
{
RezCode=0;
RezText="ИНН должен состоять из цифр";
}
Outputs.SetProperty("RezCode",RezCode.toString());
Outputs.SetProperty("RezText",RezText.toString());
}
finally
{
sINN=null;
RezCode=null;
RezText=null;
re=null;
ControlNumber1=null;
ControlNumber2=null;
}
}
Комментариев нет:
Отправить комментарий