Functie: validare CNP

Lasă un comentariu

6 Martie 2013 de liviustoica55


private boolean validateCNP(RER_CNP _cnp)

{

#define.Multipliers([2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9])

#define.Modulo11(11)

#define.InvalidValue(10)

 

boolean ret = true;

 

int digit;

int result;

Counter pos;

 

if(strlen(_cnp) != strlen(strkeep(_cnp,’1234567890′)))

{

ret = checkFailed(strfmt(„CNP number ‘%1’ should be numeric.”, _cnp));

}

 

if (strlen(_cnp) != conlen(#Multipliers) + 1)

{

ret = checkFailed(strfmt(„The length of the CNP number should be %1, but it is %2.”, conlen(#Multipliers) + 1, strlen(_cnp)));

}

 

for (pos = 1; pos < strlen(_cnp); pos++)

{

digit = str2int(substr(_cnp, pos, 1));

result = result + digit * conpeek(#Multipliers, pos);

}

 

digit = str2int(substr(_cnp, pos, 1));

 

 

result = result mod #Modulo11;

 

if (!((result == #InvalidValue && digit ==1) || (result <10 && result == digit)))

{

//ret = checkFailed(„Error in CNP number.”);

checkFailed(strfmt(„Error in CNP number: ‘%1’.”, _cnp));

}

return ret;

}

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s

%d blogeri au apreciat asta: