Adószám ellenőrző-összeg generátor

A cégek/vállalkozások adószámai 11 számjegyből állnak: az első nyolc a törzsszám (ebből a nyolcadik egy ellenőrző-összeg, melyet az első hétből számítanak), a kilencedik az áfakód, az utolsó kettő pedig az adóhatóságot jelzi.

A nyolcadik helyen álló ellenőrző-összeg számítása a következő algoritmus szerint zajlik: az adószám első hét számjegyét megszorozzuk a 9, 7, 3, 1, 9, 7, 3 sorozatból a megfelelővel (a számjegy sorszáma alapján kiválasztva a szorzót), majd ezeket összeadjuk, vesszük az összeg utolsó számjegyét és ha az nulla, akkor az lesz az ellenőrző-összeg, ha nem nulla, akkor vonjuk ki 10-ből és az lesz az ellenőrző-összeg.

Egy példa: az 1389545 törzsszám nyolcadik számjegyének kiszámítása:
  1. az összeg képzése: 9 * 1 + 7 * 3 + 3 * 8 + 1 * 9 + 9 * 5 + 7 * 4 + 3 * 5 = 151
  2. az összeg utolsó számjegye: 1
  3. mivel ez nem nulla, így az ellenőrző-összeg: 10 - 1 = 9
  4. azaz a teljes törzsszám így fog kinézni: 13895459
Az alábbi szövegdobozba beírva (legalább) az első hét számjegyet, kiszámítja a nyolcadikat (az Enter lenyomására):


A fenti szövegdoboz HTML kódja (a számítást végző JavaScript-tel együtt):
<input type="text" onkeydown="if (event.keyCode != 13 && event.keyCode != 10) return; s = this.value.split(''); if (s.length < 7) { alert('Az adószám első hét számjegyét írd be!'); return; }; for (i in s) s[i] = parseInt(s[i]); cksum = (9 * (s[0] + s[4]) + 7 * (s[1] + s[5]) + 3 * (s[2] + s[6]) + s[3]) % 10; if (cksum > 0) cksum = 10 - cksum; if (s.length < 8) { this.value = this.value + cksum } else { this.value = this.value.substr(0, 7) + cksum + this.value.substr(8); }" >

A fenti kód elvileg mindenféle böngésző alatt működik (IE 6, Firefox 3 és Chrome 16 alatt teszteltem ... feltehetően az ezeknél frissebbekben is megy).

ui: a törzsszámról az adóalanyok egységes azonosítási rendszeréről szóló 8002/1987. (SK 12.) KSH-APEH együttes tájékoztató intézkedik.
Pár link segítségül: