Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
firstline1
titleValidar RUTCURP
linenumberstrue
collapsetrue
Funcion validarCURP(curp)
	
	// se convierte a mayúsculas y se eliminan espacios en blanco al inicio y al final del string recibido
	string curp := convertir_a_mayusculas(eliminar_espacios(curp))
 
	Si longitud(curp) != 18 Entonces
		
		regresa FALSO
 
	Si no Entonces
 
		// se calcula el digito verificador del curp
		integer digito := calculasDigitoVerificadorCURP(curp);

		// se obtiene el último digito del curp
		integer ultimoDigito := cortar_string(curp, -1)
        
		// expresión regular a evaluar, obtenido de RENAPO
        string patron = "/[A-Z]{4}\d{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{3}[A-Z0-9][0-9]/"

        Si !coincide(patron, curp) Entonces

      	    regresa FALSO

        Si no si !(digito = ultimoDigito) Entonces

        	regresa FALSO

        Si no Entonces 

    		regresa VERDADERO

        Fin Si		
	Fin Si
Fin Funcion

...

Code Block
firstline1
titleFormateo de RUTcalcularDigitoVerificador
linenumberstrue
collapsetrue
Funcion calcularDigitoVerificadorCURP(curp)
 
	// se obtienen los primeros 17 caracteres del string recibido
	string segmentoRaiz := cortar_string($curp,17)
	// se el correspondiente valor en utf8 para cada letra del abecedario
	arreglo chrCaracter := decodificar_utf8("0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ")

    array intFactor := []
    float lngSuma := 0.0
	float lngDigito := 0.0
 

	// se recorren los strings de segmentoRaiz y chrCaracter
	Para i = 0 Hasta i <= 1716 Hacer
		string letraRaiz := cortar_string(segmentoRaiz, i, 1)
 			
		Para j = 0 Hasta j <= 3736 Hacer


				Si cortar_string() 		Fin Para
	Fin Para

        for($i=0; $i<17; $i++)
        {
            for($j=0; $j<37; $j++)
            {
                if(substr($segRaiz,$i,1) === substr($chrCaracter,$j,1))
                {  				
                    $intFactor[$i]=$j;
                }
            }
        }

        for($k = 0; $k < 17; $k++)
        {
            $lngSuma= $lngSuma + (($intFactor[$k]) * (18 - $k));
        }

        $lngDigito = (10 - ($lngSuma % 10));

        if($lngDigito===10)
        {
            $lngDigito=0;
        }

        return $lngDigito;
    }
 
Funcion formatearRUT(rut)
 
	// se eliminan letras y caracteres no permitidos, 
	// quedando solo números y la letra K (si es que existe en el string proporcionado)
	string rut := reemplazar_invalidos("/[^0-9K]/", '', rut)
 
	// se obtiene el digito verificar, el cual es el último caracter del string del RUT
	string verificador = cortar_string(rut, -1);
		
	// se obtienen los primeros 8 caracteres de rut
	string rut1 := cortar_string(rut, 8)
		
	// se le da la vuelta a la cadena obtenida al cortar los primeros ocho caracteres del rut
	string rut2 := voltear_string(rut1);
 
	integer n := 0
	string rutFormateado := ''
	
	// se recorre rut2
	Para xletraChr := cortar_string(chrCaracter, i, 1)

			// cuando la letra de ambos strings coincide, se guarda la posición en la que coincidieron
			Si letraRaiz = letraChr Entonces
					intFactor[i] := j
			Fin Si
		Fin Para
	Fin Para
 
	Para k = 0 Hasta xk < longitud(rut2)= 16 Hacer
		
		// se concatena rut[x] a la cadena que será el resultado formateado
		rutFormateado realiza calculo para sumar los valores de las posiciones donde coincidieron las letras
		lngSuma := rutFormateadolngSuma + rut(intFactor[xk] 			
		// se incrementa n
		n := n + 1
			
	* (18 - k))
	
	Fin Para

	// sise nobtiene esel mayor a la cantidadmodulo 10 de digitoslngSuma eny else arreglo,le volverresta a empezar10
		SilngDigito n := 310 Entonces
				// si ya se agregaron 3 digitos, se agrega un punto
			rutFormateado := rutFormateado + '.';
				// se reinicia el contador
			n- (lngSuma modulo 10)

	Si lngDigito = 10 Entonces
	    lngDigito := 0;
		Fin Si
	Fin Para
 
	// se le da la vuelta al rutFormateado y se le agrega el digito
verificador separado por un guion
	regresar voltear_string(rutFormateado) + '-' + verificador 
 regresa lngDigito
Fin Funcion

 

 

Panel
titleEnlaces

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId487df0e8-a840-3c8c-bc14-813b0587c34e
keyPSL-5769

 

...