webForumDet fria alternativet

Kontrollera org.nr

10 svar · 5 859 visningar · startad av learn

learnMedlem sedan jan. 20051 130 inlägg
#1

Hej alla!

Jag skulle vilja kunna testa ifall olika inmatade organisationsnummer är giltiga (personnummer/enskilda firmor skall inte godkännas). Hittade detta script men det är skrivet i javascript, jag vill gärna ha PHP (känns säkrare).

Någon som vet vart jag kan hitta ett sådant/vill översätta ovanstående till PHP åt mig??

Tack på förhand! :bire

learnMedlem sedan jan. 20051 130 inlägg
#2

Någon som vet hur jag kan göra? :)

stevenetMedlem sedan juni 20001 251 inlägg
seattlegrungeMedlem sedan juli 200653 inlägg
#4

stevenet skrev:

http://www.phpcoded.com/?DO=viewCode&ID=17

Med det scriptet du hänvisade till kollar man persnr/orgnr enskilda firmor, precis det Learn inte behövde :)

learnMedlem sedan jan. 20051 130 inlägg
#5

seattlegrunge skrev:

Med det scriptet du hänvisade till kollar man persnr/orgnr enskilda firmor, precis det Learn inte behövde :)

Precis. Dessutom tycker jag inte det såg så genomtänkt ut...

Någon?

LaspMedlem sedan juli 200012 980 inlägg
#6

Ett Test skall ju i det grundläggande kunna fungera både med och utan bindestreck i sjunde positionen. Så det går väl att använda ett bra personnrtest och komplettera med test av att de två första är 55 att tredej och fjärde är mer än 12 osv. Vilken typ av bolag skall kollas?

The_HulkMedlem sedan juni 20031 837 inlägg
#7

Här kommer ett förslag för översättning till PHP-kod
Med orginal koden

<?php
function checkOrgNr($nr)
{
    //	this.valid=false;
    $valid = false;

    // 	if(!nr.match(/^(\d{1})(\d{5})\-(\d{4})$/)){ return false; }
    $match = array();
    if(!preg_match("/^(\d{1})(\d{5})\-(\d{4})$/", $nr, $match))
    {
        return false;
    }

	//this.group=RegExp.$1;
	$group = $match[1];

	//this.controldigits=RegExp.$3;
	$controldigits = $match[3];

	//this.alldigits=this.group+RegExp.$2+this.controldigits;
	$alldigits = $group . $match[2] . $controldigits;
	

	//if(this.alldigits.substring(2,3)<2){ return false }
	if(substr($alldigits, 2,1) < 2)
	{
	    return false;
	}
	
	//var nn="";
	$nn = "";
	
	//for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
	for($n=0; $n < strlen($alldigits); ++$n)
	{
	    $nn .= (( (($n+1)%2) +1) * substr($alldigits, $n,1));
	}

	//this.checksum=0;
	$checksum = 0;
	
	//for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
	for($n=0; $n < strlen($nn); ++$n)
	{
	    $checksum += substr($nn, $n, 1);
	}

	//this.valid=(this.checksum%10==0)?true:false;
	$valid = $checksum % 10 == 0;
	
	return $valid;
}

checkOrgNr('123456-7890');
?>

utan orginal koden

<?php
function checkOrgNr($nr)
{
    $valid = false;
    $match = array();

    if(!preg_match("/^(\d{1})(\d{5})\-(\d{4})$/", $nr, $match))
    {
        return false;
    }

	$group = $match[1];
	$controldigits = $match[3];
	$alldigits = $group . $match[2] . $controldigits;

	if(substr($alldigits, 2,1) < 2)
	{
	    return false;
	}
	
	$nn = "";
	
	for($n=0; $n < strlen($alldigits); ++$n)
	{
	    $nn .= (( (($n+1)%2) +1) * substr($alldigits, $n,1));
	}

	$checksum = 0;
	
	for($n=0; $n < strlen($nn); ++$n)
	{
	    $checksum += substr($nn, $n, 1);
	}

	$valid = $checksum % 10 == 0;
	
	return $valid;
}

checkOrgNr('123456-7890');
?>

Man kan göra om koden lite mer men nu tog jag och översatte den mer eller mindre rakt av.

learnMedlem sedan jan. 20051 130 inlägg
#8

Lasp: Jag vill kolla aktiebolag, handelsbolag och ekonomiska föreningar.

The_Hulk: Tack! Är detta ett bra script, kan jag lita på att deet fungerar som det ska..? Jag vill ju inte att giltiga ab, hb eller ek blir nekade tillstånd... :)

NicrosoftMedlem sedan dec. 19995 718 inlägg
#9

Från susning.nu Kolla första och tredje siffran.

Organisationsnummer motsvarar personnummer 
för juridiska personer till skillnad från fysiska personer.
De kännetecknas av att den tredje siffran, första siffran
 i "månadsdelen", är större än eller lika med 2. 
Precis som personnummer har organisationsnummer
 en kontrollsiffra i slutet. Den sista siffran kan även 
den räknas ut med hjälp av algoritmen modulo 10. 
Se personnummer för mer info. 

Den första siffran i organisationsnumret anger vilken
 grupp av bolagsformer som den juridiska personen tillhör. 

Inledande siffra Bolagsform 
2 Stat, landsting eller kommun 
5 Aktiebolag 
7 Ekonomisk förening 
8 Stiftelse eller ideell förening 
9 Handelsbolag, kommanditbolag
learnMedlem sedan jan. 20051 130 inlägg
#10

Ok, och hur ska jag applicera dessa regler i koden? :)

NicrosoftMedlem sedan dec. 19995 718 inlägg
#11

Det har jag ingen aning om :) Ville bara tipsa om vilka nuffror som är vad. :)

132 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)