NAME

Business::PFR - validate Russian pension fund number

VERSION

version 1.0.2

SYNOPSIS

    my $bp = Business::PFR->new(
        value => '112-233-445 95',
    );

    $bp->is_valid();

DESCRIPTION

This module checks if the Russian pension fund number PFR (ПФР) is valid.

The algorithm is taken from the document: http://www.pfrf.ru/userdata/rabotodatelyam/persuchet/otchet_per/pravila_proverki_3.doc

Business::PFR version numbers uses Semantic Versioning standart. Please visit http://semver.org/ to find out all about this great thing.

ALGORITHM (in Russian language)

Алгоритм формирования контрольного числа Страхового номера

Проверка контрольного числа Страхового номера проводится только для номеров больше номера 001-001-998

Контрольное число Страхового номера рассчитывается следующим образом:

  • каждая цифра Страхового номера умножается на номер своей позиции (позиции отсчитываются с конца)

  • полученные произведения суммируются

  • сумма делится на 101

  • последние две цифры остатка от деления является Контрольным числом.

Например: Указан страховой номер 112-233-445 95

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

    цифры номера    1 1 2 2 3 3 4 4 5
    номер позиции   9 8 7 6 5 4 3 2 1

    1х9+1х8+2х7+2х6+3х5+3х4+4х3+4х2+5х1=95

    95 / !101! =95

Контрольное число=95 - указано верно

Некоторые частные случаи:

    99 / !101! = 99
    100 / !101! = 00
    101 / !101! = 00
    102 / !101! = 01

METHODS

new

    my $bp = Business::PFR->new(
        value => '112-233-445 95',
    );

is_valid

Returns true or false value for PFR number in the object.

True value means that PFR is coorect.

    $bp->is_valid();

AUTHOR

Ivan Bessarabov <ivan@bessarabov.ru>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Ivan Bessarabov.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.