CheckDigits::M11_013 − compute check digits for VAT Registration Number (GR)
use Algorithm::CheckDigits; $ustid = CheckDigits('ustid_gr'); if ($ustid−>is_valid('123456783')) { # do something } $cn = $ustid−>complete('12345678'); # $cn = '123456783' $cd = $ustid−>checkdigit('123456783'); # $cd = '3' $bn = $ustid−>basenumber('123456783'); # $bn = '12345678';
ALGORITHM
1. |
Beginning right with the digit before the checkdigit all digits are weighted with 2 ** position. I. e. the last digit is multiplied with 2, the next with 4, then 8 and so on. |
||
2. |
The weighted digits are added. |
||
3. |
The sum from step 2 is taken modulo 11. |
||
4. |
If the sum from step 3 is greater than 9, the check sum is 0 else it is the sum itself. |
METHODS
is_valid($number)
Returns true only if $number consists solely of numbers and hyphens and the two digits in the middle are valid check digits according to the algorithm given above.
Returns false otherwise,
complete($number)
The check digit for $number is computed and inserted into the middle of $number.
Returns the complete number with check digit or ’’ if $number does not consist solely of digits, hyphens and spaces.
basenumber($number)
Returns the basenumber of $number if $number has a valid check digit.
Return ’’ otherwise.
checkdigit($number)
Returns the check digits of $number if $number has valid check digits.
Return ’’ otherwise.
EXPORT
None by default.
Mathias Weidner, <mathias AT weidner DOT in−bad−schmiedeberg.de>
perl, CheckDigits, www.pruefziffernberechnung.de,