poniedziałek, 2 lipca 2012

Walidacja numeru NIP w c#

Funkcja walidująca numer NIP w c# wraz z formatowaniem.

/// <summary>
/// Walidacja NIP
/// </summary>
/// <param name="szNIP"></param>
/// <param name="retFormated"> Zwracany NIP jest w postaci sformatowanej</param>
/// <returns>zwraca true/false</returns>


public static bool ValidateNIP(ref string szNIP, bool retFormated = true)
{
    byte[] tab = new byte[9] { 6, 5, 7, 2, 3, 4, 5, 6, 7 };
    byte[] tablicz = new byte[] { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 };
    bool bResult = false;
    int suma = 0;
    int sumcontrol = 0;

    szNIP = szNIP.Replace("-", "");
    szNIP = szNIP.Trim();

    if (szNIP.Length == 10)
    {
        foreach (char l in szNIP)
        {
            byte b = Convert.ToByte(l);
            if (Array.IndexOf(tablicz, Convert.ToByte(l)) == -1) return false;
        }

        sumcontrol = Convert.ToInt32(szNIP[9].ToString());

        for (int i = 0; i < 9; i++)
        {
            suma += tab[i] * Convert.ToInt32(szNIP[i].ToString());
        }

        bResult = ((suma % 11) == sumcontrol);
    }
    else return false;

    if (bResult && retFormated)
    {
        szNIP = szNIP.Insert(8, "-")
                        .Insert(6, "-")
                        .Insert(3, "-");              
    }

    return bResult;
}

Brak komentarzy:

Publikowanie komentarza