PMP.include("librairiesjs/ajax.js"); $(document).ready(function () { livrMode = 'pays'; racine = '/'; $('#chequeCode + button').click(function (e) { e.preventDefault(); addCheque($('#chequeCode').val()); }); $('#listPanierCheques a').on('click', function (e) { e.preventDefault(); var ref = $(this).parent().parent().attr('id').replace('panierCheque', ''); removeCheque(ref, true); }); $('input[id^="chkCheque"]').click(function () { if ($(this).attr('checked')) { checkCheque($(this).val()); } else { removeCheque($(this).attr('id').replace('chkCheque', '')); } }); if ($('.modepaiement').length > 0) { $('.modepaiement > li').click(function () { var disabled = $(this).find('input:disabled').length > 0 ? true : false; if (!disabled && !$(this).hasClass('selected')) { $('.modepaiement > li').removeClass('selected'); $(this).addClass('selected'); if (!$(this).find('>input').attr('checked') || $(this).find('>input').attr('checked') != 'checked') { $(this).find('>input').attr('checked', 'checked'); var label = $(this).find('>input').val() == 'CARTE_BANCAIRE' || $(this).find('>input').val() == 'CARTE_BANCAIRE_3X' ? 'Procéder au paiement sécurisé' : 'Terminer ma commande'; $('#labelPaiement').html(label); } } }); } $('.panier').mouseenter(function () { $('#bh_panier').fadeIn('fast'); }); $('.panier').mouseleave(function () { $('#bh_panier').fadeOut('fast'); }); $('.js-cart-add-coupon').submit(function(e) { e.preventDefault(); ajout_code($('#codeAvantage').val()); }) $('.js-cart-remove-coupon').click(function(e) { e.preventDefault(); supprimer_code($(e.currentTarget).attr("data-id")); }) $('.js-cart-click-quantity').click(function(e) { e.preventDefault(); var target = $(e.currentTarget); var item = target.closest(".row-item"); addQuantite(item.attr("data-id"), target.attr("data-value")); }); var currentValue = null; $('.js-cart-blur-quantity').focus(function(e) { currentValue = $(e.currentTarget).val(); }); $('.js-cart-blur-quantity').blur(function(e) { e.preventDefault(); var target = $(e.currentTarget); var item = target.closest(".row-item"); if (currentValue != target.val()) { addQuantite(item.attr("data-id"), target.attr("data-value")); } }); $('.js-cart-blur-quantity').keydown(function(e) { if (e.which == 13) { e.preventDefault(); $(e.currentTarget).trigger('blur'); } }); $('.js-cart-remove-item').click(function(e) { e.preventDefault(); var item = $(e.currentTarget).closest(".row-item"); supprimer_produit(item.attr("data-id")); }); $('[name="mode-livraison"][value="magasin"]').click(function(e) { changeModeLivraison($(e.currentTarget).val()); }); $('[name="mode-livraison"][value="livraison"]').click(function(e) { changeModeLivraison($(e.currentTarget).val()); }); $('.js-select-department').change(function(e) { $(e.currentTarget).closest('.cell').find('[name="mode-livraison"]').prop('checked', true).trigger('change'); e.preventDefault(); actualiser_fraisdeport($('[name="select-country"]').val(), $(e.currentTarget).val()); }); $('[name="mdpaiement"]').click(function(e) { var target = $(e.currentTarget); $('.js-validate-payment-method').text(target.attr('data-button-label')); }); $('[name="select-country"]').change(function(e) { actualiser_fraisdeport($(e.currentTarget).val()); }); if ($('[name="mode-livraison"]:checked').length > 0) { $('.item.panier-valider .btn-rouge').removeClass('disabled'); } }); function verifAddFact(obj) { var codePays = obj.options[obj.selectedIndex].value; var chkLiv = document.getElementById('addLivraison'); if (codePays != 6 && chkLiv.checked == false) { chkLiv.checked = true; PMP.dom.setElementProperty('blocLivraison', 'style.display', chkLiv.checked == true ? 'block' : 'none'); } } function parcourrir_famille(ref) { PMP.com.liste.showLoader('listephotos'); PMP.com.liste.refresh('listephotos', {data: {famille: ref}}, 'produit', 'famille', 1); var familles = PMP.dom.getElementByMaskId('menu-%s', 'li'); for (i = 0; i < familles.length; i++) { if (familles[i].id == 'menu-' + ref) familles[i].className = 'active'; else familles[i].className = ''; } } function actualiser_nbarticles_ajax() { var ajax = new PMP.util.pmpAjax("/_modules/boutique/commande/panier.ajax", "POST"); if (!ajax) { var msgbox = new PMP.util.pmpMsgBox("L'instanciation de la classe AJAX a échoué", "erreur", titreBox); return; } ajax.appendData("action", "get_nb_items"); ajax.send(); document.getElementById('nbarticlespanier').innerHTML = ajax.reponse.message; } function ajouter_produit(ref, qte, vars, code, callback) { var titreBox = "Ajout d'un produit"; if (!PMP.common.isNumber(ref) || ref == 0) { pmpAlert("La référence du produit est invalide.", titreBox, "erreur"); return; } if (!PMP.common.isNumber(qte)) { pmpAlert("La quantité est invalide.", titreBox, "erreur"); return; } if ($('#panier_largeur option:selected').length > 0 && $('#longueur_simple').length > 0) { var err = ''; var largeurOK = $('#panier_largeur option:selected').length > 0; var longueurOK = parseFloat($('#longueur_simple').val()) > 0; if (!largeurOK) { $('#panier_largeur').closest('.form-group').addClass('has-error'); err = 'Sélectionnez une largeur de bâche'; } if (!longueurOK) { $('#longueur_simple').closest('.form-group').addClass('has-error'); err = 'Indiquez une longueur de bâche'; } if (!largeurOK && !longueurOK) { err = 'Sélectionnez une largeur et indiquez une longueur de bâche'; } if (err != '') { $('.error-message-container').show().html(err); return false; } } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/_modules/boutique/commande/panier.ajax", "POST"); if (!ajax) { var msgbox = new PMP.util.pmpMsgBox("L'instanciation de la classe AJAX a échoué", "erreur", titreBox); return; } ajax.appendData("action", "ajouter_produit"); ajax.appendData("ref", ref); ajax.appendData("qte", qte); if (!PMP.common.isUndefined(code)) ajax.appendData("code_prix", code); if (!PMP.common.isUndefined(vars)) ajax.appendData("vars", vars); ajax.send(); if (!ajax.reponse.etat) { //alert(ajax.reponse.message + " ok " + ajax.url); $('.error-message-container').show().html(ajax.reponse.message); } else { var message = "\n\n
\n
\n
\n
\n

Acaba de adicionar ao carrinho<\/h2>\n <\/header>\n
\n {{ content }}\n <\/div>\n <\/article>\n <\/div>\n<\/div>"; message = message.replace('{{ content }}', JSON.parse(ajax.reponse.valeur)); $('.error-message-container').hide(); ajax.appendData("action", "get_nb_items"); ajax.send(); var msg = ajax.reponse.message.split('|'); var unit = 'article'; if (parseFloat(msg[0]) > 1) { unit += 's'; } $('.item-panier.cart-empty').removeClass('cart-empty'); $('.cart-item-count').html(msg[0] + ' ' + unit + ''); $('.cart-amount').html(msg[1] + ' €'); $('.cart-shipping').html(msg[2] + ' €'); $('.cart-total-amount').html(msg[3] + ' €'); bootbox.confirm({ className: 'ajout-panier', closeButton: false, message: message, buttons: { confirm: { label: "Finalizar o pedido", className: 'btn-rouge' }, cancel: { label: "Continuar a comprar", className: 'btn-border-gris' } }, callback: function (result) { if (result) { window.location.href = "\/boutique\/panier.php"; } else if (typeof callback != "undefined") { callback(); } } }); } return false; } function ajout_code(code) { // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/_modules/boutique/commande/panier.ajax", "POST"); if (!ajax) { var msgbox = new PMP.util.pmpMsgBox("L'instanciation de la classe AJAX a échoué", "erreur", titreBox); return; } ajax.appendData("action", "ajouter_code_remise"); ajax.appendData("code", code); ajax.send(); if (!ajax.reponse.etat) { bootbox.alert({ className: 'cart-coupon-add', closeButton: false, message: JSON.parse(ajax.reponse.valeur), buttons: { ok : { className: 'btn btn-rouge' } } }); return; } else { window.location.reload(); } return false; } function supprimer_code(ref) { var titreBox = "Modification d'un produit"; // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/_modules/boutique/commande/panier.ajax", "POST"); if (!ajax) { var msgbox = new PMP.util.pmpMsgBox("L'instanciation de la classe AJAX a échoué", "erreur", titreBox); return false; } ajax.appendData("action", "supprimer_code"); ajax.appendData("ref", ref); ajax.send({context: true}); if (!ajax.reponse.etat) { pmpAlert("La référence du produit est invalide.", titreBox, "erreur"); return false; } else { window.location.reload(); } } function modifier_produit(ref, qte, ligne) { var titreBox = "Modification d'un produit"; if (PMP.common.isUndefined(ref)) { pmpAlert("La référence du produit est invalide.", titreBox, "erreur"); return false; } if (!PMP.common.isNumber(qte)) { pmpAlert("La quantité est invalide.", titreBox, "erreur"); return false; } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/_modules/boutique/commande/panier.ajax", "POST"); if (!ajax) { var msgbox = new PMP.util.pmpMsgBox("L'instanciation de la classe AJAX a échoué", "erreur", titreBox); return false; } ajax.appendData("action", "modifier_quantite"); ajax.appendData("ref", ref); ajax.appendData("qte", qte); if (!PMP.common.isUndefined(ligne)) ajax.appendData("ligne", ligne); ajax.send({context: true}); return ajax.reponse; } function modiPaysLiv(obj) { if (obj.type == 'hidden') var codePays = obj.value; else { // recuperation du code pays selectionné dans la combo var codePays = obj.options[obj.selectedIndex].value; } // modif graphique du prix actualiser_fraisdeport(codePays); } function modifDepLiv(obj) { if (obj.type == 'hidden') { var codeDep = obj.value; } else { // recuperation du code pays selectionné dans la combo var codeDep = obj.options[obj.selectedIndex].value; } // modif graphique du prix actualiser_fraisdeport(document.getElementById('choixPays').value, codeDep); } function addQuantite(ref, qte, type) { if (PMP.common.isUndefined(ref)) return false; if (!PMP.common.isNumber(qte)) return false; if (PMP.common.isUndefined(ref)) type = 'i'; var inputQte = $('.row-item[data-id="' + ref + '"] .quantity-selector'); if (inputQte) { //qte = ( PMP.common.isNumber(parseInt(inputQte.value)) ? parseInt(inputQte.value) : 0 ) qte = ( PMP.common.isNumber(inputQte.val()) ? parseInt(inputQte.val()) : 0 ) + parseInt(qte); if (qte >= 1) setQuantite(ref, qte, type); } } function supprimer_produit(ref) { //setQuantite(ref, 0); var reponse = modifier_produit(ref, 0); window.location.replace(window.location.href); } function setQuantite(ref, qte, type) { if (PMP.common.isUndefined(ref)) return false; if (!PMP.common.isNumber(qte)) return false; qte = type == 'd' ? Math.round(parseFloat(qte) * 10) / 10 : parseInt(qte); if (qte < 0) qte = 0; // mise à jour du panier var reponse = modifier_produit(ref, qte); if (!reponse.etat) { //NotificationManager.notify({text:reponse.message, className:"erreur", visibleDuration:0, target:"panierTitre"}); return; } window.location.reload(); } function refreshSousTotal() { var elements = PMP.dom.getElementsByMaskId("montant[%i]", "span"); var sousTotal = 0; for (var i = 0; i < elements.length; i++) { sousTotal += elements[i].montant ? parseFloat(elements[i].montant) : 0; } var divOperation = document.getElementById("montant_operation_livraison"); if (divOperation) { sousTotal -= parseFloat(divOperation.montant); } var divSousTotal = document.getElementById("soustotal"); if (divSousTotal) { divSousTotal.montant = sousTotal; // formate le montant selon les paramètres de langue; sousTotal = String.format(sousTotal, "number"); divSousTotal.innerHTML = sousTotal; $('#prixsstotalpanier').html(sousTotal + ' €'); } getFidelite(); refreshTotal(); } function refreshTotal() { var montant = 0; var divSousTotal = document.getElementById("soustotal"); if (divSousTotal) { if (!divSousTotal.montant) refreshSousTotal(); montant += parseFloat(divSousTotal.montant); } var divRemise = document.getElementById("montant_remise"); if (divRemise) { montant += parseFloat(divRemise.montant); } if (montant < 0) montant = 0; var divLivraison = document.getElementById("livraison"); if (divLivraison) { montant += parseFloat(divLivraison.montant); } var divTotal = document.getElementById("total"); if (divTotal) { divTotal.montant = montant; // formate le montant selon les paramètres de langue; montant = String.format(montant, "number"); divTotal.innerHTML = montant; $('#prixtotalpanier').html(montant + ' €'); } } function actualiser_fraisdeport(pays, dep) { var livraison = $('.shipping-price'); if (!livraison) return true; if (PMP.common.isUndefined(pays) || !PMP.common.isNumber(pays)) { var paysCB = $('[name="select-country"]'); if (paysCB.type == 'hidden') var pays = paysCB ? paysCB.value : 0; else var pays = paysCB ? paysCB.options[paysCB.selectedIndex].value : 0; } var ajax = new PMP.util.pmpAjax("/_modules/boutique/commande/panier.ajax", "POST"); if (!ajax) return false; ajax.appendData("action", "calculer_fraisdeport"); ajax.appendData("pays", pays); ajax.appendData("dep", dep); ajax.send({context: true}); if (ajax.reponse.etat) { window.location.reload(); } refreshTotal(); return true; } function actualiser_nbarticles() { var ajax = new PMP.util.pmpAjax("/_modules/boutique/commande/panier.ajax", "POST"); if (!ajax) return false; ajax.appendData("action", "get_nb_items"); ajax.send(); var msg = ajax.reponse.message.split('|'); $('.nbarticlespanier').html(msg[0] + ' article(s)'); } function changeModeLivraison(mode) { var countryCode; if (mode == 'magasin') { countryCode = 0; } else { countryCode =$('[name="select-country"]').val(); } actualiser_fraisdeport(countryCode); } function annuler(ref, titre, msg) { bootbox.confirm({ className: 'order-cancel', closeButton: false, message: ("