(Finnish summary: PHP aliohjelma, jolla voi laskea laskun viitenumeron laskun numerosta.)
I’m not sure how many countries are using so called 7-3-1 method to generate reference numbers for Invoices, but here in Finland it’s a common practise. Looks like that Estonians are using the same.
Anyway, I needed to create a PHP code to generate reference numbers. I found nice information here: https://wiki.xmldation.com/support/fk/finnish_reference_number
I though that someone else may one day need same functionality, so here’s the snippet. It’s a PHP function that takes invoice number and adds a check digit at the end. And that’s, there’s your reference number. Have fun 🙂
private function calcInvoiceRefNum($invoice_num) {
$digits = str_split($invoice_num);
$method = [7,3,1];
$mi = 0; // $method array index
$sum = 0;
$index = count($digits);
// Walk through all digits in reverse order and sum up
while ($index) {
--$index;
$sum += $digits[$index] * $method[$mi];
$mi++;
if ($mi > 2) $mi = 0;
}
// Find the next zero ending number from $sum
$nearest_10 = ceil($sum / 10) * 10;
// Add the checksum to the end of the invoice number
$last_digit = $nearest_10 - $sum;
if ($last_digit == 10)
$last_digit = 0;
return $invoice_num.$last_digit;
}