Avatar billede angelenglen Nybegynder
22. september 2014 - 09:46 Der er 8 kommentarer og
1 løsning

C# Validering af CVR nummer (modulus)

Svaret kan også være i VB.Net.

Jeg har brug for at kunne validere om et CVR nummer er korrekt i forhold til modulus validering.

Jeg fandt et eksempel i PHP, måske det kan hjælpe?

[div]
function Check_CVR ($CVR)
{
if ($CVR == False) return;
$cvrarray = str_split((string) $CVR);
$controlNumber = array_pop($cvrarray);
$weights = array(2, 7, 6, 5, 4, 3, 2);
$Sum = array_sum(array_map(create_function('$w,$n','retur n $w*$n;'),$weights, $cvrarray));

$Remainder = $Sum % 11;
$Last_Digit = (11 - $Remainder) % 11;

$CVR_Correct = ($Last_Digit == $controlNumber);
return $CVR_Correct;
}
[div]
Avatar billede Slater Ekspert
22. september 2014 - 09:59 #1
Modulus-validering er afskaffet for længe siden. CPR-numre behøver ikke overholde det.
Avatar billede sonalias Seniormester
22. september 2014 - 10:12 #2
/// <summary>
        /// Checks the check digits of a Danish VAT number.
        /// </summary>
        /// <param name="vat">The vat.</param>
        /// <returns></returns>
        private static bool ValidateVAT_DK(String vat)
        {
            var i = 0;
            var total = new[] { 2, 7, 6, 5, 4, 3, 2, 1 }.Sum(m => GetInt(vat[i++]) * m);

            // The remainder should be 0 for it to be valid..
            return total % 11 == 0;
        }
Avatar billede angelenglen Nybegynder
22. september 2014 - 10:16 #3
Hmm ok, men hvis modulus er afskaffet, hvordan validerer man så om et CVR nummer er gyldigt?

Udover blot at tjekke at det er et tal på 8 cifre altså...

Jeg ved godt at det er ud over mit spørgsmål, og at sonalias har svaret på det, så jeg tildeler points til ham - men hvis du kan hjælpe med det andet, giver jeg dig samme antal points for det også, bagefter, selvfølgelig :-)
Avatar billede Slater Ekspert
22. september 2014 - 10:22 #4
Det kan du ikke. Der findes ikke længere nogen valideringsmuligheder, ud over de 10 cifre og evt. bindestregen, som dog ikke altid er et krav.

"CPR-kontoret skal atter engang opfordre alle brugere af personnumre om at indrette deres it-systemer således, at de også kan håndtere personnumre uden modulus kontrollen."

https://cpr.dk/cpr-systemet/opbygning-af-cpr-nummeret/

Dog kan du, hvis du virkelig vil, stadig validere CPR-numre fra før 2007, hvilket stadig må antages at være størstedelen af dine besøgende i dag - men det er ikke fremtidssikret, og CPR registret anbefaler at man lader være.
Avatar billede angelenglen Nybegynder
22. september 2014 - 10:53 #5
Hov! Du snakker CPR - jeg snakker CVR!

Mon modulus testen så stadig er gyldig?
Avatar billede repox Seniormester
22. september 2014 - 11:44 #6
22. september 2014 - 11:47 #7
Du kan stadig benytte modulus 11-kontrollen af CVR-numre.

Det er udelukende CPR-numre tildelt efter 2007 der ikke kan modulus-kontrolleres.

Så sonalias' løsning ovenfor er stadig aktuel.
Avatar billede Slater Ekspert
22. september 2014 - 11:54 #8
Så for satan, det er jeg ked af. Jeg har fuldstændig overset det var V og ikke P. Beklager meget.
Avatar billede angelenglen Nybegynder
22. september 2014 - 12:01 #9
Fair nok.

Jeg har vist det svar jeg har brug for - tak til jer alle for jeres hjælp :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester