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 = 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: 968 34 24 43
';
} 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);
}
});
}
// ==================== 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 < 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);
// 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('%=traductor.devuelve_texto(id_idioma, 2, 273, "La recogida en tienda es obligatoria al seleccionar pago en tienda.", ctv.tv_multiidioma())%>');
$('#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(traduccion.validarCestaContado.importeMinimo + ' 0,00 €. ' + traduccion.validarCestaContado.importeMinimoDos);
$('#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ínimo 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, 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 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;
}