///////////////////////////////////////////////////////////////////////////////////////// var tv_mostrar_stock = 1; var tv_mostrar_stock_imagen = 1; var tv_mostrar_stock_imagen_parcial = 1; 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 = 0; 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' } 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', 4).html(mensajePersonalizado); }else{ $(selector).data('type', 4).html('Consultar'); } } } } var stockAlmacenesTituloEl = '
Almacén
Stock
Teléfono: 959 601 645
';
} 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 += '