24 октября, среда 05:23
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Маски ввода основных документов физ лиц + проверка ИНН

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Маски ввода основных документов физ лиц + проверка ИНН

    Коллеги может, кто подскажет какой-нибудь документ, содержащий актуальные маски ввода по наиболее распространенным документам физических лиц, например:
    Загран. паспорт
    Паспорт моряка
    Военный билет
    Пенс удостоверение
    и.т.д.
    которым можно было б воспользоваться?

    Также интересует алгоритм проверки ИНН физического лица и алгоритм проверки номера пенс. удостоверения.

  • #2
    Такого официального документа мне найти раньше не удавалось. Но есть подборка из разных источников. Если требуется, то оставте контакт.

    Комментарий


    • #3
      про ИНН
      PHP код:
      ?php



      //функция расчета контрольного числа в ИНН
      //возвращает FALSE при ошибке формата ИНН
      //или ИНН с правильным ключом, если формат верен
      function GetINNcc ($inn)
      {
          if (
      is_numeric($inn)) {
              
      $k = array (372410359468);
              
      $l strlen($inn);

              if (
      $l == 10 || $l == 12) {
                  
      $s=0;
                  for (
      $i 0$i$l-($l==10?1:2); $i++)
                      
      $s += $inn{$i}*$k[$i+1+($l==10?1:0)];
                  
      $c1    = ($s%11)%10;

                  if (
      $l == 12) {
                      
      $s=0;
                      for (
      $i 0$i11$i++)
                          
      $s += $inn{$i}*$k[$i];
                      
      $c2 = ($s%11)%10;
                      return 
      substr($inn010).$c1.$c2;
                      }

                  return 
      substr($inn09).$c1;
                  }
              }
          return 
      FALSE;
      }

      function 
      TestINN ($inn
      {
          return (
      GetINNcc($inn)===$inn);
      }


      ?> 
      длинна ФЛ/ЮЛ 12/10

      дополнительно можно проверять первые четыре цифры по справочнику налоговых инспекций

      Комментарий


      • #4
        http://polytech.ural.ru/checkvalues.htm

        Проверка правильности указания ИНН, номера страхового свидетельства ПФ, ОКПО, а также расчётного и корреспондентского счетов с помощью БИКа банка

        Целью данной статья является написание функций про проверки правильности указания ИНН, номера страхового свидетельства ПФ, а также расчётного и корреспондентского счетов с помощью БИКа банка. Областью применения данных функций могут служить системы электронного документооборота Вашей организации.

        Проверка правильности указания ИНН:

        Для 10-ти и для 12-ти значного ИНН существуют разные алгоритмы проверки правильности указания ИНН.

        Для 10-ти значного ИНН алгоритм проверки выглядит следующим образом:
        1. Вычисляется контрольная сумма со следующими весовыми коэффициентами: (2,4,10,3,5,9,4,6,8,0)
        2. Вычисляется контрольное число как остаток от деления контрольной суммы на 11
        3. Если контрольное число больше 9, то контрольное число вычисляется как остаток от деления контрольного числа на 10
        4. Контрольное число проверяется с десятым знаком ИНН. В случае их равенства ИНН считается правильным.

        Для 12-ти значного ИНН алгоритм проверки выглядит следующим образом:
        1. Вычисляется контрольная сумма по 11-ти знакам со следующими весовыми коэффициентами: (7,2,4,10,3,5,9,4,6,8,0)
        2. Вычисляется контрольное число(1) как остаток от деления контрольной суммы на 11
        3. Если контрольное число(1) больше 9, то контрольное число(1) вычисляется как остаток от деления контрольного числа(1) на 10
        4. Вычисляется контрольная сумма по 12-ти знакам со следующими весовыми коэффициентами: (3,7,2,4,10,3,5,9,4,6,8,0).
        5. Вычисляется контрольное число(2) как остаток от деления контрольной суммы на 11
        6. Если контрольное число(2) больше 9, то контрольное число(2) вычисляется как остаток от деления контрольного числа(2) на 10
        7. Контрольное число(1) проверяется с одиннадцатым знаком ИНН и контрольное число(2) проверяется с двенадцатым знаком ИНН. В случае их равенства ИНН считается правильным.

        Проверка правильности указания номера страхования свидетельства ПФ:

        Алгоритм проверки номера свидетельства страхования ПФ:
        1. Вычисляется контрольная сумма по первым 9-ти цифрам со следующими весовыми коэффициентами: (9,8,7,6,5,4,3,2,1).
        2. Вычисляется контрольное число как остаток от деления контрольной суммы на 101
        3. Контрольное число сравнивается с двумя последними цифрами номера страхования свидетельства ПФ. В случае их равенства номер страхования свидетельства ПФ считается правильным.

        Проверка правильности указания ОКПО:

        Алгоритм проверки ОКПО:
        1. Вычисляется контрольная сумма по 7-и цифрам со следующими весовыми коэффициентами: (1,2,3,4,5,6,7).
        2. Вычисляется контрольное число(1) как остаток от деления контрольной суммы на 11.
        3. Вычисляется контрольная сумма по 7-и цифрам со следующими весовыми коэффициентами: (3,4,5,6,7,8,9).
        4. Вычисляется контрольное число(2) как остаток от деления контрольной суммы на 11. Если остаток от деления равен 10-ти, то контрольному числу(2) присваивается ноль.
        5. Если контрольное число(1) больше девяти, то восьмой знак ОКПО сравнивается с контрольным числом(2), иначе восьмой знак ОКПО сравнивается с контрольным числом(1). В случае их равенства ОКПО считается правильным.

        Проверка правильности указания корреспондентского счёта:

        Алгоритм проверки корреспондентского счёта с помощью БИКа банка:
        1. Для проверки контрольной суммы перед корреспондентским счётом добавляются "0" и два знака БИКа банка, начиная с пятого знака.
        2. Вычисляется контрольная сумма со следующими весовыми коэффициентами: (7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1)
        3. Вычисляется контрольное число как остаток от деления контрольной суммы на 10
        4. Контрольное число сравнивается с нулём. В случае их равенства корреспондентский счёт считается правильным.

        Проверка правильности указания расчётного счёта:

        Алгоритм проверки расчётного счёта с помощью БИКа банка:
        1. Для проверки контрольной суммы перед расчётным счётом добавляются три последние цифры БИКа банка.
        2. Вычисляется контрольная сумма со следующими весовыми коэффициентами: (7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1)
        3. Вычисляется контрольное число как остаток от деления контрольной суммы на 10
        4. Контрольное число сравнивается с нулём. В случае их равенства расчётного счёт считается правильным.

        Приступим к написанию наших функций:

        1. Проверка правильности указания 10-ти значного ИНН:

        function CheckINN_10(const Value:String):Boolean;
        const INNMask: array [1..10] of byte = (2,4,10,3,5,9,4,6,8,0); // весовые коэффициенты
        var C,I,Summa:Integer;
        begin
        Result:=False;
        Summa:=0;
        for I:=1 to 10 do
        begin
        if not (Value[I] in ['0'..'9']) then
        exit;
        Summa:=Summa+(StrToInt(Value[I])*INNMask[I]); // вычисляем контрольную сумму
        end;
        C:=Summa mod 11; // вычисляем контрольное число как остаток от деления контрольной суммы на 11
        if C>9 then // если контрольное число больше девяти вычисляем остаток от деления на 10
        C:= C mod 10;
        Result:=(C=StrToInt(Value[10])); // проверяем соответствие контрольного числа десятому знаку ИНН
        end;

        2. Проверка правильности указания 12-ти значного ИНН:

        function CheckINN_12(const Value:String):Boolean;
        const INNMask: array [1..12] of byte = (3,7,2,4,10,3,5,9,4,6,8,0); // весовые коэффициенты
        var C_11,C_12,I,Summa:Integer;
        begin
        Result:=False;
        Summa:=0;
        for I:=1 to 11 do
        begin
        if not (Value[I] in ['0'..'9']) then
        exit;
        Inc(Summa,StrToInt(Value[I])*INNMask[I+1]); // вычисляем контрольную сумму по 11-ти знакам
        end;
        C_11:=Summa mod 11; // вычисляем контрольное число(1)
        if C_11>9 then
        C_11:=C_11 mod 10;
        if (C_11>StrToInt(Value[11])) then // проверяем соответствие контрольного числа(1) одиннадцатому знаку ИНН
        exit;

        Summa:=0;
        for I:=1 to 12 do
        begin
        if not (Value[I] in ['0'..'9']) then
        exit;
        Inc(Summa,StrToInt(Value[I])*INNMask[I]); // вычисляем контрольную сумму по 12-ти знакам
        end;
        C_12:=Summa mod 11; // вычисляем контрольное число(2)
        if C_12>9 then
        C_12:=C_12 mod 10;
        Result:=(C_12=StrToInt(Value[12])); // проверяем соответствие контрольного числа(2) двенадцатому знаку ИНН
        end;

        3. Проверка правильности указания ИНН:

        function CheckINN(const Value:String):Boolean;
        begin
        Result:=((Length(Value)=10) and CheckINN_10(Value)) or
        ((Length(Value)=12) and CheckINN_12(Value));
        end;


        4. Проверка правильности указания номера страхового свидетельства ПФ:

        function CheckPFNumber(const Value:String):Boolean;
        var I,Summa:Integer;
        begin
        Result:=False;
        if Length(Value)>11 then
        exit;
        for I:=1 to 11 do
        if not (Value[I] in ['0'..'9']) then
        exit;
        Summa:=0;
        for I:=1 to 9 do
        Inc(Summa,StrToInt(Value[I])*(10-I)); // вычисляем контрольную сумму
        Result:=StrToInt(Copy(Value,10,2))=(Summa mod 101); // проверяем остаток от деления контрольной суммы на 101 с двумя последними числам
        end;

        5. Проверка правильности указания ОКПО:

        function CheckOKPO(const Value:String):Boolean;
        var I,Summa,Summa2:Integer;
        begin
        Result:=False;
        if Length(Value)>8 then
        exit;
        for I:=1 to 8 do
        if not (Value[I] in ['0'..'9']) then
        exit;
        Summa:=0;
        Summa2:=0;
        for I:=1 to 7 do
        begin
        Inc(Summa,StrToInt(Value[I])*I); // вычисляем контрольную сумму(1)
        Inc(Summa2,StrToInt(Value[I])*(I+2)); // вычисляем контрольную сумму(2)
        end;
        C:=Summa mod 11; // вычисляем контрольное число(1)
        if C>9 then
        begin
        C:=Summa2 mod 11; // вычисляем контрольное число(2)
        if C=10 then
        C:=0;
        end;
        Result:=(C=StrToInt(Value[8])); // проверяем соответствие контрольного числа восьмому знаку ОКПО
        end;

        6. Проверка правильности указания банковского счёта:

        function CheckSchet(const Value:String):Boolean;
        const SchetMask: array [1..23] of byte = (7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1); // весовые коэффициенты
        var I,Summa:Integer;
        begin
        Result:=False;
        Summa:=0;
        for I:=1 to 23 do
        begin
        if not (Value[I] in ['0'..'9']) then
        exit;
        Summa:=Summa+(StrToInt(Value[I])*SchetMask[I]) mod 10; // вычисляем контрольную сумму
        end;
        Result:=(Summa mod 10 = 0); // проверяем остаток от деления контрольной суммы на 10 с нулём
        end;


        7. Проверка правильности указания корреспондентского счёта:

        function CheckKS(const Value,BIK:String):Boolean;
        begin
        Result:=(Length(Value)=20) and CheckSchet('0'+Copy(BIK,5,2)+Value);
        end;


        8. Проверка правильности указания расчётного счёта:

        function CheckRS(const Value,BIK:String):Boolean;
        begin
        Result:=(Length(Value)=20) and CheckSchet(Copy(BIK,Length(BIK)-2,3)+Value);
        end;


        Заключение:

        Мы с Вами рассмотрели написание функций для проверки правильности указания ИНН, номера страхового свидетельства ПФ, корреспондентского и расчётных счетов.

        (c) PolyTech

        Комментарий


        • #5
          http://just.siberia.net/innyl.jpg
          http://just.siberia.net/innfl.jpg - а здесь другие весовые. Или это не то?

          Комментарий


          • #6
            Не проверял те алгоритмы. Можно пересчитать и посмотреть, что получается.

            Комментарий


            • #7
              О здорово даже с программными кодами
              Спасибо.
              Да странно весовые коэф. разные для инн физ. лиц, видать у каждой налоговой свой уникальный алгоритм. Надеюсь результат у них одинаков. Буду завтра сверять.

              Комментарий


              • #8
                Добрый день! О форматах номеров документов, удостоверяющих личность. Если у Вас есть справочная система типа Гаран-Консультант, найдите приказ Минфина РФ и МНС РФ от 16/10/2003 № 94н/БГ-3-13/543. Там приведены форматы номеров (следуют за справочником документов, удостоверяющих личность налогоплательщика). Можно потом поискать по соответствующему контексту более свежие документы, но вроде таковых нет.

                Комментарий

                Пользователи, просматривающие эту тему

                Свернуть

                Присутствует 1. Участников: 0, гостей: 1.

                Обработка...
                X