webForumDet fria alternativet

kolla personnumer/organisationsnummer

PHPur PHP

6 svar · 578 visningar · startad av Qonos

QonosMedlem sedan sep. 2000438 inlägg
#1

kolla i scriptarkivet och hitta "Metod för att kontrollera personnummer", är det samma "regler" som gäller för personnummer som det är för organisationsnummer?

jag gissar på att det inte är detta, så är det någon som har en kodsnutt för hur man kollar att det är ett giltligt personnummer || organisations nummer?

Sen finns det ju "moms nr/vat" kan man kolla detta på något sätt??

QonosMedlem sedan sep. 2000438 inlägg
#2

moms nr/vat har jag hittat uppbyggnaden till...
http://www.pruefziffernberechnung.de/U/USt-IdNr.shtml
men det är på tyska och jag kan typ inte ett ord tyska

QonosMedlem sedan sep. 2000438 inlägg
#3

oki jag ger mig :P

personnumer & organisationsnummer fungerar med den funktionen, men det är det här med moms nr/vat grejen kvar, någon som har en lösning på detta

QonosMedlem sedan sep. 2000438 inlägg
#4

Nu har jag kommit lite närmre

fick detta svaret av någon som är webansvarig eller nått liknande på rsv.se

"Här är algoritmen i C. Lite krångligt, men tyvärr har jag inte den skriven
i klartext. Det är alltså samma modulo 10 koll som görs på personnummer.
Det finns mer utförliga kontroller, men tyvärr fick jag inte tag på de
personer som antingen handlägger eller programmerar moms-rutiner. Om du
inte tycker att nedanstående är tillräckligt får du maila tillbaka."

#define CHARINT(c) (int) ((c) - '0')
#define LENVATSE 12
typedef enum { FALSE, TRUE } Bool;

static Bool CheckSe (char *pStringVatNo)
{
register int i;
register int accu = 0;
register int res;

 for (i = 0; i \<= 8; i+=2)
 {
      res = 2 \* CHARINT ( \*(pStringVatNo + i) );
      if (res \> 9)
           res -= 9;
      accu += res;
 }

 for (i = 1; i \<= 7; i+=2)
 {
      accu += CHARINT ( \*(pStringVatNo + i) );
 }

 res = 10 - accu % 10;
 if (res == 10)
    res = 0;

 return (CHARINT (\*(pStringVatNo + LENVATSE - 3)) == res) ? TRUE : 

FALSE;

}

så det borde ju vara liknande/samma kod som den som kollar personnummret men jag måste göra nått fel för jag får det inte att fungera. hmmm

QonosMedlem sedan sep. 2000438 inlägg
#5

define('LENVATSE', 12);
function CheckSe ($pStringVatNo) 
{
	$accu = 0;
	for ($i = 0; $i <= 8; $i+=2) 
	{                
		$res = 2 * (int)$pStringVatNo[$i];                
		if ($res > 9)                        
			$res -= 9;                
	
		$accu += $res;        
	}        
	
	for ($i = 1; $i <= 7; $i+=2) 
	{                
		$accu += (int)$pStringVatNo[$i];        
	}       
	
	$res = 10 - $accu % 10;        
	if ($res == 10)                
		$res = 0;        
	
	return $pStringVatNo[LENVATSE-3]==$res;
}

den ger en etta om VAT nummret är OK och ger inte nått om det är fel...

QonosMedlem sedan sep. 2000438 inlägg
#6

den används så här

$vatnr = "700108553401";

 if ( CheckSe ($vatnr) == 1)
	echo "OK";
else
	echo "EJ OK";

Fungerar dock bara på svenska VAT-nummer

QonosMedlem sedan sep. 2000438 inlägg
#7

Inser nu att den inte riktigt fungerar som den skall :(

129 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)