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 referenciaAnadible = function (idReferencia, cantidadReservada, nuevaCantidad, linea) { var respuesta = new Boolean(); if ( (0 === 1 && 0 === 0 && 0 === 1) || (0 === 1 && 0 === 1 && 0 === 1) || (0 === 0 && 0 === 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.
Puede reducir la cantidad a pedir o ponerse en contacto con la tienda.
Disculpe las molestias."); 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. Póngase en contacto con la tienda. \

Teléfono: 958 17 76 32

'; } else if (response === 5) { var mensaje = 'No hay suficiente stock para la venta.
\ Puede reducir la cantidad a pedir o ponerse en contacto con la tienda.
\ Disculpe 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(); }, 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); } }); } // ==================== Calcular gastos de envío ================= 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'); } 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); } }); } } // ==================== Dirección de envío ================== function cargar_direccion_cesta() { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", 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); } }); } // ====================== Recalcular precios en funcion de las opciones seleccionadas ====================== var importe_cesta; function recalcular_precios_cesta(inicial) { $.ajax({ dataType: "json", type: "POST", url: "ControlB2C", async: false, data: { json: 1, for_envio: $('input[name=1]:checked').val(), for_pago: $('input[name=2]:checked').val(), id_usu_dir_envio: $("#direccion").val(), inicial: inicial, estado: 7, tabla: 3 }, 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 < 7; 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); // Importes $("#imp-ces-base, #imp-ces-base-xs").empty().append(response["imp_ces_base"]); $("#imp-ces-iva, #imp-ces-iva-xs").empty().append(response["imp_ces_iva"]); $("#imp-cesta, #imp-cesta-xs").empty().append(response["imp_cesta"]); if (envio == 4 && portes == 0) { $("#imp-portes, #imp-portes-xs").empty(); $("#precio-envio, #precio-envio-xs").hide(); } else { $("#precio-envio, #precio-envio-xs").show(); $("#imp-portes, #imp-portes-xs").empty().append(response["imp_portes"]); } $("#imp-gastos, #imp-gastos-xs").empty(); var impGastos = parseFloat(response.imp_gastos.replace(',', '.')); if (impGastos === 0) { $("#precio-gestion, #precio-gestion-xs").hide(); } else { $("#precio-gestion, #precio-gestion-xs").show(); $("#imp-gastos, #imp-gastos-xs").append(response["imp_gastos"]); } $("#imp-total, #imp-total-xs").empty().append(response["imp_total"]); importe_cesta = stringToFloat(response.imp_total); } }, error: function(response) { console.log("error"); console.log(response); } }); } // ==================== 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('Debe seleccionar una forma 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") && importe_cesta < contrareembolso_importe_minimo) { $('#msj-enviar-error').text('El importe mínimo para pago contrareembolso es de 0,00 €. Por favor selecciona otra forma de pago o añade más productos.'); $('#msj-enviar-error').show(); } else if (contrareembolso_importe_maximo != 0 && $("#contrareembolso").is(":checked") && importe_cesta > contrareembolso_importe_maximo) { $('#msj-enviar-error').text('El importe máximo para pago contrareembolso es de 0,00 €. Por favor selecciona otra forma de pago.'); $('#msj-enviar-error').show(); } else if (tienda_importe_minimo != 0 && $("#pagar-tienda").is(":checked") && importe_cesta < tienda_importe_minimo) { $('#msj-enviar-error').text('El importe mínimo para pago en tienda es de 0,00 €. Por favor selecciona otra forma 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, espere 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 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) { 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; }