FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Convertir a xHarbour
Posts: 199
Joined: Fri Apr 18, 2008 04:21 PM
Convertir a xHarbour
Posted: Wed Dec 19, 2012 09:54 PM

Como convierto este código de c# a xharbour.

private string ValidarNit(string numeronit)
{
string nitvalido = null;
numeronit = numeronit.ToUpper();
numeronit = numeronit.Trim();

        //expresion regular que valida si el el string cumple con el patron del nit
        string strPatron = @"^[0-9]+-([K]|[0-9])$";

        bool coincide= Regex.IsMatch(numeronit, strPatron);

        if (coincide == true & numeronit.Length > 3)
        {
            //obtiene la posicion del guion 
            int pos = numeronit.IndexOf("-");

            //obtiene los numeros antes del guion
            string strCorrelativo = numeronit.Substring(0, pos);
            //obtiene el Digito Verificador
            string strDigitoVerificador = numeronit.Substring(pos + 1);
            strDigitoVerificador = strDigitoVerificador.Trim();

            //variables para la validacion
            int Factor = strCorrelativo.Length + 1;
            int Suma = 0;
            int Valor = 0;

            //empieza el proceso de la validacion
            for (int x = 0; x <= pos - 1; x++)
            {
                Valor = Int32.Parse(numeronit.Substring(x,1));
                Suma = Suma + (Valor * Factor);
                Factor = Factor - 1;
            }

            //Se obtiene el residuo para validar con el Digito Verificador
            double xMod11 = 0;
            xMod11 = (11 - (Suma % 11)) % 11;
            string verificador = Math.Floor(xMod11).ToString();

            if ((verificador.Equals(strDigitoVerificador)) | (xMod11 == 10 && strDigitoVerificador.Equals("K")))
            {
                nitvalido = numeronit;

                nitvalido = nitvalido.Replace("-", "");

                string ceros = "";

                //se complementa con ceros el nit validado
                for (int g = 0; g < 12 - nitvalido.Length; g++)
                {
                    ceros += "0";
                }

                nitvalido = ceros + nitvalido;
            }
            else
            {
                nitvalido = "0000000000CF";
            }

        }
        else
        {
            string nit = "";

            if (numeronit.Length >= 1)
            {
                nit = numeronit.Substring(0, 1);

                if (nit.Equals("C"))
                {
                    nitvalido = "0000000000CF";
                }
                else
                {
                    nitvalido = "0000000000CF";
                }
            }
            else
            {
                nitvalido = "0000000000CF";
            }
        }


        //retorna el nit ya validado y con el formato requerido para el XML
        return nitvalido;
    }

Gracias.

Saludos a todos.

Continue the discussion