Personas kods vai uzņēmuma reģistrācijas numurs?
Šodien uzradās viena empīriska rakstura problēma. Ir automatizēti jāapstrādā dati, no kuriem nepieciešams izlobīt to, vai uzrādītā persona ir privātpersona vai juridiska. Diemžēl, apstrādājamajos datos privātpersonām personas koda viducī ne vienmēr gozējas strīpiņa. Tādējādi - kā reģistrācijas numurs, tā arīdzan personas kods sastāv no 11 cipariem. Ko darīt?
Pirmais galvā ienākušais risinājums ir personas koda pārbaudes algoritms. Ir tāds viens, kurš pēc pirmajiem desmit koda cipariem izrēķina to, kādam jābūt pēdējam. Diemžēl, savulaik valsts iestādē strādājot, iznāca uzrauties uz personas, kurai šī tā dēvētā "čeksumma" nebija korekta un neatbilda algoritmam. Protams, iespējamība sastapties ar tādu kodu vēlreiz, ir diezgan niecīga. Tomēr pastāv.
Bet, kā atklāsme pār manu galvu nāca otrs risinājums. Personas kodā pirmie divi cipari norāda dzimšanas datumu. Tas nozīmē, ka pirmais cipars būs 0, 1, 2, vai 3. Uzņēmumiem reģistrācijas numuri visbiežāk sākas ar 4, 5, vai 9, bet nekad ar 0, 1, 2, vai 3. Tadā, tipa :)
Problēma, kā rādās, atrisināta. Vai arī, iespējams, nav? Jūsu domas?
Runcis
2008. gada 31. jūlijā, plkst. 16:45
"empīriska rakstura problēma" - mēģināju izprast šo vārdu savienojumu, bet nesanāca :)
Didulis
2008. gada 31. jūlijā, plkst. 16:59
Nebūtu prātīgāk pārbaudīt visus pirmos 6 simbolus, kas kā nekā ir datums un tur kļūda būs vēl niecīgāka. <?php $code = str_replace('-', '', $code); // droši paliek nedroši, ja nu ir svītriņa; Vēl drošāk caur regexp, kas visus neciparus pārvērš par tukšumu; $date = floor($code / pow(10, 5)); // iegūstam pirmos 4 simbolus; $day = floor($date / pow(10, 4)); // datums; $month = floor($date / 100) - ($day * 100); // mēnesis; $year = $date % 100; // gads; $year += ($year
Vilx-
2008. gada 31. jūlijā, plkst. 16:59
Varbūt labāk pārbaudi, ka pirmie 6 cipari veido valīdu datumu? Principā sanāks tas pats, tikai vēl mazliet drošāk. Vai arī moš kaut kā automatizēti to var uzprasīt Lursoftam?
bubu
2008. gada 31. jūlijā, plkst. 17:01
Empīriski nozīmē praktiski nevis teorētiski. Tb kaut kādi secinājumi/lēmumi pamatojoties uz novērotām parādībām/procesiem/datiem.
Papildus dzimšanas datuma formātam moš var arī pārbaudīt vārda/nosaukumu atbilstību cilvēka vārdam, tipa lai tur nav nekādi SIA vai tml, ne?
spridis
2008. gada 31. jūlijā, plkst. 17:14
man jau liekas, ka ar 4, 5, 9 pārbaudi pietiek.
werd
2008. gada 31. jūlijā, plkst. 17:27
laacz, tas risinājums, ar to, ka personas koda pirmais cipars vienmēr būs 0,1,2 vai 3 ir labs, bet vai tu esi iekļāvis iespēju, ka uzņēmuma reģistrācijas kods ir uzņēmuma vadītāja personas kods? Šajos gadījumus noteikt vai persona ir juridiska vai fiziska, nebūs iespējams.
usver
2008. gada 31. jūlijā, plkst. 17:32
ar checkdate() pārbaudīt, vai ir lietojams personas koda iesākums. ja ir citi dati - var piemeklēt substringus, kas norāda uz iestādēm ( tjipa http://paste.php.lv/7743)
čeksummas pārbaudi var atstāt kā pēdējo argumentu - ja vārds un uzvārds ir, pēc firmas neizskatās bet čeksumma nesakrīt - sūtīt mailu adminam. galu galā - jebkurā sistēmā ir taču iespēja nosūtīt mailu sistēmas atbildīgajai personai ar tekstu "ienākuši grūti saprotami dati, lūdzam uzmest aci" - jo cilvēks tomēr ir un paliek saprātīgs. :)
Glupais
2008. gada 31. jūlijā, plkst. 17:35
Risinājums uz īsu laiku, jo iedzīvotāju reģistrs gatavojas personas kodu pārģenerācijai uz jauniem, kuros nebūtu norādīti personas dzimšanas dati.
Ross
2015. gada 26. februārī, plkst. 08:07
Joprojām gatavojas
archaic
2008. gada 31. jūlijā, plkst. 17:47
Nav, jo ir tādi individuālie komersanti, kur personas kods ir vienlaikus reģistrācijas numurs komercreģistrā.
Rumpis
2008. gada 31. jūlijā, plkst. 17:54
Glupais - vai tas pēc plašu sieviešu masu lūguma jeb nopietni? Drusku dīvaina šī ziņa šķiet, jo milzums dokumentu tak iraid ar tagadējiem kodiem.
q
2008. gada 31. jūlijā, plkst. 17:57
pirmie 6 cipari veido datumu, kā jau visi to zin attiecīgi pirmajiem 6 cipariem jābūt korektam datumam :) Ko veido 7 cipars var izdomāt paskatoties uz savu un sava bērna, kas dzimis pēc 2000 gada kodu :) Ja cheksumma nestrādā tādā gadījumā šī persona vai nu melo par savu personas kodu, vai arī tas ir kļūdaino norakstīts no pases. Vispār es šādu personu kā spiegu izdotu attiecīgām iestādēm :) Pastāv ideja, kā nākotnē varētu tikt vaļā no PK, kuros ir dzimšanas datums.
q
2008. gada 31. jūlijā, plkst. 17:59
Precizēju - nākotnē datums nebūs jaundzimušo kodos nu un potenciāli ja kāds nomainīs savu. Bet nedomaju, ka tā būs spiesta lieta, jo izdevumus jau nu valsts par to neapmaksās :D
waldis
2008. gada 31. jūlijā, plkst. 18:20
tieši tā - nav, jo pašnodarbinātajem reģ nr = pk tikai bez svītras
evin
2008. gada 31. jūlijā, plkst. 18:31
vispār jau drošvien atkarīgs arī, kādām vajadzībām jānosaka fiziska vai juridiska persona. ja saistībā ar nodokļiem, iespējams ka fiziskās personas, kas reģistrējas VID kā nodokļu maksātāji bez reģistrēšanās UR (reģistrācijas numurs = personas kods bez "-"), būtu jāuztver kā "juridiskas" personas.
es
2008. gada 31. jūlijā, plkst. 19:02
parasti jau visas formas, kuras prasa aizpildit ir ailite, kura janorada - juridiska vai fiziska persona. Un nedaudz divainas ir tas organizacijas, kuras tas nav, jo tam liekas tas mazsvarigi. Ta, ka - ja tads lauks ir - nav problemu
snpz
2008. gada 31. jūlijā, plkst. 20:55
Eeee, vai tik tā nebija ar Aiku kopīgi radīta "apgaismība"?:D
Lycan
2008. gada 31. jūlijā, plkst. 21:59
tauta ja kāds zin to algoritmu ar cheksummu ta ludzu iepostējat, man noderēs
Lycan
2008. gada 31. jūlijā, plkst. 22:15
labi, stulbs lugums
rbm
2008. gada 31. jūlijā, plkst. 22:27
tā arī ir 0,1,2,3 ir privātpersonas 4,5,6 uzņēmumi 9 valsts un pašvaldības
tā vismaz nesen man tika skaidrots
dairis
2008. gada 31. jūlijā, plkst. 23:32
Vai nevar uztaisīt http pieprasījumu uz lursoft vai līdzīga reģistra lapu un pajautāt vai tāds numurus ir juridiska persona vai nav.
protams tas jau būtu ūber zolīdi, bet nemācēšu pateikt vai lursofts tādu fīču piedāvā.
archaic
2008. gada 31. jūlijā, plkst. 23:42
Lycan: kuat kur laacz lapas dzīlēs ir raksts, kura komentāros aloritms ir.
http://laacz.lv/2006/11/25/pk-parbaudes-algoritms/
BIBO
2008. gada 1. augustā, plkst. 08:45
laacz, saki man tā, vai personas koda pārbaudes algoritms neskaitās valsts noslēpums? Vismaz, man strādājot attiecīgajā valsts iestādē, neizdevās savās ķepās aptaustīt viņu.
Peeteriz
2008. gada 1. augustā, plkst. 08:52
Principā firmām pirmais cipars atkarībā no uzņēmuma veida ir 4,5,6 vai 9; bet ir diezgan daudz uzņēmēju - gan lauksaimniecībā, gan liela daļa no advokātu un arhitektu birojiem - kur uzņēmuma reģ.nr. sakrīt ar attiecīgā cilvēka personas kodu.
ramm
2008. gada 1. augustā, plkst. 09:39
pazvani uz UR un uzprasi vai sia reg nr ir algoritms....
man liekas ka sia vienmēr sākas ar 4000 ... ?!?
gaajugaraam
2008. gada 1. augustā, plkst. 09:40
kopš neseniem laikiem personas kods drīkst sākties ar jebkuru ciparu, iespējamais septītais ir atkarīgs no dzimšanas gadsimta (savlaik no PID saņemtais algoritms bija visai universāls arī uz perskodiem kuri kārās uz inetā atrodajamajiem kalkulatoriem) p.s. ja tev ir oficiāla iestāde, tad jau Tu vari par tiem 100 vai cik tur sudraba grašiem iepirkt to čekeri. vienīgi tas neatrisina problēmu - fiz. vs jur persona
aaa
2008. gada 1. augustā, plkst. 09:43
<code> public static boolean IsValidPK(String aValue) {
gaajugaraam
2008. gada 1. augustā, plkst. 09:48
perskoda pārbaudes algoritms nav valsts noslēpums, noslēpums varētu būt perskoda ģenerācijas algoritms
Evalc
2008. gada 1. augustā, plkst. 11:43
E-pakalpojums: Pārbaude, vai persona ir iekļauta Iedzīvotāju reģistrā un vai nav ziņu par personas nāvi (EP28) Maksājumi: Bezmakasas
https://www.latvija.lv/LV/LDV/EServiceDescription.aspx?srvid=URN:IVIS:100001:EP-EP28-v1-0
flipo
2008. gada 1. augustā, plkst. 12:00
werd.. fiziska persona ir fiziska persona, tā nevar būt juridiska persona. cits jautājums ir, kad fiziska persona ir nodokļu maksātājs!
sn
2008. gada 1. augustā, plkst. 12:34
kāda vaina no http://paste.php.lv/7749/nonum izmantošanas pers koda validēšanā?
es pagaidām neesmu atradis PK, kurš nevalidētos, tev varbūt bija drukas kļūda iesniegtajos datos? tad jau bij jāiet uz valsts iestādēm un jāsaka, ka viņi nepareizu pk iedevuši personai :)
Vērotājs
2008. gada 1. augustā, plkst. 12:51
iespējams der šāds risinājums: personas koda lauku sadalīt 2 daļās - līdz ar to nebūs problēmu ar strīpiņām.
usins
2008. gada 1. augustā, plkst. 18:56
A vai tad personas kodam xxxxxx-yyyxx, kur yyy var buut tikai Latvijas pasu nodalju numurinji- tas ir kur izdots.... piem 128, 152 utt... kjipa pec tiem sk var noteikt kur ir izsniegta pase... varetu tak pec shiem kriteerijiem to izdariit, bet nu ar, sameeraa gruuti- tad ir jaieviesh taa "-" ziime kaa obligaata, un tad dziive atvieglota, bet ej un labo visus ieprieksheejos...
modric
2008. gada 2. augustā, plkst. 00:39
ja SW taisi tādam lietotājam, kas var tikt pie sistēmas KAKTUSS, fixi noskaidrosi, vai tā ir legāla LV fiziska persona.
to lieto tais mazajās stikla būdiņās RIX un visur citur, kur vajag oficiāli pārbaudīt piederību pie LV fizisko personu loka, bet pieder tā padarīšana laikam jau taču PID`am
modric
2008. gada 2. augustā, plkst. 00:44
usins 32 - principā tev taisnība, taču tik vienkārši tas nav, jo ar 5 cipariem tad sen jau nepietiktu - bet vai nu man te programmeriem jāstāsta, ar kādiem algoritmiem to tomēr var panākt :)
modric
2008. gada 2. augustā, plkst. 17:19
sorre - mans iepr.(34) kaments nav korekts - pietiek & pāri paliek ar 5 zīmēm... :)
nodaļas # + n.p.k. TAJĀ datumā dzimušajiem, kas tajā nodaļā reģistrējušies, un tādu jau nav daudz, var pat 1 zīmi tik atstāt + vēl 1 zīme checksum.
atcerējos, ka sen apakaļ kautkādu SW taisot, dabūjām pat tās checksum algoritmu, lai varētu ievada kļūdas ķert.
PS nav arī nekāds noslēpums pārējo šito kodu chekcum algoritmi - uzņēmuma RegNo, IBAN utt
elfz
2008. gada 3. augustā, plkst. 14:05
Čeko pirmos septiņus ciparus atbilstībai datumam, un satiekot ticamu datumu, asjūmo, ka tas ir personas kods un pārbaudi kontrolsummu: ja der, tad točna personas kods, ja neder, tad pielogo malā paskatīties pēc tam.
Tev nav kaut kādi papilddati, vārdsuzvārds vs uzņēmuma nosaukums, pēc kuriem varētu empīriski izurbināt, ka "šis nekādā gadījumā nav privātpersona", or something?
bulletproof_cupid
2008. gada 4. augustā, plkst. 11:52
@modric: Ja LR uzņēmumu reģistrācijas numuru pārbaudes algoritms nav noslēpums, vai nevari iedot norādi kur to var uzzināt? Lieti noderētu darbā. :)
nazis
2008. gada 4. augustā, plkst. 17:03
Ja kas: http://alvils.latvietis.com/index.cgi?action=5&id=112 Personas koda validators
Un personas koda pirmajai daļai nebūt nav jābūt dzimšanas datumam.
Verdi
2013. gada 14. februārī, plkst. 14:09
http://www.lvportals.lv/print.php?id=248652 Bet mēs zinām, ka pēdējais no 4 cipariem ir algoritma pareizības pārbaude, tātad atklāti paliek noskaidrot 8,9 un 10 cipara nozīmi. Tie noteikti nav nejauši cipari.