function aumentar_cantidad_cesta(referencia, proveedor, linea) { $('.linea-cesta button').attr('disabled', true); var cantidadReservada = stringToFloat($("#cantidad-" + linea).data('cantidad')); var cantidad = stringToFloat($("#cantidad-" + linea).val()); uds_envase = stringToFloat($("#uds-envase-" + linea).val()); if (uds_envase === 0) { uds_envase = 1; } var nueva_cantidad = cantidad + uds_envase; if (referenciaAnadible(referencia, cantidadReservada, nueva_cantidad, linea)) { $("#cantidad-" + linea).val(nueva_cantidad); recalcular_cantidad_producto(referencia, proveedor, linea); } } function disminuir_cantidad_cesta(referencia, proveedor, linea) { $('.linea-cesta button').attr('disabled', true); var cantidadReservada = stringToFloat($("#cantidad-" + linea).data('cantidad')); var cantidad = stringToFloat($("#cantidad-" + linea).val()); uds_envase = stringToFloat($("#uds-envase-" + linea).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; } if (referenciaAnadible(referencia, cantidadReservada, nueva_cantidad, linea)) { $("#cantidad-" + linea).val(nueva_cantidad); recalcular_cantidad_producto(referencia, proveedor, linea); } } function onblurInputCantidad (input, referencia, proveedor, linea) { if ( stringToFloat($(input).val()) != stringToFloat($(input).data('cantidad')) ) { cantidad_uds_envase_cesta(referencia, proveedor, linea); } } function cantidad_uds_envase_cesta(referencia, proveedor, linea) { var cantidadReservada = stringToFloat($("#cantidad-" + linea).data('cantidad')); var cantidad = stringToFloat($("#cantidad-" + linea).val()); var nueva_cantidad; uds_envase = stringToFloat($("#uds-envase-" + linea).val()); if (uds_envase == 0) { uds_envase = 1; } if (cantidad > uds_envase) { nueva_cantidad = cantidad / uds_envase; nueva_cantidad = Math.ceil(nueva_cantidad); nueva_cantidad = nueva_cantidad * uds_envase; } else { nueva_cantidad = uds_envase; } if (referenciaAnadible(referencia, cantidadReservada, nueva_cantidad, linea)) { $("#cantidad-" + linea).val(nueva_cantidad); recalcular_cantidad_producto(referencia, proveedor, linea); } else { $("#cantidad-" + linea).val(cantidadReservada); } } var tv_kits = 0; var tv_kits_fabricar_sin_stock = 1; var es_kit; var fam_web_con_stock; var sub_web_con_stock; var ref_web_con_stock; function cargarVariablesAnadible (referencia) { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", async: false, data: { json: 1, id_referencia: referencia, id_ref_talla: 0, id_ref_color: 0, estado: 10, tabla: 3 }, async: false, success: function (response) { es_kit = parseInt(response["es_kit"]); 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"]); }, error: function (response) { console.log("Error AJAX"); console.log(response); } }) } var referenciaAnadible = function (idReferencia, cantidadReservada, nuevaCantidad, linea) { var respuesta = new Boolean(); cargarVariablesAnadible(idReferencia); 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)) { respuesta = true; } else { if ( (0 === 1 && 0 === 0 && 0 === 1) || (0 === 1 && 0 === 1 && 1 === 1) || (0 === 0 && 1 === 1) ) { var cantidadEnStock = new Number(); $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", async: false, data: { json: 1, id_referencia: idReferencia, id_ref_talla: 0, id_ref_color: 0, cantidad: nuevaCantidad, stock_almacen: $('#cantidad-' + linea).data('almacen'), estado: 1, tabla: 3 }, success: function(response) { var stock = stringToFloat(response.stock); if (0 === 1) { cantidadEnStock = stock + cantidadReservada; } else { cantidadEnStock = stock; } if (nuevaCantidad <= cantidadEnStock) { respuesta = true; } else { $("#modal-mensaje-error").modal("show"); $("#modal-mensaje-error .mensaje").html("No hay " + nuevaCantidad + " unidades en stock para la venta.
Puedes reducir la cantidad a pedir o ponerte en contacto con la tienda.
Disculpa las molestias."); $('.linea-cesta button').attr('disabled', false); respuesta = false; } }, error: function(response) { console.log("error AJAX"); respuesta = false; } }); } else { respuesta = true; } } return respuesta; } function recalcular_cantidad_producto(referencia, proveedor, linea) { var cantidad = stringToFloat($("#cantidad-" + linea).val()); var cantidadReservada = stringToFloat($("#cantidad-" + linea).data('cantidad')); $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", data: { json: 1, id_referencia: referencia, old_id_linea: linea, id_ref_proveedor: proveedor, cantidad: cantidad, ces_conectado: 0, ces_contado: 0, stock_almacen: $('#cantidad-' + linea).data('almacen'), estado: 2, tabla: 3 }, success: function(response) { if (response === 0) { location.reload(); } 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&origen=5"; }); } 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: 988 34 70 70

'; } 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.'; $("#cantidad-" + linea).val(cantidadReservada); } $('.linea-cesta button').attr('disabled', false); $("#modal-mensaje-error .mensaje").html(mensaje); $("#modal-mensaje-error").modal("show"); } }, error: function(response) { console.log("error"); } }); } // ================== Eliminar lineas ================= function eliminar_linea(linea) { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", data: { json: 1, id_linea: linea, estado: 3, tabla: 3 }, success: function(response) { if (response == 0) { location.reload(); }; }, error: function(response) { console.log("error"); } }); } function modalConfirmarVaciarCesta() { var mensaje = '¿Estás seguro de querer vaciar la cesta?'; modalConfirm(mensaje, vaciar_cesta); } function vaciar_cesta() { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", data: { json: 1, estado: 4, tabla: 3 }, success: function(response) { //location.reload(); location.href = 'cesta.jsp'; }, error: function(response) { console.log("error"); } }); } // =================== Añadir regalo a la cesta ============== function anadir_regalo(referencia) { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", data: { json: 1, tabla: 3, estado: 5, id_referencia: referencia, ces_conectado: 0, ces_contado: 0 }, success: function(response) { switch (response) { case 0: location.reload(); break; case -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&origen=5"; }); break; case -2: $("#modal-sesion-caducada" + response).modal("show"); $("#modal-sesion-caducada" + response).on('hide.bs.modal', function(e) { location.reload(); }); break; default: $(".validation-msj:not(#anadir-regalo-" + response + ")").hide(); $("#anadir-regalo-" + response).show(); break; } }, error: function(response) { console.log("error"); console.log(response); } }); } // ======================== Fechas recogida ======================== var RECOGIDA_KEY = 'web_env_rec_hor_maxima'; var ENTREGA_KEY = 'rep_hor_final'; function cargarFechasRecogida(ORIGEN_CONTADO, input) { if (ORIGEN_CONTADO && forEnvioValidoParaFechas() === false) { return; } if (!input) { input = document.getElementById('almacenes-recogida').parentElement.parentElement.querySelector('input'); } var idAgeServicio = input.dataset.idAgeServicio; $('#titulo-fechas').text('Selecciona una fecha de recogida'); var horaLimiteTexto = 'Hora límite de recogida'; var almacen = $('#almacenes-recogida').val() || input.dataset.almacen; $.ajax({ type: "POST", dataType: "JSON", url: "ControlB2C_1", data: { estado: 7, tabla: 7, almacen: almacen, id_age_servicio: idAgeServicio, }, success: function(response) { if (response.resultado === 0) { if (response.dias.length > 0) { pintarFechasRecEnt(response.dias, RECOGIDA_KEY, horaLimiteTexto); } } }, error: function (error) { console.log(error); } }); } function pintarFechasRecEnt(dias, key, horaLimiteTexto) { var contenedorEl = document.getElementById('contenedor-fechas-recogida'); contenedorEl.innerHTML = ''; for (var i = 0; i < dias.length; i++) { var dia = dias[i]; var itemEl = document.createElement('div'); itemEl.className = 'item'; itemEl.dataset.fecha = dia.fecha; if (i === 0) { itemEl.classList.add('active'); fechaActiva = dia.fecha; } itemEl.addEventListener('click', activarFechaRecogida.bind(itemEl)); var fechaEl = document.createElement('div'); fechaEl.className = 'fecha'; fechaEl.innerText = dia.fecha; itemEl.appendChild(fechaEl); var horaLimiteEl = document.createElement('div'); horaLimiteEl.className = 'hora-limite'; horaLimiteEl.innerHTML = '' + horaLimiteTexto + ': ' + dia[key]; itemEl.appendChild(horaLimiteEl); contenedorEl.appendChild(itemEl); } $('#fechas-recogida').show(); } function activarFechaRecogida() { $('.scroll-horizontal .item.active').removeClass('active'); $(this).addClass('active'); fechaActiva = this.dataset.fecha; } function eliminarFechasRecogida() { $('#fechas-recogida').hide(); $('#contenedor-fechas-recogida').html(''); fechaActiva = ''; } // Entrega function cargarFechasEntrega(input) { var idAgeServicio = input.dataset.idAgeServicio; $('#titulo-fechas').text('Selecciona una fecha de entrega'); var horaLimiteTexto = 'Hora límite de pedido'; $.ajax({ type: "POST", dataType: "JSON", url: "ControlB2C_1", data: { tabla: 7, estado: 8, id_age_servicio: idAgeServicio, }, success: function(response) { if (response.resultado === 0) { if (response.dias.length > 0) { pintarFechasRecEnt(response.dias, ENTREGA_KEY, horaLimiteTexto); } } }, error: function (error) { console.log(error); } }); } var tv_seleccionar_agencia_envio_contado_recoger_seleccionar_almacen = 0; var tv_contado_envio_recoger_seleccionar_almacen = 0; var fechaActiva = ''; var IS_CONTADO = true; // ====================== Recalcular precios en funcion de las opciones seleccionadas ====================== var importe_cesta; var imp_ces_base; function recalcular_precios_cesta(inicial) { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", async: false, data: { json: 1, tabla: 3, estado: 7, inicial: inicial, for_envio: $('input[name=1]:checked').val(), for_pago: $('input[name=2]:checked').val(), id_usu_dir_envio: $("#direccion").val() }, success: function(response) { if (response["resultado"] == "-1") { window.location.href = "login.jsp?origen=5"; }else if (response["resultado"] != "0") { window.location.href = "cesta.jsp"; } else { var envio = parseInt(replace(response["for_envio"], ",", ".")); var pago = parseInt(replace(response["for_pago"], ",", ".")); var portes = stringToFloat(response.imp_portes); // Envio for (var i = 0; i < 5; i++) { if (response["for_envio_" + i] == "0") { $("#for_envio_" + i).hide(); } else if (response["for_envio_" + i] == "1") { $("#for_envio_" + i).show(); } } // Pago for (var i = 1; i < 8; i++) { if (response["for_pago_" + i] == "0") { $("#for_pago_" + i).hide(); } else if (response["for_pago_" + i] == "1") { $("#for_pago_" + i).show(); } } // BTN Pagar var pagar = parseInt(response.pagar); if (pagar === 0) { $('#on-pagar').prop('disabled', true); } else if (pagar === 1) { $('#on-pagar').prop('disabled', false); } // Activar radios $("input[name=1]:checked").prop("checked", false); $("#for_envio_" + envio + " input").prop("checked", true); $("input[name=2]:checked").prop("checked", false); $("#for_pago_" + pago + " input").prop("checked", true); importe_cesta = stringToFloat(response.imp_total); imp_ces_base = stringToFloat(response.imp_ces_base); $.each(response, function (key, value) { preId = replaceAll(key, '_', '-'); $('#' + preId ).html(value); $('#' + preId + '-xs').html(value); }); comprobarLineasImportes(response); } }, error: function(response) { console.log("error"); console.log(response); } }); } function comprobarLineasImportes(importes) { var portes = parseFloat(importes.imp_portes.replace(',', '.')); var gastos = parseFloat(importes.imp_gastos.replace(',', '.')); if (portes > 0) { $('#imp-envio').show(); $('#imp-envio-xs').show(); } else { $('#imp-envio').hide(); $('#imp-envio-xs').hide(); } if (gastos > 0) { $('#imp-gas').show(); $('#imp-gas-xs').show(); } else { $('#imp-gas').hide(); $('#imp-gas-xs').hide(); } } // ==================== Actualizar el botón principal dependiendo del tipo de envío seleccionado ========== function actualizar_boton_cesta() { if (($("#contrareembolso").is(":checked")) || ($("#pagar-tienda").is(":checked")) || ($("#tb").is(":checked")) || ($("#confirmar").is(":checked"))) { $("#on-pagar").html(" Enviar pedido"); } else { $("#on-pagar").html(" Pagar"); } } // ===================== Cuando le des al boton de pagar o enviar pedido ====================== function validar_cesta() { recalcular_precios_cesta(0); var contrareembolso_importe_minimo = 0.0; var contrareembolso_importe_maximo = 0.0; var tienda_importe_minimo = 0.0; var agencias = 0; $('#msj-enviar-error').text(''); $('#msj-enviar-error').hide(); if (agencias==1 && $('input[name=rad-id-age-servicio]:checked').val() === undefined) { $('#msj-enviar-error').text('Selecciona un método de envío.'); $('#msj-enviar-error').show(); } else if (agencias==1 && $("#pagar-tienda").is(":checked") && $('input[name=rad-id-age-servicio]:checked').data('for-envio')!=3) { $('#msj-enviar-error').text('La recogida en tienda es obligatoria al seleccionar pago en tienda.'); $('#msj-enviar-error').show(); } else if (agencias==1 && $("#contrareembolso").is(":checked") && $('input[name=rad-id-age-servicio]:checked').data('for-envio')==3) { $('#msj-enviar-error').text('La recogida en tienda es incompatible con el pago por contrareembolso.'); $('#msj-enviar-error').show(); } else if (agencias==0 && $("#pagar-tienda").is(":checked") && !$("#recoger").is(":checked")) { $('#msj-enviar-error').text('La recogida en tienda es obligatoria al seleccionar pago en tienda.'); $('#msj-enviar-error').show(); } else if (agencias==0 && $("#contrareembolso").is(":checked") && $("#recoger").is(":checked")) { $('#msj-enviar-error').text('La recogida en tienda es incompatible con el pago por contrareembolso.'); $('#msj-enviar-error').show(); } else if (contrareembolso_importe_minimo != 0 && $("#contrareembolso").is(":checked") && imp_ces_base < contrareembolso_importe_minimo) { $('#msj-enviar-error').text('El importe mínimo para pago contrareembolso es de 0,00 € + impuestos. Por favor selecciona otro método de pago o añade más productos.'); $('#msj-enviar-error').show(); } else if (contrareembolso_importe_maximo != 0 && $("#contrareembolso").is(":checked") && imp_ces_base > contrareembolso_importe_maximo) { $('#msj-enviar-error').text('El importe máximo para pago contrareembolso es de 0,00 € + impuestos. Por favor selecciona otro método de pago.'); $('#msj-enviar-error').show(); } else if (tienda_importe_minimo != 0 && $("#pagar-tienda").is(":checked") && imp_ces_base < tienda_importe_minimo) { $('#msj-enviar-error').text('El importe mínimo para pago en tienda es de 0,00 € + impuestos. Por favor selecciona otro método de pago o añade más productos.'); $('#msj-enviar-error').show(); } else { if (validar_checkbox("#chk-privacidad") && validar_checkbox("#chk-condiciones") && validar_checkbox("#chk-cambios")) { if (importe_cesta > 0) { var texto_anterior = $("button.btn-pagar").html(); $("button.btn-pagar").html("Conectando, espera por favor...").prop('disabled', true); $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", data: { json: 1, estado: 3, tabla: 2 }, success: function(response) { if (response == "0") { pagar(); } else if (response == "-1") { window.location.href = "login.jsp?origen=5"; } }, error: function(response) { console.log("error"); return false; } }); } else { $('#msj-enviar-error').text('La cesta está vacía.'); $('#msj-enviar-error').show(); } } } } function calcular_envio_cesta() { var pais = $("#cod-pais").val(); if (pais === 'ESP') { var provincia = $("#dropdown-provincia").val(); $("#provincia").show(); } else { $("#provincia").hide(); var provincia = '0'; } var data = { json: 1, cod_pais: pais, provincia: provincia, tabla: 3, estado: 8 }; consultar_gastos_envio(data, 'ControlB2C'); } // ==================== Dirección de envío ================== function cargar_direccion_cesta() { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", async: false, data: { json: 1, id_usu_dir_envio: $("#direccion").val(), estado: 14, tabla: 1 }, success: function(response) { $("#calle, #cp-ciudad, #pais").empty(); $("#calle").append(response["via"] + " " + response["direccion1"]); $("#cp-ciudad").append(response["cod_postal"] + " " + response["poblacion"] + " " + response["provincia"]); $("#pais").append(response["pais"]); recalcular_precios_cesta(1); }, error: function(response) { console.log("error"); console.log(response); } }); } // Almacenes function comprobarAlmacenesRecogidaContadoEstandard () {} function pagar() { var url = "ControlTiendaVirtual"; var pago = $('input[name=2]:checked', '#metodo-pago').val(); if (pago == 1) { url = url + "?estado=10"; } else if (pago == 2 || pago == 3 || pago == 4 || pago == 6) { url = url + "?estado=8"; } else if (pago == 5 || pago == 7) { url = url + "?estado=11"; } url = url + "&id_usu_dir_envio=" + $("#direccion").val(); url = url + "&for_pago=" + pago; var envio = $('input[name=1]:checked', '#forma-envio').val(); url = url + "&for_envio=" + envio; window.location.href = url; //console.log(url); }