Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2009, 12:50
Avatar de akela
akela
 
Fecha de Ingreso: septiembre-2000
Ubicación: Frente a la compu
Mensajes: 660
Antigüedad: 23 años, 7 meses
Puntos: 2
De acuerdo les dejo código para Calcular CURP y RFC

mucho tiempo busqué incluso aun me llegan notificaciones de un viejo post sobre como calcular la CURP

aquí les dejo el código en Javascript que me encontré y he podido verificar que funciona! no es mio, yo no lo escribí sólo se los comparto.

saludos.

(les dejo el código en dos partes porque al parecer no cabe :P)


Código:
function obtieneRFC(forma, pstRFC){
		with (forma) {
			var fecha = dsFechaNac.value;
			var sexo = idSexo.value;
			var estado = idEstadoNac.value;
			var nombre = dsNombre.value;
			var paterno = dsPaterno.value;
			var materno = dsMaterno.value;	
		}
		
		fecha = fecha.substring(6)+"-"+fecha.substring(3,5)+"-"+fecha.substring(0,2);
		
		if (sexo == 1){
			sexo = "H";
		} 
		if (sexo == 2){
			sexo = "M";
		}
		switch (estado){
			case "1":
			estado = "AS";
			break;
			case "2":
			estado = "BC";
			break;
			case "3":
			estado = "BS";
			break;
			case "4":
			estado = "CC";
			break;
			case "5":
			estado = "CS";
			break;
			case "6":
			estado = "CH";
			break;
			case "7":
			estado = "CL";
			break;
			case "8":
			estado = "CM";
			break;
			case "9":
			estado = "DF";
			break;
			case "10":
			estado = "DG";
			break;
			case "11":
			estado = "GT";
			break;
			case "12":
			estado = "GR";
			break;
			case "13":
			estado = "HG";
			break;
			case "14":
			estado = "JC";
			break;
			case "15":
			estado = "MC";
			break;
			case "16":
			estado = "MN";
			break;
			case "17":
			estado = "MS";
			break;
			case "18":
			estado = "NT";
			break;
			case "19":
			estado = "NL";
			break;
			case "20":
			estado = "OC";
			break;
			case "21":
			estado = "PL";
			break;
			case "22":
			estado = "QT";
			break;
			case "23":
			estado = "QR";
			break;
			case "24":
			estado = "SP";
			break;
			case "25":
			estado = "SL";
			break;
			case "26":
			estado = "SR";
			break;
			case "27":
			estado = "TC";
			break;
			case "28":
			estado = "TS";
			break;
			case "29":
			estado = "TL";
			break;
			case "30":
			estado = "VZ";
			break;
			
			
		}
		pstRFC.value = fnCalculaCURP( nombre, paterno, materno, fecha, sexo, estado ).substring(0,10);
	}
function obtieneCURP(forma, pstCURP){
		with (forma) {
			var fecha = dsFechaNac.value;
			var sexo = idSexo.value;
			var estado = idEstadoNac.value;
			var nombre = dsNombre.value;
			var paterno = dsPaterno.value;
			var materno = dsMaterno.value;	
		}
		
		fecha = fecha.substring(6)+"-"+fecha.substring(3,5)+"-"+fecha.substring(0,2);
		
		if (sexo == 1){
			sexo = "H";
		} 
		if (sexo == 2){
			sexo = "M";
		}
		switch (estado){
			case "1":
			estado = "AS";
			break;
			case "2":
			estado = "BC";
			break;
			case "3":
			estado = "BS";
			break;
			case "4":
			estado = "CC";
			break;
			case "5":
			estado = "CS";
			break;
			case "6":
			estado = "CH";
			break;
			case "7":
			estado = "CL";
			break;
			case "8":
			estado = "CM";
			break;
			case "9":
			estado = "DF";
			break;
			case "10":
			estado = "DG";
			break;
			case "11":
			estado = "GT";
			break;
			case "12":
			estado = "GR";
			break;
			case "13":
			estado = "HG";
			break;
			case "14":
			estado = "JC";
			break;
			case "15":
			estado = "MC";
			break;
			case "16":
			estado = "MN";
			break;
			case "17":
			estado = "MS";
			break;
			case "18":
			estado = "NT";
			break;
			case "19":
			estado = "NL";
			break;
			case "20":
			estado = "OC";
			break;
			case "21":
			estado = "PL";
			break;
			case "22":
			estado = "QT";
			break;
			case "23":
			estado = "QR";
			break;
			case "24":
			estado = "SP";
			break;
			case "25":
			estado = "SL";
			break;
			case "26":
			estado = "SR";
			break;
			case "27":
			estado = "TC";
			break;
			case "28":
			estado = "TS";
			break;
			case "29":
			estado = "TL";
			break;
			case "30":
			estado = "VZ";
			break;
			
			
		}
		pstCURP.value = fnCalculaCURP( nombre, paterno, materno, fecha, sexo, estado );
	}
	
function fnCalculaCURP( pstNombre, pstPaterno, pstMaterno, dfecha, pstSexo, pnuCveEntidad ) {  
/*
pstNombre="MARIA TERESITA DEL NIÑO JESUS";
pstPaterno="AGUERREBERE";
pstMaterno="BARROSO";
dfecha="1937-11-22";
pstSexo = "M";
pnuCveEntidad ="DF";

pstNombre="ROCIO";
pstPaterno="URIBARREN";
pstMaterno="AGUERREBERE";
dfecha="1969-02-03";
pstSexo = "M";
pnuCveEntidad ="DF";


pstNombre="AINHOA";
pstPaterno="ESTURAU";
pstMaterno="URIBARREN";
dfecha="2003-03-05";
pstSexo = "M";
pnuCveEntidad ="QR";




pstNombre="MARIO";
pstPaterno="PIÑA";
pstMaterno="FLORES";
dfecha="1968-03-30";
pstSexo = "H";
pnuCveEntidad ="DF";
*/

pstCURP   ="";
pstDigVer ="";
contador  =0;
contador1 =0;
pstCom	  ="";
numVer    =0.00;
valor     =0;
sumatoria =0;



// se declaran las varibale que se van a utilizar para ontener la CURP

NOMBRES  ="";
APATERNO ="";
AMATERNO ="";
T_NOMTOT ="";
NOMBRE1  =""; //PRIMER NOMBRE
NOMBRE2  =""; //DEMAS NOMBRES
NOMBRES_LONGITUD =0; //LONGITUD DE TODOS @NOMBRES
var NOMBRE1_LONGITUD =0; //LONGITUD DEL PRIMER NOMBRE(MAS UNO,EL QUE SOBRA ES UN ESPACIO EN BLANCO)
APATERNO1 =""; //PRIMER NOMBRE
APATERNO2 =""; //DEMAS NOMBRES
APATERNO_LONGITUD =0; //LONGITUD DE TODOS @NOMBRES
APATERNO1_LONGITUD =0; //LONGITUD DEL PRIMER NOMBRE(MAS UNO,EL QUE SOBRA ES UN ESPACIO EN BLANCO)
AMATERNO1 =""; //PRIMER NOMBRE
AMATERNO2 =""; //DEMAS NOMBRES
AMATERNO_LONGITUD =0; //LONGITUD DE TODOS @NOMBRES
AMATERNO1_LONGITUD =0; //LONGITUD DEL PRIMER NOMBRE(MAS UNO,EL QUE SOBRA ES UN ESPACIO EN BLANCO)
VARLOOPS =0; //VARIABLE PARA LOS LOOPS, SE INICIALIZA AL INICIR UN LOOP


// Se inicializan las variables para obtener la primera parte de la CURP


NOMBRES  = pstNombre.replace(/^\s+|\s+$/g,"");
APATERNO = pstPaterno.replace(/^\s+|\s+$/g,"");
AMATERNO = pstMaterno.replace(/^\s+|\s+$/g,"");

T_NOMTOT = APATERNO + ' '+ AMATERNO + ' '+ NOMBRES;



// Se procesan los nombres de pila


VARLOOPS = 0;

while (VARLOOPS != 1)
	{

		NOMBRES_LONGITUD = NOMBRES.length

		var splitNombres = NOMBRES.split(" ");
		var splitNombre1 = splitNombres[0];
		
		NOMBRE1_LONGITUD = splitNombre1.length;
//		NOMBRE1_LONGITUD = PATINDEX('% %',@NOMBRES)

		if (NOMBRE1_LONGITUD = 0)
		   {
		    NOMBRE1_LONGITUD = NOMBRES_LONGITUD;
		   }
		    NOMBRE1 =  NOMBRES.substring(0,splitNombre1.length);
		    NOMBRE2 =  NOMBRES.substring(splitNombre1.length + 1, NOMBRES.length);


// Se quitan los nombres de JOSE, MARIA,MA,MA.
/*
if (NOMBRE1 IN ('JOSE','MARIA','MA.','MA','DE','LA','LAS','MC','VON','DEL','LOS','Y','MAC','VAN') && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2
}
else
{
		VARLOOPS = 1
}
*/

if (NOMBRE1 == 'JOSE' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'MARIA' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'MA.' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'MA' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'DE' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'LA' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'LAS' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}


if (NOMBRE1 == 'MC' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'VON' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}


if (NOMBRE1 == 'DEL' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}


if (NOMBRE1 == 'LOS' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'Y' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'MAC' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

if (NOMBRE1 == 'VAN' && NOMBRE2 != '')
{
		NOMBRES = NOMBRE2;
}
else
{
		VARLOOPS = 1;
}

} // fin varloops <> 1


// Se procesan los APELLIDOS, PATERNO EN UN LOOP

VARLOOPS = 0;

while (VARLOOPS != 1)
{

		//SET @APATERNO_LONGITUD = LEN(@APATERNO)
		APATERNO_LONGITUD = APATERNO.length;		
		
		//SET @APATERNO1_LONGITUD = PATINDEX('% %',@APATERNO)
		var splitPaterno = APATERNO.split(" ");
		var splitPaterno1 = splitPaterno[0];
		APATERNO1_LONGITUD = splitPaterno1.length;

		if (APATERNO1_LONGITUD = 0)
		   {
		     APATERNO1_LONGITUD = APATERNO_LONGITUD;
		   }
//		APATERNO1 = RTRIM(LEFT(@APATERNO,@APATERNO1_LONGITUD))
//		APATERNO2 = LTRIM(RIGHT(@APATERNO,@APATERNO_LONGITUD - @APATERNO1_LONGITUD))

		APATERNO1 =  APATERNO.substring(0,splitPaterno1.length);
		APATERNO2 =  APATERNO.substring(splitPaterno1.length + 1, APATERNO.length);
__________________
Si quieres que las cosas sucédan

provocalas!