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);
}