QonosMedlem sedan sep. 2000438 inlägg hejsan sitter och skall göra om en funktion till php från C men får det inte att fungera så nu undrar jag om någon av er vet vilken matematisk formel denna funktionen använder
#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;
}
nikoMedlem sedan juni 20022 599 inlägg Den använder väl inte direkt någon känd matematisk formel à la Pythagoras sats, om det är det du menar?
Vad den gör är helt enkelt att validera formatet hos ett VAT-nummer.
I pseudokod borde det bli:
för siffra 0,2,4,6,8 i VAT-Numret
{
om (siffervärdet>4)
sätt: accu=accu+2*siffervärdet-9
annars
sätt: accu=accu+2*siffervärdet
}
för siffra 1,3,5,7 i VAT-Numret
{
sätt: accu=accu+siffervärdet
}
res=10-(resten vid accu heltalsdividerat med 10)
om res=10 sätt: res=0
om (siffra 9 i VAT-Numret=res)
VAT-Nummer OK!
annars
VAT-Nummer inte OK!
Om man sen kan PHP så borde det inte vara så svårt att implementera det. :)
QonosMedlem sedan sep. 2000438 inlägg tack.. jag har gjort om den till php och det fungerade, men felet var det att jag behövde göra lite mer för att den skulle fungera riktigt