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 = 1; var tv_kits_fabricar_sin_stock = 0; 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 && 1 === 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: +34 911610784

'; } 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, estado: 5, tabla: 3, 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); } }); } var tv_seleccionar_agencia_envio_contado_recoger_seleccionar_almacen = 1; var tv_contado_envio_recoger_seleccionar_almacen = 1; var fechaActiva = ''; var IS_CONTADO = true; // ==================== Calcular gastos de envío ================= function consultarAgenciasEnvio (data) { if (data.env_cod_pais === 'ESP' && data.env_id_provincia === '0') { document.getElementById('contenedor-agencias-envio').style.display = 'none'; } else { $.ajax({ dataType: 'JSON', type: 'POST', url: 'ControlB2C_1', data: data, success: function(response) { pintarAgenciasEnvioEnModal(response); }, error: function(response) { console.log('Error', response); } }); } } // ==================== Agencias de envio ================== function cargarAgenciasEnvioContado () { $.ajax({ dataType: 'json', type: 'POST', url: 'ControlB2C_1', async: false, data: { tabla: 7, estado: 4, id_usu_dir_envio: $('#direccion').val() }, success: function (response) { pintarAgenciasEnvioContado(response); var agenciasCheckedInput = document.querySelector('input[name=rad-id-age-servicio]:checked'); comprobarAlmacenesRecogida(agenciasCheckedInput, IS_CONTADO); $('input[name="2"]').change(function() { comprobarFechasRecogidaEntregaHandler(agenciasCheckedInput); }); comprobarFechasRecogidaEntregaHandler(agenciasCheckedInput); }, error: function(response) { console.log('error', response); } }); } var inicial = true; function pintarAgenciasEnvioContado (respuesta) { var contenedor = document.getElementById('forma-envio'); var contenedorMensaje = document.getElementById('forma-envio-mensaje'); 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 += '

'; htmlAgencias += ''; } contenedor.innerHTML = htmlAgencias; $('input[name=rad-id-age-servicio]').change(function() { comprobarAlmacenesRecogida(this, IS_CONTADO); comprobarFechasRecogidaEntregaHandler(this); actualizar_boton_cesta(); recalcular_precios_cesta(0); }); document.getElementById('rad-id-age-servicio-0').checked = true; if (inicial) { actualizar_boton_cesta(); recalcular_precios_cesta(0); inicial = false; } } if (respuesta.mensaje) { contenedorMensaje.innerHTML = respuesta.mensaje; contenedorMensaje.style.display = 'block'; } else { contenedorMensaje.style.display = 'none'; } } var forEnvioValidoParaFechas = function () { var forEnvio = parseInt($('input[name="2"]:checked').val()); if (forEnvio === 2 || forEnvio === 3 || forEnvio === 6) { return false; } return true; } function comprobarFechasRecogidaEntregaHandler(agenciasCheckedInput) { if (forEnvioValidoParaFechas()) { comprobarFechasRecogidaEntrega(agenciasCheckedInput); } else { eliminarFechasRecogida(); } } // ====================== 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_1", async: false, data: { tabla: 7, estado: 5, inicial: inicial, for_envio: $('input[name=rad-id-age-servicio]:checked').data('for-envio'), for_pago: $('input[name=2]:checked').val(), id_usu_dir_envio: $("#direccion").val(), id_age_servicio: $('input[name=rad-id-age-servicio]:checked').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 = 1; $('#msj-enviar-error').text(''); $('#msj-enviar-error').hide(); if (agencias==1 && $('input[name=rad-id-age-servicio]:checked').val() === undefined) { $('#msj-enviar-error').text('Debes seleccionar una 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 = { tabla: 7, estado: 4, env_cod_pais: pais, env_id_provincia: provincia } consultarAgenciasEnvio(data); } // ==================== 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"]); cargarAgenciasEnvioContado(); recalcular_precios_cesta(1); }, error: function(response) { console.log("error"); console.log(response); } }); } // Almacenes function comprobarAlmacenesRecogidaContadoEstandard (input) { var CARGAR_FECHAS_RECOGIDA = false; var almacenesRecogidaEl = document.getElementById('almacenes-recogida'); if (almacenesRecogidaEl) { almacenesRecogidaEl.parentElement.remove(); } var mostrarAlmacenes = false; if (tv_contado_envio_recoger_seleccionar_almacen === 1) { mostrarAlmacenes = true; } else { mostrarAlmacenes = false; } if (mostrarAlmacenes) { if (input.value === '3') { var html = cargarAlmacenesRecogida(CARGAR_FECHAS_RECOGIDA); input.parentElement.appendChild(html); } } } 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; url = url + "&id_age_servicio=" + $('input[name=rad-id-age-servicio]:checked').val(); var envio = $('input[name=rad-id-age-servicio]:checked').data('for-envio'); url = url + "&for_envio=" + envio; var almacenRecogida = $('#almacenes-recogida').val(); if (almacenRecogida && almacenRecogida.length > 0) { url += '&alm_envio=' + almacenRecogida; } if (fechaActiva.length > 0) { url += '&fec_pre_entrega=' + fechaActiva; } window.location.href = url; //console.log(url); }