Foros del Web » Programando para Internet » Javascript »

validar RUC sunat peru java script

Estas en el tema de validar RUC sunat peru java script en el foro de Javascript en Foros del Web. hola soy programador en java, estoy tratando de hace una rutina n java para validar el ruc de la sunat de peru es para mi ...
  #1 (permalink)  
Antiguo 24/03/2008, 11:21
Avatar de genco  
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 3 meses
Puntos: 0
validar RUC sunat peru java script

hola soy programador en java, estoy tratando de hace una rutina n java para validar el ruc de la sunat de peru es para mi sistema , pero no se nada de java script, les agradeceria me expliquen que hace exactamente esta rutina para poder implementarla en mi proyecto, la funcion encargada la llmanada valruc(); el numero de ruc que la sunat nos da es de 11 digitos , supuestamente el el ultimo digito es el digito de validacion segun la sunat.
aqui esta el codigo recien sacado de la pagina de la sunat del archivo js.js espero me puedan ayudar, ya que la sunat no da informacion . gracias

function centraVentana(ancho,alto) {
if (window.screen) {
var aw = screen.availWidth;var ah = screen.availHeight;window.resizeTo(ancho,alto);win dow.moveTo((aw-ancho)/2,(ah-alto)/2);
}
}
function algunCheck(form){
for(i=0 ; i<form.elements.length; i++){
if(form.elements[i].type == "checkbox"){if(form.elements[i].checked){return true;}}
}
return false;
}
function esTeclaNumero(e) {
var valid = "0123456789";
var key = String.fromCharCode(event.keyCode);
if (valid.indexOf("" + key) == "-1") return false;
}
function validarHora(strHora){
if (longitudcorrecta(strHora, 5)) {
strHora += ":00";
}
return !(!(/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]/.test(strHora)) || (strHora.substring(0,2)<0 || strHora.substring(0,2)>23));
}
function formateafecha(valor){
var l = StringTokenizer(valor, "/");
return rellena(l[0], "0", 2) + "/" + rellena(l[1], "0", 2) + "/" + l[2];
}
function estelefono(valor){
var pattern = "/\\b(^(\\d+)(\\-\\d+)$)\\b/gi";
return valor.match(eval(pattern));
}
function esEntero(numero){
tokens = StringTokenizer(numero, '.');
return ( (tokens.length<=1)&&(esnumero(numero)) );
}
function validaDecimal(numero, dec){
tokens = StringTokenizer(numero, '.');
return (( tokens.length>1 )? (tokens[tokens.length-1].length > 0 && tokens[tokens.length-1].length <= dec) : true)&&(esdecimal(numero));
}
function esdecimal(valor){
var pattern = "/\\b(^(\\d+)(\\.\\d+)$)\\b/gi";
return valor.match(eval(pattern));
}
function validacorreo(myString) {
return myString.match(/\b(^(\S+@).+((\.gob)|(\.com)|(\.net)|(\.edu)|(\.mi l)|(\.gov)|(\.biz)|(\.org)|(\..{2,2}))$)\b/gi)
}
/* fn & ext Rt T F */
function validanombrearchivo(nombre, ext){
var pattern = "/\\b(^(((\\S)|(\\s))+)(\\."+ext+")$)\\b/gi";
return nombre.match(eval(pattern));
}
/* Rt Arr */
function StringTokenizer(cad, delim){
var cads = new Array();
var n = cad.length;
var j = 0;
var ic = 0;
for (i=0;i<n;i++){
if ( cad.charAt(i)==delim ){ cads[j] = cad.substring(ic, i); ic = i+1; j++; }
}
cads[j] = cad.substring(ic, n);
return cads;
}
/*Rt m ltr: mes # / 1-12, may 1 o 0 M o m, cap 1 o 0 M 1ra lt*/
function mesenletras(mes, may, cap){
if ( !esnumero(mes) ) return "-";
var imes = parseInt(mes, 10);
var tmes = "";
if ( imes == 1 ) tmes = "enero";
else if ( imes == 2 ) tmes = "febrero";
else if ( imes == 3 ) tmes = "marzo";
else if ( imes == 4 ) tmes = "abril";
else if ( imes == 5 ) tmes = "mayo";
else if ( imes == 6 ) tmes = "junio";
else if ( imes == 7 ) tmes = "julio";
else if ( imes == 8 ) tmes = "agosto";
else if ( imes == 9 ) tmes = "setiembre";
else if ( imes == 10 ) tmes = "octubre";
else if ( imes == 11 ) tmes = "noviembre";
else if ( imes == 12 ) tmes = "diciembre";
if ( may == 1) tmes = tmes.toUpperCase();
if ( cap == 1) tmes = tmes.substring(0,1).toUpperCase() + tmes.substring(1, tmes.length);
return tmes;
}
/* -1: err, 1: f1>f2, 2: f1<f2, 0: f1=f2 */
function comparafecha(fecha1, fecha2){
if ( !checkdate(fecha1) || !checkdate(fecha2) ) return -1;
dia = fecha1.substring(0,2)
mes = fecha1.substring(3,5)
anho = fecha1.substring(6,10)
fecha1x = anho + mes + dia
dia = fecha2.substring(0,2)
mes = fecha2.substring(3,5)
anho = fecha2.substring(6,10)
fecha2x = anho + mes + dia
return (fecha1x>fecha2x?1:(fecha1x<fecha2x?2:0));
}
function nada(){}
function corta(campo, longitud, cars) {
if (campo.value.length>longitud) campo.value=campo.value.substring(0,longitud);
cuenta(campo, cars);
}
function cuenta(campo, cars) { cars.value=campo.value.length; }
function rellena(dato, caracter, tamanho){
dato_trim = trim(dato);
len = dato_trim.length;
dato_fill = "";
for (var i=0;i<tamanho-len;i++){ dato_fill+=caracter; }
dato_fill+=dato_trim;
return dato_fill;
}
function checkdate(fecha){
var err=0
if ( fecha.length != 10) err=1
dia = fecha.substring(0,2)
slash1 = fecha.substring(2,3)
mes = fecha.substring(3,5)
slash2 = fecha.substring(5,6)
anho = fecha.substring(6,10)
if ( dia<1 || dia>31) err = 1
if ( slash1 != '/' ) err = 1
if ( mes<1 || mes>12) err = 1
if ( slash1 == '/' && slash2 != '/' ) err = 1
if ( anho < 0 || anho > 2200 ) err = 1
if ( mes == 4 || mes == 6 || mes == 9 || mes == 11 ){
if (dia==31) err=1
}
if (mes == 2){
var g = parseInt(anho/4)
if (isNaN(g)){
err = 1
}
if (dia >29) err =1
if (dia ==29 && ((anho/4)!=parseInt(anho/4))) err=1
}
return (!(err==1));
}
function esnulo(campo){ return (campo == null||campo=="");}
function esnulooguion(campo){
return esnulo(campo) || ( trim( campo ) == "-" );
}
function esnumero(campo){ return (!(isNaN( campo )));}
function longitudcorrecta( campo, len ){
if ( campo != null ) return ( campo.length == len );
else return false;
}
function mayuscula(campo){return campo.toUpperCase();}
function minuscula(campo){return campo.toLowerCase();}
function eslongrucok(ruc){return ( ruc.length == 11 );}
function eslongcontrasenhaok(contrasenha){
return (contrasenha.length >= longcontrasenhaok());
}
function longcontrasenhaok(){ return 6;}
function esnegativo(valor){ return (valor < 0);}
function esrucok(ruc){
return (!( esnulo(ruc) || !esnumero(ruc) || !eslongrucok(ruc) || !valruc(ruc) ));
}


///aqui esta la funcion que primero llama a la funcion trim() y despues llama a esnumero() lo que me parece extraño es que la funcion recibe solo 8 digitos en ves de 11......

function valruc(valor){
valor = trim(valor)
if ( esnumero( valor ) ) {
if ( valor.length == 8 ){
suma = 0
for (i=0; i<valor.length-1;i++){

digito = valor.charAt(i) - '0'; //// aqui lo que no entiendo es - '0' no se que es, supongo que elimina los ceros, parece una resta pero como se va a restar si el chaart solo te devuelve un digito?

if ( i==0 ) suma += (digito*2)
else suma += (digito*(valor.length-i))
}
resto = suma % 11;
if ( resto == 1) resto = 11;
if ( resto + ( valor.charAt( valor.length-1 ) - '0' ) == 11 ){
return true
}
} else if ( valor.length == 11 ){
suma = 0
x = 6
for (i=0; i<valor.length-1;i++){
if ( i == 4 ) x = 8
digito = valor.charAt(i) - '0';//aqui otra ves el bendito - '0'
x--
if ( i==0 ) suma += (digito*x)
else suma += (digito*x)
}
resto = suma % 11;
resto = 11 - resto

if ( resto >= 10) resto = resto - 10;
if ( resto == valor.charAt( valor.length-1 ) - '0' )/// y otra ves ! me mato!
{
return true
}
}
}
return false
}


// de aqui las demas funciones parecen parecen ser parte de otros requerimentos

function longitudmayor( campo, len ){
return ( campo != null )? (campo.length > len) : false;
}
function estaentre(campo, inicio, fin){
if ( campo != null ) return ( campo.length >= inicio && campo.length <= fin );
else return false;
}
var sorry="SUNAT - Derechos Reservados© 2004";
function click(e){
if (document.all) if (event.button == 2){alert(sorry);return false;}
if (document.layers) if (e.which == 3){alert(sorry);return false;}
}
if (document.layers){ document.captureEvents(Event.MOUSEDOWN);}
document.onmousedown=click;
function abreventana(i, j) {
window.open(i, j, "toolbar=0,location=0,directories=0,status=0,menub ar=0,scrollbars=yes,resizable=yes,copyhistory=0,wi dth=600,height=450")
}
var da = (document.all) ? 1 : 0;
var pr = (window.print) ? 1 : 0;
var mac = (navigator.userAgent.indexOf("Mac") != -1);
function printPage(frame, arg) {
if (frame == window){printThis();}
else {link = arg; printFrame(frame); }
return false;
}
function printThis() {
if (pr) { // NS4, IE5
window.print();
} else if (da && !mac) { // IE4 (Windows)
vbPrintPage();
} else { // other browsers
alert("Disculpe, su browser no soporta esta aplicacion.");
}
}
function trim(cadena){
cadena2 = "";
len = cadena.length;
for ( var i=0; i <= len ; i++ ) if ( cadena.charAt(i) != " " ){cadena2+=cadena.charAt(i); }
return cadena2;
}
function printFrame(frame) {
if (pr && da) { // IE5
frame.focus();
window.print();
link.focus();
} else if (pr) { // NS4
frame.print();
} else if (da && !mac) { // IE4 (Windows)
frame.focus();
setTimeout("vbPrintPage(); link.focus();", 100);
} else { // other browsers
alert("Disculpe, su browser no soporta esta aplicacion.");
}
}
if (da && !pr && !mac) with (document) {
writeln('<'+'OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>');
writeln('<'+'SCRIPT LANGUAGE="VBScript">');
writeln('Sub window_onunload');
writeln(' On Error Resume Next');
writeln(' Set WB = nothing');
writeln('End Sub');
writeln('Sub vbPrintPage');
writeln(' OLECMDID_PRINT = 6');
writeln(' OLECMDEXECOPT_DONTPROMPTUSER = 2');
writeln(' OLECMDEXECOPT_PROMPTUSER = 1');
writeln(' On Error Resume Next');
writeln(' WB.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER');
writeln('End Sub');
writeln('<'+'/SCRIPT>');
}
  #2 (permalink)  
Antiguo 24/03/2008, 11:22
Avatar de genco  
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: validar RUC sunat peru java script

///aqui esta el codigo del form
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0067)http://www.sunat.gob.pe/cl-ti-itmrconsruc/frameCriterioBusqueda.jsp -->
<HTML><HEAD><TITLE>Consulta RUC</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"><LINK
href="frameCriterioBusqueda_archivos/estilos2_0.css" rel=stylesheet>
<SCRIPT src="frameCriterioBusqueda_archivos/js.js"
languaje="JavaScript"> </SCRIPT>

<SCRIPT type=text/javascript languaje="JavaScript">
var gCount = 0;

function goRefresh() {
document.mainForm.codigo.value = "";
document.mainForm.imagen.src="captcha?accion=image &nmagic=" + gCount;
gCount = gCount + 1;
}

function format(type) {
var form = document.mainForm;
if(type == 0) {
form.search.maxLength = 11;
form.search.onkeypress = function(e) {
var evt = e?e:event;
key = (document.all) ? evt.keyCode : evt.which;
if (key == 8) return true;
pattern =/[0-9]/;
te = String.fromCharCode(key);
return pattern.test(te);
}
}
else {
form.search.maxLength = 100;
form.search.onkeypress = function(e) {return true;}
}
form.search.focus();
form.search.value = "" ;
}

function evalSearch() {
var form = document.mainForm;
if(form.tQuery[0].checked) {
form.nroRuc.value = form.search.value;
form.accion.value = "consPorRuc";
if(!esrucok(form.nroRuc.value)){
alert('Por favor, ingrese numero de RUC valido.')
form.search.focus();
return;
}
}
else {
form.accion.value = "consPorRazonSoc";
form.razSoc.value = form.search.value;
if(!longitudmayor(trim(form.razSoc.value),0) || (trim(form.razSoc.value).substring(0,1)=='*')){
alert('La Razón social no es válida ...')
form.search.focus();
return;
}
}
if(trim(form.codigo.value).length < 4) {
alert('Ingrese el código que se muestra en la imagen');
form.codigo.focus();
return;
}
form.submit();
}
</SCRIPT>

<META content="MSHTML 6.00.2900.3268" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff onload=format(0)>
<FORM name=mainForm action=jcrS00Alias method=post target=mainFrame>
<TABLE class=form-table cellSpacing=2 cellPadding=3 width="100%" border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=2 cellPadding=3 width="100%" border=0>
<TBODY>
<TR>
<TD align=left bgColor=#3399cc><B>CRITERIOS DE
BÚSQUEDA:</B></TD></TR></TBODY></TABLE><INPUT type=hidden name=accion>
<INPUT type=hidden name=razSoc> <INPUT type=hidden name=nroRuc>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=20><INPUT onclick=format(0) type=radio CHECKED
name=tQuery></TD>
<TD class=bgn width=140>Número de RUC</TD>
<TD align=left width=180 rowSpan=2><INPUT class=form-text
name=search></TD>
<TD class=bgn vAlign=center width=140 rowSpan=2>Ingrese el código
que se muestra en la imagen:</TD>
<TD align=left width=100 rowSpan=2><IMG src="" name=imagen></TD>
<TD vAlign=center align=left width=60><INPUT
style="TEXT-TRANSFORM: uppercase" maxLength=4
onchange=this.value=this.value.toUpperCase(); size=4 name=codigo></TD>
<TD><INPUT class=form-button onclick=evalSearch(); type=button value=Buscar></TD></TR>
<TR>
<TD><INPUT onclick=format(1) type=radio name=tQuery> <INPUT
type=hidden name=coddpto> <INPUT type=hidden name=codprov> <INPUT
type=hidden name=coddist> </TD>
<TD class=bgn width=140>Nombre ó Razón Social </TD>
<TD align=left colSpan=2><A href="javascript:goRefresh()">Refrescar
codigo</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM></BODY></HTML>
la pagina de la sunat es www.sunat.gob.pe adentro de la seccion "consulta de ruc" y " consulta multiple de ruc" los dos forms usan el mismo js.js comprobado.
por favor agradeceria mucho me explicaran de que se trata exactamente esta rutina.
saludos

[QUOTE=genco;2334237]hola soy programador en java, estoy tratando de hace una rutina n java para validar el ruc de la sunat de peru es para mi sistema , pero no se nada de java script, les agradeceria me expliquen que hace exactamente esta rutina para poder implementarla en mi proyecto, la funcion encargada la llmanada valruc(); el numero de ruc que la sunat nos da es de 11 digitos , supuestamente el el ultimo digito es el digito de validacion segun la sunat.
aqui esta el codigo recien sacado de la pagina de la sunat del archivo js.js espero me puedan ayudar, ya que la sunat no da informacion . gracias
  #3 (permalink)  
Antiguo 24/03/2008, 11:28
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
Re: validar RUC sunat peru java script

Perdón mi ignorancia, pero el RUC es su similar al RUT Chileno, no??? Por que veo ese script muy complejo para entregar solo un valor especifico..

Salud!!
  #4 (permalink)  
Antiguo 24/03/2008, 11:36
Avatar de genco  
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: validar RUC sunat peru java script

pues no se nada del rut chileno, el ruc peruano esta compuesto por 11 digitos el onceavo es el codigo de verificacion, este codigo s resultado de los primeros 10 pasados a un algoritmo. el ruc peruano puede ser de tres tipos , de persona natural , de persona juridica, de natural sin DNI, stos estados definen el prefijo que son dos digitos, sumados a los 8 que corresponden al DNI o en caso de que no tenga DNI a un numero asignado por la sunat, al algoritmo resuelve el onceavo digito eso entiendo yo, llame a la sunat y no m quisieron da informacion, por eso posteo este codigo.
en el comente algunas dudas con /// ... comentario espero al menos se me aclaren ya que esos operadores no los conosco, suficiente tengo con adivinar que tipo de datos son.
saludos de Peru


Cita:
Iniciado por zick Ver Mensaje
Perdón mi ignorancia, pero el RUC es su similar al RUT Chileno, no??? Por que veo ese script muy complejo para entregar solo un valor especifico..

Salud!!
  #5 (permalink)  
Antiguo 24/03/2008, 11:41
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
Re: validar RUC sunat peru java script

Cita:
Iniciado por zick Ver Mensaje
el RUC es su similar al RUT Chileno, no???
Creo que esto ya me lo respondi.. a lugar.

Estube testeando todo el codigo que has puesto, y me parece que hay varios errores al programar la funcion que llamas al presionar el boton de busqueda:

1.- Debes cambiar el nombre al campo "Search", ya que esa palabra esta restriguida en javascript (lo toma como una funcion propia de Javascript).

2.- esrucok is not defined
evalSearch()prueba.html (line 317)
onclick(click clientX=0, clientY=0)prueba.html (line 1)
[Break on this error] if(!esrucok(form.nroRuc.value)){ [Que llamas con esrucok???]

3.- PUDE ENTRAR A LA PAGINA DEL EJEMPLO.. (estaba deshabilitada!!! )

Mira, la verdad.. me supone que el numero de RUC es un algoritmo igual que el RUT Chileno, Primeramente tedría que conocer cual es ese algoritmo como para poder generar un codigo limpio que puedas usar en tus aplicaciones.. si logras dar con algo de info al respecto, puede que te ayude con más facilidad..

Salud!!

PD. Podrías entergar algún numero de RUC válido?? gracias..

Además, ya me di cuenta que el codigo era de la pagina, no tuyo, no tomes en cuenta los errores que detecte!!

Última edición por zick; 24/03/2008 a las 11:49 Razón: Necesitaba algo de info..
  #6 (permalink)  
Antiguo 24/03/2008, 12:01
Avatar de genco  
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: validar RUC sunat peru java script

tienes razon la pagina tiene problemas al parecer esta fallando no se porque :S y si el codigo no es mio, me lo "pille" de la pagina porque llame y no me supieron dar informacion :S, el codigo estoy tratando de entenderlo y traducirlo a java, pero algunas operaciones no las entiendo ( las comentadas con ///) sobre todo la del "chaart(i) - 0" no me cabe en la cabeza que operacion hace. espero me puedas explicarlo.

Cita:
Iniciado por zick Ver Mensaje
Creo que esto ya me lo respondi.. a lugar.

Estube testeando todo el codigo que has puesto, y me parece que hay varios errores al programar la funcion que llamas al presionar el boton de busqueda:

1.- Debes cambiar el nombre al campo "Search", ya que esa palabra esta restriguida en javascript (lo toma como una funcion propia de Javascript).

2.- esrucok is not defined
evalSearch()prueba.html (line 317)
onclick(click clientX=0, clientY=0)prueba.html (line 1)
[Break on this error] if(!esrucok(form.nroRuc.value)){ [Que llamas con esrucok???]

3.- PUDE ENTRAR A LA PAGINA DEL EJEMPLO.. (estaba deshabilitada!!! )

Mira, la verdad.. me supone que el numero de RUC es un algoritmo igual que el RUT Chileno, Primeramente tedría que conocer cual es ese algoritmo como para poder generar un codigo limpio que puedas usar en tus aplicaciones.. si logras dar con algo de info al respecto, puede que te ayude con más facilidad..

Salud!!

PD. Podrías entergar algún numero de RUC válido?? gracias..

Además, ya me di cuenta que el codigo era de la pagina, no tuyo, no tomes en cuenta los errores que detecte!!
  #7 (permalink)  
Antiguo 24/03/2008, 12:11
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
De acuerdo Re: validar RUC sunat peru java script

Despues de un buen rato tratando de descifrar tu genoma.. he podido limpiar el codigo con lo necesario, espero lo puedas implementar bien en tu pagina, ya que no tengo ningun RUC válido como para testearlo. En fin, he aquí el codigo:

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0067)http://www.sunat.gob.pe/cl-ti-itmrconsruc/frameCriterioBusqueda.jsp -->
<HTML><HEAD><TITLE>Consulta RUC</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"><LINK
href="frameCriterioBusqueda_archivos/estilos2_0.css" rel=stylesheet>
<SCRIPT languaje="JavaScript">
function esnulo(campo){ return (campo == null||campo=="");}
function esnumero(campo){ return (!(isNaN( campo )));}
function eslongrucok(ruc){return ( ruc.length == 11 );}
function esrucok(ruc){
return (!( esnulo(ruc) || !esnumero(ruc) || !eslongrucok(ruc) || !valruc(ruc) ));
}
function trim(cadena){
cadena2 = "";
len = cadena.length;
for ( var i=0; i <= len ; i++ ) if ( cadena.charAt(i) != " " ){cadena2+=cadena.charAt(i); }
return cadena2;
}
function valruc(valor){
valor = trim(valor)
if ( esnumero( valor ) ) {
if ( valor.length == 8 ){
suma = 0
for (i=0; i<valor.length-1;i++){

digito = valor.charAt(i) - '0'; // aqui lo que no entiendo es - '0' no se que es, supongo que elimina los ceros, parece una resta pero como se va a restar si el chaart solo te devuelve un digito?
<!--
//Exactamente, al parecer, esto elimina los posibles ceros que existan dentro de los parametro que se ingresaron en el input
-->

if ( i==0 ) suma += (digito*2)
else suma += (digito*(valor.length-i))
}
resto = suma % 11;
if ( resto == 1) resto = 11;
if ( resto + ( valor.charAt( valor.length-1 ) - '0' ) == 11 ){
return true
}
} else if ( valor.length == 11 ){
suma = 0
x = 6
for (i=0; i<valor.length-1;i++){
if ( i == 4 ) x = 8
digito = valor.charAt(i) - '0';
x--
if ( i==0 ) suma += (digito*x)
else suma += (digito*x)
}
resto = suma % 11;
resto = 11 - resto

if ( resto >= 10) resto = resto - 10;
if ( resto == valor.charAt( valor.length-1 ) - '0' )
{
return true
}
}
}
return false
}
</SCRIPT>
<SCRIPT type=text/javascript languaje="JavaScript">
function RUC(){
if(!esrucok(mainForm.nroRuc.value)){
alert('Por favor, ingrese numero de RUC valido.')
mainForm.busqueda.focus();
return;
}else{
MainForm.submit();
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM name='mainForm' action='jcrS00Alias' method='post' target='mainFrame'>
<TABLE class=form-table cellSpacing=2 cellPadding=3 width="100%" border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=2 cellPadding=3 width="100%" border=0>
<TBODY>
<TR>
<TD align=left bgColor=#3399cc><B>CRITERIOS DE
BÚSQUEDA:</B></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=left width=180>
<input type="hidden" id="nroRuc">
<input type="hidden" id="ruc">
<INPUT class='form-text' name='busqueda'></TD>
<TD align=left vAlign=center><INPUT class=form-button onclick="RUC()" type='button' value='Buscar'> <A href="javascript:goRefresh()"></A></TD>
</TR>
</TBODY></TABLE></TD></TR></TBODY></TABLE></FORM></BODY></HTML> 
A la espera de tus comentario..

Salud!!
  #8 (permalink)  
Antiguo 24/03/2008, 12:18
Avatar de genco  
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: validar RUC sunat peru java script

gracias Sick comenzare inmediatamente a trabajar, por cierto si quieres un numero de ruc valido puedes ir a la misma pagina de la sunat y en ves de usar busqueda por numero de ruc, buscas por "nombre o razon social", la empresa o el nombre te lo dejo a tu imaginacion. ejm" juan perez" etc.
gracias


Cita:
Iniciado por zick Ver Mensaje
Despues de un buen rato tratando de descifrar tu genoma.. he podido limpiar el codigo con lo necesario, espero lo puedas implementar bien en tu pagina, ya que no tengo ningun RUC válido como para testearlo. En fin, he aquí el codigo:

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0067)http://www.sunat.gob.pe/cl-ti-itmrconsruc/frameCriterioBusqueda.jsp -->
<HTML><HEAD><TITLE>Consulta RUC</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"><LINK
href="frameCriterioBusqueda_archivos/estilos2_0.css" rel=stylesheet>
<SCRIPT languaje="JavaScript">
function esnulo(campo){ return (campo == null||campo=="");}
function esnumero(campo){ return (!(isNaN( campo )));}
function eslongrucok(ruc){return ( ruc.length == 11 );}
function esrucok(ruc){
return (!( esnulo(ruc) || !esnumero(ruc) || !eslongrucok(ruc) || !valruc(ruc) ));
}
function trim(cadena){
cadena2 = "";
len = cadena.length;
for ( var i=0; i <= len ; i++ ) if ( cadena.charAt(i) != " " ){cadena2+=cadena.charAt(i); }
return cadena2;
}
function valruc(valor){
valor = trim(valor)
if ( esnumero( valor ) ) {
if ( valor.length == 8 ){
suma = 0
for (i=0; i<valor.length-1;i++){

digito = valor.charAt(i) - '0'; // aqui lo que no entiendo es - '0' no se que es, supongo que elimina los ceros, parece una resta pero como se va a restar si el chaart solo te devuelve un digito?
<!--
//Exactamente, al parecer, esto elimina los posibles ceros que existan dentro de los parametro que se ingresaron en el input
-->

if ( i==0 ) suma += (digito*2)
else suma += (digito*(valor.length-i))
}
resto = suma % 11;
if ( resto == 1) resto = 11;
if ( resto + ( valor.charAt( valor.length-1 ) - '0' ) == 11 ){
return true
}
} else if ( valor.length == 11 ){
suma = 0
x = 6
for (i=0; i<valor.length-1;i++){
if ( i == 4 ) x = 8
digito = valor.charAt(i) - '0';
x--
if ( i==0 ) suma += (digito*x)
else suma += (digito*x)
}
resto = suma % 11;
resto = 11 - resto

if ( resto >= 10) resto = resto - 10;
if ( resto == valor.charAt( valor.length-1 ) - '0' )
{
return true
}
}
}
return false
}
</SCRIPT>
<SCRIPT type=text/javascript languaje="JavaScript">
function RUC(){
if(!esrucok(mainForm.nroRuc.value)){
alert('Por favor, ingrese numero de RUC valido.')
mainForm.busqueda.focus();
return;
}else{
MainForm.submit();
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM name='mainForm' action='jcrS00Alias' method='post' target='mainFrame'>
<TABLE class=form-table cellSpacing=2 cellPadding=3 width="100%" border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=2 cellPadding=3 width="100%" border=0>
<TBODY>
<TR>
<TD align=left bgColor=#3399cc><B>CRITERIOS DE
BÚSQUEDA:</B></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=left width=180>
<input type="hidden" id="nroRuc">
<input type="hidden" id="ruc">
<INPUT class='form-text' name='busqueda'></TD>
<TD align=left vAlign=center><INPUT class=form-button onclick="RUC()" type='button' value='Buscar'> <A href="javascript:goRefresh()"></A></TD>
</TR>
</TBODY></TABLE></TD></TR></TBODY></TABLE></FORM></BODY></HTML> 
A la espera de tus comentario..

Salud!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:08.