/** *@file carrito.js *@date 11/03/2020 *@author Cristina Caba García (cristinacaba1983@gmail.com) **/ function Carrito() { // Definición de las variables de clases js útiles. this.iu = new Iu(); this.ajax = new Ajax(URL); //Agencias de tranporte this.agenciasTransporte = null; this.idAgenciaTransporteSeleccionada = null; this.nombreAgenciaTransporteSeleccionada = null; this.valorAgenciaTransporteSeleccionada = null; //Control this.controlCargaDestino = 0; this.controlCargaEnvios = 0; //Cupón de descuento this.codigoCupon = null; this.descripcionCupon = null; this.hayCupon = false; this.nombreTipoDescuentoCupon = null; this.precioSinIVACupon = 0; this.precioConIVACupon = 0; this.importeIVACupon = 0; //Destinos this.codigoDestino = null; this.codigoIdiomaDestino = null; this.defectoDestino = null; this.destinos = null; this.idDestinoSeleccionado = null; this.IVAExentoDestino = 0; this.mensajeErrorDestino = null; this.totalDestinos = 0; //Envíos this.diasProduccion = 0; this.envios = null; this.envioDefecto = null; this.totalEnvios = 0; this.idTipoEnvioSeleccionado = null; this.idTipoEnvioUrgente = null; this.idTipoEnvioUrgenteSabado = null; this.costeTipoEnvioSeleccionado = null; this.gratisTipoEnvioSeleccionado = null; this.nombreTipoEnvioSeleccionado = null; this.nombreTipoEnvioSeleccionadoEspanol = null; this.precioSinIVATipoEnvioSeleccionado = 0; this.precioConIVATipoEnvioSeleccionado = 0; this.importeIVATipoEnvioSeleccionado = 0; this.valorTipoEnvioSeleccionado = null; //Idiomas this.codigoIdioma = null; this.idIdioma = null; this.idioma = null; this.totalIdiomas = 0; //Precios productos this.precioSinIVA = 0; this.precioSinIVADescuento = 0; this.importeIVA= 0; this.importeIVADescuento = 0; //Presupuesto this.idPresupuesto = null; //Totales this.iva = 0; this.subtotal = 0; this.subtotalSinCupon = 0; this.tipoIVA = null; this.total = 0; //Productos this.producto = null; this.productos = null; this.totalProductos = 0; //Rangos this.rangoMaximo = 0; this.rangoMinimo = 0; //Varios this.peso = 0; this.tasa = 1; // Funciones de clase, éstas deben de estar en todos los js this.iniciar = function() { //Control de pestaña activa. $("#disenos_paso").removeClass("activo"); $("#datos_paso").removeClass("activo"); $("#formas-pago_paso").removeClass("activo"); $("#carrito_paso").addClass("activo"); //Ocultamos los mensajes del código promocional. $(".msgpromo").hide(); $("#eliminarCupon").hide(); $("#errorDescargarPresupuestoCarrito").hide(); $("#presupuestocarrito").hide(); this.codigoIdioma = $("#codigoIdioma").val(); this.diasProduccion = $("#diasProduccionCarrito").val(); this.idIdioma = $("#idIdioma").val(); this.peso = parseFloat($("#pesoTotalProductos").val()); this.tipoIVA = null; this.hayCupon = false; carrito.tasaCambioDivisas(); this.idDestinoSeleccionado = $("#idDestinoSeleccionado").val(); this.idTipoEnvioUrgente = $("#idTipoEnvioUrgente").val(); this.idTipoEnvioUrgenteSabado = $("#idTipoEnvioUrgenteSabado").val(); $("#envioCarrito_"+$("#idTipoEnvioSeleccionado").val()+"_"+$("#nombreTipoEnvioSeleccionado").val()).click(); //Inicializamos los controles de carga this.controlCargaDestino = 0; this.controlCargaEnvios = 0; //Buscamos los datos imprescindibles para la carga de la página this.pedirIdiomaSeleccionado(); this.buscarDestinos(); //Pedimos los datos de la sesión. this.pedirCarrito(); this.pedirAgenciaTransporte(); this.pedirCupon(); this.pedirDatosUsuario(); } this.recargarImprescindibles = function() { /**- Función que recarga las funciones básicas relacionadas **/ this.calcularTotales(); } // Funciones de trabajo. this.actualizarCantidadDeProductos = function(idFila,operacion) { /**- Función que actualiza los valores de los precios en función de su cantidad.0 @param idFila, identificador de la fila del producto del que queremos disminuir o aumentar su cantidad. @param operacion, String mas o menos. **/ // Cogemos el número de la fila del producto que estamos editando var partesIdFila = idFila.split("_"); var numProducto = parseInt(partesIdFila[1]); var rangoMaximo = this.productos[numProducto].rangoMaximo; var rangoMinimo = this.productos[numProducto].rangoMinimo; var cantidadTotal = parseInt($("#cantidadProductoCarrito_"+numProducto).val()); $("#errorCantidadProductosCarritoMas_"+numProducto).hide(); $("#errorCantidadProductosCarritoMenos_"+numProducto).hide(); //Gestionamos el input var recalcular = false; if(operacion == "mas") { if(cantidadTotal >= rangoMaximo) { if(cantidadTotal == rangoMaximo) $("#errorCantidadProductosCarritoMas_"+numProducto).show(); else recalcular = true; cantidadTotal = rangoMaximo } else { cantidadTotal = parseInt(cantidadTotal) + parseInt(rangoMinimo); recalcular = true; } } if(operacion == "menos") { if(cantidadTotal <= rangoMinimo) { if(cantidadTotal == rangoMinimo) $("#errorCantidadProductosCarritoMenos_"+numProducto).show(); else recalcular = true; cantidadTotal = rangoMinimo; } else { cantidadTotal = parseInt(cantidadTotal) - parseInt(rangoMinimo); recalcular = true; } } if(operacion == null) { if(cantidadTotal >= rangoMaximo) { if(cantidadTotal > rangoMaximo) { $("#errorCantidadProductosCarritoMas_"+numProducto).show(); } else recalcular = true; cantidadTotal = rangoMaximo; } if(cantidadTotal <= rangoMinimo) { if(cantidadTotal < rangoMinimo) { $("#errorCantidadProductosCarritoMenos_"+numProducto).show(); } else recalcular = true; cantidadTotal = rangoMinimo; } if(cantidadTotal < rangoMaximo && cantidadTotal > rangoMinimo) recalcular = true; } $("#cantidadProductoCarrito_"+numProducto).val(cantidadTotal); //Recalculamos el precio enviando la cantidad del producto a los datos de sesión. if(recalcular) this.recalcularPrecio(numProducto,cantidadTotal); } this.buscarDestinos = function() { /**- Función que busca los posibles destinos. **/ this.ajax.pedir("carritoControl.buscarDestinos",null,XJSON,ASYNC,"carrito.postBuscarDestinos"); } this.buscarEnvios = function() { /**- Función que busca los envíos en función del destino seleccionado. **/ var parametros = new Array(); parametros.push(new Parametro("idDestinoSeleccionado",this.idDestinoSeleccionado)); parametros.push(new Parametro("diasProduccionEnvio",this.diasProduccion)); //Petición ajax. this.ajax.pedir("carritoControl.buscarEnvios",parametros,XJSON,ASYNC,"carrito.postBuscarEnvios"); } this.calcularTotales = function() { /**- Función que calcula los totales a partir de las variables racogidas **/ $(".precioEnvioGratisCarrito").hide(); $(".precioEnvioCarrito").hide(); var importeIVA = 0; var precioSinIVA = 0; var importeProductos = 0; //Recorremos los productos para inicializar las variables importe, subtotal, iva y total if(this.totalProductos != 0) { $.each(carrito.productos,function(index,value) { if(parseInt(value.descuento) == 0) { // Sin descuento del patrocinio if(parseInt(value.disenhadoEmpresa) == 0) { //Sin diseño por la empresa if(parseInt(value.productosPersonalizados) == 0) { //Sin personalización individual importeIVA += parseFloat(value.importeIVA); precioSinIVA += parseFloat(value.precioSinIVA); } else { //Con personalización individual importeIVA += parseFloat(value.importeIVAPersonalizado); precioSinIVA += parseFloat(value.precioSinIVAPersonalizado); } } else {//Con diseño if(parseInt(value.productosPersonalizados) == 0) {//Sin personalización importeIVA += parseFloat(value.importeIVADiseno); precioSinIVA += parseFloat(value.precioSinIVADiseno); } else {//Con Personalziació importeIVA += parseFloat(value.importeIVADisenoPersonalizado); precioSinIVA += parseFloat(value.precioSinIVADisenoPersonalizado); } } } else { //Con descuento de patrocinio if(parseInt(value.disenhadoEmpresa) == 0) {//Sin diseño if(parseInt(value.productosPersonalizados) == 0) {//Sin personalización importeIVA += parseFloat(value.importeIVADescuento); precioSinIVA += parseFloat(value.precioSinIVADescuento); } else {//Con personalización importeIVA += parseFloat(value.importeIVADescuentoPersonalizado); precioSinIVA += parseFloat(value.precioSinIVADescuentoPersonalizado); } } else {//Con diseño if(parseInt(value.productosPersonalizados) == 0) {//Sin personalización importeIVA += parseFloat(value.importeIVADescuentoDiseno); precioSinIVA += parseFloat(value.precioSinIVADescuentoDiseno); } else {//Con Personalización importeIVA += parseFloat(value.importeIVADescuentoDisenoPersonalizado); precioSinIVA += parseFloat(value.precioSinIVADescuentoDisenoPersonalizado); } } } importeProductos += parseFloat(value.precioSinIVA); }); var gratisTipoE = false; if(precioSinIVA >= this.gratisTipoEnvioSeleccionado) gratisTipoE = true; if(gratisTipoE) { $(".precioEnvioGratisCarrito").show(); $(".precioEnvioCarrito").hide(); this.precioSinIVATipoEnvioSeleccionado = 0; this.importeIVATipoEnvioSeleccionado = 0; $("#precioEnvioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).html("GRATIS"); } else { $(".precioEnvioGratisCarrito").hide(); $(".precioEnvioCarrito").show(); } //Actualizamos las variables de clase this.importeProductos = importeProductos; this.precioSinIVA = precioSinIVA; this.importeIVA = importeIVA; this.subtotal = this.precioSinIVA - this.precioSinIVACupon + this.precioSinIVATipoEnvioSeleccionado; this.subtotalSinCupon = this.precioSinIVA + this.precioSinIVATipoEnvioSeleccionado; this.iva = this.importeIVA - this.importeIVACupon + this.importeIVATipoEnvioSeleccionado; this.total = this.subtotal + this.iva; this.escribirTotales(); } } this.cargarComboDestinos = function() { /**- Función que carga el combo de los destinos **/ if(parseInt(this.totalDestinos) > 0) { //Vaciamos el combo de los destinos. $("#selectDestinoCarrito").empty(); var divListadoPaises = crearElementoClasesTexto("div","listado-paises",null,null); $("#selectDestinoCarrito").append(divListadoPaises); var entra = false; $.each(this.destinos,function(index,valor) { if(!entra && (valor.id == carrito.idDestinoSeleccionado) || (carrito.idDestinoSeleccionado == null && parseInt(valor.defecto) == 1 && carrito.idIdioma == valor.ididioma)) { entra = true; carrito.idDestinoSeleccionado = valor.id; var div0 = crearElementoClasesTexto("div","pais activo",null,null); div0.setAttribute("id","idDestinoSeleccionado_"+valor.id); $("#selectDestinoCarrito").append(div0); var div1 = crearElementoClasesTexto("div","bandera",null,null); div1.setAttribute("id","idDestinoSeleccionadoBandera_"+valor.id); div0.appendChild(div1); var img = crearElementoClasesTexto("img",null,null,null); img.setAttribute("id","idDestinoSeleccionadoImg_"+valor.id); img.setAttribute("src",IMG_BANDERAS+valor.bandera); div1.appendChild(img); var divNombre = crearElementoClasesTexto("div","nombre",valor.textoDestino,null); divNombre.setAttribute("id","idDestinoSeleccionadoNombre_"+valor.id); div0.appendChild(divNombre); var br = crearElementoClasesTexto("br",null,null,null); br.setAttribute("id","idDestinoSeleccionadoBr_"+valor.id); divNombre.appendChild(br); var small = crearElementoClasesTexto("small",null,valor.textoDescripcion,null); small.setAttribute("id","idDestinoSeleccionadoSmall_"+valor.id); divNombre.appendChild(small); var divFlechaDonw = crearElementoClasesTexto("div","flechita-abajo",null,null); divFlechaDthis.subtotalSinCuponSinMetodoPagoonw.setAttribute("id","idDestinoSeleccionadoFlechaD_"+valor.id); div0.appendChild(divFlechaDonw); var iDonw = crearElementoClasesTexto("i","fas fa-caret-down",null,null); iDonw.setAttribute("id","idDestinoSeleccionadoIDonw_"+valor.id); divFlechaDonw.appendChild(iDonw); var divFlechaUp = crearElementoClasesTexto("div","flechita-arriba",null,null); divFlechaUp.setAttribute("id","idDestinoSeleccionadoFlechaU_"+valor.id); div0.appendChild(divFlechaUp); var iUp = crearElementoClasesTexto("i","fas fa-caret-up",null,null); iUp.setAttribute("id","idDestinoSeleccionadoIUp_"+valor.id); divFlechaUp.appendChild(iUp); div0.addEventListener("click",function(e){ $(".listado-paises").fadeToggle(150); $(".flechita-arriba").fadeToggle(); $(".flechita-abajo").fadeToggle(); },false); carrito.valoresDestino(); } var div0 = crearElementoClasesTexto("div","pais inactivo",null,null); div0.setAttribute("id","idDestino_"+valor.id); divListadoPaises.appendChild(div0); var div1 = crearElementoClasesTexto("div","bandera",null,null); div1.setAttribute("id","idDestinoBandera_"+valor.id); div0.appendChild(div1); var img = crearElementoClasesTexto("img",null,null,null); img.setAttribute("id","idDestinoImg_"+valor.id); img.setAttribute("src",IMG_BANDERAS+valor.bandera); div1.appendChild(img); var divNombre = crearElementoClasesTexto("div","nombre",valor.textoDestino,null); divNombre.setAttribute("id","idDestinoNombre_"+valor.id); div0.appendChild(divNombre); var br = crearElementoClasesTexto("br",null,null,null); br.setAttribute("id","idDestinoBr_"+valor.id); divNombre.appendChild(br); var small = crearElementoClasesTexto("small",null,valor.textoDescripcion,null); small.setAttribute("id","idDestinoSmall_"+valor.id); divNombre.appendChild(small); div0.addEventListener("click",function(e){carrito.seleccionarDestino(e);},false); }); } } this.crearPresupuesto = function() { /**- Función que descarga el carrito en un pdf. **/ $(".presupuesto-error").hide(); var tipoCliente = $('input:radio[name=tipoclientePresupuestoCarrito]:checked').val(); var parametros = new Array(); parametros.push(new Parametro("tipoClienteCarrito",tipoCliente)); if(tipoCliente == ID_TIPO_CLIENTE_PARTICULAR){ parametros.push(new ParametroFormulario("dni","DNI","dniPresupuestoCarrito",$("#dniPresupuestoCarrito").val().trim(),"dniModalPresupuestoCarrito-error-no")); parametros.push(new ParametroFormulario("texto","Nombre","nombrePresupuestoCarrito",$("#nombrePresupuestoCarrito").val().trim(),"nombreModalPresupuestoCarrito-error")); } else if(tipoCliente == ID_TIPO_CLIENTE_EMPRESA) { parametros.push(new ParametroFormulario("cif","CIF","cifPresupuestoCarrito",$("#cifPresupuestoCarrito").val().trim(),"cifModalPresupuestoCarrito-error-no")); parametros.push(new ParametroFormulario("texto","Razón social","razonSocialPresupuestoCarrito",$("#razonSocialPresupuestoCarrito").val().trim(),"razonSocialModalPresupuestoCarrito-error")); } parametros.push(new ParametroFormulario("texto","Dirección","direccionPresupuestoCarrito",$("#direccionPresupuestoCarrito").val().trim(),"direccionModalPresupuestoCarrito-error")); parametros.push(new ParametroFormulario("email","Email","emailPresupuestoCarrito",$("#emailPresupuestoCarrito").val().trim(),"emailModalPresupuestoCarrito-error-no")); for(var i=0; i "+diasMinimo+" / "+diasMaximo; else var nombreTipoEnvioEspanol = value.nombreTipoEnvioEspanol; numEnvios++; if(parseFloat(value.pesominimo) <= parseFloat(carrito.peso) && parseFloat(carrito.peso) <= parseFloat(value.pesomaximo)) { if(parseInt(value.seleccionado) == 1) carrito.envioDefecto = value.id; if(value.id == carrito.idTipoEnvioSeleccionado) { entra = true; carrito.idTipoEnvioSeleccionado = value.id; carrito.nombreTipoEnvioSeleccionado = value.nombreTipoEnvio; carrito.precioSinIVATipoEnvioSeleccionado = parseFloat(value.precio) * parseFloat(carrito.tasa); carrito.valorTipoEnvioSeleccionado = value.valor; carrito.costeTipoEnvioSeleccionado = value.coste; carrito.gratisTipoEnvioSeleccionado = value.gratis; var gratisTipoE = false; if(carrito.precioSinIVA >= carrito.gratisTipoEnvioSeleccionado) gratisTipoE = true; var precioPorcentaje = (carrito.precioSinIVA * carrito.costeTipoEnvioSeleccionado / 100); if(precioPorcentaje > carrito.precioSinIVATipoEnvioSeleccionado) carrito.precioSinIVATipoEnvioSeleccionado = precioPorcentaje; } var gratisTipoE = false; var precioEnvio = 0; if(carrito.precioSinIVA >= value.gratis) gratisTipoE = true; var precioPorcentaje = (carrito.precioSinIVA * value.coste / 100); if(precioPorcentaje > value.precio * carrito.tasa) { precioEnvio = precioPorcentaje; } else { precioEnvio = parseFloat(value.precio) * parseFloat(carrito.tasa); } if(parseInt(value.diasminimo) != parseInt(value.diasmaximo)) { var label = crearElementoClasesTexto("label",null,null,null); label.setAttribute("id","enviosCarrito_"+value.id); contenedorEnvios.append(label); var inputPrincipal = crearElementoClasesTexto("input","envio_tipo",null,null); inputPrincipal.setAttribute("id","envioCarrito_"+value.id+"_"+value.nombreTipoEnvio); inputPrincipal.setAttribute("type","radio"); inputPrincipal.setAttribute("name","tipoenvio"); inputPrincipal.setAttribute("checked",false); inputPrincipal.setAttribute("data",value.iddestino); inputPrincipal.setAttribute("data-es",nombreTipoEnvioEspanol); inputPrincipal.setAttribute("value",value.valorTipoEnvio); label.appendChild(inputPrincipal); inputPrincipal.addEventListener("click",function(e){carrito.guardarTipoEnvio(e);},false); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("type","hidden"); input.setAttribute("id","envioCarritoMinimo_"+value.id+"_"+value.nombreTipoEnvio); input.setAttribute("value",value.diaMinimoFormateado); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("id","envioCarritoCoste_"+value.id+"_"+value.nombreTipoEnvio); input.setAttribute("type","hidden"); input.setAttribute("value",value.coste); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("id","envioCarritoGratis_"+value.id+"_"+value.nombreTipoEnvio); input.setAttribute("type","hidden"); input.setAttribute("value",value.gratis); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("type","hidden"); input.setAttribute("id","envioCarritoMaximo_"+value.id+"_"+value.nombreTipoEnvio); input.setAttribute("value",value.diaMaximoFormateado); label.appendChild(input); var div = crearElementoClasesTexto("div",null,null,null); label.appendChild(div); var div1 = crearElementoClasesTexto("div","nombre btn"+(index+1),value.nombreTipoEnvio,null); div.appendChild(div1); var span1 = crearElementoClasesTexto("span","dias"," "+diasMinimo+" - "+diasMaximo+" "+value.textoDias,null); div.appendChild(span1); var div2 = crearElementoClasesTexto("div","derecha",null,null); div.appendChild(div2); var div3 = crearElementoClasesTexto("div","fecha",value.diaMinimoFormateado,null); div2.appendChild(div3); var espacio = document.createTextNode(" "); div2.appendChild(espacio); var div4 = crearElementoClasesTexto("div","fecha",value.diaMaximoFormateado,null); div2.appendChild(div4); if($("#codigoIdioma").val() != "en") var div5 = crearElementoClasesTexto("div","precio",formatoPrecioHTML(precioEnvio),null); else var div5 = crearElementoClasesTexto("div","precio",formatoPrecioLibrasHTML(precioEnvio),null); div5.setAttribute("id","precioEnvioCarrito_"+value.id+"_"+value.nombreTipoEnvio); div2.appendChild(div5); } else if(parseInt(value.diasminimo) != -1) { carrito.idTipoEnvioUrgente = value.id; var label = crearElementoClasesTexto("label",null,null,null); label.setAttribute("id","enviosCarritoUrgente_"+value.id); contenedorEnvios.append(label); var inputPrincipal = crearElementoClasesTexto("input","envio_tipo",null,null); inputPrincipal.setAttribute("id","envioCarrito_"+value.id+"_"+value.nombreTipoEnvio); inputPrincipal.setAttribute("type","radio"); inputPrincipal.setAttribute("name","tipoenvio"); inputPrincipal.setAttribute("data",value.iddestino); inputPrincipal.setAttribute("data-es",nombreTipoEnvioEspanol); inputPrincipal.setAttribute("value",value.valorTipoEnvio); label.appendChild(inputPrincipal); inputPrincipal.addEventListener("click",function(e){carrito.guardarTipoEnvio(e);},false); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("type","hidden"); input.setAttribute("id","envioCarritoMinimo_"+value.id+"_"+value.nombreTipoEnvio); input.setAttribute("value",value.diaMinimoFormateado); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("id","envioCarritoCoste_"+value.id+"_"+value.nombreTipoEnvio); input.setAttribute("type","hidden"); input.setAttribute("value",value.coste); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("id","envioCarritoGratis_"+value.id+"_"+value.nombreTipoEnvio); input.setAttribute("type","hidden"); input.setAttribute("value",value.gratis); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("type","hidden"); input.setAttribute("id","envioCarritoMaximo_"+value.id+"_"+value.nombreTipoEnvio); input.setAttribute("value",value.diaMaximoFormateado); label.appendChild(input); var div = crearElementoClasesTexto("div",null,null,null); label.appendChild(div); var div1 = crearElementoClasesTexto("div","nombre btn"+(index+1),null,null); div.appendChild(div1); var iFa = crearElementoClasesTexto("i","fa fa-plane",null,null); iFa.setAttribute("aria-hidden","true"); iFa.setAttribute("id","icono-avion"); div1.appendChild(iFa); var texto = document.createTextNode(value.nombreTipoEnvio); div1.appendChild(texto); var span = crearElementoClasesTexto("span","dias",value.textoRecibeloManhana,null); div.append(span); var texto = value.letraDiaMinimoFormateado+" "+value.numeroDiaMinimo+" "+value.textoDe+" "+value.letraMesMinimo; var span1 = crearElementoClasesTexto("span","colorok fechalarga"," "+texto,null); span.append(span1); var span2 = crearElementoClasesTexto("span","colorok fechacorta",value.diaMinimoFormateado,null); span.append(span2); var div2 = crearElementoClasesTexto("div","derecha",null,null); div.append(div2); var div3 = crearElementoClasesTexto("div","fecha",value.diaMinimoFormateado,null); div2.appendChild(div3); if($("#codigoIdioma").val() != "en") var div5 = crearElementoClasesTexto("div","precio",formatoPrecioHTML(precioEnvio),null); else var div5 = crearElementoClasesTexto("div","precio",formatoPrecioLibrasHTML(precioEnvio),null); div5.setAttribute("id","precioEnvioCarrito_"+value.id+"_"+value.nombreTipoEnvio); div2.appendChild(div5); } else if(parseInt(value.diasminimo) == -1) { if(parseInt(carrito.diasProduccion) == 0 && ((new Date().getDay() == 4 && new Date().getHours() >= 16) || (new Date().getDay() == 5 && new Date().getHours() < 16))) { carrito.idTipoEnvioUrgenteSabado = value.id; var label = crearElementoClasesTexto("label",null,null,null); label.setAttribute("id","enviosCarritoUrgenteSabado_"+value.id); contenedorEnvios.append(label); var inputPrincipal = crearElementoClasesTexto("input","envio_tipo",null,null); inputPrincipal.setAttribute("id","envioCarrito_"+value.id+"_"+value.nombreTipoEnvio.replace(" ","-")); inputPrincipal.setAttribute("type","radio"); inputPrincipal.setAttribute("name","tipoenvio"); inputPrincipal.setAttribute("data",value.iddestino); inputPrincipal.setAttribute("data-es",nombreTipoEnvioEspanol); inputPrincipal.setAttribute("value",value.valorTipoEnvio); label.appendChild(inputPrincipal); inputPrincipal.addEventListener("click",function(e){carrito.guardarTipoEnvio(e);},false); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("type","hidden"); input.setAttribute("id","envioCarritoMinimo_"+value.id+"_"+value.nombreTipoEnvio.replace(" ","-")); input.setAttribute("value",value.diaMinimoFormateado); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("id","envioCarritoCoste_"+value.id+"_"+value.nombreTipoEnvio.replace(" ","-")); input.setAttribute("type","hidden"); input.setAttribute("value",value.coste); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("id","envioCarritoGratis_"+value.id+"_"+value.nombreTipoEnvio.replace(" ","-")); input.setAttribute("type","hidden"); input.setAttribute("value",value.gratis); label.appendChild(input); var input = crearElementoClasesTexto("input",null,null,null); input.setAttribute("type","hidden"); input.setAttribute("id","envioCarritoMaximo_"+value.id+"_"+value.nombreTipoEnvio.replace(" ","-")); input.setAttribute("value",value.diaMaximoFormateado); label.appendChild(input); var div = crearElementoClasesTexto("div",null,null,null); label.appendChild(div); var div1 = crearElementoClasesTexto("div","nombre btn"+(index+1),null,null); div.appendChild(div1); var iFa = crearElementoClasesTexto("i","fa fa-plane",null,null); iFa.setAttribute("aria-hidden","true"); iFa.setAttribute("id","icono-avion"); div1.appendChild(iFa); var texto = document.createTextNode(value.nombreTipoEnvio); div1.appendChild(texto); var span = crearElementoClasesTexto("span","dias",value.textoRecibeloManhana,null); div.append(span); var texto = value.letraDiaMinimoFormateado+" "+value.numeroDiaMinimo+" "+value.textoDe+" "+value.letraMesMinimo; var span1 = crearElementoClasesTexto("span","colorok fechalarga"," "+texto,null); span.append(span1); var span2 = crearElementoClasesTexto("span","colorok fechacorta",value.diaMinimoFormateado,null); span.append(span2); var div2 = crearElementoClasesTexto("div","derecha",null,null); div.append(div2); var div3 = crearElementoClasesTexto("div","fecha",value.diaMinimoFormateado,null); div2.appendChild(div3); if($("#codigoIdioma").val() != "en") var div5 = crearElementoClasesTexto("div","precio",formatoPrecioHTML(precioEnvio),null); else var div5 = crearElementoClasesTexto("div","precio",formatoPrecioLibrasHTML(precioEnvio),null); div5.setAttribute("id","precioEnvioCarrito_"+value.id+"_"+value.nombreTipoEnvio.replace(" ","-")); div2.appendChild(div5); } } } }); if(!entra) { $.each(this.envios,function(index,value) { if(value.iddestino == carrito.idDestinoSeleccionado) { if(parseFloat(value.pesominimo) <= parseFloat(carrito.peso) && parseFloat(carrito.peso) <= parseFloat(value.pesomaximo)) { if(parseInt(value.seleccionado) == 1) { carrito.envioDefecto = value.id; carrito.idTipoEnvioSeleccionado = value.id; carrito.nombreTipoEnvioSeleccionado = value.nombreTipoEnvio; carrito.precioSinIVATipoEnvioSeleccionado = parseFloat(value.precio) * parseFloat(carrito.tasa); carrito.valorTipoEnvioSeleccionado = value.valor; carrito.costeTipoEnvioSeleccionado = value.coste; carrito.gratisTipoEnvioSeleccionado = value.gratis; } } } }); } //Seleccionamos el envío adecuado $("#envioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).click(); } this.disenarProducto = function(productoDiseno) { /**- Función que abre el editor de diseños para el producto seleccionado @param productoDiseno, identificador del producto y el diseño. numproducto_numdiseño. **/ //Procesamos el producto var partes = productoDiseno.split("_"); var numProducto = partes[1]; this.producto = this.productos[numProducto]; if(this.producto.cantidadDisenhos == 1) { this.idDiseno = 1; //Guardamos en session el producto que vamos a diseñar var parametros = new Array(); if(this.producto.numCaras == 1) parametros.push(new Parametro("paginaAnterior","carrito")); parametros.push(new Parametro("idCategoria",this.producto['idcategoria'])); parametros.push(new Parametro("idProducto",this.producto['idproducto'])); parametros.push(new Parametro("idDiseno",this.idDiseno)); parametros.push(new Parametro("idCara",1)); parametros.push(new Parametro("numProducto",numProducto)); parametros.push(new Parametro("cantidad",this.producto['cantidadTotal'])); parametros.push(new Parametro("accion","seguir")); this.ajax.pedir("disenoControl.guardarDisenoSesion",parametros,XJSON,ASYNC,"carrito.postGuardarDisenoSesion"); } else { this.guardarDestinoSesion(); iu.irAConIdioma("diseno"); } } this.eliminarDatosSesionCupon = function() { /**- Función que elimina los datos de sesión respectivos al cupón de descuento **/ this.ajax.pedir("carritoControl.eliminarCuponSesion",null,XJSON,ASYNC,"carrito.postEliminarCuponSesion"); } this.eliminarProducto = function(idFila) { /**- Función que elimina los datos de un producto de la sesión y recarga la página @param idFila, identificador de la fila del producto a eliminar de los datos de sesión. **/ var partesIdFila = idFila.split("_"); //Array de parámetros. var parametros = new Array(); parametros.push(new Parametro("numProducto",partesIdFila[1])); //Petición ajax. this.ajax.pedir("carritoControl.eliminarProductoSesion",parametros,XJSON,ASYNC,"carrito.postEliminarProductoSesion"); } this.enviarCuponDescuentoCarrito = function() { /**- Función que recoge y valida el código del cupón de descuento y recalcula los totales del pedido en función de la respuesta **/ //Limpiamos los errores del input del código promocional $(".msgpromo").hide(); if($("#promocodes").val() != undefined && $("#promocodes").val() != "") { var codigo = $("#promocodes").val().trim(); if(codigo.indexOf(":") != -1) { var partesCodigo = codigo.split(":"); codigo = partesCodigo[1].trim(); } // Recogemos el código haciendo una primera validación. var parametros = new Array(); parametros.push(new ParametroFormulario("password","promocode","codigoPromocional",codigo,"")); parametros.push(new Parametro("totalPedido",this.precioSinIVA)); //Validamos que el usuario haya introducido el código en el campo. if(!camposObligatorios(parametros)) return; //Realizamos la petición ajax this.ajax.pedir("carritoControl.validarCodigoPromocional",parametros,XJSON,ASYNC,"carrito.postValidarCodigoPromocional"); } } this.escribirTotales = function() { /**- Función que escribe en html los totales calculados **/ //Escribimos los totales if($("#codigoIdioma").val() != "en") { $("#totalSinIVACarrito").html(formatoPrecioHTML(this.importeProductos)); $("#precioEnvioCarrito").html(formatoPrecioHTML(this.precioSinIVATipoEnvioSeleccionado)); $("#descuentoCarrito").html("-"+formatoPrecioHTML(this.precioSinIVACupon)); $("#ivaCarritoExento").html(formatoPrecioHTML('0')); $("#ivaCarritoNoExento").html(formatoPrecioHTML(this.iva)); $("#subtotalCarrito").html(formatoPrecioHTML(this.subtotal)); $(".totalSinIVACarrito").html(formatoPrecioHTML(this.subtotal)); $(".totalConIVACarrito").html(formatoPrecioHTML(this.total)); } else { $("#totalSinIVACarrito").html(formatoPrecioLibrasHTML(this.importeProductos)); $("#precioEnvioCarrito").html(formatoPrecioLibrasHTML(this.precioSinIVATipoEnvioSeleccionado)); $("#descuentoCarrito").html("-"+formatoPrecioLibrasHTML(this.precioSinIVACupon)); $("#ivaCarritoExento").html(formatoPrecioLibrasHTML('0')); $("#ivaCarritoNoExento").html(formatoPrecioLibrasHTML(this.iva)); $("#subtotalCarrito").html(formatoPrecioLibrasHTML(this.subtotal)); $(".totalSinIVACarrito").html(formatoPrecioLibrasHTML(this.subtotal)); $(".totalConIVACarrito").html(formatoPrecioLibrasHTML(this.total)); } if(parseInt(this.tipoIVA) == 0) { $(".totalSinIVACarrito").show(); $(".totalConIVACarrito").hide(); $(".ivaExento").show(); $(".ivaNoExento").hide(); } else { $(".totalSinIVACarrito").hide(); $(".totalConIVACarrito").show(); $(".ivaExento").hide(); $(".ivaNoExento").show(); } $(".clicProhibido").hide(); } this.gestionarMensajeCupon = function(resultado, pedir) { /**- Función que gestiona los tipos de errores que puedan ocurrir durante la petición del cupón de descuento. @param resultado, Objeto Resultado u Objeto Respuesta @param pedir, true o false si queremos volver a pedir los datos o no respectivamente **/ //Ocultamos todos los mensajes $(".msgpromo").hide(); if(resultado.tipo == "Respuesta") { if(this.tasa == undefined || this.tasa == null) this.tasa = 1; if(resultado.lista.nombreTipoDescuento == "Fijo") { if($("#codigoIdioma").val() != "en") var mensaje = " "+formatoPrecioHTML(parseFloat(resultado.lista.precioSinIVA) * parseFloat(this.tasa)); else var mensaje = " "+formatoPrecioHTML(parseFloat(resultado.lista.precioSinIVA) * parseFloat(this.tasa)); } else { var mensaje = "l "+resultado.lista['valordescuento']+" %"; } $("#textocuponvalidoCarritoMensaje").html(mensaje); $("#textocuponvalidoCarrito").show(); $("#textocuponvalidoCarritoMensaje").show(); //Pedimos de nuevo los datos del cupón. if(pedir) this.pedirCupon(); } else { this.hayCupon = false; if(resultado.mensaje == "textocuponinvalido") { $("#textocuponinvalidoCarrito").show(); } if(resultado.mensaje == "textopreciominimo") { if($("#codigoIdioma").val() != "en") var mensaje = formatoPrecioHTML(resultado.idregistro); else var mensaje = formatoPrecioLibrasHTML(resultado.idregistro); $("#textopreciominimoCarritoMensaje").html(mensaje); $("#textopreciominimoCarrito").show(); $("#textopreciominimoCarritoMensaje").show(); } } } this.guardarAgenciaTransporte = function(){ /**- Función que guarda en los datos de sesion la agencia de transporte seleccionada **/ //Cogemos los valores de la agencia de transportes por defecto para enviarla a sesión. var partesAgenciaTransporte = $('input:radio[name=agenciatransporte]:checked')[0].id.split("_"); this.idAgenciaTransporteSeleccionada = partesAgenciaTransporte[1]; this.nombreAgenciaTransporteSeleccionada = partesAgenciaTransporte[2]; this.valorAgenciaTransporteSeleccionada = $("input:radio[name=agenciatransporte]:checked").val(); //Array de parámetros var parametros = new Array(); parametros.push(new Parametro("idAgenciaTransporte",this.idAgenciaTransporteSeleccionada)); parametros.push(new Parametro("nombreAgenciaTransporte",this.nombreAgenciaTransporteSeleccionada)); parametros.push(new Parametro("valorAgenciaTransporte",this.valorAgenciaTransporteSeleccionada)); //Petición ajax this.ajax.pedir("carritoControl.guardarAgenciaTransporteSesion",parametros,XJSON,ASYNC,"carrito.postGuardarAgenciaTransporteSesion"); } this.guardarDestinoSesion = function() { /**- Función que guarda en las variable de sesión el destino que se ha seleccionado.do o no. **/ var parametros = new Array(); parametros.push(new Parametro("defectoDestinoSeleccionado",this.defectoDestino)); parametros.push(new Parametro("idDestinoSeleccionado",this.idDestinoSeleccionado)); parametros.push(new Parametro("IVAExentoDestinoSeleccionado",this.IVAExentoDestino)); parametros.push(new Parametro("mensajeErrorDestinoSeleccionado",this.mensajeErrorDestino)); parametros.push(new Parametro("codigoIdiomaDestinoSeleccionado",this.codigoIdiomaDestino)); parametros.push(new Parametro("codigoDestinoSeleccionado",this.codigoDestino)); this.ajax.pedir("carritoControl.guardarDestinoSesion",parametros,XJSON,ASYNC,"carrito.postGuardarDestinoSesion"); } this.guardarTipoEnvio = function(e) { /**- Función que guarda en los datos de sesion el tipo de envío seleccionado. **/ $(".clicProhibido").show(); //Cogemos los valores del tipo de envío por defecto para enviarlo a sesión. var partes = e.target.id.split("_"); this.idTipoEnvioSeleccionado = partes[1]; this.nombreTipoEnvioSeleccionado = partes[2]; this.nombreTipoEnvioSeleccionadoEspanol = $("#envioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).data("es"); this.valorTipoEnvioSeleccionado = $("#envioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); var precio = $("#precioEnvioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).html().split(" "); this.precioSinIVATipoEnvioSeleccionado = precio[0]; this.idDestinoSeleccionado = $("#envioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).attr("data"); var diasMinimo = $("#envioCarritoMinimo_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); var diasMaximo = $("#envioCarritoMaximo_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); this.costeTipoEnvioSeleccionado = $("#envioCarritoCoste_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); this.gratisTipoEnvioSeleccionado = $("#envioCarritoGratis_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); var urgente = 0; if(this.idTipoEnvioSeleccionado == this.idTipoEnvioUrgente || this.idTipoEnvioSeleccionado == this.idTipoEnvioUrgenteSabado) urgente = 1; //Array de parámetros var parametros = new Array(); parametros.push(new Parametro("idDestinoEnvio",this.idDestinoSeleccionado)); parametros.push(new Parametro("idTipoEnvio",this.idTipoEnvioSeleccionado)); parametros.push(new Parametro("nombreTipoEnvio",this.nombreTipoEnvioSeleccionado)); parametros.push(new Parametro("nombreTipoEnvioEspanol",this.nombreTipoEnvioSeleccionadoEspanol)); parametros.push(new Parametro("precioTipoEnvio",this.precioSinIVATipoEnvioSeleccionado)); parametros.push(new Parametro("valorTipoEnvio",this.valorTipoEnvioSeleccionado)); parametros.push(new Parametro("costeTipoEnvio",this.costeTipoEnvioSeleccionado)); parametros.push(new Parametro("gratisTipoEnvio",this.gratisTipoEnvioSeleccionado)); parametros.push(new Parametro("diasMinimo",diasMinimo)); parametros.push(new Parametro("diasMaximo",diasMaximo)); parametros.push(new Parametro("urgente",urgente)); //Petición ajax this.ajax.pedir("carritoControl.guardarTipoEnvioSesion",parametros,XJSON,ASYNC,"carrito.postGuardarTipoEnvioSesion"); } this.guardarTipoEnvioPHP = function(e) { /**- Función que guarda en los datos de sesion el tipo de envío seleccionado. **/ $(".clicProhibido").show(); //Cogemos los valores del tipo de envío por defecto para enviarlo a sesión. var partes = e.id.split("_"); this.idTipoEnvioSeleccionado = partes[1]; this.nombreTipoEnvioSeleccionado = partes[2]; this.nombreTipoEnvioSeleccionadoEspanol = $("#envioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).data("es"); this.valorTipoEnvioSeleccionado = $("#envioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); var precio = $("#precioEnvioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).html().split(" "); this.precioSinIVATipoEnvioSeleccionado = precio[0]; this.idDestinoSeleccionado = $("#envioCarrito_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).attr("data"); var diasMinimo = $("#envioCarritoMinimo_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); var diasMaximo = $("#envioCarritoMaximo_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); this.costeTipoEnvioSeleccionado = $("#envioCarritoCoste_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); this.gratisTipoEnvioSeleccionado = $("#envioCarritoGratis_"+this.idTipoEnvioSeleccionado+"_"+this.nombreTipoEnvioSeleccionado).val(); var urgente = false; if(this.idTipoEnvioSeleccionado == this.idTipoEnvioUrgente || this.idTipoEnvioSeleccionado == this.idTipoEnvioUrgenteSabado) urgente = true; //Array de parámetros var parametros = new Array(); parametros.push(new Parametro("idDestinoEnvio",this.idDestinoSeleccionado)); parametros.push(new Parametro("idTipoEnvio",this.idTipoEnvioSeleccionado)); parametros.push(new Parametro("nombreTipoEnvio",this.nombreTipoEnvioSeleccionado)); parametros.push(new Parametro("nombreTipoEnvioEspanol",this.nombreTipoEnvioSeleccionadoEspanol)); parametros.push(new Parametro("precioTipoEnvio",this.precioSinIVATipoEnvioSeleccionado)); parametros.push(new Parametro("valorTipoEnvio",this.valorTipoEnvioSeleccionado)); parametros.push(new Parametro("costeTipoEnvio",this.costeTipoEnvioSeleccionado)); parametros.push(new Parametro("gratisTipoEnvio",this.gratisTipoEnvioSeleccionado)); parametros.push(new Parametro("diasMinimo",diasMinimo)); parametros.push(new Parametro("diasMaximo",diasMaximo)); parametros.push(new Parametro("urgente",urgente)); //Petición ajax this.ajax.pedir("carritoControl.guardarTipoEnvioSesion",parametros,XJSON,ASYNC,"carrito.postGuardarTipoEnvioSesion"); } this.limpiarCamposPresupuesto = function() { /**- Limpiamos los campos del modal del presupuesto. **/ $(".inputModalPresupuesto").val(""); $(".inputModalPresupuesto").html(""); } this.modalPresupuesto = function() { /**- Función que crea un modal donde pedir los datos del usuario para descargar el presupuesto **/ this.limpiarCamposPresupuesto(); /*if(this.codigoIdioma == "es") var archivo = "carrito"; else if(this.codigoIdioma == "fr") var archivo = "panier"; else if(this.codigoIdioma == "it") var archivo = "carrello"; else if(this.codigoIdioma == "pt") var archivo = "carrinho"; iu.comunicarMio("Ok","",archivo); */ iu.comunicarMio("Ok","","carrito"); $("#presupuestocarrito").show(); $(".presupuesto-error").hide(); $("#tipoClienteParticularPresupuestoCarrito").prop("checked",true); $("#tipoClienteEmpresaPresupuestoCarrito").prop("checked",false); $("#cifModalPresupuestoCarrito").hide(); $("#razonSocialModalPresupuestoCarrito").hide(); $("#dniModalPresupuestoCarrito").show(); $("#nombreModalPresupuestoCarrito").show(); } this.pedirAgenciaTransporte = function() { /**- Función que pide los datos de sesión relativos a la agencia de transporte seleccionada **/ this.ajax.pedir("carritoControl.pedirAgenciaTransporteSesion",null,XJSON,ASYNC,"carrito.postPedirAgenciaTransporteSesion"); } this.pedirCarrito = function() { /**- Función que pide los datos del carrito guardados en session **/ this.ajax.pedir("carritoControl.pedirCarritoSesion",null,XJSON,ASYNC,"carrito.postPedirCarritoSesion"); } this.pedirCupon = function() { /**- Función que pide los datos de sesion relativos al cupon, por si el usuario ya ha recibido el desuento **/ this.ajax.pedir("carritoControl.pedirCuponSesion",null,XJSON,ASYNC,"carrito.postPedirCuponSesion"); } this.pedirDatosUsuario = function() { /**- Función que pide los datos del usuario. **/ //Petición ajax. this.ajax.pedir("datosControl.buscarUsuario",null,XJSON,ASYNC,"carrito.postBuscarUsuario"); } this.pedirDestino = function() { /**- Función que pide a los datos de sesión los datos relativos al destino seleccionado. **/ this.ajax.pedir("carritoControl.pedirDestinoSesion",null,XJSON,ASYNC,"carrito.postPedirDestinoSesion"); } this.pedirIdiomaSeleccionado = function() { /**- Función que nos busca el idioma por defecto que está usuando el usuario. **/ this.ajax.pedir("carritoControl.pedirIdiomaSesion",null,XJSON,ASYNC,"carrito.postPedirIdiomaSeleccionado"); } this.pedirTipoEnvio = function() { /**- Pide los datos de sesion del tipo de envío seleccionado. **/ var parametros = new Array(); parametros.push(new Parametro("conTextoPreliminar","false")); //Petición ajax. this.ajax.pedir("carritoControl.pedirTipoEnvioSesion",parametros,XJSON,ASYNC,"carrito.postPedirTipoEnvioSesion"); } this.recalcularPrecio = function(numProducto,cantidad) { /**- Función que coge los nuevos valores de la página del carrito y recalcula el precio del producto editado. @param numProducto, número del producto en la sesión. @param cantidad, cantidad total de productos. **/ var cantidadDisenhos = this.productos[numProducto].cantidadDisenhos; var idCategoria = this.productos[numProducto].idcategoria; var idProducto = this.productos[numProducto].idproducto; var idSubcategoria = this.productos[numProducto].idsubcategoria; var descuento = this.productos[numProducto].descuento; var disenhado = this.productos[numProducto].disenhadoEmpresa; var ancho = this.productos[numProducto].ancho; var alto = this.productos[numProducto].alto; var parametros = new Array(); parametros.push(new Parametro("idSessionCarrito",numProducto)); parametros.push(new Parametro("cantidadTotal",cantidad)); parametros.push(new Parametro("idCategoria",idCategoria)); parametros.push(new Parametro("idProducto",idProducto)); parametros.push(new Parametro("idSubcategoria",idSubcategoria)); parametros.push(new Parametro("cantidadDisenhos",cantidadDisenhos)); parametros.push(new Parametro("descuentoPatrocinio",descuento)); parametros.push(new Parametro("disenhado",disenhado)); parametros.push(new Parametro("cantidadesCambiadas",1)); parametros.push(new Parametro("anchoProducto",ancho)); parametros.push(new Parametro("altoProducto",alto)); parametros.push(new Parametro("tasaCambio",this.tasa)); //Recorremos las características del producto if(carrito.productos[numProducto].caracteristicas != undefined) { $.each(carrito.productos[numProducto].caracteristicas,function(index,value) { parametros.push(new Parametro("valorCaracteristica_"+value.idCaracteristica,value.idValorCaracteristica)); }); } // Hacemos la petición por ajax. this.ajax.pedir("carritoControl.actualizarDatosSesion",parametros,XJSON,ASYNC,"carrito.postActualizarDatosSesion"); } this.seleccionarDestino = function(e) { /**- Función que coge el id del destino seleccionado. @param e, evento que lanza la acción. **/ $(".clicProhibido").show(); var partesIdDestino = e.id.split("_"); this.idDestinoSeleccionado = partesIdDestino[1]; $(".pais").removeClass("activo"); this.guardarDestinoSesion(); this.buscarEnvios(); } this.tasaCambioDivisas = function() { /**- Función que convierte los precios de euros a la moneda apropiada según el idioma. Para ello usamos una api de jQuery, ExchangeRate-api. **/ var divisa = intercambioCodigoIdiomaCodigoDivisa($("#codigoIdioma").val()); fetch('https://api.exchangerate-api.com/v4/latest/EUR') .then(res => res.json()) .then(data => { carrito.tasa = data.rates[divisa]; }); if(carrito.tasa == undefined || carrito.tasa == null) carrito.tasa = 1; } this.valoresDestino = function() { /**- Función que coge los valores necesarios sobre los destinos. **/ $.each(this.destinos,function(index,value) { if(value.id == carrito.idDestinoSeleccionado) { carrito.idDestinoSeleccionado = value.id; carrito.IVAExentoDestino = value.ivaexento; carrito.mensajeErrorDestino = value.textoMensaje; carrito.codigoIdiomaDestino = value.codigoIdiomaDestino; carrito.codigoDestino = value.codigodestino; carrito.defectoDestino = value.defecto; } }); } //*MÉTODOS POST*// this.postActualizarDatosSesion = function(respuesta) { /**- Función que procesa el resultado **/ if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { //Actualizamos las variables de clase this.productos = respuesta.lista; this.totalProductos = respuesta.total; //this.recargarImprescindibles(); window.location.reload(); } else iu.comunicarMio(respuesta.valor,respuesta.mensaje,"carrito"); } this.postBuscarDestinos = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Respuesta. **/ if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { this.destinos = respuesta.lista; this.totalDestinos = respuesta.total; //Incrementamos el valor de carga //this.controlCargaDestino++; //this.controlCargaEnvios++; //if(this.controlCargaDestino == 2) this.cargarComboDestinos(); //if(this.controlCargaEnvios == 4) this.dibujarEnvios(); this.valoresDestino(); } } this.postBuscarEnvios = function(respuesta) { /**- Función que procesa el resultado @param respuesta, Objeto Repsuesta **/ if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { this.envios = respuesta.lista; this.totalEnvios = respuesta.total; this.controlCargaEnvios++; //if(this.controlCargaEnvios == 4) this.dibujarEnvios(); this.dibujarEnvios(); } else iu.comunicarMio(respuesta.valor,respuesta.mensaje,"carrito"); } this.postBuscarUsuario = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Array con dos objetos respuesta, el usuario y su dirección. **/ //Procesamos la resouesta if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { if(respuesta.lista.usuario != null && respuesta.lista.usuario != undefined) { if(respuesta.lista.usuario.tipo == "Respuesta" && respuesta.lista.usuario.total == 1) this.tipoIVA = respuesta.lista.usuario.lista[0].tipoiva; else this.tipoIVA = TIPO_IVA_GENERAL; } else this.tipoIVA = TIPO_IVA_GENERAL; } this.calcularTotales(); } this.postCrearPresupuesto = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Resultado. **/ if(respuesta.tipo == "Resultado" && respuesta.valor == "Ok") { iu.cerrarModal(); iu.irAConIdioma("presupuesto"); } else iu.comunicarMio(respuesta.valor, respuesta.mensaje,"carrito"); } this.postEliminarCuponSesion = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Resultado. **/ if(respuesta.tipo == "Resultado" && respuesta.valor == "Ok") { // Inicializamos las variables del cupon a 0 o null; this.codigoCupon = null; this.descripcionCupon = null; this.nombreTipoDescuentoCupon = null; this.precioSinIVACupon = 0; this.precioConIVACupon = 0; this.importeIVACupon = 0; $("#promocodes").val(""); $("#enviarCupon").show(); $("#eliminarCupon").hide(); $("#textocuponvalidoCarrito").hide(); $("#textocuponvalidoCarritoMensaje").hide(); $("#textopreciominimoCarrito").hide(); $("#textopreciominimoCarritoMensaje").hide(); $("#textocuponinvalidoCarrito").hide(); //Recalculamos y escribimos los totales this.hayCupon = false; this.calcularTotales(); } } this.postEliminarProductoSesion = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Resultado. **/ if(respuesta.tipo == "Resultado" && respuesta.valor == "Ok") window.location.reload(); else iu.comunicarMio(respuesta.valor,respuesta.mensaje,"carrito"); } this.postGuardarAgenciaTransporteSesion = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Resultado. **/ //Procesamos la respuesta if(!(respuesta.tipo == "Resultado" && respuesta.valor == "Ok")) iu.comunicarMio(respuesta.valor, respuesta.mensaje,"carrito"); } this.postGuardarDestinoSesion = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Resultado. **/ $(".listado-paises").hide(); $(".flechita-abajo").show(); $(".flechita-arriba").hide(); if(!(respuesta.tipo == "Resultado" && respuesta.valor == "Ok")) iu.comunicarMio(respuesta.valor, respuesta.mensaje,"carrito"); else { var idDestino = respuesta.idregistro; $("#idDestinoActivo").html($("#idDestino_"+idDestino).html()); } } this.postGuardarDisenoSesion = function(respuesta) { /**- Función que procesa el resultado. param respuesta, Objeto Resultado. **/ if(respuesta.tipo == "Resultado") { this.guardarDestinoSesion(); var producto = respuesta.idregistro; var numCaras = producto.numCaras; if(numCaras > 1) iu.irAConIdioma("diseno"); else iu.irAConIdioma("disenador"); } } this.postGuardarTipoEnvioSesion = function(respuesta) { /**- Función que procesa el resultado @param respuesta, Objeto Resultado **/ //Procesamos el resultado if(!(respuesta.tipo == "Resultado" && respuesta.valor == "Ok")) { iu.comunicarMio(respuesta.valor, respuesta.mensaje,"carrito"); } else { this.pedirTipoEnvio(); } } this.postPedirAgenciaTransporteSesion = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Respuesta. **/ //Si ya está guardada en sesión la agencia de transporte, cargamos las variables. if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { this.idAgenciaTransporteSeleccionada = respuesta.lista.id; this.nombreAgenciaTransporteSeleccionada = respuesta.lista.nombre; this.valorAgenciaTransporteSeleccionada = respuesta.lista.valor; //Seleccionamos la agencia de tranporte guardada en los datos de sesión. $("#agenciaTransporteCarrito_"+this.idAgenciaTransporteSeleccionada+"_"+this.nombreAgenciaTransporteSeleccionada).prop("checked",true); } else { //Si aún no están guardadas en sesión, guardamos la agancia por defecto this.guardarAgenciaTransporte(); } } this.postPedirCarritoSesion = function(respuesta) { /**- Función qu eprocesa el resultado. @param respuesta, Objeto Respuesta. **/ //Si obtenemos una respuesta if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { this.productos = respuesta.lista; // Inicializamos los objetos productos this.totalProductos = respuesta.total; //Inicializamos el total de los productos this.calcularTotales(); // Inicializamos las variables de cálculo global (precios) guardándolas en formato float para hacer cálculos } } this.postPedirCuponSesion = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Respuesta. **/ //Si obtenemos una respuesta if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { this.codigoCupon = respuesta.lista['codigo']; this.descripcionCupon = respuesta.lista['descripcion']; this.nombreTipoDescuentoCupon = respuesta.lista['nombreTipoDescuento']; this.precioSinIVACupon = parseFloat(respuesta.lista['precioSinIVA']) * this.tasa; this.precioConIVACupon = parseFloat(respuesta.lista['precioConIVA']) * parseFloat(this.tasa); this.importeIVACupon = parseFloat(respuesta.lista['importeIVA']) * parseFloat(this.tasa); $("#promocodes").val("Código válido: "+this.codigoCupon); $("#enviarCupon").hide(); $("#eliminarCupon").show(); this.gestionarMensajeCupon(respuesta,false); this.hayCupon = true; this.calcularTotales(); // Inicializamos las variables de cálculo global (precios) guardándolas en formato float para hacer cálculos } } this.postPedirDestinoSesion = function(respuesta) { /**- función que procesa el resultado. @param respuesta, Objeto Respuesta. **/ if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { this.idDestinoSeleccionado = respuesta.lista.id; this.mensajeErrorDestino = respuesta.lista.mensajeerror; this.IVAExentoDestino = respuesta.lista.ivaexento; this.codigoIdiomaDestino = respuesta.lista.codigoIdiomaDestino; this.codigoDestino = respuesta.lista.codigoDestino; this.defectoDestino = respuesta.lista.defecto; } } this.postPedirIdiomaSeleccionado = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Respuesta. **/ if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { this.idioma = respuesta.lista; this.totalIdiomas = respuesta.total; } } this.postPedirTipoEnvioSesion = function(respuesta) { /**- Función que procesa el resultado @param respuesta, Objeto Respuesta **/ //Incrementamos el valor del control de carga this.controlCargaEnvios++; //Procesamos la respuesta. if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { if(respuesta.lista['idDestino'] == this.idDestinoSeleccionado) { this.idTipoEnvioSeleccionado = respuesta.lista['id']; this.nombreTipoEnvioSeleccionado = respuesta.lista['nombre']; this.valorTipoEnvioSeleccionado = respuesta.lista['valor']; this.costeTipoEnvioSeleccionado = respuesta.lista['coste']; this.gratisTipoEnvioSeleccionado = respuesta.lista['gratis']; this.precioSinIVATipoEnvioSeleccionado = respuesta.lista['precioSinIVA']; this.precioConIVATipoEnvioSeleccionado = respuesta.lista['precioConIVA']; this.importeIVATipoEnvioSeleccionado = respuesta.lista['importeIVA']; //if(this.controlCargaEnvios == 4) this.dibujarEnvios(); } else { $.each(this.envios,function(index,value){ if(value.iddestino == carrito.idDestinoSeleccionado) { if(parseInt(value.seleccionado)) { carrito.idTipoEnvioSeleccionado = value.id; carrito.nombreTipoEnvioSeleccionado = value.nombreTipoEnvio; carrito.valorTipoEnvioSeleccionado = value.valorTipoEnvio; carrito.precioSinIVATipoEnvioSeleccionado = value.precio; carrito.costeTipoEnvioSeleccionado = value.coste; carrito.gratisTipoEnvioSeleccionado = value.gratis; } } }); //if(this.controlCargaEnvios == 4) this.dibujarEnvios(); } } else { $.each(this.envios,function(index,value){ if(value.iddestino == carrito.idDestinoSeleccionado) { if(parseInt(value.seleccionado)) { carrito.idTipoEnvioSeleccionado = value.id; carrito.nombreTipoEnvioSeleccionado = value.nombreTipoEnvio; carrito.valorTipoEnvioSeleccionado = value.valorTipoEnvio; carrito.precioSinIVATipoEnvioSeleccionado = value.precio; carrito.costeTipoEnvioSeleccionado = value.coste; carrito.gratisTipoEnvioSeleccionado = value.gratis; } } }); //if(this.controlCargaEnvios == 4) this.dibujarEnvios(); } var destinoActual = $("#idDestino_"+this.idDestinoSeleccionado).html(); $("#idDestinoActivo").innerHTML = destinoActual; this.valoresDestino(); if(this.hayCupon) this.enviarCuponDescuentoCarrito(); else this.calcularTotales(); } this.postValidarCodigoPromocional = function(respuesta) { /**- Función que procesa el resultado. @param respuesta, Objeto Respuesta. **/ //Procesamos la respuesta if(respuesta.tipo == "Respuesta" && respuesta.total > 0) { $("#eliminarCupon").show(); $("#enviarCupon").hide(); } else { $("#eliminarCupon").hide(); $("#enviarCupon").show(); } //Gestión de los mensajes this.gestionarMensajeCupon(respuesta,true); } } var carrito = new Carrito(); $(document).ready(function() { carrito.iniciar(); $(".btn-disenar").click(function(e){ var id = e.target.id; carrito.disenarProducto(id,1); }); $("#descargarPresupuesto").click(function(){ if(carrito.idTipoEnvioSeleccionado == null) $("#errorDescargarPresupuestoCarrito").show(); carrito.modalPresupuesto(); }); $("#descargarPresupuestoCarrito").click(function(){ carrito.crearPresupuesto(); }); $("#disenharCarrito").click(function(){ carrito.guardarDestinoSesion(); iu.irAConIdioma("diseno"); }); $("#eliminarCupon").click(function(){ $(".clicProhibido").show(); carrito.eliminarDatosSesionCupon(); }); $("#enviarCupon").click(function(){ $(".clicProhibido").show(); carrito.enviarCuponDescuentoCarrito(); }); $("#tipoClienteParticularPresupuestoCarrito").click(function(){ $("#dniModalPresupuestoCarrito").show(); $("#cifModalPresupuestoCarrito").hide(); $("#nombreModalPresupuestoCarrito").show(); $("#razonSocialModalPresupuestoCarrito").hide(); }); $("#tipoClienteEmpresaPresupuestoCarrito").click(function(){ $("#dniModalPresupuestoCarrito").hide(); $("#cifModalPresupuestoCarrito").show(); $("#nombreModalPresupuestoCarrito").hide(); $("#razonSocialModalPresupuestoCarrito").show(); }); $(".transAgencia").click(function(){ carrito.guardarAgenciaTransporte(); }); });