NAME

Business::PFR - validate Russian pension fund number

VERSION

version 1.0.0

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.