/////////////////////////////////////////////////////////////////////////////////////////
var tv_mostrar_stock = 1;
var tv_mostrar_stock_imagen = 0;
var tv_mostrar_stock_imagen_parcial = 0;
var tv_mostrar_stock_imagen_minimos = 0;
var tv_stock_mostrar_mensaje_insuficiente = 0;
var tv_mostrar_stock_por_almacen = 1;
var aux_stock;
var con_stock;
var tv_decimales = 2;
var num_descuentos = 3;
var tv_kits = 1;
var tv_kits_fabricar_sin_stock = 0;
var es_kit;
var es_neto;
var neumatico;
var fam_web_con_stock;
var sub_web_con_stock;
var ref_web_con_stock;
var id_marca = cargar_variable("id-marca", 0);
var id_modelo = cargar_variable("id-modelo", 0);
var id_version = cargar_variable("id-version", 0);
var id_grupo = cargar_variable("id-grupo", 0);
var id_subgrupo = cargar_variable("id-subgrupo", 0);
var tip_catalogo = cargar_variable("tip-catalogo", 0);
var uds_cesta;
var uds_pendientes;
var ultima_referencia_cargada;
function cargar_variables (referencia) {
$.ajax({
dataType: "json",
type: "POST",
url: "ControlB2C",
data: { json: 1,
id_referencia: referencia,
id_ref_talla: $("#id-ref-talla-" + referencia + " option:selected").val(),
id_ref_color: $("#id-ref-color-" + referencia + " option:selected").val(),
estado: 10,
tabla: 3
},
async: false,
success: function (response) {
es_kit = parseInt(response["es_kit"]);
es_neto = parseInt(response["es_neto"]);
neumatico = parseInt(response["neumatico"]);
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"]);
uds_cesta = stringToFloat(response.uds_cesta);
uds_pendientes = stringToFloat(response.uds_pendientes);
ultima_referencia_cargada = referencia;
},
error: function (response) {
console.log("Error AJAX");
console.log(response);
}
})
}
function cargar_variable (id, defecto) {
if ($("#" + id).val() != undefined) {
return parseInt($("#" + id).val());
} else {
return defecto;
}
}
/////////////////////////////////////////////////////////////////////////////////////////
var cantidadAnterior = $('#contenedor-cantidad .cantidad').val();
if (cantidadAnterior) {
cantidadAnterior = stringToFloat(cantidadAnterior);
}
function aumentar_cantidad (referencia, origen) {
var productContainer = getProductContainer(origen);
var cantidad = stringToFloat($(productContainer).find("#cantidad-" + referencia).val());
var uds_envase = stringToFloat($(productContainer).find("#uds-envase-" + referencia).val());
if (uds_envase === 0) {
uds_envase = 1;
}
var nueva_cantidad = cantidad + uds_envase;
$(productContainer).find("#cantidad-" + referencia).val(nueva_cantidad);
$(productContainer).find(".valor button, #cantidad-" + referencia).prop("disabled", true);
if (origen) {
recalcular_precio(referencia, origen);
} else {
recalcular_precio(referencia);
}
}
function disminuir_cantidad (referencia, origen) {
var productContainer = getProductContainer(origen);
var cantidad = stringToFloat($(productContainer).find("#cantidad-" + referencia).val());
var uds_envase = stringToFloat($(productContainer).find("#uds-envase-" + referencia).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;
}
$(productContainer).find("#cantidad-" + referencia).val(nueva_cantidad);
$(productContainer).find(".valor button, #cantidad-" + referencia).prop("disabled", true);
if (origen) {
recalcular_precio(referencia, origen);
} else {
recalcular_precio(referencia);
}
}
function validarCantidadReferencia (idReferencia, origen) {
var productContainer = getProductContainer(origen);
var cantidad = stringToFloat(
$(productContainer).find('#cantidad-' + idReferencia).val()
);
var uds_envase = stringToFloat(
$(productContainer).find('#uds-envase-' + idReferencia).val()
);
if (cantidad < uds_envase) {
cantidad = uds_envase;
$(productContainer).find('#cantidad-' + idReferencia).val(cantidad);
}
return cantidad;
}
var getProductContainer = function (origen) {
if (origen) {
return origen.closest('.producto') || origen.closest('#producto');
} else {
return document;
}
}
function cantidad_uds_envase (referencia, cantidad, origen) {
var productContainer = getProductContainer(origen);
if (!origen) {
origen = document.getElementById('cantidad-' + referencia);
}
cantidad = stringToFloat(cantidad);
var nuevaCantidad;
var udsEnvase = stringToFloat($(productContainer).find('#uds-envase-' + referencia).val());
if (udsEnvase === 0) {
udsEnvase = 1;
}
if (cantidad > udsEnvase) {
nuevaCantidad = cantidad / udsEnvase;
nuevaCantidad = Math.ceil(nuevaCantidad);
nuevaCantidad = nuevaCantidad * udsEnvase;
} else {
nuevaCantidad = udsEnvase;
}
$(productContainer).find('#cantidad-' + referencia).val(nuevaCantidad).prop('disabled', true);
$('.valor button').prop('disabled', true);
if (nuevaCantidad != cantidadAnterior) {
recalcular_precio(referencia, origen);
} else {
$(productContainer).find('#cantidad-' + referencia).prop('disabled', false);
$('.valor button').prop('disabled', false);
}
}
var respuesta;
function recalcular_precio (referencia, origen) {
var productContainer = getProductContainer(origen);
$('.validation-msj').hide();
if (ultima_referencia_cargada != referencia) {
cargar_variables(referencia);
}
var cantidad_introducida = validarCantidadReferencia(referencia, origen);
$.ajax({
dataType: 'JSON',
type: 'POST',
url: 'ControlB2C',
data: { json: 1,
id_referencia: referencia,
id_ref_talla: $(productContainer).find("#id-ref-talla-" + referencia + " option:selected").val(),
id_ref_color: $(productContainer).find("#id-ref-color-" + referencia + " option:selected").val(),
stock_almacen: $(productContainer).find("#almacen-stock-" + referencia).val() || "",
cantidad: cantidad_introducida,
estado: 1,
tabla: 3
},
async: false,
success: function (response) {
if (parseInt(response.resultado) === 0) {
var cantidad = stringToFloat(response.cantidad);
var stock = stringToFloat(response.stock);
if (es_neto == 0) {
$(productContainer).find("#precio-" + referencia).html(response["precio"]);
} else {
$(productContainer).find("#precio-" + referencia).html(response["preciof"]);
}
$(productContainer).find("#dto1-" + referencia).html(response["dto1"]);
$(productContainer).find("#dto2-" + referencia).html(response["dto2"]);
$(productContainer).find("#dto3-" + referencia).html(response["dto3"]);
$(productContainer).find("#imp-linea-" + referencia).html(response["imp_linea"]);
$(productContainer).find("#cantidad-" + referencia).val(response.cantidad);
cantidadAnterior = cantidad;
var mos_sto_referencia = parseInt(response["mos_sto_referencia"]);
var mos_stock = parseInt(response["mos_stock"]);
var mensaje_personalizado = $("#fam-web-men-sin-stock-" + referencia).val();
if (mensaje_personalizado === undefined) {
mensaje_personalizado = "";
}
if ( mos_sto_referencia == 1) {
if (mos_stock == 1) {
if (tv_stock_mostrar_mensaje_insuficiente != 0) {
aux_stock = stock;
}
if (tv_mostrar_stock_imagen == 0) {
actualizarTextoStock(
productContainer.querySelector('#stock-' + referencia),
stock,
response.col_stock
);
if (response.stock_fis) {
var stockFis = stringToFloat(response.stock_fis);
actualizarTextoStock(
productContainer.querySelector('#stock-fis-' + referencia),
stockFis,
response.col_stock_fis
);
}
if (response.stock_log) {
var stockLog = stringToFloat(response.stock_log);
actualizarTextoStock(
productContainer.querySelector('#stock-log-' + referencia),
stockLog,
response.col_stock_log
);
}
if (response.stock_tra) {
var stockTra = stringToFloat(response.stock_tra);
actualizarTextoStock(
productContainer.querySelector('#stock-tra-' + referencia),
stockTra,
response.col_stock_tra
);
}
} else {
actualizarStockImagen(
productContainer.querySelector('#stock-' + referencia),
stock,
cantidad,
mensaje_personalizado,
response.col_stock
);
if (response.stock_fis) {
var stockFis = stringToFloat(response.stock_fis);
actualizarStockImagen(
productContainer.querySelector('#stock-fis-' + referencia),
stockFis,
cantidad,
mensaje_personalizado,
response.col_stock_fis
);
}
if (response.stock_log) {
var stockLog = stringToFloat(response.stock_log);
actualizarStockImagen(
productContainer.querySelector('#stock-log-' + referencia),
stockLog,
cantidad,
mensaje_personalizado,
response.col_stock_log
);
}
if (response.stock_tra) {
var stockTra = stringToFloat(response.stock_tra);
actualizarStockImagen(
productContainer.querySelector('#stock-tra-' + referencia),
stockTra,
cantidad,
mensaje_personalizado,
response.col_stock_tra
);
}
}
}
if ( tv_mostrar_stock_por_almacen != 0 ) {
actualizarStockAlmacenes(tv_mostrar_stock_imagen, response.almacenes, cantidad);
}
var desplegableTalla = $(productContainer).find("#id-ref-talla-" + referencia + " option:selected");
var desplegableColor = $(productContainer).find("#id-ref-color-" + referencia + " option:selected");
if (
controlarDesplegableExisteTieneValor(desplegableTalla) === false ||
controlarDesplegableExisteTieneValor(desplegableColor) === false
) {
ocultarStockAlmacenes();
}
} else {
if ( mensaje_personalizado.length > 0 ) {
if ($("#url-producto").val() == 1) {
$(productContainer).find("#stock-" + referencia).removeClass().addClass("text-red").data('type', 5).html(mensaje_personalizado);
} else {
$(productContainer).find("#stock-" + referencia).removeClass().addClass("label label-stock-red").data('type', 5).html(mensaje_personalizado);
}
} else {
$(productContainer).find("#stock-" + referencia).removeClass().addClass("text-red").data('type', 5).html('Consultar');
}
}
if (response.fec_pre_env_mensaje) {
$(productContainer).find('#informacion .dis_fec_pre_env_mensaje').removeClass('oculto').html(response.fec_pre_env_mensaje);
} else {
$(productContainer).find('#informacion .dis_fec_pre_env_mensaje').addClass('oculto');
}
respuesta = response;
} else {
location.reload();
}
},
error: function (error) {
console.log("error", error);
respuesta = false;
},
complete: function () {
$(productContainer).find(".valor button, #cantidad-" + referencia).prop("disabled", false);
comprobarSelectTallasColores();
}
});
}
// Controlamos si el desplegable existe y tiene valor
var controlarDesplegableExisteTieneValor = function (select) {
// Desplegable no existe
if (select.length === 0) {
return true;
}
var value = parseInt($(select).val());
// Desplegable sin valor
if (value === 0) {
return false;
}
return true;
}
// Colores para stock, stock_fis, stock_log y almacenes
var clasesTextoStock = {
0: 'text-red detalle-stock',
1: 'text-green detalle-stock',
2: 'text-orange detalle-stock',
3: 'text-yellow detalle-stock'
}
function actualizarTextoStock(selector, stock, color) {
$(selector).removeClass().addClass(clasesTextoStock[color]);
if (stock === 1) {
$(selector).html(stock + ' unidad');
} else {
$(selector).html(stock + ' unidades');
}
}
var clasesLabelStock = {
0: 'label label-stock-red detalle-stock',
1: 'label label-stock-green detalle-stock',
2: 'label label-stock-orange detalle-stock',
3: 'label label-stock-yellow detalle-stock',
4: 'label label-stock-blue detalle-stock'
}
function actualizarStockImagen (selector, stock, cantidad, mensajePersonalizado, color) {
if (clasesLabelStock[color]) {
$(selector).removeClass().addClass(clasesLabelStock[color]);
} else {
$(selector).removeClass().addClass('label label-stock-gray detalle-stock');
}
if (stock > 0) {
if (stock >= cantidad) {
$(selector).data('type', 1).html('En stock');
} else {
if (tv_mostrar_stock_imagen_parcial == 1) {
$(selector).data('type', 3).html('Parcial');
} else {
if ( mensajePersonalizado.length > 0 ) {
$(selector).data('type', 2).html(mensajePersonalizado);
} else {
$(selector).data('type', 2).html('Sin stock');
}
}
}
} else {
if (tv_mostrar_stock_imagen_minimos == 0) {
if ( mensajePersonalizado.length > 0 ) {
$(selector).data('type', 2).html(mensajePersonalizado);
} else {
$(selector).data('type', 2).html('Sin stock');
}
} else {
if ( mensajePersonalizado.length > 0 ) {
$(selector).data('type', 2).html(mensajePersonalizado);
}else{
$(selector).data('type', 2).html('Consultar');
}
}
}
}
var stockAlmacenesTituloEl = '';
function actualizarStockAlmacenes (tv_mostrar_stock_imagen, almacenes, cantidad) {
if (document.body.contains(document.getElementById('sto-alm-almacenes'))) {
// Si existe el div lo limpiamos
var stockAlmacenesEl = document.getElementById('sto-alm-almacenes');
stockAlmacenesEl.innerHTML = '';
if (almacenes.length > 0) {
// Si hay almacenes metemos el titulo
stockAlmacenesEl.innerHTML = stockAlmacenesTituloEl;
for (var i = 0; i < almacenes.length; i++) {
var almacen = almacenes[i];
var almacenEl = document.createElement('div');
almacenEl.className = 'almacen';
var denominacionContainerEl = document.createElement('div');
denominacionContainerEl.className = 'col-xs-10 sin-padding-lateral';
var denominacionEl = document.createElement('p');
denominacionEl.innerText = almacen.codigo + ' - ' + almacen.denominacion;
denominacionContainerEl.appendChild(denominacionEl);
almacenEl.appendChild(denominacionContainerEl);
var stockContainerEl = document.createElement('div');
stockContainerEl.className = 'col-xs-2 sin-padding-lateral text-center icono';
// Mostramos el stock por imagen o numero
if (tv_mostrar_stock_imagen === 0) {
var stockEl = document.createElement('b');
stockEl.id = 'stock-' + almacen.id;
stockEl.className = clasesTextoStock[almacen.col_stock];
stockEl.innerText = almacen.stock;
} else {
var stockEl = document.createElement('span');
stockEl.id = 'stock-' + almacen.id;
if (almacen.stock > 0) {
if (almacen.stock >= cantidad) {
// CON STOCK
stockEl.className = 'glyphicon glyphicon-ok-sign text-green';
} else {
if (tv_mostrar_stock_imagen_parcial == 1) {
// PARCIAL
stockEl.className = 'glyphicon glyphicon-ok-sign text-orange';
} else {
// SIN STOCK
stockEl.className = 'glyphicon glyphicon-remove-sign text-red';
}
}
} else {
if (tv_mostrar_stock_imagen_minimos === 0) {
// SIN STOCK
stockEl.className = 'glyphicon glyphicon-remove-sign text-red';
} else {
// BAJO MINIMOS
stockEl.className = 'glyphicon glyphicon-question-sign text-yellow';
}
}
}
stockContainerEl.appendChild(stockEl);
almacenEl.appendChild(stockContainerEl);
stockAlmacenesEl.appendChild(almacenEl);
}
}
}
}
function ocultarStockAlmacenes() {
var stockAlmacenesEl = document.getElementById('sto-alm-almacenes');
if (stockAlmacenesEl) {
stockAlmacenesEl.innerHTML = '';
}
}
function comprobarSelectTallasColores () {
if ($("#url-producto").val() == 1) {
if ( $("#producto").find('select').length ) {
var select = "#producto #informacion .valor .select-talla-color";
if ( $(select).val() == 0 ) {
var texto = $(select).data('texto');
$(".stock-mensaje span").removeClass().html(texto);
}
}
} else {
$( ".producto" ).each(function(index , element) {
var id = element.id;
if ( $(element).find('.select-talla-color').length ) {
var selectEl = '#' + id + ' .select-talla-color';
var selectValue = parseInt($(selectEl).val())
if ( selectValue === 0 ) {
var texto = $(selectEl).data('texto');
var stockElements = element.querySelectorAll('.stock .detalle-stock');
for (var i = 0; i < stockElements.length; i++) {
var element = stockElements[i];
$(element).removeClass().addClass('detalle-stock').html(texto);
}
}
}
});
}
}
$(window).on('load', function () {
comprobarSelectTallasColores();
});
// =======================================================================================
var estado_validacion = 0;
var referencia_anterior = "";
$("#modal-mensaje-confirmar").on('hide.bs.modal', function (e) {
estado_validacion = 0;
});
$(".btn-cancelar").on("click", function (){
estado_validacion = 0;
});
$("#modal-mensaje-confirmar .btn-aceptar").on("click", function (){
estado_validacion = 5;
});
$("#modal-mensaje-aviso").on('hidden.bs.modal', function (e) {
validar_cesta(referencia_anterior);
});
function validar_cesta (referencia, origen) {
$("#id-producto-activo").val(referencia);
if (origen) {
recalcular_precio(referencia, origen);
} else {
recalcular_precio(referencia);
}
var productContainer = getProductContainer(origen);
if (
$(productContainer).find('#almacen-stock-' + referencia).val() != undefined &&
$(productContainer).find('#almacen-stock-' + referencia).val().length === 0
) {
$("#modal-mensaje-error").modal("show");
$("#modal-mensaje-error .mensaje").html("Selecciona un almacén.");
return false;
}
var stock = stringToFloat(respuesta.stock);
if (respuesta == false) {
$("#modal-mensaje-error").modal("show");
$("#modal-mensaje-error .mensaje").html("Si quieres pedir esta referencia ponte en contacto con la tienda.
Disculpa las molestias.");
return false;
}
if ( replace($(productContainer).find("#imp-linea-" + referencia).text(), ",", ".") == 0 ) {
$("#modal-mensaje-error").modal("show");
$("#modal-mensaje-error .mensaje").html("Precio no válido.
Ponte en contacto con la tienda para pedir esta referencia.
Disculpa las molestias.");
return false;
}
var uds_envase = stringToFloat($(productContainer).find("#uds-envase-" + referencia).val());
if (uds_envase === 0) {
uds_envase = 1;
}
var cantidadX = validarCantidadReferencia(referencia) * Math.pow(10, tv_decimales);
var uds_envaseX = uds_envase * Math.pow(10, tv_decimales);
// if (validarCantidadReferencia(referencia) % uds_envase != 0) {
if (cantidadX % uds_envaseX != 0) {
$("#modal-mensaje-aviso").modal("show");
$("#modal-mensaje-aviso .mensaje").html("Solo se puede añadir a la cesta de " + uds_envase + " en " + uds_envase + " unidades");
$(productContainer).find("#cantidad-" + referencia).select();
return false;
}
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)) {
con_stock = 0;
} else {
con_stock = 1;
}
if (con_stock == 1){
if( $(productContainer).find("#stock-" + referencia).data("type") == 5 ){
$("#modal-mensaje-error").modal("show");
$("#modal-mensaje-error .mensaje").html("Si quieres pedir esta referencia ponte en contacto con la tienda.
Disculpa las molestias.");
$(productContainer).find("#cantidad-" + referencia).select();
return false;
}else if (stock < validarCantidadReferencia(referencia)){
$("#modal-mensaje-error").modal("show");
$("#modal-mensaje-error .mensaje").html("No hay stock disponible para la venta.
Si quieres pedir esta referencia ponte en contacto con la tienda.
Disculpa las molestias.");
$(productContainer).find("#cantidad-" + referencia).select();
return false;
}
}
if (estado_validacion < 6) {
var forzar_confirmar = 0;
if (forzar_confirmar==1){
$("#modal-confirmar-anadir").modal("show");
$("#modal-confirmar-anadir .mensaje").html("¿Estás seguro de querer añadir el producto?");
} else{
anadir_cesta(referencia);
}
}
}
function anadir_cesta (referencia) {
estado_validacion = 0;
$(".modal").modal("hide");
$("#btn-anadir-cesta-" + referencia).html(" Añadiendo producto").prop("disabled", true);
var total_accesorios = parseInt($("#total-accesorios").val());
var id_ref_talla = parseInt($("#id-ref-talla-" + referencia + " option:selected").val());
var id_ref_color = parseInt($("#id-ref-color-" + referencia + " option:selected").val());
var id_talla = $("#id-ref-talla-" + referencia + " option:selected").data('id-ref-talla');
var id_color = $("#id-ref-color-" + referencia + " option:selected").data('id-ref-color');
var data = { json: 1,
cantidad: validarCantidadReferencia(referencia),
id_referencia: referencia,
id_ref_proveedor: 0,
aleatorio: numero_aleatorio,
ces_conectado: 0,
ces_contado: 0,
stock_almacen: $("#almacen-stock-" + referencia).val() || "",
tabla: 3,
estado: 2
};
var accesorios_anadidos = 0;
for ( i = 1; i <= total_accesorios; i++) {
if ( $("#chk-accesorio-" + i).is(":checked") ) {
accesorios_anadidos++; // En la peticion empieza por 1
data["id_accesorio_" + accesorios_anadidos] = parseInt($("#chk-accesorio-" + i).val());
}
}
if (accesorios_anadidos > 0) {
data["accesorios"] = accesorios_anadidos;
}
if (!isNaN(id_ref_talla)) {
data["id_ref_talla"] = id_ref_talla;
}
if (!isNaN(id_talla)) {
data["id_talla"] = id_talla;
}
if (!isNaN(id_ref_color)) {
data["id_ref_color"] = id_ref_color;
}
if (!isNaN(id_color)) {
data["id_color"] = id_color;
}
$.ajax({
dataType: "json",
type: "POST",
url: "ControlB2C",
data: data,
success: function (response) {
if (response === 0) {
if (parseInt($("#url-producto").val()) === 1) {
if (id_marca === 0 || id_modelo === 0 || id_version === 0){
window.location.href = "cesta.jsp;jsessionid=EDE156E076BA7E04A51F32B5A5E1E9A8";
}else{
window.location.href = "cesta.jsp;jsessionid=EDE156E076BA7E04A51F32B5A5E1E9A8?id_marca="+id_marca+"&id_modelo="+id_modelo+"&id_version="+id_version+"&id_grupo="+id_grupo+"&id_subgrupo="+id_subgrupo+"&tip_catalogo="+tip_catalogo;
}
}else{
$("#modal-producto-anadido").modal("show");
$("#btn-anadir-cesta-" + referencia).html(" Añadir a la cesta.").prop("disabled", false);
}
total_unidades_cesta(1);
cargar_variables(referencia);
recalcular_precio(referencia);
} 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&ori_id_referencia=" + referencia;
});
} 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: 954 691 870
';
} 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.';
}
$("#modal-mensaje-error .mensaje").html(mensaje);
$("#modal-mensaje-error").modal("show");
$("#btn-anadir-cesta-" + referencia).html(" Añadir a la cesta.").prop("disabled", false);
}
},
error: function (response) {
console.log("error AJAX");
}
});
}
function total_unidades_cesta (accion) {
$.ajax({
dataType: "json",
type: "POST",
url: "ControlB2C",
data: { json: 1, estado: 6, tabla: 3},
success: function (response){
var cantidad = stringToFloat(response.cantidad);
if (accion == 1) {
// Actualizar icono cesta
if (cantidad < 1000) {
$("#cesta-icon, #cesta-icon-xs").empty();
$("#cesta-icon, #cesta-icon-xs").text(response["cantidad"]);
} else {
$("#cesta-icon, #cesta-icon-xs").empty();
$("#cesta-icon, #cesta-icon-xs").text("+999");
}
if (cantidad === 0) {
$('#buscador-navbar').addClass('cesta-vacia');
} else {
$('#buscador-navbar').removeClass('cesta-vacia');
}
} else if (accion == 2) {
// Comprobar cantidades cesta
cantidad_inicial = parseFloat($("#productos-cesta").val());
if (cantidad > cantidad_inicial) {
location.reload();
}
}
},
error: function (response){
console.log("Error AJAX");
}
});
}
///////////////////////////////////////////////////////////////////////////////////////////////
$(".modal-anadir-cesta").on("shown.bs.modal", function (e) {
$(".modal-validacion").hide();
});
$('#email-share').on('shown.bs.modal', function () {
$('#per-contacto').focus();
});
$('#email-share').on('hidden.bs.modal', function () {
$("#per-contacto").val("");
$("#email").val("");
$("#recomendar-form").show();
$("#email-enviado").hide();
});
$('#modal-recomendar-producto').on('shown.bs.modal', function () {
$('#per-contacto').focus();
});
$('#modal-recomendar-producto').on('hidden.bs.modal', function () {
$("#per-contacto").val("");
$("#email").val("");
$("#chk-privacidad").prop('checked', false);
$("#recomendar-form").show();
$("#formulario-enviado").hide();
});
function validar_recomendar_producto (referencia) {
if (validar_vacio("#per-contacto") && validar_correo("#email") && validar_checkbox("#chk-privacidad")) {
recomendar_producto(referencia);
}
}
function recomendar_producto (referencia) {
if ( $("#btn-recomendar-producto").prop('disabled') == false ) {
$("#btn-recomendar-producto").html("Enviando, por favor espera...").prop('disabled', true);
$.ajax({
dataType: "json",
type: "POST",
url: "ControlB2C_1",
data: { json: 1,
per_contacto: $("#per-contacto").val(),
email: $("#email").val(),
id_referencia: referencia,
observaciones: $("#observaciones").val(),
cod_formulario: $("#cod-formulario").val(),
estado: 17,
tabla: 1
},
success: function (response){
$(".validation-msj:not(#recomendar-producto-" + response + ")").hide();
$("#recomendar-producto-" + response).show();
if (response == 0) {
$("#recomendar-form").hide();
$("#formulario-enviado").show();
}
$("#btn-recomendar-producto").html("Enviar").prop('disabled', false);
},
complete: function(){
$("#email-share button.btn-success").html("Enviar").prop('disabled', false);
},
error: function (response){
console.log("Error AJAX");
}
});
}
}
$('#producto #modal-calcular-gastos-envio').on('shown.bs.modal', function (e) {
var referencia = $('#id-producto-activo').val();
calcular_envio(referencia);
});
function calcular_envio (referencia) {
var pais = $("#cod-pais").val();
var provincia = $("#dropdown-provincia").val();
var data = { json: 1,
cod_pais: pais,
id_provincia: provincia,
id_ref_talla: $("#id-ref-talla-" + referencia + " option:selected").val(),
id_ref_color: $("#id-ref-color-" + referencia + " option:selected").val(),
cantidad: $("#cantidad-" + referencia).val(),
id_referencia: referencia,
tabla: 3,
estado: 9
};
consultar_gastos_envio(data, 'ControlB2C_2');
}
function consultar_gastos_envio (data, url){
var pais = $("#cod-pais").val();
var destino;
if (pais != "ESP") {
$("#dropdown-provincia").val(0);
$("#provincia").hide();
destino = $("#cod-pais option:selected").text();
} else {
$("#provincia").show();
destino = $("#dropdown-provincia option:selected").text() + " - " + $("#cod-pais option:selected").text();
}
var provincia = $("#dropdown-provincia").val();
if (pais == "ESP" && provincia == "0") {
document.getElementById('contenedor-agencias-envio').style.display = 'none';
$("#dropdown-provincia").focus();
$("#precios-envio, .validation-msj").hide();
$("#modal-calcular-gastos-envio .modal-footer").show();
} else {
$.ajax({
dataType: "json",
type: "POST",
url: url,
data: data,
success: function (response){
// Ocultamos todo menos mensaje de error si existe
$("#modal-calcular-gastos-envio .modal-footer").hide();
$("#precios-envio").hide();
$("#detalles-producto").hide();
$(".validation-msj:not(#calcular-envio-" + response["resultado"] + ")").hide();
$("#calcular-envio-" + response["resultado"]).show();
// Si el resultado es 0 enseñamos precios y detalles del producto
if (response["resultado"] == 0) {
$("#precios-envio").show();
$("#destino").html(destino);
// Gastos de envío normal
if (response["normal"] == 1) {
$("#envio-normal-container").show();
if (response["imp_normal"] == "0,00") {
$("#envio-normal").html(" Gratis");
$("#envio-normal-container .moneda").hide();
} else {
$("#envio-normal").html(" " + response["imp_normal"]);
$("#envio-normal-container .moneda").show();
}
if (response["imp_nor_gratis"] == "0,00") {
$("#envio-normal-gratis-desde").hide();
}else{
$("#envio-normal-gratis-desde").show();
$("#envio-normal-gratis").html(" " + response["imp_nor_gratis"]);
}
} else if (response["normal"] == 0) {
$("#envio-normal-container").hide();
}
// Gastos de envío express
if (response["express"] == 1) {
$("#envio-express-container").show();
if (response["imp_express"] == "0,00") {
$("#envio-express").html(" Gratis");
$("#envio-express-container .moneda").hide();
} else {
$("#envio-express").html(" " + response["imp_express"]);
$("#envio-express-container .moneda").show();
}
if (response["imp_exp_gratis"] == "0,00") {
$("#envio-express-gratis-desde").hide();
}else{
$("#envio-express-gratis-desde").show();
$("#envio-express-gratis").html(" " + response["imp_exp_gratis"]);
}
} else if (response["express"] == 0) {
$("#envio-express-container").hide();
}
if (response["normal"] == 0 && response["express"] == 0) {
$("#precios-envio, #detalles-producto .texto, .validation-msj").hide();
$("#sin-portes-activos").show();
} else {
mostrar_detalles_producto();
}
alinear_modal("#modal-calcular-gastos-envio");
} else if (response["resultado"] == 4) {
$("#modal-calcular-gastos-envio .modal-footer").hide();
mostrar_detalles_producto();
alinear_modal("#modal-calcular-gastos-envio");
}
function mostrar_detalles_producto () {
// Detalles de producto
$("#detalles-producto").show();
$("#cantidad-envio").html(response["cantidad"]);
$("#imp-cesta").html(" " + response["imp_cesta"]);
if (response["pes_cesta"] == "0,00") {
$("#pes-cesta").parent().hide();
} else {
$("#pes-cesta").html(" " + response["pes_cesta"]);
}
}
},
error: function (response){
console.log("error AJAX");
}
});
}
}
function pintarAgenciasEnvioEnModal (respuesta) {
var contenedorAgencias = document.getElementById('contenedor-agencias-envio');
var contenedorListado = contenedorAgencias.querySelector('ul');
var contenedorMensaje = contenedorAgencias.querySelector('p');
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 += '
' + agencia.age_web_denominacion;
if (agencia.ser_web_denominacion) {
htmlAgencias += ' - ' + agencia.ser_web_denominacion;
}
htmlAgencias += '
';
var precio = parseFloat(agencia.precio.replace(',', '.'));
if (precio > 0) {
htmlAgencias += 'Portes: ' + agencia.precio + ' ' + agencia.moneda_simbolo + '
';
}else if (precio==0 && agencia.for_envio!=3 && agencia.for_envio!=4){
htmlAgencias += 'Portes gratis
';
}
if (agencia.informacion) {
htmlAgencias += agencia.informacion;
}
htmlAgencias += '';
}
contenedorListado.innerHTML = htmlAgencias;
contenedorListado.style.display = 'block';
} else {
contenedorListado.style.display = 'none';
}
if (respuesta.mensaje) {
contenedorMensaje.innerHTML = respuesta.mensaje;
contenedorMensaje.style.display = 'block';
} else {
contenedorMensaje.style.display = 'none';
}
contenedorAgencias.style.display = 'block';
}
function aviso_disponibilidad (referencia) {
$("#btn-aviso-disponibilidad").html("Enviando, por favor espera...").prop('disabled', true);
var id_ref_talla = parseInt($("#id-ref-talla-" + referencia + " option:selected").val());
var id_ref_color = parseInt($("#id-ref-color-" + referencia + " option:selected").val());
var data = { json: 1, id_referencia: referencia, estado: 21, tabla: 1 };
if (!isNaN(id_ref_talla)) {
data["id_ref_talla"] = id_ref_talla;
}
if (!isNaN(id_ref_color)) {
data["id_ref_color"] = id_ref_color;
}
$.ajax({
dataType: "json",
type: "POST",
url: "ControlB2C_1",
data: data,
success: function (response){
$(".validation-msj:not(#aviso-disponibilidad-" + response + ")").hide();
$("#aviso-disponibilidad-" + response).show();
$("#btn-aviso-disponibilidad").html("Avísame cuando esté disponible");
if (response == -1) {
window.location.href = "login.jsp?ori_id_referencia=" + referencia;
}
},
error: function (response) {
console.log("Error AJAX");
}
});
}
function solicitud_pedido_proveedor (referencia) {
$("#btn-sol-ped-proveedor").html("Enviando, por favor espera...").prop('disabled', true);
var id_ref_talla = parseInt($("#id-ref-talla-" + referencia + " option:selected").val());
var id_ref_color = parseInt($("#id-ref-color-" + referencia + " option:selected").val());
var data = { json: 1, id_referencia: referencia, estado: 30, tabla: 1 };
if (!isNaN(id_ref_talla)) {
data["id_ref_talla"] = id_ref_talla;
}
if (!isNaN(id_ref_color)) {
data["id_ref_color"] = id_ref_color;
}
$.ajax({
dataType: "json",
type: "POST",
url: "ControlB2C_1",
data: data,
success: function (response){
$(".validation-msj:not(#sol-ped-proveedor-" + response + ")").hide();
$("#sol-ped-proveedor-" + response).show();
$("#btn-sol-ped-proveedor").html("Pedir a proveedor");
if (response == -1) {
window.location.href = "login.jsp?ori_id_referencia=" + referencia;
}
},
error: function (response) {
console.log("Error AJAX");
}
});
}
$('#modal-producto-anadido').on('hidden.bs.modal', function (e) {
});
// Vehículos compatibles
var tv_seleccionar_agencia_envio_contado_recoger_seleccionar_almacen = 0;
var tv_contado_envio_recoger_seleccionar_almacen = 0;
var tv_seleccionar_agencia_envio_recoger_seleccionar_almacen = 0;
var ORIGEN_CONTADO;
function comprobarFechasRecogidaEntrega(input) {
eliminarFechasRecogida();
if (input.dataset.forEnvio === '3') {
if (input.dataset.selFecha === '1') {
cargarFechasRecogida(ORIGEN_CONTADO, input);
}
} else {
if (input.dataset.selFecha === '1') {
cargarFechasEntrega(input);
}
}
}
// ====================== Recoger en tienda - Almacenes ======================
function comprobarAlmacenesRecogida (input, IS_CONTADO) {
var almacenesRecogidaEl = document.getElementById('almacenes-recogida');
if (almacenesRecogidaEl) {
almacenesRecogidaEl.parentElement.remove();
}
// Si data-for-envio no es 3 no avanzamos
if (input.dataset.forEnvio != '3') {
return;
}
ORIGEN_CONTADO = IS_CONTADO;
if (input.dataset.selFecha === '1') {
var CARGAR_FECHAS_RECOGIDA = true;
} else {
var CARGAR_FECHAS_RECOGIDA = false;
}
// Almacen
var idAgeServicio = parseInt(input.value);
var mostrarAlmacenes = false;
if (ORIGEN_CONTADO && idAgeServicio != 0 && tv_seleccionar_agencia_envio_contado_recoger_seleccionar_almacen === 1) {
mostrarAlmacenes = true;
} else if (ORIGEN_CONTADO && idAgeServicio === 0 && tv_contado_envio_recoger_seleccionar_almacen === 1) {
mostrarAlmacenes = true;
} else if (ORIGEN_CONTADO === false && idAgeServicio != 0 && tv_seleccionar_agencia_envio_recoger_seleccionar_almacen === 1) {
mostrarAlmacenes = true;
} else {
mostrarAlmacenes = false;
}
if (mostrarAlmacenes) {
var html = cargarAlmacenesRecogida(CARGAR_FECHAS_RECOGIDA);
input.parentElement.appendChild(html);
}
}
// ====================== Recoger en tienda - Funciones comunes ======================
var almacenesRecogida = [];
function cargarAlmacenesRecogida(CARGAR_FECHAS_RECOGIDA) {
var htmlAlamacenes;
$.ajax({
dataType: 'JSON',
type: 'POST',
url: 'ControlB2C_1',
async: false,
data: {
tabla: 7,
estado: 6,
for_envio: 3
},
success: function(response) {
if (response.ges_almacenes.length > 0) {
almacenesRecogida = response.ges_almacenes;
htmlAlamacenes = generarAlmacenesRecogida(CARGAR_FECHAS_RECOGIDA);
}
},
error: function (error) {
console.log('Ha habido un error consultado los almacenes para recogida', error);
}
});
return htmlAlamacenes;
}
function generarAlmacenesRecogida (CARGAR_FECHAS_RECOGIDA) {
var containerEl = document.createElement('div');
containerEl.className = 'form-group';
var almacenesSelect = document.createElement('select');
almacenesSelect.className = 'form-control';
almacenesSelect.id = 'almacenes-recogida';
var infoAlmacenEl = document.createElement('p');
infoAlmacenEl.className = 'selected-dir-cesta';
actualizarInfoAlmacenRecogida(infoAlmacenEl,almacenesRecogida[0]);
almacenesSelect.addEventListener('change', function () {
var almacen = almacenesRecogida.filter(almacen => {
return almacen.codigo === this.value
});
actualizarInfoAlmacenRecogida(infoAlmacenEl, almacen[0]);
if (CARGAR_FECHAS_RECOGIDA) {
cargarFechasRecogida(ORIGEN_CONTADO);
}
});
for (var i = 0; i < almacenesRecogida.length; i++) {
var almacen = almacenesRecogida[i];
var optionEl = document.createElement('option');
optionEl.value = almacen.codigo;
optionEl.innerText = almacen.denominacion;
almacenesSelect.appendChild(optionEl);
}
containerEl.appendChild(almacenesSelect);
containerEl.appendChild(infoAlmacenEl);
return containerEl;
}
function actualizarInfoAlmacenRecogida(element, almacen) {
var linea1 = almacen.via + ' ' + almacen.direccion;
if (linea1.trim().length > 0) {
linea1 += '
';
} else {
linea1 = '';
}
var linea2 = almacen.cod_postal + ' ' + almacen.poblacion + ' ' + almacen.provincia;
if (linea2.trim().length > 0) {
linea2 += '
';
} else {
linea2 = '';
}
element.innerHTML = linea1 + linea2 + almacen.pais;
}