| ||||
Hola. Investigando un poco, he visto que para generar el curp hay que tener en cuenta muchos parámetros. También hay que tener en cuenta que los dos últimos dígitos, los otorga la secretaría del gobierno. Si bien casi siempre el penúltimo es cero, el último (que es un dígito verificador) no sé como se calcula. No va a ser tarea sencilla, pero si te sigue interesando, veré lo que se puede hacer. Si te interesa más info: http://www.seg.guanajuato.gob.mx/Ism...0la%20CURP.DOC páginas de la 10 a la 16 |
| ||||
Hola de nuevo. Prueba esto: Cálculo del CURP Está en fase de desarrollo y tiene fallos. Pero para que veas algo. |
| ||||
Alguien ya resolvio este script ? Aqui esta una aplicacion que calcula el CURP Mexicano, pero lo ideal seria hacerlo en Javascript para poder usarlo en una web ¿no? esta es la liga http://aplicarh.tripod.com.mx/Descargas/CalcCURP.exe Algun programador en JavaScript q tenga la solucion? saludos |
| ||||
Cita: ¿Qué es la CURP?
Iniciado por wcfenix Solo por curiosidad no soy de mexico y he visto el termino CURP en varios msjs en este foro... que es el CURP? Es la Clave Única de Registro de Población, es un instrumento de registro que se asigna a todas las personas que viven en el territorio nacional, así como a los mexicanos que viven en el extranjero. El responsable de asignar la CURP y de expedir la constancia respectiva es el Registro Nacional de Población (RENAPO). Contribuye al fortalecimiento de las condiciones de seguridad jurídica de la población (en teoria) Fuente: CONDUCEF |
| ||||
De Perú Ahhhhh!!! Bueno ahora entiendo, yo soy de Perú y aca se llama DNI (Documento Nacional de Identidad) Bueno he encontrado varios codigos para sacar la letra que es asignada pero ninguno funciona al 100% |
| ||||
Propongo Sacar El Codigo Del Curp En Javascript Hola. Al presionar en: http://www.seg.guanajuato.gob.mx/Ism...0la%20CURP.DOC indica el navegador que no existe la página, me es urgente conocer cómo calcular el CURP para un programa en visualfoxpro. Hechame la mano, enviame el documento que refieres y les regreso la rutina en javascript y php, así como en xbase para obtener el CURP ( exceptuando los dos dígitos finales) Gracias. mi e-mail: [email protected] ccp [email protected] Última edición por moroccotopo; 30/03/2005 a las 15:29 |
| ||||
Hola. Aquí dejo el texto completo. A falta de las excepciones que tiene el cálculo. No he encontrado la lista de palabras. http://www.terra.es/personal3/atavia...de la curp.doc |
| |||
Para el calculo del Digito verificador de la CURP esto tiene un buen de tiempo, pero bueno las exepciones son de del los debes eliminarlos de los apellidos jose maria debes eliminarlos del nombre, siempre y cuando tenga otro nombre si existiera la Ñ en la CURP resultado, esta debe sustituirse por X el digito verificador se calcula asignandole un valor a cada uno de los caracteres que pueden integrar la CURP 0-0 1-1 2-2 3-3 4-4 5-5 6-6 7-7 8-8 9-9 A-10 B-11 C-12 D-13 E-14 F-15 G-16 H-17 I-18 J-19 K-20 L-21 M-22 Ñ-23 N-24 O-25 P-26 Q-27 R-28 S-29 T-30 U-31 V-32 W-33 X-34 Y-35 Z-36 multiplica cada caracter por la posicion en la que se encuantra, numerando de derecha a izquierda, es decir si mi CURP es AMNJ801224HSLGHE deberia realizar las si operaciones A= (10 * 18) = 180 M= (22 * 17) = 374 N= (24 * 16) = 384 y asi para todos los caracteres despues sumaria todos los totales a este nuevo total lo divido entre 10 y a el residuo que me quede le resto 10 y le saco el valor absoluto en caso de que haya sido negativo y esto me arroja el digito verificador en caso de que sea 10 el digito es 0 con esto solo nos restaria saber cual es el peniltimo digito pero como para casi todos es 0 pues esto nos funcionaria en la mayoria de los casos Espero sea de utilidad. |
| |||
Calcular Digitoverificador RFC - CURP he logrado calcular el RFC con digito verificador y he logrado calcular la CURP pero NO logro calcular el digito verificador, ¿alguien tendra un ejemplo de codigo en visual basic para calcularlo? |
| ||||
Pues yo les puedo decir que el PENULTIMO dígito es 0 si naciste antes del año 2000 y 1 si naciste después de ese año. así que ahí está el rompecabezas completo.
__________________ Si quieres que las cosas sucédan provocalas! |
| ||||
Ahora, me salta una duda, no se si alguien tiene la lista de palabras "malas" que no pueden ser parte de la CURP, o será la misma que en el RFC?
__________________ Si quieres que las cosas sucédan provocalas! |
| |||
Hola. La asignación y cálculo de la homoclave (digito verificador) de la Clave Única de Registro de Población CURP es responsabilidad de la RENAPO (gobierno federal). Se realiza a través de un sistema único para este fin, no tiene nada que ver con el RFC, a pesar de tener similitudes en la forma de su conformación. Te recomiendo que mejor acudas a un Módulo Curp más cercano y solicites la asignación de tu clave. La clave CURP se asigna a todos las personas que viven en territorio nacional y a los extranjeros residentes en el pais. |
| |||
La CURP esta conformada por nombre, fecha de nacimiento, sexo, entidad federativa de nacimiento. y por último la homoclave, para evitar duplicidad. Primera letra del primer apellido, primera vocal del primer apellido, primera letra del segundo apellido, primera letra del nombre de pila, si se tienen dos nombres se toma la primera letra del primer nombre, fecha de nacimiento empezando por el año a dos digitos, sexo si es mujer es M, si es hombre es H, entidad federativa de nacimiento primera letra y ultima consonante, consonantes internas de apellidos y nombre de pila y por último los dos digitos asignados por RENAPO de manera sistematizada. La homoclave se puede asignar en dos digitos números o una letra y un número. Ejemplo: ANA PATRICIA JIMENEZ REVUELTA ES UNA MUJER QUE NACIO EL 24 DE FEBRERO DE 2003 EN EL ESTADO DE VERACRUZ. CURP. JIRA0302024MVZMVN (A4) Digito Verificador. |
| ||||
Cita:
Iniciado por HOPEGRACE La CURP esta conformada por nombre, fecha de nacimiento, sexo, entidad federativa de nacimiento. y por último la homoclave, para evitar duplicidad. Primera letra del primer apellido, primera vocal del primer apellido, primera letra del segundo apellido, primera letra del nombre de pila, si se tienen dos nombres se toma la primera letra del primer nombre, fecha de nacimiento empezando por el año a dos digitos, sexo si es mujer es M, si es hombre es H, entidad federativa de nacimiento primera letra y ultima consonante, consonantes internas de apellidos y nombre de pila y por último los dos digitos asignados por RENAPO de manera sistematizada. La homoclave se puede asignar en dos digitos números o una letra y un número. Ejemplo: ANA PATRICIA JIMENEZ REVUELTA ES UNA MUJER QUE NACIO EL 24 DE FEBRERO DE 2003 EN EL ESTADO DE VERACRUZ. CURP. JIRA0302024MVZMVN (A4) Digito Verificador. Pues tienes una vaga idea de lo que es la curp El metodo que pone FIRESTONE2 funciona para el 90% de los casos, y el 10% que no funciona es porque la misma RENAPO tenía un error en su código y algunos casos los emitió con errores, así que podemos decir que ya tenemos el código para generar la CURP yo lo codifiqué en Delphi y funciona
__________________ Si quieres que las cosas sucédan provocalas! |
| |||
applet que genera la curp Tengo un applet que genera la 16 posiciones de la curp, faltan varias validaciones para nombre y appellidos El codigo es el siguiente import java.awt.*; import java.applet.Applet; import java.applet.Applet; public class Curp extends Applet { Label apellidop, apellidom, nombre, anio,dial, mesl, sexol, efl, titulo1, titulo2; TextField ap,am,n,a,cu; Button b; Choice dia,mes,ef; Checkbox s1,s2; CheckboxGroup cgb; Panel panelprin,paneltop,paneldw; Font fuente; int indicev,indicec,indicem,indicen,i; String curp, appse,f; public void init () { //creacion de paneles titulo1 = new Label ("Clave unica de regisro de poblacion"); titulo2 = new Label (""); panelprin = new Panel(); panelprin.setLayout(new GridLayout(12,12)); paneltop = new Panel(); paneltop.setLayout(new BorderLayout()); paneldw = new Panel(); paneldw.setLayout(new GridLayout(1,1)); //CREA CAMPOS DE TEXTO PARA EL NOMBRE apellidop = new Label("Apellido Paterno"); ap = new TextField(10); apellidom = new Label("Apellido Materno"); am = new TextField(10); nombre = new Label("Nombre(s)"); n = new TextField(15); //CREA CAMPOS DE SELECCION DIA,MES,ANI0 dial = new Label("dia"); dia = new Choice(); dia.addItem("01");dia.addItem("02");dia.addItem("0 3");dia.addItem("04"); dia.addItem("05");dia.addItem("06");dia.addItem("0 7");dia.addItem("08"); dia.addItem("09");dia.addItem("10");dia.addItem("1 1");dia.addItem("12"); dia.addItem("13");dia.addItem("14");dia.addItem("1 5");dia.addItem("16"); dia.addItem("17");dia.addItem("18");dia.addItem("1 9");dia.addItem("20"); dia.addItem("21");dia.addItem("22");dia.addItem("2 3");dia.addItem("24"); dia.addItem("25");dia.addItem("26");dia.addItem("2 7");dia.addItem("28"); dia.addItem("29");dia.addItem("30");dia.addItem("3 1"); mesl =new Label("Mes"); mes = new Choice(); mes.addItem("ENERO"); mes.addItem("FEBRERO");mes.addItem("MARZO"); mes.addItem("ABRIL"); mes.addItem("MAYO"); mes.addItem("JUNIO"); mes.addItem("JULIO"); mes.addItem("AGOSTO"); mes.addItem("SEPTIEMBRE");mes.addItem("OCTUBRE");m es.addItem("NOVIEMBRE");mes.addItem("DICIEMBRE"); anio = new Label("Anio"); a = new TextField(4); // CREA CAJA DE OPCIONES PARA SEXO sexol =new Label("Sexo"); cgb =new CheckboxGroup(); s1 = new Checkbox("Hombre",cgb,false); s2 = new Checkbox("Mujer",cgb,false); // CREA CAMPO DE SELECCION PARA ENTIDAD FEDERATIVA efl =new Label("Entidad Federativa de Nacimiento"); ef = new Choice(); ef.addItem("AGUASCALIENTES");ef.addItem("BAJA CALIFORNIA NORTE");ef.addItem("BAJA CALIFORNIA SUR");ef.addItem("CAMPECHE"); ef.addItem("CHIAPAS"); ef.addItem("CHIHUAHUA"); ef.addItem("COAHUILA"); ef.addItem("COLIMA"); ef.addItem("DURANGO"); ef.addItem("DISTRITO FEDERAL"); ef.addItem("ESTADO DE MEXICO"); ef.addItem("GUANAJUATO"); ef.addItem("GUERRERO"); ef.addItem("HIDALGO"); ef.addItem("JALISCO"); ef.addItem("MICHOACAN"); ef.addItem("MORELOS"); ef.addItem("NAYARIT"); ef.addItem("NUEVO LEON"); ef.addItem("OAXACA"); ef.addItem("PUEBLA"); ef.addItem("QUERETARO"); ef.addItem("QUINTANA ROO"); ef.addItem("SAN LUIS POTOSI"); ef.addItem("SINALOA"); ef.addItem("SONORA"); ef.addItem("TABASCO"); ef.addItem("TAMAULIPAS"); ef.addItem("TLAXCALA"); ef.addItem("VERACRUZ"); ef.addItem("YUCATAN"); ef.addItem("ZACATECAS"); ef.addItem("EXTRANJERO"); //CREACION DEL BOTON DE ACTIVACION DE LA CURP b =new Button("Curp"); // CREACION DEL CAMPO DE SALIDA DE LA CURP cu = new TextField(19); cu.setEditable(false); // AGREGA COMPONENTES A LOS PANELES fuente = new java.awt.Font("Arial", Font.BOLD, 12); setFont(fuente); paneltop.add("North",titulo1); panelprin.add(titulo2); panelprin.add(apellidop); panelprin.add(ap); panelprin.add(apellidom); panelprin.add(am); panelprin.add(nombre); panelprin.add(n); panelprin.add(dial); panelprin.add(dia); panelprin.add(mesl); panelprin.add(mes); panelprin.add(anio); panelprin.add(a); panelprin.add(sexol); panelprin.add(s1); panelprin.add(titulo2); panelprin.add(s2); panelprin.add(efl); panelprin.add(ef); paneldw.add(b); paneldw.add(cu); // AGREGA PANELES AL APPLET add(paneltop); add(panelprin); add(paneldw); } // fin init //EJECUTA LA CURP AL PRESIONAR EL BOTON public boolean action(Event e,Object o) { if(e.target instanceof Button) { // OBTIENE INICIAL, PRIMERA VOCAL INTERNA Y PRIMERA CONSONANTE DEL PRIMER APELLIDO String app = ap.getText().toUpperCase(); char appi = app.charAt(0); for (i=1;i<=app.length()-1;i++) { char app1 = app.charAt(i); String app2 = String.valueOf(app1); if (app2.equals("A")|app2.equals("E")|app2.equals("I" )|app2.equals("O")|app2.equals("U")) { indicev = i; break; } else { indicev = i+1; break; } } for (i=1;i<=app.length()-1;i++) { char app1 = app.charAt(i); String app2 = String.valueOf(app1); if (app2.equals("A")|app2.equals("E")|app2.equals("I" )|app2.equals("O")|app2.equals("U")) { } else { indicec = i; break; } } char apps = app.charAt(indicev); char appc = app.charAt(indicec); // OBTIENE INICIAL Y PRIMERA CONSONANTE DEL SEGUNDO APELLIDO String apm = am.getText().toUpperCase(); char apmi =apm.charAt(0); for (i=1;i<=apm.length()-1;i++) { char apm1 = apm.charAt(i); String apm2 = String.valueOf(apm1); if (apm2.equals("A")|apm2.equals("E")|apm2.equals("I" )|apm2.equals("O")|apm2.equals("U")) { } else { indicem = i; break; } } char apmc = apm.charAt(indicem); // OBTIENE INICIAL Y PRIMERA CONSONANTE DEL NOMBRE DE PILA String nom = n.getText().toUpperCase(); char nomi = nom.charAt(0); for (i=1;i<=nom.length()-1;i++) { char nom1 = nom.charAt(i); String nom2 = String.valueOf(nom1); if(nom2.equals("JOSE")) { indicen =i++; } if (nom2.equals("A")|nom2.equals("E")|nom2.equals("I" )|nom2.equals("O")|nom2.equals("U")) { } else { indicen = i; break; } } char nomc = nom.charAt(indicen); // OBTIENE LA FECHA DE NACIMIENTO String an = a.getText(); String an1 = an.substring(2,4); int m = mes.getSelectedIndex()+1; String m1; if (m<10) m1 = "0"+String.valueOf(m); else m1 = String.valueOf(m); String d =dia.getSelectedItem(); // OBTIENE SEXO boolean s = s1.getState(); String sexo; if (s ==true) sexo = "H"; else sexo = "M"; // OBTIENE LA ENTIDAD FEDERATIVA DE NACIMIENTO int entfed = ef.getSelectedIndex(); switch (entfed) { case 0: f = "AS";break; case 1: f = "BN";break; case 2: f = "BS";break; case 3: f = "CM";break; case 4: f = "CS";break; case 5: f = "CH";break; case 6: f = "CL";break; case 7: f = "CO";break; case 8: f = "DG";break; case 9: f = "DF";break; case 10: f = "EM";break; case 11: f = "GT";break; case 12: f = "GR";break; case 13: f = "HG";break; case 14: f = "JC";break; case 15: f = "MN";break; case 16: f = "MN";break; case 17: f = "NT";break; case 18: f = "NL";break; case 19: f = "OC";break; case 20: f = "PL";break; case 21: f = "QT";break; case 22: f = "QR";break; case 23: f = "SP";break; case 24: f = "SL";break; case 25: f = "SR";break; case 26: f = "TC";break; case 27: f = "TS";break; case 28: f = "TL";break; case 29: f = "VZ";break; case 30: f = "YN";break; case 31: f = "ZS";break; case 32: f = "NE";break; } // CONSTRUYE E IMPRIME LA CURP curp = String.valueOf(appi)+ String.valueOf(apps)+ String.valueOf(apmi)+ String.valueOf(nomi)+ String.valueOf(an1)+ m1+ d+ sexo+String.valueOf(f)+String.valueOf(appc)+String .valueOf(apmc)+String.valueOf(nomc); cu.setText(String.valueOf(curp)); } return true; }// fin action }// fin Curp Mi correo es [email protected] si saben como aplicar las validaciones, hagammelo saber |
| ||||
Re: script que genere la C.U.R.P (para los expertos) encontré un error en la tabla que proporciona firestone2: el valor que le corresponde a la N es 23, no 24. no sé si eso es a lo que akela se refería. por otro lado, supongo que la Ñ debería devolver 24, pero no sé para qué la ponemos si firestone2 dice que no es un caracter válido para formar parte de una curp: Cita: en fin, hice yo también un programa a partir del código de automan y estas correcciones, y me ha funcionado para todas las curp que he podido confirmar. si existiera la Ñ en la CURP resultado, esta debe sustituirse por X |
| ||||
Re: script que genere la C.U.R.P (para los expertos) para validar los nombres, ahi les va. esto es un pseudocódigo que parece más javascript que java, pero creo que es mejor que poner garabatos en perl :
Código:
después de esto, se sacan datos de fecha, entidad, etc., como lo hace automan//quitar espacios externos nombre = nombre.subst(/^\s+|\s+$/,''); paterno = paterno.subst(/^\s+|\s+$/,''); materno = materno.subst(/^\s+|\s+$/,''); //quitar articulos de apellidos pat_temp = paterno.subst(/\b(de(l)?|la(s)?|los|y|a|mac|von|van)\s+/i,''); pat_temp = pat_temp.subst(/\bmc/,''); mat_temp = materno.subst(/\b(de(l)?|la(s)?|los|y|a|mac|von|van)\s+/i,''); mat_temp = mat_temp.subst(/\bmc/,''); //quitar nombres comunes, solo si no van solos, ademas de articulos nom_temp = nombre.subst(/\b(j(ose|\.)?|ma(ria|\.)?)\s+/i,''); nom_temp = nom_temp.subst(/\b(de(l)?|la(s)?|los|y|a|mac|von|van)\s+/i,''); nom_temp = nom_temp.subst(/\bmc/,''); //empezar a construir curp con inicial paterno + primera vocal paterno + inicial materno + inicial nombre var curp = pat_temp.char(0) + pat_temp.string(1).match(/[aeiou]/i); curp += mat_temp.char(0); curp += nom_temp.char(0); var malas = Array("BUEI","BUEY","CACA","CACO","CAGA","CAGO","CAKA","CAKO","COGE","COJA","KOGE","KOJO","KAKA","KULO", "MAME","MAMO","MEAR","MEAS","MEON","MION","COJE","COJI","COJO","CULO","FETO","GUEY","JOTO","KACA", "KACO","KAGA","KAGO","MOCO","MULA","PEDA","PEDO","PENE","PUTA","PUTO","QULO","RATA","RUIN"); //si se encuentra una mala palabra, sustituir la segunda letra con 'X' if(curp.match(malas.join('|'))) curp = pat_temp.char(0) + 'X' + mat_temp.char(0) + nom_temp.char(0); los dígitos verificadores son un animal muy particular: para el primero, sólo he podido apoyarme en curps que tengo a la mano y el ejemplo que pone HOPEGRACE. en pocas palabras, si el año de nacimiento es menor a 2000, es 0; de lo contrario, A:
Código:
nótese que la implementación varía de acuerdo a con qué formato planeen recibir la fecha (y de la tipificación de su lenguaje). personalmente recomiendo iso8601.curp += fecha.substring(0,2)=="19"?'0':'A'; el segundo viene casi de la misma tabla que se usa para el verificador del rfc de personas físicas, sólo que no puede ser 'A':
Código:
en mi mensaje anterior mencioné que ñ debe devolver 24, pero esto es ocioso porque la cadena curp no puede contenerla, pero es importante que n devuelva 23.func tabla(i){ if(i >= '0' && i<= '9') return i-48; else if (i>= 'A' && i<= 'N') return i-55; else if (i>= 'O' && i<= 'Z') return i-54; else return 0; } //en este punto, la variable curp tiene todo excepto el ultimo digito verificador //ejemplo: JIRA0302024MVZMVNA var dv = 0; for(var i=0; i<curp.length; i++) dv += tabla(curp.charCodeAt(i))*(18-i); dv%=10; curp += dv==0?0:10-dv; otro detalle es que no sé si la lista de palabras indebidas está completa. háganme saber si falta alguna. espero su retroalimentación |
| |||
Re: ALguna Idea Cita: OMARS COM ESTAS, OYE VEO K PEDISTE UN PROGRAMA QUE GENERE EL CURP, NECESITO UNO QUE GENERE EL RFC EN VB 6.0 LO TNDRAS, ESPERO RESPUESTA SALUDOS |
| |||
Re: script que genere la C.U.R.P (para los expertos) Sr... Eh creado una DLL para Visual Basic para que la integren a sus aplicaciones, donde podran calcular el RFC y la CURP con la HOMOCLAVE y DIGITO VERIFICADOR para c/u. Y en Codigo abierto un archivo .js para calcular el digito verificador via web. con JavaScript Si ah alguien le interesa msgme, o bien les envio un archivo en Excel donde esta todo el procedimiento para que con eso creen su propio codigo. Saludos |
| |||
Re: script que genere la C.U.R.P (para los expertos) Cita: Me interesa saber el procedimiento q haces mencion por favor enviamelo a mi mail [email protected]
Iniciado por robertocorona Sr... Eh creado una DLL para Visual Basic para que la integren a sus aplicaciones, donde podran calcular el RFC y la CURP con la HOMOCLAVE y DIGITO VERIFICADOR para c/u. Y en Codigo abierto un archivo .js para calcular el digito verificador via web. con JavaScript Si ah alguien le interesa msgme, o bien les envio un archivo en Excel donde esta todo el procedimiento para que con eso creen su propio codigo. Saludos |
| ||||
Re: script que genere la C.U.R.P (para los expertos) Podias Enviarme El Codigo Por Fa Es Para Usarlo En Sw De Una Aseguradora Que Estoy Desarrollando. Gracias. Mi Correo. [email protected]. |
| |||
Re: script que genere la C.U.R.P (para los expertos) HOla, me interesa la DLL que mencionas para calcular la CURP y el RFC, y tambien el archivo en Excel, para hecharle un ojo al procedimiento. Mi cuenta de correo es [email protected]. De antemano, muchas gracias. |