///////////////////////////////////////////////////////////////////////////////////////// var tv_mostrar_stock = 1; var tv_mostrar_stock_imagen = 1; var tv_mostrar_stock_imagen_parcial = 1; var tv_mostrar_stock_imagen_minimos = 0; var tv_stock_mostrar_mensaje_insuficiente = 0; var tv_mostrar_stock_por_almacen = 1; var aux_stock; var con_stock; var tv_decimales = 2; var num_descuentos = 1; var tv_kits = 1; var tv_kits_fabricar_sin_stock = 0; var es_kit; var es_neto; var neumatico; var fam_web_con_stock; var sub_web_con_stock; var ref_web_con_stock; var id_marca = cargar_variable("id-marca", 0); var id_modelo = cargar_variable("id-modelo", 0); var id_version = cargar_variable("id-version", 0); var id_grupo = cargar_variable("id-grupo", 0); var id_subgrupo = cargar_variable("id-subgrupo", 0); var tip_catalogo = cargar_variable("tip-catalogo", 0); var uds_cesta; var uds_pendientes; var ultima_referencia_cargada; function cargar_variables (referencia) { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", data: { json: 1, id_referencia: referencia, id_ref_talla: $("#id-ref-talla-" + referencia + " option:selected").val(), id_ref_color: $("#id-ref-color-" + referencia + " option:selected").val(), estado: 10, tabla: 3 }, async: false, success: function (response) { es_kit = parseInt(response["es_kit"]); es_neto = parseInt(response["es_neto"]); neumatico = parseInt(response["neumatico"]); fam_web_con_stock = parseInt(response["fam_web_con_stock"]); sub_web_con_stock = parseInt(response["sub_web_con_stock"]); ref_web_con_stock = parseInt(response["ref_web_con_stock"]); uds_cesta = stringToFloat(response.uds_cesta); uds_pendientes = stringToFloat(response.uds_pendientes); ultima_referencia_cargada = referencia; }, error: function (response) { console.log("Error AJAX"); console.log(response); } }) } function cargar_variable (id, defecto) { if ($("#" + id).val() != undefined) { return parseInt($("#" + id).val()); } else { return defecto; } } ///////////////////////////////////////////////////////////////////////////////////////// var cantidadAnterior = $('#contenedor-cantidad .cantidad').val(); if (cantidadAnterior) { cantidadAnterior = stringToFloat(cantidadAnterior); } function aumentar_cantidad (referencia, origen) { var productContainer = getProductContainer(origen); var cantidad = stringToFloat($(productContainer).find("#cantidad-" + referencia).val()); var uds_envase = stringToFloat($(productContainer).find("#uds-envase-" + referencia).val()); if (uds_envase === 0) { uds_envase = 1; } var nueva_cantidad = cantidad + uds_envase; $(productContainer).find("#cantidad-" + referencia).val(nueva_cantidad); $(productContainer).find(".valor button, #cantidad-" + referencia).prop("disabled", true); if (origen) { recalcular_precio(referencia, origen); } else { recalcular_precio(referencia); } } function disminuir_cantidad (referencia, origen) { var productContainer = getProductContainer(origen); var cantidad = stringToFloat($(productContainer).find("#cantidad-" + referencia).val()); var uds_envase = stringToFloat($(productContainer).find("#uds-envase-" + referencia).val()); if (uds_envase === 0) { uds_envase = 1; } var nueva_cantidad; if (cantidad > uds_envase) { nueva_cantidad = cantidad - uds_envase; } else { nueva_cantidad = uds_envase; } $(productContainer).find("#cantidad-" + referencia).val(nueva_cantidad); $(productContainer).find(".valor button, #cantidad-" + referencia).prop("disabled", true); if (origen) { recalcular_precio(referencia, origen); } else { recalcular_precio(referencia); } } function validarCantidadReferencia (idReferencia, origen) { var productContainer = getProductContainer(origen); var cantidad = stringToFloat( $(productContainer).find('#cantidad-' + idReferencia).val() ); var uds_envase = stringToFloat( $(productContainer).find('#uds-envase-' + idReferencia).val() ); if (cantidad < uds_envase) { cantidad = uds_envase; $(productContainer).find('#cantidad-' + idReferencia).val(cantidad); } return cantidad; } var getProductContainer = function (origen) { if (origen) { return origen.closest('.producto') || origen.closest('#producto'); } else { return document; } } function cantidad_uds_envase (referencia, cantidad, origen) { var productContainer = getProductContainer(origen); if (!origen) { origen = document.getElementById('cantidad-' + referencia); } cantidad = stringToFloat(cantidad); var nuevaCantidad; var udsEnvase = stringToFloat($(productContainer).find('#uds-envase-' + referencia).val()); if (udsEnvase === 0) { udsEnvase = 1; } if (cantidad > udsEnvase) { nuevaCantidad = cantidad / udsEnvase; nuevaCantidad = Math.ceil(nuevaCantidad); nuevaCantidad = nuevaCantidad * udsEnvase; } else { nuevaCantidad = udsEnvase; } $(productContainer).find('#cantidad-' + referencia).val(nuevaCantidad).prop('disabled', true); $('.valor button').prop('disabled', true); if (nuevaCantidad != cantidadAnterior) { recalcular_precio(referencia, origen); } else { $(productContainer).find('#cantidad-' + referencia).prop('disabled', false); $('.valor button').prop('disabled', false); } } var respuesta; function recalcular_precio (referencia, origen) { var productContainer = getProductContainer(origen); $('.validation-msj').hide(); if (ultima_referencia_cargada != referencia) { cargar_variables(referencia); } var cantidad_introducida = validarCantidadReferencia(referencia, origen); $.ajax({ dataType: 'JSON', type: 'POST', url: 'ControlB2C', data: { json: 1, id_referencia: referencia, id_ref_talla: $(productContainer).find("#id-ref-talla-" + referencia + " option:selected").val(), id_ref_color: $(productContainer).find("#id-ref-color-" + referencia + " option:selected").val(), stock_almacen: $(productContainer).find("#almacen-stock-" + referencia).val() || "", cantidad: cantidad_introducida, estado: 1, tabla: 3 }, async: false, success: function (response) { if (parseInt(response.resultado) === 0) { var cantidad = stringToFloat(response.cantidad); var stock = stringToFloat(response.stock); if (es_neto == 0) { $(productContainer).find("#precio-" + referencia).html(response["precio"]); } else { $(productContainer).find("#precio-" + referencia).html(response["preciof"]); } $(productContainer).find("#dto1-" + referencia).html(response["dto1"]); $(productContainer).find("#dto2-" + referencia).html(response["dto2"]); $(productContainer).find("#dto3-" + referencia).html(response["dto3"]); $(productContainer).find("#imp-linea-" + referencia).html(response["imp_linea"]); $(productContainer).find("#cantidad-" + referencia).val(response.cantidad); cantidadAnterior = cantidad; var mos_sto_referencia = parseInt(response["mos_sto_referencia"]); var mos_stock = parseInt(response["mos_stock"]); var mensaje_personalizado = $("#fam-web-men-sin-stock-" + referencia).val(); if (mensaje_personalizado === undefined) { mensaje_personalizado = ""; } if ( mos_sto_referencia == 1) { if (mos_stock == 1) { if (tv_stock_mostrar_mensaje_insuficiente != 0) { aux_stock = stock; } if (tv_mostrar_stock_imagen == 0) { actualizarTextoStock( productContainer.querySelector('#stock-' + referencia), stock, response.col_stock ); if (response.stock_fis) { var stockFis = stringToFloat(response.stock_fis); actualizarTextoStock( productContainer.querySelector('#stock-fis-' + referencia), stockFis, response.col_stock_fis ); } if (response.stock_log) { var stockLog = stringToFloat(response.stock_log); actualizarTextoStock( productContainer.querySelector('#stock-log-' + referencia), stockLog, response.col_stock_log ); } if (response.stock_tra) { var stockTra = stringToFloat(response.stock_tra); actualizarTextoStock( productContainer.querySelector('#stock-tra-' + referencia), stockTra, response.col_stock_tra ); } } else { actualizarStockImagen( productContainer.querySelector('#stock-' + referencia), stock, cantidad, mensaje_personalizado, response.col_stock ); if (response.stock_fis) { var stockFis = stringToFloat(response.stock_fis); actualizarStockImagen( productContainer.querySelector('#stock-fis-' + referencia), stockFis, cantidad, mensaje_personalizado, response.col_stock_fis ); } if (response.stock_log) { var stockLog = stringToFloat(response.stock_log); actualizarStockImagen( productContainer.querySelector('#stock-log-' + referencia), stockLog, cantidad, mensaje_personalizado, response.col_stock_log ); } if (response.stock_tra) { var stockTra = stringToFloat(response.stock_tra); actualizarStockImagen( productContainer.querySelector('#stock-tra-' + referencia), stockTra, cantidad, mensaje_personalizado, response.col_stock_tra ); } } } if ( tv_mostrar_stock_por_almacen != 0 ) { actualizarStockAlmacenes(tv_mostrar_stock_imagen, response.almacenes, cantidad); } var desplegableTalla = $(productContainer).find("#id-ref-talla-" + referencia + " option:selected"); var desplegableColor = $(productContainer).find("#id-ref-color-" + referencia + " option:selected"); if ( controlarDesplegableExisteTieneValor(desplegableTalla) === false || controlarDesplegableExisteTieneValor(desplegableColor) === false ) { ocultarStockAlmacenes(); } } else { if ( mensaje_personalizado.length > 0 ) { if ($("#url-producto").val() == 1) { $(productContainer).find("#stock-" + referencia).removeClass().addClass("text-red").data('type', 5).html(mensaje_personalizado); } else { $(productContainer).find("#stock-" + referencia).removeClass().addClass("label label-stock-red").data('type', 5).html(mensaje_personalizado); } } else { $(productContainer).find("#stock-" + referencia).removeClass().addClass("text-red").data('type', 5).html("Consultar"); } } if (response.fec_pre_env_mensaje) { $(productContainer).find('#informacion .dis_fec_pre_env_mensaje').removeClass('oculto').html(response.fec_pre_env_mensaje); } else { $(productContainer).find('#informacion .dis_fec_pre_env_mensaje').addClass('oculto'); } respuesta = response; } else { location.reload(); } }, error: function (error) { console.log("error", error); respuesta = false; }, complete: function () { $(productContainer).find(".valor button, #cantidad-" + referencia).prop("disabled", false); comprobarSelectTallasColores(); } }); } // Controlamos si el desplegable existe y tiene valor var controlarDesplegableExisteTieneValor = function (select) { // Desplegable no existe if (select.length === 0) { return true; } var value = parseInt($(select).val()); // Desplegable sin valor if (value === 0) { return false; } return true; } // Colores para stock, stock_fis, stock_log y almacenes var clasesTextoStock = { 0: 'text-red detalle-stock', 1: 'text-green detalle-stock', 2: 'text-orange detalle-stock', 3: 'text-yellow detalle-stock' } function actualizarTextoStock(selector, stock, color) { $(selector).removeClass().addClass(clasesTextoStock[color]); if (stock === 1) { $(selector).html(stock + ' unidad'); } else { $(selector).html(stock + ' unidades'); } } var clasesLabelStock = { 0: 'label label-stock-red detalle-stock', 1: 'label label-stock-green detalle-stock', 2: 'label label-stock-orange detalle-stock', 3: 'label label-stock-yellow detalle-stock' } function actualizarStockImagen (selector, stock, cantidad, mensajePersonalizado, color) { if (clasesLabelStock[color]) { $(selector).removeClass().addClass(clasesLabelStock[color]); } else { $(selector).removeClass().addClass('label label-stock-gray detalle-stock'); } if (stock > 0) { if (stock >= cantidad) { $(selector).data('type', 1).html('En stock'); } else { if (tv_mostrar_stock_imagen_parcial == 1) { $(selector).data('type', 3).html('Parcial'); } else { if ( mensajePersonalizado.length > 0 ) { $(selector).data('type', 2).html(mensajePersonalizado); } else { $(selector).data('type', 2).html('Sin stock'); } } } } else { if (tv_mostrar_stock_imagen_minimos == 0) { if ( mensajePersonalizado.length > 0 ) { $(selector).data('type', 2).html(mensajePersonalizado); } else { $(selector).data('type', 2).html('Sin stock'); } } else { if ( mensajePersonalizado.length > 0 ) { $(selector).data('type', 2).html(mensajePersonalizado); }else{ $(selector).data('type', 2).html('Consultar'); } } } } var stockAlmacenesTituloEl = '

Almacén

Stock

'; function actualizarStockAlmacenes (tv_mostrar_stock_imagen, almacenes, cantidad) { if (document.body.contains(document.getElementById('sto-alm-almacenes'))) { // Si existe el div lo limpiamos var stockAlmacenesEl = document.getElementById('sto-alm-almacenes'); stockAlmacenesEl.innerHTML = ''; if (almacenes.length > 0) { // Si hay almacenes metemos el titulo stockAlmacenesEl.innerHTML = stockAlmacenesTituloEl; for (var i = 0; i < almacenes.length; i++) { var almacen = almacenes[i]; var almacenEl = document.createElement('div'); almacenEl.className = 'almacen'; var denominacionContainerEl = document.createElement('div'); denominacionContainerEl.className = 'col-xs-10 sin-padding-lateral'; var denominacionEl = document.createElement('p'); denominacionEl.innerText = almacen.codigo + ' - ' + almacen.denominacion; denominacionContainerEl.appendChild(denominacionEl); almacenEl.appendChild(denominacionContainerEl); var stockContainerEl = document.createElement('div'); stockContainerEl.className = 'col-xs-2 sin-padding-lateral text-center icono'; // Mostramos el stock por imagen o numero if (tv_mostrar_stock_imagen === 0) { var stockEl = document.createElement('b'); stockEl.id = 'stock-' + almacen.id; stockEl.className = clasesTextoStock[almacen.col_stock]; stockEl.innerText = almacen.stock; } else { var stockEl = document.createElement('span'); stockEl.id = 'stock-' + almacen.id; if (almacen.stock > 0) { if (almacen.stock >= cantidad) { // CON STOCK stockEl.className = 'glyphicon glyphicon-ok-sign text-green'; } else { if (tv_mostrar_stock_imagen_parcial == 1) { // PARCIAL stockEl.className = 'glyphicon glyphicon-ok-sign text-orange'; } else { // SIN STOCK stockEl.className = 'glyphicon glyphicon-remove-sign text-red'; } } } else { if (tv_mostrar_stock_imagen_minimos === 0) { // SIN STOCK stockEl.className = 'glyphicon glyphicon-remove-sign text-red'; } else { // BAJO MINIMOS stockEl.className = 'glyphicon glyphicon-question-sign text-yellow'; } } } stockContainerEl.appendChild(stockEl); almacenEl.appendChild(stockContainerEl); stockAlmacenesEl.appendChild(almacenEl); } } } } function ocultarStockAlmacenes() { var stockAlmacenesEl = document.getElementById('sto-alm-almacenes'); if (stockAlmacenesEl) { stockAlmacenesEl.innerHTML = ''; } } function comprobarSelectTallasColores () { if ($("#url-producto").val() == 1) { if ( $("#producto").find('select').length ) { var select = "#producto #informacion .valor .select-talla-color"; if ( $(select).val() == 0 ) { var texto = $(select).data('texto'); $(".stock-mensaje span").removeClass().addClass('label label-stock-gray').html(texto); } } } else { $( ".producto" ).each(function(index , element) { var id = element.id; if ( $(element).find('.select-talla-color').length ) { var selectEl = '#' + id + ' .select-talla-color'; var selectValue = parseInt($(selectEl).val()) if ( selectValue === 0 ) { var texto = $(selectEl).data('texto'); var stockElements = element.querySelectorAll('.stock .detalle-stock'); for (var i = 0; i < stockElements.length; i++) { var element = stockElements[i]; $(element).removeClass().addClass('label label-stock-gray detalle-stock').html(texto); } } } }); } } $(window).on('load', function () { comprobarSelectTallasColores(); }); // ======================================================================================= var estado_validacion = 0; var referencia_anterior = ""; $("#modal-mensaje-confirmar").on('hide.bs.modal', function (e) { estado_validacion = 0; }); $(".btn-cancelar").on("click", function (){ estado_validacion = 0; }); $("#modal-mensaje-confirmar .btn-aceptar").on("click", function (){ estado_validacion = 5; }); $("#modal-mensaje-aviso").on('hidden.bs.modal', function (e) { validar_cesta(referencia_anterior); }); function validar_cesta (referencia, origen) { $("#id-producto-activo").val(referencia); if (origen) { recalcular_precio(referencia, origen); } else { recalcular_precio(referencia); } var productContainer = getProductContainer(origen); if ( $(productContainer).find('#almacen-stock-' + referencia).val() != undefined && $(productContainer).find('#almacen-stock-' + referencia).val().length === 0 ) { $("#modal-mensaje-error").modal("show"); $("#modal-mensaje-error .mensaje").html("Selecciona un almacén."); return false; } var stock = stringToFloat(respuesta.stock); if (respuesta == false) { $("#modal-mensaje-error").modal("show"); $("#modal-mensaje-error .mensaje").html("Si quieres pedir esta referencia ponte en contacto con la tienda.
Disculpa las molestias."); return false; } if ( replace($(productContainer).find("#imp-linea-" + referencia).text(), ",", ".") == 0 ) { $("#modal-mensaje-error").modal("show"); $("#modal-mensaje-error .mensaje").html("Precio no válido.
Ponte en contacto con la tienda para pedir esta referencia.
Disculpa las molestias."); return false; } var uds_envase = stringToFloat($(productContainer).find("#uds-envase-" + referencia).val()); if (uds_envase === 0) { uds_envase = 1; } var cantidadX = validarCantidadReferencia(referencia) * Math.pow(10, tv_decimales); var uds_envaseX = uds_envase * Math.pow(10, tv_decimales); console.log(cantidadX); console.log(uds_envaseX); console.log(cantidadX % uds_envaseX); // if (validarCantidadReferencia(referencia) % uds_envase != 0) { if (cantidadX % uds_envaseX != 0) { $("#modal-mensaje-aviso").modal("show"); $("#modal-mensaje-aviso .mensaje").html("Solo se puede añadir a la cesta de " + uds_envase + " en " + uds_envase + " unidades"); $(productContainer).find("#cantidad-" + referencia).select(); return false; } if (fam_web_con_stock == 0 || sub_web_con_stock == 0 || ref_web_con_stock == 0 || (tv_kits == 1 && es_kit == 1 && tv_kits_fabricar_sin_stock == 1)) { con_stock = 0; } else { con_stock = 1; } if (con_stock == 1){ if( $(productContainer).find("#stock-" + referencia).data("type") == 5 ){ $("#modal-mensaje-error").modal("show"); $("#modal-mensaje-error .mensaje").html("Si quieres pedir esta referencia ponte en contacto con la tienda.
Disculpa las molestias."); $(productContainer).find("#cantidad-" + referencia).select(); return false; }else if ( $(productContainer).find("#stock-" + referencia).data("type") == 2 ){ $("#modal-mensaje-error").modal("show"); $("#modal-mensaje-error .mensaje").html("No hay stock disponible para la venta.
Si quieres pedir esta referencia ponte en contacto con la tienda.
Disculpa las molestias."); $(productContainer).find("#cantidad-" + referencia).select(); return false; }else if( $(productContainer).find("#stock-" + referencia).data("type") == 3 ){ $("#modal-mensaje-error").modal("show"); $("#modal-mensaje-error .mensaje").html("No hay suficiente stock para la venta.
Puedes reducir la cantidad a pedir o ponerte en contacto con la tienda.
Disculpa las molestias."); $(productContainer).find("#cantidad-" + referencia).select(); return false; }else if( $(productContainer).find("#stock-" + referencia).data("type") == 4 ){ $("#modal-mensaje-error").modal("show"); $("#modal-mensaje-error .mensaje").html("El stock de la referencia está bajo mínimos.
Si quieres pedir esta referencia ponte en contacto con la tienda.
Disculpa las molestias."); $(productContainer).find("#cantidad-" + referencia).select(); return false; } } if (estado_validacion < 6) { var forzar_confirmar = 0; if (neumatico==1){ $("#modal-confirmar-anadir").modal("show"); $("#modal-confirmar-anadir .mensaje").html("Si deseas montar tu neumático en nuestro taller, asegúrate de haber marcado el montaje de neumático.
¿Estás seguro de que quieres añadir el producto?"); return false; } if (forzar_confirmar==1){ $("#modal-confirmar-anadir").modal("show"); $("#modal-confirmar-anadir .mensaje").html("¿Estás seguro de que quieres añadir el producto?"); } else{ anadir_cesta(referencia); } } } function anadir_cesta (referencia) { estado_validacion = 0; $(".modal").modal("hide"); $("#btn-anadir-cesta-" + referencia).html(" Añadiendo producto").prop("disabled", true); var total_accesorios = parseInt($("#total-accesorios").val()); var id_ref_talla = parseInt($("#id-ref-talla-" + referencia + " option:selected").val()); var id_ref_color = parseInt($("#id-ref-color-" + referencia + " option:selected").val()); var id_talla = $("#id-ref-talla-" + referencia + " option:selected").data('id-ref-talla'); var id_color = $("#id-ref-color-" + referencia + " option:selected").data('id-ref-color'); var data = { json: 1, cantidad: validarCantidadReferencia(referencia), id_referencia: referencia, id_ref_proveedor: 0, aleatorio: numero_aleatorio, ces_conectado: 0, ces_contado: 0, stock_almacen: $("#almacen-stock-" + referencia).val() || "", tabla: 3, estado: 2 }; var accesorios_anadidos = 0; for ( i = 1; i <= total_accesorios; i++) { if ( $("#chk-accesorio-" + i).is(":checked") ) { accesorios_anadidos++; // En la peticion empieza por 1 data["id_accesorio_" + accesorios_anadidos] = parseInt($("#chk-accesorio-" + i).val()); } } if (accesorios_anadidos > 0) { data["accesorios"] = accesorios_anadidos; } if (!isNaN(id_ref_talla)) { data["id_ref_talla"] = id_ref_talla; } if (!isNaN(id_talla)) { data["id_talla"] = id_talla; } if (!isNaN(id_ref_color)) { data["id_ref_color"] = id_ref_color; } if (!isNaN(id_color)) { data["id_color"] = id_color; } $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", data: data, success: function (response) { if (response === 0) { if (parseInt($("#url-producto").val()) === 1) { if (id_marca === 0 || id_modelo === 0 || id_version === 0){ window.location.href = "cesta.jsp;jsessionid=BAF754FC949E770FCE75E8F3A0E68EBC"; }else{ window.location.href = "cesta.jsp;jsessionid=BAF754FC949E770FCE75E8F3A0E68EBC?id_marca="+id_marca+"&id_modelo="+id_modelo+"&id_version="+id_version+"&id_grupo="+id_grupo+"&id_subgrupo="+id_subgrupo+"&tip_catalogo="+tip_catalogo; } }else{ $("#modal-producto-anadido").modal("show"); $("#btn-anadir-cesta-" + referencia).html(" Añadir a la cesta.").prop("disabled", false); } total_unidades_cesta(1); cargar_variables(referencia); recalcular_precio(referencia); } else if (response === -1) { $("#modal-sesion-caducada" + response).modal("show"); $("#modal-sesion-caducada" + response).on('hide.bs.modal', function (e) { window.location.href = "login.jsp?inicio_aplicacion=4&ori_id_referencia=" + referencia; }); } else if (response === -2) { $("#modal-sesion-caducada" + response).modal("show"); $("#modal-sesion-caducada" + response).on('hide.bs.modal', function (e) { location.reload(); }); } else { if (response === 1 || response === 2 || response === 3 | response === 4) { var mensaje = '* El producto no se ha añadido a la cesta. Ponte en contacto con la tienda. \

Teléfono:

'; } else if (response === 5) { var mensaje = 'No hay suficiente stock para la venta.
\ Puedes reducir la cantidad a pedir o ponerte en contacto con la tienda.
\ Disculpa las molestias.'; } $("#modal-mensaje-error .mensaje").html(mensaje); $("#modal-mensaje-error").modal("show"); $("#btn-anadir-cesta-" + referencia).html(" Añadir a la cesta.").prop("disabled", false); } }, error: function (response) { console.log("error AJAX"); } }); } function total_unidades_cesta (accion) { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", data: { json: 1, estado: 6, tabla: 3}, success: function (response){ var cantidad = stringToFloat(response.cantidad); if (accion == 1) { // Actualizar icono cesta if (cantidad < 1000) { $("#cesta-icon, #cesta-icon-xs").empty(); $("#cesta-icon, #cesta-icon-xs").text(response["cantidad"]); } else { $("#cesta-icon, #cesta-icon-xs").empty(); $("#cesta-icon, #cesta-icon-xs").text("+999"); } if (cantidad === 0) { $('#buscador-navbar').addClass('cesta-vacia'); } else { $('#buscador-navbar').removeClass('cesta-vacia'); } } else if (accion == 2) { // Comprobar cantidades cesta cantidad_inicial = parseFloat($("#productos-cesta").val()); if (cantidad > cantidad_inicial) { location.reload(); } } }, error: function (response){ console.log("Error AJAX"); } }); } /////////////////////////////////////////////////////////////////////////////////////////////// $(".modal-anadir-cesta").on("shown.bs.modal", function (e) { $(".modal-validacion").hide(); }); $('#email-share').on('shown.bs.modal', function () { $('#per-contacto').focus(); }); $('#email-share').on('hidden.bs.modal', function () { $("#per-contacto").val(""); $("#email").val(""); $("#recomendar-form").show(); $("#email-enviado").hide(); }); $('#modal-recomendar-producto').on('shown.bs.modal', function () { $('#per-contacto').focus(); }); $('#modal-recomendar-producto').on('hidden.bs.modal', function () { $("#per-contacto").val(""); $("#email").val(""); $("#chk-privacidad").prop('checked', false); $("#recomendar-form").show(); $("#formulario-enviado").hide(); }); function validar_recomendar_producto (referencia) { if (validar_vacio("#per-contacto") && validar_correo("#email") && validar_checkbox("#chk-privacidad")) { recomendar_producto(referencia); } } function recomendar_producto (referencia) { if ( $("#btn-recomendar-producto").prop('disabled') == false ) { $("#btn-recomendar-producto").html("Enviando, por favor espera...").prop('disabled', true); $.ajax({ dataType: "json", type: "POST", url: "ControlB2C_1", data: { json: 1, per_contacto: $("#per-contacto").val(), email: $("#email").val(), id_referencia: referencia, observaciones: $("#observaciones").val(), cod_formulario: $("#cod-formulario").val(), estado: 17, tabla: 1 }, success: function (response){ $(".validation-msj:not(#recomendar-producto-" + response + ")").hide(); $("#recomendar-producto-" + response).show(); if (response == 0) { $("#recomendar-form").hide(); $("#formulario-enviado").show(); } $("#btn-recomendar-producto").html("Enviar").prop('disabled', false); }, complete: function(){ $("#email-share button.btn-success").html("Enviar").prop('disabled', false); }, error: function (response){ console.log("Error AJAX"); } }); } } $('#producto #modal-calcular-gastos-envio').on('shown.bs.modal', function (e) { var referencia = $('#id-producto-activo').val(); calcular_envio(referencia); }); function calcular_envio (referencia) { var pais = $("#cod-pais").val(); var provincia = $("#dropdown-provincia").val(); var data = { json: 1, cod_pais: pais, id_provincia: provincia, id_ref_talla: $("#id-ref-talla-" + referencia + " option:selected").val(), id_ref_color: $("#id-ref-color-" + referencia + " option:selected").val(), cantidad: $("#cantidad-" + referencia).val(), id_referencia: referencia, tabla: 3, estado: 9 }; consultar_gastos_envio(data, 'ControlB2C_2'); } function consultar_gastos_envio (data, url){ var pais = $("#cod-pais").val(); var destino; if (pais != "ESP") { $("#dropdown-provincia").val(0); $("#provincia").hide(); destino = $("#cod-pais option:selected").text(); } else { $("#provincia").show(); destino = $("#dropdown-provincia option:selected").text() + " - " + $("#cod-pais option:selected").text(); } var provincia = $("#dropdown-provincia").val(); if (pais == "ESP" && provincia == "0") { document.getElementById('contenedor-agencias-envio').style.display = 'none'; $("#dropdown-provincia").focus(); $("#precios-envio, .validation-msj").hide(); $("#modal-calcular-gastos-envio .modal-footer").show(); } else { $.ajax({ dataType: "json", type: "POST", url: url, data: data, success: function (response){ // Ocultamos todo menos mensaje de error si existe $("#modal-calcular-gastos-envio .modal-footer").hide(); $("#precios-envio").hide(); $("#detalles-producto").hide(); $(".validation-msj:not(#calcular-envio-" + response["resultado"] + ")").hide(); $("#calcular-envio-" + response["resultado"]).show(); // Si el resultado es 0 enseñamos precios y detalles del producto if (response["resultado"] == 0) { $("#precios-envio").show(); $("#destino").html(destino); // Gastos de envío normal if (response["normal"] == 1) { $("#envio-normal-container").show(); if (response["imp_normal"] == "0,00") { $("#envio-normal").html(" Gratis"); $("#envio-normal-container .moneda").hide(); } else { $("#envio-normal").html(" " + response["imp_normal"]); $("#envio-normal-container .moneda").show(); } if (response["imp_nor_gratis"] == "0,00") { $("#envio-normal-gratis-desde").hide(); }else{ $("#envio-normal-gratis-desde").show(); $("#envio-normal-gratis").html(" " + response["imp_nor_gratis"]); } } else if (response["normal"] == 0) { $("#envio-normal-container").hide(); } // Gastos de envío express if (response["express"] == 1) { $("#envio-express-container").show(); if (response["imp_express"] == "0,00") { $("#envio-express").html(" Gratis"); $("#envio-express-container .moneda").hide(); } else { $("#envio-express").html(" " + response["imp_express"]); $("#envio-express-container .moneda").show(); } if (response["imp_exp_gratis"] == "0,00") { $("#envio-express-gratis-desde").hide(); }else{ $("#envio-express-gratis-desde").show(); $("#envio-express-gratis").html(" " + response["imp_exp_gratis"]); } } else if (response["express"] == 0) { $("#envio-express-container").hide(); } if (response["normal"] == 0 && response["express"] == 0) { $("#precios-envio, #detalles-producto .texto, .validation-msj").hide(); $("#sin-portes-activos").show(); } else { mostrar_detalles_producto(); } alinear_modal("#modal-calcular-gastos-envio"); } else if (response["resultado"] == 4) { $("#modal-calcular-gastos-envio .modal-footer").hide(); mostrar_detalles_producto(); alinear_modal("#modal-calcular-gastos-envio"); } function mostrar_detalles_producto () { // Detalles de producto $("#detalles-producto").show(); $("#cantidad-envio").html(response["cantidad"]); $("#imp-cesta").html(" " + response["imp_cesta"]); if (response["pes_cesta"] == "0,00") { $("#pes-cesta").parent().hide(); } else { $("#pes-cesta").html(" " + response["pes_cesta"]); } } }, error: function (response){ console.log("error AJAX"); } }); } } function pintarAgenciasEnvioEnModal (respuesta) { var contenedorAgencias = document.getElementById('contenedor-agencias-envio'); var contenedorListado = contenedorAgencias.querySelector('ul'); var contenedorMensaje = contenedorAgencias.querySelector('p'); var agencias = respuesta.sys_age_sevicios; var htmlAgencias = ''; if (agencias.length > 0) { for (var i = 0; i < agencias.length; i++) { var agencia = agencias[i]; htmlAgencias += '

  • ' + agencia.age_web_denominacion; if (agencia.ser_web_denominacion) { htmlAgencias += ' - ' + agencia.ser_web_denominacion; } htmlAgencias += '
    '; var precio = parseFloat(agencia.precio.replace(',', '.')); if (precio > 0) { htmlAgencias += 'Portes: ' + agencia.precio + ' ' + agencia.moneda_simbolo + '
    '; }else if (precio==0 && agencia.for_envio!=3 && agencia.for_envio!=4){ htmlAgencias += 'Portes gratis
    '; } if (agencia.informacion) { htmlAgencias += agencia.informacion; } htmlAgencias += '
  • '; } contenedorListado.innerHTML = htmlAgencias; contenedorListado.style.display = 'block'; } else { contenedorListado.style.display = 'none'; } if (respuesta.mensaje) { contenedorMensaje.innerHTML = respuesta.mensaje; contenedorMensaje.style.display = 'block'; } else { contenedorMensaje.style.display = 'none'; } contenedorAgencias.style.display = 'block'; } function aviso_disponibilidad (referencia) { $("#btn-aviso-disponibilidad").html("Enviando solicitud...").prop('disabled', true); var id_ref_talla = parseInt($("#id-ref-talla-" + referencia + " option:selected").val()); var id_ref_color = parseInt($("#id-ref-color-" + referencia + " option:selected").val()); var data = { json: 1, id_referencia: referencia, estado: 21, tabla: 1 }; if (!isNaN(id_ref_talla)) { data["id_ref_talla"] = id_ref_talla; } if (!isNaN(id_ref_color)) { data["id_ref_color"] = id_ref_color; } $.ajax({ dataType: "json", type: "POST", url: "ControlB2C_1", data: data, success: function (response){ $(".validation-msj:not(#aviso-disponibilidad-" + response + ")").hide(); $("#aviso-disponibilidad-" + response).show(); $("#btn-aviso-disponibilidad").html("Avísame cuando esté disponible"); if (response == -1) { window.location.href = "login.jsp?ori_id_referencia=" + referencia; } }, error: function (response) { console.log("Error AJAX"); } }); } function solicitud_pedido_proveedor (referencia) { $("#btn-sol-ped-proveedor").html("Enviando solicitud...").prop('disabled', true); var id_ref_talla = parseInt($("#id-ref-talla-" + referencia + " option:selected").val()); var id_ref_color = parseInt($("#id-ref-color-" + referencia + " option:selected").val()); var data = { json: 1, id_referencia: referencia, estado: 30, tabla: 1 }; if (!isNaN(id_ref_talla)) { data["id_ref_talla"] = id_ref_talla; } if (!isNaN(id_ref_color)) { data["id_ref_color"] = id_ref_color; } $.ajax({ dataType: "json", type: "POST", url: "ControlB2C_1", data: data, success: function (response){ $(".validation-msj:not(#sol-ped-proveedor-" + response + ")").hide(); $("#sol-ped-proveedor-" + response).show(); $("#btn-sol-ped-proveedor").html("Pedir a proveedor"); if (response == -1) { window.location.href = "login.jsp?ori_id_referencia=" + referencia; } }, error: function (response) { console.log("Error AJAX"); } }); } $('#modal-producto-anadido').on('hidden.bs.modal', function (e) { }); // Vehículos compatibles var td_version = $("#id-version").val(); // Si ponemos el id de versión salen los vehículos excluyendo esa versión td_version = 0; var td_referencia = parseInt($("#td-id-referencia").val()); var td_pagina = 0; var td_paginas; var td_primera_consulta = true; function td_siguiente_pagina() { var oldValue = parseInt($("#td-veh-compatibles select").val()); var newVal = oldValue + 1; if (newVal < td_paginas ) { td_pagina = newVal; $("#td-veh-compatibles button, #td-veh-compatibles select").prop('disabled', true); td_cargar_coches(); $("#td-veh-compatibles select").val(newVal); }; } function td_anterior_pagina() { var oldValue = parseInt($("#td-veh-compatibles select").val()); if (oldValue > 0) { var newVal = oldValue - 1; td_pagina = newVal; $("#td-veh-compatibles button, #td-veh-compatibles select").prop('disabled', true); td_cargar_coches(); $("#td-veh-compatibles select").val(newVal); }; } function td_seleccionar_pagina() { $("#td-veh-compatibles button, #td-veh-compatibles select").prop('disabled', true); td_pagina = parseInt($("#td-veh-compatibles select").val()); td_cargar_coches(); } function td_cargar_coches() { $("#td-veh-compatibles ul").empty(); $("#td-veh-compatibles .cargando-datos").show(); $.ajax({ dataType: "json", type: "POST", url: "ControlXML", data: { json: 1, id_referencia: td_referencia, id_version: td_version, pagina: td_pagina, estado: 7, tabla: 1}, success: function (response){ var vehiculos = response["vehiculos"]; if (vehiculos.length > 0) { if (td_primera_consulta) { td_paginas = response["paginas"]; for (var i = 0; i < td_paginas; i++) { $("#td-veh-compatibles select").append(''); } td_primera_consulta = false; } for (var i = 0; i < vehiculos.length; i++) { $("#td-veh-compatibles ul").append( '
  • ' + vehiculos[i].marca + ' ' + vehiculos[i].modelo + ' ' + vehiculos[i].version + ' ' + vehiculos[i].cv + 'CV / ' + vehiculos[i].fec_ini + ' - ' + vehiculos[i].fec_fin + '
  • ' ); } $("#compatibles").show(); } else { $("#compatibles").hide(); } }, error: function (response){ console.log("error"); console.log(response); } }).done(function() { $("#td-veh-compatibles .cargando-datos").hide(); $("#td-veh-compatibles button, #td-veh-compatibles select").prop('disabled', false); });; } var tv_seleccionar_agencia_envio_contado_recoger_seleccionar_almacen = 0; var tv_contado_envio_recoger_seleccionar_almacen = 0; var tv_seleccionar_agencia_envio_recoger_seleccionar_almacen = 0; var ORIGEN_CONTADO; function comprobarFechasRecogidaEntrega(input) { eliminarFechasRecogida(); if (input.dataset.forEnvio === '3') { if (input.dataset.selFecha === '1') { cargarFechasRecogida(ORIGEN_CONTADO, input); } } else { if (input.dataset.selFecha === '1') { cargarFechasEntrega(input); } } } // ====================== Recogida en tienda - Almacenes ====================== function comprobarAlmacenesRecogida (input, IS_CONTADO) { var almacenesRecogidaEl = document.getElementById('almacenes-recogida'); if (almacenesRecogidaEl) { almacenesRecogidaEl.parentElement.remove(); } // Si data-for-envio no es 3 no avanzamos if (input.dataset.forEnvio != '3') { return; } ORIGEN_CONTADO = IS_CONTADO; if (input.dataset.selFecha === '1') { var CARGAR_FECHAS_RECOGIDA = true; } else { var CARGAR_FECHAS_RECOGIDA = false; } // Almacen var idAgeServicio = parseInt(input.value); var mostrarAlmacenes = false; if (ORIGEN_CONTADO && idAgeServicio != 0 && tv_seleccionar_agencia_envio_contado_recoger_seleccionar_almacen === 1) { mostrarAlmacenes = true; } else if (ORIGEN_CONTADO && idAgeServicio === 0 && tv_contado_envio_recoger_seleccionar_almacen === 1) { mostrarAlmacenes = true; } else if (ORIGEN_CONTADO === false && idAgeServicio != 0 && tv_seleccionar_agencia_envio_recoger_seleccionar_almacen === 1) { mostrarAlmacenes = true; } else { mostrarAlmacenes = false; } if (mostrarAlmacenes) { var html = cargarAlmacenesRecogida(CARGAR_FECHAS_RECOGIDA); input.parentElement.appendChild(html); } } // ====================== Recogida en tienda funciones comunes ====================== var almacenesRecogida = []; function cargarAlmacenesRecogida(CARGAR_FECHAS_RECOGIDA) { var htmlAlamacenes; $.ajax({ dataType: 'JSON', type: 'POST', url: 'ControlB2C_1', async: false, data: { tabla: 7, estado: 6, for_envio: 3 }, success: function(response) { if (response.ges_almacenes.length > 0) { almacenesRecogida = response.ges_almacenes; htmlAlamacenes = generarAlmacenesRecogida(CARGAR_FECHAS_RECOGIDA); } }, error: function (error) { console.log('Ha ocurrido un error consultado los almacenes para recogida', error); } }); return htmlAlamacenes; } function generarAlmacenesRecogida (CARGAR_FECHAS_RECOGIDA) { var containerEl = document.createElement('div'); containerEl.className = 'form-group'; var almacenesSelect = document.createElement('select'); almacenesSelect.className = 'form-control'; almacenesSelect.id = 'almacenes-recogida'; var infoAlmacenEl = document.createElement('p'); infoAlmacenEl.className = 'selected-dir-cesta'; actualizarInfoAlmacenRecogida(infoAlmacenEl,almacenesRecogida[0]); almacenesSelect.addEventListener('change', function () { var almacen = almacenesRecogida.filter(almacen => { return almacen.codigo === this.value }); actualizarInfoAlmacenRecogida(infoAlmacenEl, almacen[0]); if (CARGAR_FECHAS_RECOGIDA) { cargarFechasRecogida(ORIGEN_CONTADO); } }); for (var i = 0; i < almacenesRecogida.length; i++) { var almacen = almacenesRecogida[i]; var optionEl = document.createElement('option'); optionEl.value = almacen.codigo; optionEl.innerText = almacen.denominacion; almacenesSelect.appendChild(optionEl); } containerEl.appendChild(almacenesSelect); containerEl.appendChild(infoAlmacenEl); return containerEl; } function actualizarInfoAlmacenRecogida(element, almacen) { var linea1 = almacen.via + ' ' + almacen.direccion; if (linea1.trim().length > 0) { linea1 += '
    '; } else { linea1 = ''; } var linea2 = almacen.cod_postal + ' ' + almacen.poblacion + ' ' + almacen.provincia; if (linea2.trim().length > 0) { linea2 += '
    '; } else { linea2 = ''; } element.innerHTML = linea1 + linea2 + almacen.pais; }