Алгоритм проверки контрольного числа ИНН и страхового номера ПФDelphi , Синтаксис , МатематикаАвтор: Камбалов Андрей Модуль содержит две функции для проверки контрольного числа ИНН и страхового номера ПФ CheckINN - Функция вычисляет контрольное число ИНН и возвращает True если ИНН введен правильно или False в противном случае CheckPFCertificate
unit INN_PF; // =========================================== // Камбалов А.Н. // ACampball@mail.ru // =========================================== interface function CheckINN(const INN: string): Boolean; function CheckPFCertificate(const PF: string): Boolean; implementation uses SysUtils; // ================================================================================================== // Функция вычисляет контрольное число ИНН и возвращает True если ИНН // введен правильно или False в противном случае // В качестве параметра передается проверяемый ИНН // Для справки: структура ИНН // 10-ти разрядный ИНН - NNNNXXXXXC // 12-ти разрядный ИНН - NNNNXXXXXXCC // где: NNNN - номер налоговой инспекции // XXXXX, XXXXXX - порядковый номер налогоплательщика (номер записи в госреестре) // C - контрольное число в 10-ти разрядном ИНН // CC - контрольное число в 12-ти разрядном ИНН // (фактически, идущие подряд две контрольные цифры) // ================================================================================================== function CheckINN(const INN: string): Boolean; const factor1: array[0..8] of byte = (2, 4, 10, 3, 5, 9, 4, 6, 8); factor2: array[0..9] of byte = (7, 2, 4, 10, 3, 5, 9, 4, 6, 8); factor3: array[0..10] of byte = (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8); var i: byte; sum: word; sum2: word; begin Result := False; try if Length(INN) = 10 then begin sum := 0; for i := 0 to 8 do sum := sum + StrToInt(INN[i + 1]) * factor1[i]; sum := sum mod 11; sum := sum mod 10; Result := StrToInt(INN[10]) = sum; end else if Length(INN) = 12 then begin sum := 0; for i := 0 to 9 do sum := sum + StrToInt(INN[i + 1]) * factor2[i]; sum := sum mod 11; sum := sum mod 10; sum2 := 0; for i := 0 to 10 do sum2 := sum2 + StrToInt(INN[i + 1]) * factor3[i]; sum2 := sum2 mod 11; sum2 := sum2 mod 10; Result := (StrToInt(INN[11]) = sum) and (StrToInt(INN[12]) = sum2); end; // except Result := False; end; // try end; // =========================================== // Функция вычисляет контрольное число страхового номера ПФ и возвращает True если // оно введено правильно или False в противном случае // В качестве параметра передается страховой номер ПФ без разделителй // // Проверка контрольного числа Страхового номера проводится только для // номеров больше номера 001-001-998. // Контрольное число Страхового номера рассчитывается следующим образом: // каждая цифра Страхового номера умножается на номер своей позиции (позиции // отсчитываются с конца), полученные произведения суммируются, сумма делится // на 101, последние две цифры остатка от деления являются Контрольным числом. // =========================================== function CheckPFCertificate(const PF: string): Boolean; var sum: Word; i: Byte; begin Result := False; sum := 0; if Length(PF) <> 11 then Exit; try for i := 1 to 9 do sum := sum + StrToInt(PF[i]) * (9 - i + 1); sum := sum mod 101; Result := StrToInt(Copy(PF, 10, 2)) = sum; except Result := False; end; // try end; end. Алгоритм проверки контрольного числа ИНН и страхового номера ПФ - это модуль на языке программирования Delphi, содержащий функции для проверки корректности введенных ИНН и страховых номеров ПФ. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |