'); } else { // Si les btns quantités ne sont pas présent on affiche la modal if (!quantityPlus && !quantityMinus) { $j('#mb_panier').html(); } } } if (!pid) { // Ajout au panier de l'article de la fiche var valid = check_options_required(); if (valid) { if (showConfirmationPopup) { if (useModalPlugin) { $j('#mb_panier').modal(options); } else { if (!moduleParams.mobileOn) { $j('#mb_panier').center().css('z-index', 1).show(); } else { $j('#mb_panier').show(); } } } $j.post("ajax.php?page=fiche_article", { action: 'ajout_panier', data: data || $j('#cart_quantity').serialize(), showConfirmationPopup: showConfirmationPopup }, function (data) { add_to_cart_complete(data); }); $.post("ajax.php?page=fa", { action: 'updatePrice', data: $('#cart_quantity').serialize(), pecotax: moduleParams.productEcoTax }, function (data) { $('#fa_price').html(data); }).always(function () { $('#mb_panier').data('priceLock', false); }); } } else { // Ajout au panier d'un article complémentaire (depuis les modules aussi achetés...) if (showConfirmationPopup) { if (useModalPlugin) { // Si les btns quantités ne sont pas présent on affiche la modal if (!quantityPlus && !quantityMinus) { $j('#mb_panier').modal(options); } } else { if (!moduleParams.mobileOn) { $j('#mb_panier').center().css('z-index', 1).show(); } else { // Si les btns quantités ne sont pas présent on affiche la modal if (!quantityPlus && !quantityMinus) { $j('#mb_panier').fadeIn(); } } } } $j.post("ajax.php?page=fiche_article", { action: 'ajout_panier', pid: pid, delete: minus, showConfirmationPopup: showConfirmationPopup }, function (data) { add_to_cart_complete(data, showConfirmationPopup); }); } } else { setTimeout("add_to_cart(" + pid + ")", 500); } } } if ('function' != typeof add_to_cart_complete) { // showConfirmationPopup : cf par exemple module FICHE_LISTE_PRODUITS_ICONES_V16 avec paramètres "Bouton quantité" et "Si btn qté, affiche modale de confirmation" à true var add_to_cart_completed = function (html, showConfirmationPopup = true) { if (showConfirmationPopup) { $j('#mb_panier').html(html); // Remplacement du loader if (moduleParams.mobileOn) { setTimeout(function () { $j('#mb_panier').addClass('mb_panier_showed'); }, 50); } $j('#mbModalClose_trigger').on('click', function (e) { e.preventDefault(); if (useModalPlugin) { $j.modal.close(); } else { if (!moduleParams.mobileOn) { $j('#mb_panier').hide(); } else { $j('#mb_panier').fadeOut(400).removeClass('mb_panier_showed'); } } return false; }); } $('body').trigger('ajaxAddToCartCompleted'); } add_to_cart_complete = function (html, showConfirmationPopup = true) { // Mise à jour des boxes panier en parallèle var requests = 0, nbRequestsTodo = 0; var urls = [ { elt: "#nb_articles_panier, .nb_articles_panier", url: "ajax.php?page=fiche_article&action=maj_nb_articles_panier" }, {elt: "#total_panier", url: "ajax.php?page=fiche_article&action=maj_total_panier"}, {elt: "#panier-complet", url: "ajax.php?page=fiche_article&action=maj_panier-complet"}, {elt: ".cart-tooltip-container", url: "ajax.php?page=fiche_article&action=maj_panier-bulle-v14"}, {elt: "#panier_colonne_v20", url: "ajax.php?page=fiche_article&action=maj_panier-colonne-v20"} ]; // On regarde combien de modules sont concernés (et donc cb de requêtes ajax on doit faire) $j.each(urls, function () { if ($j(this.elt).length > 0) { ++nbRequestsTodo; } }); if (nbRequestsTodo > 0) { $j.each(urls, function () { var elt = this.elt; if ($j(elt).length > 0) { $j.get(this.url, function (data) { $j(elt).html(data); }).done(function () { ++requests; if (requests == nbRequestsTodo) { add_to_cart_completed(html, showConfirmationPopup); } }); } }); } else { add_to_cart_completed(html, showConfirmationPopup); } } } if (headerTexts.addToEstimate == 'true') { if ('function' != typeof add_to_estimates) { add_to_estimates = function () { $('body').trigger('ajaxAddToEstimate'); var valid = check_options_required(); if (valid) { $j('#mb_panier').load('ajax.php?page=devis', { action: 'ajout_devis', data: $j('#cart_quantity').serialize() }, function () { if (useModalPlugin) { var options = { overlayClose: true, autoPosition: false, onShow: function (d) { d.container.css({ position: 'fixed', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', textAlign: 'center' }); } }; $j('#mb_panier').modal(options); $j('#mbModalClose_trigger').on('click', function (e) { e.preventDefault(); $j.modal.close(); return false; }); } else { if (!moduleParams.mobileOn) { $j('#mb_panier').center().css('z-index', 1).show(); } else { $j('#mb_panier').html(); setTimeout(function () { $j('#mb_panier').show().addClass('mb_panier_showed'); }, 50); } $j('#mbModalClose_trigger').on('click', function (e) { e.preventDefault(); if (useModalPlugin) { $j.modal.close(); } else { if (!moduleParams.mobileOn) { $j('#mb_panier').hide(); } else { $j('#mb_panier').fadeOut(400).removeClass('mb_panier_showed'); } } return false; }); } $('body').trigger('ajaxAddToEstimateCompleted'); }); } } } } }(jQuery)); (function ($) { var moduleParams = {"productIsPackPromo":true,"productEcoTax":"0.000000","productIsPackV13":false,"productHasLots":false,"bigImageWidth":"700","bigImageHeight":"700","DirTpl":"template","TextClickToEnlarge":"See larger image","ajaxLoaderImg":" ","mobileOn":false,"caisseOn":false,"bookingsOn":false}; /* Fonctions et codes chargés uniquement sur la fiche article */ // Clic sur le bouton échanger loadPrime = function (pid, prime) { $.ajax( { url: 'ajax.php?page=fa', type: 'GET', data: { action: 'loadPrime', pid: pid, prime: prime }, success: function (dataAnswa) { $('#cart_quantity').submit(); } }); } // Mise à jour du prix à la sélection d'une option updateFaPrice = function () { if (moduleParams.productIsPackPromo) { if ($('#fa_price') != null) { var $cart = $('#cart_quantity'); var sentData = {}; if (moduleParams.productIsPackV13) { sentData = { packV13: 1, products_id: $('#products_id').val(), options: $('#fa_options').find(':input').serialize(), quantity: ($cart.find('[name="quantity"]').val() > 0) ? $cart.find('[name="quantity"]').val() : 1 }; } else { sentData = $cart.serialize(); } $.post("ajax.php?page=fa", { action: 'updatePrice', data: sentData, pecotax: moduleParams.productEcoTax }, function (data) { $('#fa_price').html(data); $('body').trigger('ajaxUpdateFaPrice'); /** * Mise à jour des prix des packs * par rapport aux options choisies (changement de prix) * On simule un click sur la dernière étape * L'utilisateur devra revalider l'étape si besoin */ if ($('.mod_fa_packs_v13_configurateur_achat_prix ').length > 0) { $('.mod_fa_packs_v13_configurateur_etape_checked:last').trigger('click'); } }) .always(function () { $('#mb_panier').data('priceLock', false); }); } } } // Mise à jour du prix à la sélection d'une option updateFaPriceRecommended = function () { if (moduleParams.productIsPackPromo) { $.post("ajax.php?page=fa", { action: 'updatePriceRecommended', data: $('#cart_quantity').serialize(), }, function (data) { $('.fa_v16_prix_vente_conseille_prix').html(data); $('body').trigger('ajaxUpdateFaPriceRecommended'); }).always(function () { $('#mb_panier').data('priceLock', false); }); } } // Mise à jour du stock updateFaStock = function () { if (moduleParams.productIsPackPromo) { if ($('#fa_stock') != null) { $.post("ajax.php?page=fa", { action: 'updateStock', data: $('#cart_quantity').serialize() }, function (data) { $('#fa_stock').html(data); $('body').trigger('ajaxUpdateFaStock'); }).always(function () { $('.mod_fa_options_loader:visible').hide(); $('#mb_panier').data('stockLock', false); }); } } } // Articles sélectionnés d'une branche, avec quantité et options getSelectedLeaves = function (leavesPath) { var leavesIds = leavesPath.split('_'); leavesIds.pop(); // Dernier élément vide leavesIds.shift(); // Premier élément racine (0) var nbLeaves = leavesIds.length, selectedLeaves = {}; for (i = 0; i < nbLeaves; i++) { // Récupération des options sélectionnées pour chaque feuille de la branche choisie var leafOptions = $('[id^=mod_fa_packs_v13_options_' + leavesIds[i] + '_] :input').serialize(); if (leafOptions === '') { leafOptions = $('[id^=mod_fa_packs_v13_options_' + leavesIds[i] + '] :input').serialize(); } var nbLeafOptions = leafOptions.length; // Récupération des quantités pour chaque feuille de la branche choisie var leafQty = $('.mod_fa_packs_v13_global').find('div.mod_fa_packs_v13_liste_article_quantites_cell select[name="quantities[' + leavesPath + '|' + leavesIds[i] + ']"]').val(); selectedLeaves[leavesIds[i]] = { qty: leafQty == undefined ? "1" : leafQty, options: nbLeafOptions > 0 ? leafOptions : false }; } return selectedLeaves; } updateV13Price = function (pid, $row, $productOptions) { var $branchPrice = $row.find('.mod_fa_packs_v13_liste_achat_prix'); var leavesPath = $row.data('leavespath'); var args = { action: 'updateBranchPrice', packId: pid, data: getSelectedLeaves(leavesPath), packOptions: $productOptions.find(':input').serialize() }; if (moduleParams.ajaxLoaderImg) { $branchPrice.html(moduleParams.ajaxLoaderImg); } // Mise à jour du prix $.post('ajax.php?page=packsv13', args, function (data) { $branchPrice.html(data); }); } /** * @param pid Product Pack id * @param $productOptions Jquery Element */ updateV13Prices = function (pid, $productOptions) { var $listPack = $('.mod_fa_packs_v13_liste_table'); if ($listPack.length > 0) { $listPack.find('.mod_fa_packs_v13_liste_branche_row').each(function () { var $branch = $(this); updateV13Price(pid, $branch, $productOptions); }); } } // updateV13Stock = function (productId, jQueryOptionsContainer) { var regex = /^id\[([a-z\_]*)([0-9]+)\]$/; var params = { quantity: 1, products_id: productId }; var $options = {}; jQueryOptionsContainer.find('input, select').each(function () { if ($(this).is(':checked') || $(this).find('option').is(':selected')) { var $name = $(this).attr('name'); var match = $name.match(regex); if (match[2]) { var $poid = match[2]; $options[$poid] = $(this).val(); } } }); params['id'] = $options; var serialized = $.param(params); $.post( "ajax.php?page=fa", { action: 'updateStock', from_pack_v13: true, data: serialized }, function (data) { $('[data-target-pid="' + productId + '"]').html(data).css('display', 'inline-block'); $('body').trigger('ajaxUpdateV13Stock'); } ); }; // Mise à jour des options selon la quantité (pour les prix dégressifs) updateFaOptions = function () { if (moduleParams.productIsPackPromo) { if ($('#fa_options').length > 0) { $('#mb_panier').data('priceLock', true); $('#mb_panier').data('stockLock', true); $('#fa_options').load("ajax.php?page=fa", { action: 'updateOptions', data: $('#cart_quantity').serialize() }, function () { updateFaPrice(); updateFaStock(); $('#cart_quantity div.mod_fa_options_icone_valeurs input[type="radio"]:checked').closest('div.mod_fa_options_icone_valeurs').trigger('click'); $('body').trigger('ajaxUpdateFaOptions'); // #deprecated }); } else // S'il y a des tarifs dégressifs on met le prix à jour même s'il n'y a pas d'options, le stock dans tous les cas { if (moduleParams.productHasLots) { $('#mb_panier').data('priceLock', true); updateFaPrice(); } $('#mb_panier').data('stockLock', true); updateFaStock(); } } } ////////////////////////////////////////////////////////// //	Version PC only	// ////////////////////////////////////////////////////////// if (!moduleParams.mobileOn) { var $divPhoto = $('#div_photo'); var defaultImg = ($divPhoto.length > 0) ? $divPhoto.html() : false; // Récupération de la source de l'image principale var defaultImgDisplayed = true; // Indique si l'image affichée est l'image principale. Sert à éviter de changer la source pour rien. change_image = function (id_select) { // pour le vieux module options try { MagicZoom_stopZooms(); } catch (err) { } var id = $('#id\\[' + id_select + '\\]').find('option:selected').val(); var src = $("#p\\|" + id).attr('name'); var src_img = $("#p\\|" + id).attr('value'); if (src != 'noimg') { // CF bug n°8122 - On n'ajoute les paramètres à la fin de l'URL que s'il n'y en a pas. if (src.indexOf('max_width') == -1 && src.indexOf('max_height') == -1) { src += '?max_width=' + moduleParams.bigImageWidth + '&max_height=' + moduleParams.bigImageHeight; } $divPhoto.html("