// GenericFunc.jsp Validaciones con texto multilenguaje Junio-2013 //alert("Cargando genericFunc.jsp"); var ver = navigator.appVersion.substring(0,1); var navi = ( (navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 4) ); var HIDDEN = (navi) ? 'hide' : 'hidden'; var VISIBLE = (navi) ? 'show' : 'visible'; //v("navi "+navi); //v("navigator.appName "+navigator.appName+" navigator.appVersion "+navigator.appVersion); //v("HIDDEN "+HIDDEN+" VISIBLE "+VISIBLE); //////////////////////////////////////////////////////////////////////////////// /////////////// FUNCIONES DE GENERALES //////////////////////////////////////////////////////////////////////////////// function v(txt) { if (true) { alert(txt); } // if (false) { alert(txt); } } function fecha_compara(l_fecha1, l_fecha2) { //l_fecha1 suma=new Date(l_fecha1.substring(6,10),l_fecha1.substring(3,5)-1,l_fecha1.substring(0,2)); var l_anio=suma.getYear(); var l_mes =suma.getMonth()+1; var l_dia =suma.getDate(); //l_fecha2 suma2=new Date(l_fecha2.substring(6,10),l_fecha2.substring(3,5)-1,l_fecha2.substring(0,2)); var l_anio2=suma2.getYear(); var l_mes2 =suma2.getMonth()+1; var l_dia2 =suma2.getDate(); //l_fecha1 op l_fecha2 ret: -1 = menor 0=igual 1=mayor if(l_anio < l_anio2)return(-1); else if(l_anio > l_anio2)return(1); else if(l_mes < l_mes2)return(-1); else if(l_mes > l_mes2)return(1); else if(l_dia < l_dia2)return(-1); else if(l_dia > l_dia2)return(1); else return(0); } function fecha_Hoy() { var fechaActual=new Date(); dia=fechaActual.getDate(); mes=fechaActual.getMonth()+1; anno=fechaActual.getFullYear(); // alert(" dia "+dia+" mes "+mes+" anno "+anno); if(dia<10){dia="0" + dia;} if(mes<10){mes="0" + mes;} fechaHoy=dia+"/"+mes+"/"+anno; //alert("fechaHoy "+fechaHoy); return(fechaHoy); } //////////////////////////////////////////////////////////////////////////////// /////////////// FUNCIONES DE PANTALLA //////////////////////////////////////////////////////////////////////////////// function cacheOff() { if (ver >= 4) { if (document.getElementById("cache")!=undefined){ var cache = document.getElementById("cache").style; //v("IN1 cacheOff "+HIDDEN+" "+VISIBLE); cache.visibility = HIDDEN; cache.visibility = VISIBLE; cache.visibility = HIDDEN; cache.display = "none"; cache.display = "block"; cache.display = "none"; cache.position = "absolute"; cache.position = "static"; cache.opacity = 0; cache.filter = 'alpha(opacity=' + 0 + ')'; } } } function cacheOn() { if (ver >= 4) { document.write('

POR FAVOR ESPERE ...

'); var cache = document.getElementById("cache").style; //v("IN1 cacheOn "+HIDDEN+" "+VISIBLE); var largeur = screen.width; var tall = screen.height; cache.left = (((largeur/3)-100)>0) ? ((largeur/3)-100) : 0 ; cache.top=(((tall/3)-100)>0) ? ((tall/3)-100) : 0 ; cache.visibility = VISIBLE; cache.display = "block"; cache.position = "static"; cache.opacity = 1; cache.filter = 'alpha(opacity=' + 10 + ')'; } } //////////////////////////////////////////////////////////////////////////////// /////////////// FUNCIONES DE IMPUESTOS //////////////////////////////////////////////////////////////////////////////// function alertImpuesto(Valor, Impuesto, Porcentaje, Resultado, Fecha) { if (Valor==Porcentaje){ var txt1="** Para poder facturar con el "; var txt2="% de "; var txt3=", la fecha de final de reparación de la factura situada en la parte superior de la pantalla a la derecha tiene que ser"; var txt4=". \n Una vez cambiada hay que dar en el botón Calcular Resumen."; var txt=txt1+Porcentaje+txt2+Impuesto+txt3+" "+Resultado+" "+Fecha+txt4; alert(txt); } } function alertImpuesto2(Impuesto, Porcentaje, Resultado, Fecha) { var txt1="** Tienes que cambiar la fecha de emisión de factura para poder facturar con el "; var txt2="% de "; var txt3=", la fecha de final de reparación de la factura situada en la parte superior de la pantalla a la derecha tiene que ser "; var txt=txt1+Porcentaje+txt2+Impuesto+txt3+Resultado+" "+Fecha; alert(txt); } function alertImpuesto3(Impuesto) { var txt1="** Tienes que dar a Calcular Resumen porque se ha cambiado el "; var txt=txt1+Impuesto; alert(txt); } // funcion que comprueba el tipo de impuesto en funcion de las fechas // Si hay cambio de impuesto, el parametro sMenor, sería el valor del impuesto antiguo, // y el parametro sMayor, el valor del nuevo impuesto function checkImpuesto(sImpuesto, sMenor, sMayor, fImpuesto) { var fecha=window.document.facturaForm.fechaFinalReparacion.value; var valor=window.document.facturaForm.porcentaje.value; var compFecha=fecha_compara(fImpuesto,fecha); valor=parseFloat(valor); sMenor=parseFloat(sMenor); sMayor=parseFloat(sMayor); if(!isDate(fecha,'dd/MM/yyyy')){ alert('** Fecha Final de Reparación no es una fecha válida.');return false; } if(compFecha==-1 || compFecha==0){ alertImpuesto(valor, sImpuesto, sMenor, "anterior a", fImpuesto); if(valor==sMenor){ updateFechaEmision=false; calculResumen=false; return false; }else{ updateFechaEmision=true; calculResumen=true; } } if(compFecha==1){ alertImpuesto(valor, sImpuesto, sMayor, "igual o mayor a", fImpuesto); if(valor==sMayor){ updateFechaEmision=false; calculResumen=false; return false; }else{ updateFechaEmision=true; calculResumen=true; } } if(updateFechaEmision==false){ alertImpuesto2(sImpuesto, Porcentaje, Resultado, fImpuesto); return false; } if(calculResumen==false){ alertImpuesto3(sImpuesto); return false; } return(true); } function CalcularImpuesto(lugar,fecha){ if (lugar==1) { return(CalcularImpuestoLugar(fecha)); } else if (lugar==2) { return(CalcularImpuestoIva(fecha)); } else if (lugar==3) { return(CalcularImpuestoIgic(fecha)); } else if (lugar==4) { return(CalcularImpuestoIpsiCeuta(fecha)); } else if (lugar==5) { return(CalcularImpuestoIpsiMelilla(fecha)); } else if (lugar==6) { return(CalcularImpuestoLugar(fecha)); } } function CalcularImpuestoIva(fecha){ // AUMENTO IVA 21% 01/09/2012 var fechaIva="01/09/2012"; var compFec=fecha_compara(fechaIva,fecha); if(compFec==1){ return(18); }else{ return(21); } } function CalcularImpuestoIgic(fecha){ var fechaIgic = "01/01/2020"; var compFec=fecha_compara(fechaIgic,fecha); if (existeObj('igicEspecial') && window.document.facturaForm.igicEspecial.value=='true') return 0; if(compFec==1) { return(6.50); } else { return(7); } } function CalcularImpuestoIpsiCeuta(fecha){ return(3); } function CalcularImpuestoIpsiMelilla(fecha){ return(4); } function CalcularImpuestoLugar(fecha){ return(0); } //////////////////////////////////////////////////////////////////////////////// /////////////// FUNCIONES DE NIF //////////////////////////////////////////////////////////////////////////////// var testnif=0; function checkNifCifNie(abc){ abc=abc.toUpperCase(); if (abc.charAt(0)=="T") abc="00000000T"; if (abc.length != 9) return false; if(isCif(abc) || isNif(abc) || isNie(abc)) return true; return false; } function isCif(texto){ var pares = 0; var impares = 0; var suma; var ultima; var unumero; var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I"); var xxx; texto = texto.toUpperCase(); /*var regular = new RegExp(/^[ABCDEFGHKLMNPQRS]\d\d\d\d\d\d\d[0-9,A-J]$/g);*/ var regular = new RegExp(/^[ABCDEFGHJPQRSUVMXNWKL]\d\d\d\d\d\d\d[0-9,A-J]$/g); if (!regular.exec(texto)) return false; ultima = texto.substr(8,1); for (var cont = 1 ; cont < 7 ; cont ++){ xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0"; impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1)); pares += parseInt(texto.substr(cont,1)); } xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0"; impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1)); suma = (pares + impares).toString(); unumero = parseInt(suma.substr(suma.length - 1, 1)); unumero = (10 - unumero).toString(); if(unumero == 10) unumero = 0; if ((ultima == unumero) || (ultima == uletra[unumero])) return true; else return false; } function isNif(abc){ abc=abc.toUpperCase(); if (testnif>0) alert("isNif("+abc+")"); if (isNaN(abc.charAt(0))) { if (testnif>1) alert('El comienzo del Nif no es válido'); return false; } dni=abc.substring(0,abc.length-1); let=abc.charAt(abc.length-1); if (!isNaN(let)) { if (testnif>1) alert('Falta la letra'); return false; }else{ cadena = "TRWAGMYFPDXBNJZSQVHLCKET"; posicion = dni % 23; letra = cadena.substring(posicion,posicion+1); if (letra!=let){ if (testnif>0) alert("Nif no válido"); return false; } } if (testnif>0) alert("Nif válido") return true; } function isNie(abc){ abc=abc.toUpperCase(); if (testnif>0) alert("isNie("+abc+")"); if((abc.charAt(0)!="X")&&(abc.charAt(0)!="Y")&&(abc.charAt(0)!="Z")){ if (testnif>1) alert('Primera letra no vŕlida (XYZ)'); return false; } if(abc.charAt(0)=="X") dni="0"+abc.substring(1,abc.length-1); if(abc.charAt(0)=="Y") dni="1"+abc.substring(1,abc.length-1); if(abc.charAt(0)=="Z") dni="2"+abc.substring(1,abc.length-1); let=abc.charAt(abc.length-1); if (!isNaN(let)) { if (testnif>1) alert('Falta la ultima letra'); return false; }else{ cadena = "TRWAGMYFPDXBNJZSQVHLCKET"; posicion = dni % 23; letra = cadena.substring(posicion,posicion+1); if (letra!=let){ if (testnif>0) alert("Nif no válido"); return false; } } if (testnif>0) alert("Nie válido"); return true; } //alert("Cargado genericFunc.jsp !!"); //////////////////////////////////////////////////////////////////////////////// /////////////// FUNCIONES DE BARRA DE PROGRESO //////////////////////////////////////////////////////////////////////////////// function mostrar() { ocultar(); document.getElementById("barraProgreso").style.display=""; } function ocultar() { document.getElementById("barraProgreso").style.display="none"; } function mostrarr(obj) { ocultarr(obj); if ( document.getElementById(obj)!=undefined){ document.getElementById(obj).style.display=""; } } function ocultarr(obj) { if ( document.getElementById(obj)!=undefined){ document.getElementById(obj).style.display="none"; } } function esperar(obj) { if (obj=="true") { ocultarr('aceptar'); mostrar(); } else { mostrarr('aceptar'); ocultar(); } } //////////////////////////////////////////////////////////////////////////////// /////////////// FUNCIONES DE TIME SESSION //////////////////////////////////////////////////////////////////////////////// var targetURL; var countdownfrom; var currentsecond; function countredirect() { if (currentsecond != 1) { currentsecond -= 1; document.getElementById('contador').innerHTML = currentsecond; document.getElementById('contador').innerHTML += " minutos"; } else { window.location = targetURL; return; } setTimeout("countredirect()", 60000); } function reset() { targetURL = "/facturas/init.do?dispatch=sesion"; countdownfrom = 30; document.getElementById('contador').innerHTML = "30"; currentsecond = document.getElementById('contador').innerHTML = countdownfrom + 1; document.getElementById('contador').innerHTML += " minutos"; countredirect(); } function validarIBAN(IBAN, entidad, oficina, cc, cuenta) { var cuenta = IBAN + entidad + oficina + cc + cuenta; return validateIBAN(cuenta); } function validateIBAN(iban) { if (iban.length != 24){ // En Espańa el IBAN son 24 caracteres return false; } var newIban = iban.toUpperCase(), modulo = function(divident, divisor) { var m = 0; for (var i = 0; i < divident.length; ++i) m = (m * 10 + parseInt(divident.charAt(i))) % divisor; return m; }; if (newIban.search(/^[A-Z]{2}/gi) < 0) { return false; } newIban = newIban.substring(4) + newIban.substring(0, 4); newIban = newIban.replace(/[A-Z]/g, function (match) { return match.charCodeAt(0) - 55; }); return parseInt(modulo(newIban, 97), 10) === 1; } function validarBic(bic, entidad){ var registroExp=new RegExp('^[A-Z]{6}[A-Z0-9]{2}[A-Z0-9]{3}$'); //ej: POPUESMMXXX if(!registroExp.test(bic)){ return false; } var bicObligatorio=bic.substring(0,8); var find=entidad+bicObligatorio; var bicValidos = "[1485BOFAES2XXXX, 2056CECAESMMXXX, 3159BCOEESMMXXX, 3160CCRIES2AXXX, 3165CCRIES2AXXX, 3166BCOEESMMXXX, 0152BPLCESMMXXX, 0154BSUIESMMXXX, 0155BRASESMMXXX, 0156ABNAESMMXXX, 0159COBAESMXXXX, 1501DPBBESM1XXX, 1502IKBDESM1XXX, 1505ARABESMMXXX, 1506MLCBESM1XXX, 1522EFGBESMMXXX, 1524UBIBESMMXXX, 1525BCDMESMMXXX, 1534KBLXESMMXXX, 1538ICBKESMMXXX, 1469SHSAESM1XXX, 1470BPIPESM1XXX, 1472UCSSESM1XXX, 1473PRIBESMXXXX, 1474CITIESMXXXX, 1475CCSEESM1XXX, 1478MLIBESM1XXX, 1479NATXESMMXXX, 1480VOWAES21XXX, 1488PICTESMMXXX, 1491TRIOESMMXXX, 1494BCITESMMXXX, 1497ESSIESMMXXX, 1545AGRIESMMXXX, 0161BKTRESM1XXX, 0169NACNESMMXXX, 1460CRESESMMXXX, 0003BDEPESM1XXX, 0011ALLFESMMXXX, 0019DEUTESBBXXX, 0021BCNDESM1XXX, 0030ESPCESMMXXX, 0031ETCHES2GXXX, 0036SABNESMMXXX, 0046GALEES2GXXX, 0057BVADESMMXXX, 0058BNPAESMMXXX, 0061BMARES2MXXX, 0065BARCESMMXXX, 0073OPENESMMXXX, 0078BAPUES22XXX, 2066CECAESMMXXX, 3162BCOEESMMXXX, 0151CHASESM3XXX, 0160BOTKESMXXXX, 0106LOYDESMMXXX, 0107BNLIESM1XXX, 0108SOGEESMMXXX, 0131BESMESMMXXX, 0144PARBESMXXXX, 0145DEUTESM1XXX, 0149BNPAESMSXXX, 0162MIDLESMMXXX, 0167GEBAESMMXXX, 0168BBRUESMXXXX, 0190BBPIESMMXXX, 0196WELAESMMXXX, 0218FCEFESM1XXX, 1451AGRIESB1XXX, 1454NEWGESM1XXX, 1457LLISESM1XXX, 1459PRABESMMXXX, 1462ASSCESM1XXX, 1463PSABESM1XXX, 1464NFFSESM1XXX, 1465INGDESMMXXX, 1466FRANESM1XXX, 1467EHYPESMXXXX, 0113INBBESM1XXX, 0130CGDIESMMXXX, 0132PRNEESM1XXX, 0133MIKBESB1XXX, 0136AREBESMMXXX, 0138BKOAES22XXX, 0182BBVAESMMXXX, 0186BFIVESBBXXX, 0198BCOEESMMXXX, 0200PRVBESB1XXX, 0216POHIESMMXXX, 0217HLFXESMMXXX, 0219BMCEESMMXXX, 0224SCFBESMMXXX, 0225FIEIESM1XXX, 0227UNOEESM1XXX, 0228IXIUESM1XXX, 0231DSBLESMMXXX, 0233POPIESMMXXX, 0234CCOCESMMXXX, 0236LOYIESMMXXX, 0237CSURES2CXXX, 0239EVOBESMMXXX, 0487GBMNESMMXXX, 0488BFASESMMXXX, 1544BACAESMMXXX, 2000CECAESMMXXX, 2013CESCESBBXXX, 2048CECAESMMXXX, 2080CAGLESMMXXX, 2085CAZRES2ZXXX, 2095BASKES2BXXX, 2100CAIXESBBXXX, 2108CSPAES2LXXX, 2010CECAESMMXXX, 2017CECAESMMXXX, 2031CECAESMMXXX, 2043CECAESMMXXX, 2045CECAESMMXXX, 2051CECAESMMXXX, 2081CECAESMMXXX, 3025CDENESBBXXX, 3063BCOEESMMXXX, 3067BCOEESMMXXX, 3070BCOEESMMXXX, 3076BCOEESMMXXX, 3080BCOEESMMXXX, 3081BCOEESMMXXX, 3084CVRVES2BXXX, 3085BCOEESMMXXX, 3089BCOEESMMXXX, 3095CCRIES2AXXX, 3096BCOEESMMXXX, 3098BCOEESMMXXX, 3102CCRIES2AXXX, 3104BCOEESMMXXX, 3105CCRIES2AXXX, 3113BCOEESMMXXX, 3115BCOEESMMXXX, 3118CCRIES2AXXX, 3174BCOEESMMXXX, 3179CCRIES2AXXX, 3183CASDESBBXXX, 3186CCRIES2AXXX, 3187BCOEESMMXXX, 3191BCOEESMMXXX, 1156IRVTESM1XXX, 1164ESBFESM1XXX, 1168BNACESM1XXX, 1173COURESB1XXX, 1182HYVEESM1XXX, 1191HANDES21XXX, 1193PKBSES21XXX, 1199CRGEESM1XXX, 1233BCMAESM1XXX, 1236HELAESM1XXX, 1238BIMEESM1XXX, 1240LOFPESB1XXX, 1113BSUDESM1XXX, 1116SCSIESM1XXX, 1127SCBLESM1XXX, 1196AEEVESM1XXX, 1197BILLESB1XXX, 1209ABCMESM1XXX, 1210REDEESM1XXX, 1221PNBMESM1XXX, 1224RHRHESM1XXX, 1227BSSAESB1XXX, 1231BOCAES21XXX, 1234PRBAESM1XXX, 1241STOLESM1XXX, 1242SOLAESB1XXX, 1245BEIVESM1XXX, 1248WAFAESM1XXX, 1249NPBSES21XXX, 1251IHZUES21XXX, 1255AARBESM1XXX, 3009BCOEESMMXXX, 3016BCOEESMMXXX, 3017BCOEESMMXXX, 3018BCOEESMMXXX, 3020BCOEESMMXXX, 3023BCOEESMMXXX, 3029CCRIES2AXXX, 3035CLPEES2MXXX, 3045CCRIES2AXXX, 3058CCRIES2AXXX, 3059BCOEESMMXXX, 3110CCRIES2AXXX, 3111BCOEESMMXXX, 3112CCRIES2AXXX, 3116BCOEESMMXXX, 3117BCOEESMMXXX, 6852BMEUESM1XXX, 3119CCRIES2AXXX, 3121CCRIES2AXXX, 3123CCRIES2AXXX, 3127BCOEESMMXXX, 3130BCOEESMMXXX, 3135CCRIES2AXXX, 3146CCCVESM1XXX, 3150BCOEESMMXXX, 3152CCRIES2AXXX, 3190BCOEESMMXXX, 8233CSFAESM1XXX, 1000ICROESMMXXX, 0083RENBESMMXXX, 3001BCOEESMMXXX, 3007BCOEESMMXXX, 3008BCOEESMMXXX, 8512UCINESMMXXX, 8835SBFCESMMXXX, 3134BCOEESMMXXX, 3138BCOEESMMXXX, 3140BCOEESMMXXX, 3144BCOEESMMXXX, 3157CCRIES2AXXX, 3172CCOCESMMXXX, 6814MNTYESMMXXX, 0049BSCHESMMXXX, 0086NORTESMMXXX, 0094BVALESMMXXX, 0121OCBAESM1XXX, 0081BSABESBBXXX, 0122CITIES2XXXX, 0125BAOFESM1XXX, 0128BKBKESMMXXX, 0129INALESM1XXX, 0184BEDFESM1XXX, 0188ALCLESMMXXX, 0205DECRESM1XXX, 0211PROAESMMXXX, 0220FIOFESM1XXX, 0223GEECESB1XXX, 0226UBSWESMMXXX, 0229POPLESMMXXX, 0232INVLESMMXXX, 0235PICHESMMXXX, 0238PSTRESMMXXX, 1490SELFESMMXXX, 2038CAHMESMMXXX, 2086CECAESMMXXX, 2103UCJAES2MXXX, 2096CSPAES2LXXX, 2099CECAESMMXXX, 2104CSSOES2SXXX, 2105CECAESMMXXX, 0075POPUESMMXXX, 2090BSABESBBXXX, 2077CAHMESMMXXX, 2106CAIXESBBXXX, 0072PSTRESMMXXX, 2065CAIXESBBXXX, 2024CSURES2CXXX, 2091CAGLESMMXXX, 0093CAIXESBBXXX, 3082CCRIES2AXXX, 0004POPUESMMXXX, 3177CCRIES2AXXX, 3005BCOEESMMXXX, 2059BBVAESMMXXX, 2101BASKES2BXXX, 2107BBVAESMMXXX, 2052CAHMESMMXXX, 2054CAIXESBBXXX, 2018CAIXESBBXXX, 2073CESCESBBXXX, 2041CESCESBBXXX, 2074BBVAESMMXXX, 2097CAIXESBBXXX, 2073BASKES2BXXX, 0042BSABESBBXXX, 3060BCOEESMMXXX, 3189BCOEESMMXXX, 2042CAHMESMMXXX, 3056BCOEESMMXXX, 2030CAIXESBBXXX, 2071CAIXESBBXXX, 2098CAIXESBBXXX, 3188CCRIES2AXXX, 2094CAHMESMMXXX, 3094CCRIES2AXXX, 3021BCOEESMMXXX, 2069CAHMESMMXXX, 0082POPUESMMXXX, 0097POPUESMMXXX, 3064BCOEESMMXXX, 2040BBVAESMMXXX, 2032CAIXESBBXXX, 3114CCRIES2AXXX, 2037CAHMESMMXXX, 0024POPUESMMXXX, 0095POPUESMMXXX, 3147CCRIES2AXXX, 3062BCOEESMMXXX, 2092UCJAES2MXXX, 3078BCOEESMMXXX, 0185BSABESBBXXX, 3137CCRIES2AXXX, 3161BCOEESMMXXX]"; var index = bicValidos.indexOf(find); return (index>=0); } function validaCifByTipoSociedad (cif,idTipoSociedad) { var letraRazonSocialValidas = "[B-S.L., B-S.L.U., B-S.L.L., A-S.A., A-S.A.U., A-S.A.L., F-S.Coop., F-S.Coop. L., E-C.B., J-S.C., J-S.C.P., B-S.R.L., E-S.I., W-W, N-E.S.P.J.]"; var find=cif.charAt(0)+"-"+idTipoSociedad; var index = letraRazonSocialValidas.indexOf(find); if (index<0){ find="-"+idTipoSociedad; index = letraRazonSocialValidas.indexOf(find); return letraRazonSocialValidas.charAt(index-1); }else{ return ""; } }