// 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('
');
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 "";
}
}