Kdesi jsem už o tom psal
http://vyuka.slavicin.unart.cz/mod/forum/discuss.php?d=1520
Další možnost kromě tohoto je generování 10tis číslic ve tvaru např. VS=sprintf("%5d%5d", ID,CRC16) - o tomto máme taky kdesi diskusi na foru, ale nemůžu to najít.
Výhoda pro manuální přiřazování platby a zároveň pro některá sdružení bezpečnostní nevýhoda obou výše uvedených metod je to, že ID je ve variabilu snadno viditelné.
Možnost, kterou bychom mohli udělat teď, je metoda generování čísel bankovních účtů, které v sobě neobsahují žádné naše ID, a navíc mají ochranu proti "překlepu" - chyba v jednom čísle poruší ochranu "modulo 11".
Základní část čísla bankovního účtu má 2-10 číslic volených tak, aby součet násobků těch číslic nějakými váhami byl dělitelný 11ti:
http://www.cnb.cz/cs/platebni_styk/iban/ibancz.html
http://www.penize.cz/bezne-ucty/15470-tajemstvi-cisla-uctu
Tzn. lze napsat jednoduchý generátor, který bere čísla od 1 do 9999999999 a kontroluje, zda odpovídají pravidlu bankovního účtu a pokud jo, tak toto číslo je potenciální číslo bank. účtu.
Algoritmus lze vylepšit ještě o vyhodnocení "krásy" čísla tak, že budeme brát jen takové čísla, které mají skupiny stejných nebo po sobě jdoucích číslic, aby se to lidem dobře opisovalo.
Měl jsem na toto kdesi i školní projekt v ANSI C, ale nemůžu ho najít.
Aby generování moc dlouho netrvalo, tak bych ty variabily předgeneroval do nějaké tabulky - 10tisíc integerů je 40kB, tj. piditabulka...
Jo a připomínám, že pro účtování s.r.o. se nepoužívají variabily v tomto stylu - variabily jsou tam čísla faktur, které inkrementálně rostou s každou další vydanou fakturou.
Úlohu pevných identifikátorů zákazníka (když poplete variabil) pak může hrát specifický symbol.