Generere KID med MOD10

Denne artikkelen gir deg et kodeeksempel på hvordan du kan generere KID basert på modulus 10 algoritmen.

Denne artikkelen inneholder i hovedsak bare et kodeExample, så dersom du ikke er utvikler bør du snakke med en utvikler for å bruke dette.

Koden er skrevet i C#, og bruker blant annet LINQ for å gjøre den så kort som mulig. Det er ikke gjort noen optimalisering av koden hastighetsmessig.

Funksjonen under kan kalles på for Example denne måten: GetKID(234567).ToString(); Resultatet vil da blir strengen "2345676".

Koden:

    /// <summary>
    /// Funksjon for å generere KID med modulus 10
    /// </summary>
    /// <param name="InvoiceId">Tallet vi skal finne kontrollsifferet til</param>
    /// <param name="excludeOrderId">Skal kun kontrollsifferet returneres? Valgfri.</param>
    /// <returns></returns>
    public static int GetKID(int InvoiceId, bool excludeOrderId = false)
    {
        int sum = 0;

        //Variabel for å holde styr på om tallet skal ganges med to eller ei (gjøres med annenhvert tall)
        bool isEven = false;

        //Går gjennom alle tallene baklengs
        foreach (var charNumber in InvoiceId.ToString().Reverse())
        {
            int number = Util.CInt(charNumber.ToString());

            //Sjekker om det er partall
            if (isEven == true)
                sum += number;

            else
            {
                //Siden det er oddetall må vi gange med 2
                int partialSum = number * 2;
                
                //Dersom summen er 10 eller høyere, må vi finne tverrsummen
                if (partialSum >= 10)
                    partialSum = partialSum.ToString().Sum(c => c - '0');
                
                sum += partialSum;
            }
            isEven = !isEven;
        }

        int returnValue = ((((sum / 10) + 1) * 10) - sum) % 10;
        
        if (excludeOrderId)
            return returnValue;
        else
            return Util.CInt(InvoiceId.ToString() + returnValue);
    }
	 

Vi stiller ingen garantier for at kodeExampleet fungerer til ditt bruk, og takker forumet freak.no for inspirasjon.