понедельник, 16 марта 2015 г.

Проверка валидности ИНН на eScript

Маленький скрипт по проверке валидности ИНН на 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;
}

}

Комментариев нет:

Отправить комментарий