засега единственото решение което виждам за да го напрявя по-универсално е:
да преименувам полето
bulstat на
company_numberда му сложа индекс (UNIQUE KEY) и да го записвам номера заедно с префикса (а не чистият булстат номер както беше досега) например:
BG123456789
DE123456789 ...
така ако се записва заедно с префикса няма да има колизии в номера между бг и западна фирма и номера ще е винаги уникален
да го направя да приема NULL стойности в случай че не е известен номера на 'западната' фирма
и да го дигна полето на CHAR(18)..... Хич не обичам varchar.
company_number CHAR(18) NULL UNIQUE KEY,
обаче все още се чудя как да ги записвам номерата - с префикса отпред BG123456789 DE123456789 или да ги сложа като суфикс 123456789
BG 123456789
DEщото ако е отпред индекса ще е страшно неефективен. ще имам 99% BG123456789 и само тук таме някой западен номер.
-----------------
но въпроса с валидацията на номера остава. за БГ няма проблеми. Ползвам това
http://www.linux-bg.org/forum/index.php?topic=36320.msg184403 и работи правилно. А за западните номера явно трябва да си затварям очите и да ги приемам на доверие.
тук открих нещо много ценно
http://www.braemoor.co.uk/software/vat.shtml само че е на JS
вътре има проверка с контролни суми за всяка страна индивидуално
, според специфичният алгоритъм за страната. И нашият булстат е вътре и ЕГН-тата.
тук също има хубаво описани алгоритмите за отделните държави:
http://zylla.wipos.p.lodz.pl/ut/translation.htmlhttp://www.pruefziffernberechnung.de/U/USt-IdNr.shtml