var formatDecimal = ","; var formatCentaine = "."; /* NON UTILISEE */ function commander_produit(ref) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Ajout d'un produit", null, ""); } var qteNode = document.getElementById("input_quantite"); var quantite = qteNode && PMP.common.isNumber(qteNode.value) ? qteNode.value : 0; if(quantite>0) ajouter_produit(ref, quantite); else var msgbox = new PMP.util.pmpMsgBox("Quantité non définie", "erreur", "Ajout d'un produit", null, ""); } function ajouter_produit(ref, qte, code) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Ajout d'un produit", null, ""); } if( !PMP.common.isNumber(qte) ) { var msgbox = new PMP.util.pmpMsgBox("Quantité non définie", "erreur", "Ajout d'un produit", null, ""); } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/boutique/_include/alias_boutique.php", "POST"); if(!ajax) { var msgbox = new PMP.util.pmpMsgBox("Impossible de créer l'objet ajax", "erreur", "Ajout d'un produit", null, ""); } ajax.appendData("action", "ajouter_produit"); ajax.appendData("ref", ref); ajax.appendData("qte", qte); if( !PMP.common.isUndefined(code) ) ajax.appendData("code_prix", code); var retour = ajax.send(); if(!retour) { var msgbox = new PMP.util.pmpMsgBox("Une erreur s'est produite.", "erreur", "Ajout d'un produit", null, ""); } else if(retour.responseText.trim()!="1") { var msgbox = new PMP.util.pmpMsgBox(retour.responseText.trim(), "erreur", "Ajout d'un produit", null, ""); } else window.location.replace("/panier.php"); } function modifier_quantite(ref, qte) { if( PMP.common.isUndefined(ref) ) { return "Référence non définie"; } if( !PMP.common.isNumber(qte) ) { return "Quantité non définie"; } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/boutique/_include/alias_boutique.php", "POST"); if(!ajax) { return "Impossible de créer l'objet ajax"; } ajax.appendData("action", "modifier_quantite"); ajax.appendData("ref", ref); ajax.appendData("qte", qte); var retour = ajax.send(); if(!retour) { return "Une erreur s'est produite."; } else { return retour.responseText.trim(); } } function addQuantite(ref, qte) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Modification de la quantité", null, ""); return false; } if( !PMP.common.isNumber(qte) ) { var msgbox = new PMP.util.pmpMsgBox("Quantité non définie", "erreur", "Modification de la quantité", null, ""); return false; } var inputQte = document.getElementById("qte["+ref+"]"); if(inputQte) { qte = ( PMP.common.isNumber(parseInt(inputQte.value)) ? parseInt(inputQte.value) : 0 ) + parseInt(qte); if( qte >= 1 ) setQuantite(ref, qte); } } function setQuantite(ref, qte) { if( PMP.common.isUndefined(ref) ) { var msgbox = new PMP.util.pmpMsgBox("Référence non définie", "erreur", "Modification de la quantité", null, ""); return false; } if( !PMP.common.isNumber(qte) ) { //if(qte.trim()!="") // var msgbox = new PMP.util.pmpMsgBox("Quantité non définie : " + qte, "erreur", "Modification de la quantité", null, ""); return false; } qte = parseInt(qte); if( qte < 0 ) qte = 0; // mise à jour du panier var reponse = modifier_quantite(ref, qte); if( reponse!="1" ) { var msgbox = new PMP.util.pmpMsgBox(reponse, "erreur", "Modification de la quantité", null, ""); return; } var inputQte = document.getElementById("qte["+ref+"]"); if(inputQte) inputQte.value = parseInt(qte); var inputPrix = document.getElementById("prix["+ref+"]"); if(!inputPrix) { var msgbox = new PMP.util.pmpMsgBox("Prix de l'article non défini", "erreur", "Modification de la quantité", null, ""); return } var divMontant = document.getElementById("montant["+ref+"]"); if(divMontant) { var montant = parseFloat(qte) * parseFloat(inputPrix.value); //vérifie que le montant soit positif if(montant < 0) montant = 0; divMontant.montant = montant; // formate le montant selon les paramètres de langue; montant = number_format(montant, 2, formatDecimal, formatCentaine); divMontant.innerHTML = montant; actualiser_fraisdeport(); refreshSousTotal(); actualiser_nbarticles() } } function supprimer_produit(ref) { if( PMP.common.isUndefined(ref) ) { return "Référence non définie"; } // mise à jour du panier var reponse = modifier_quantite(ref, 0); if( reponse!="1" ) { var msgbox = new PMP.util.pmpMsgBox(reponse, "erreur", "Suppression de l'article", null, ""); return; } var elements = DomMgr.getElementsByMaskId("montant[%i]", "td"); if( elements.length <= 1) { window.location.replace("/"); return; } window.location.replace(window.location.href); return; var ligne = document.getElementById("tr["+ref+"]"); if(ligne) ligne.parentNode.removeChild(ligne); actualiser_fraisdeport(); refreshSousTotal(); refreshTotal(); actualiser_nbarticles() } function refreshSousTotal() { var elements = DomMgr.getElementsByMaskId("montant[%i]", "td"); var sousTotal = 0; for(var i=0; i < elements.length; i++) { sousTotal += elements[i].montant ? parseFloat(elements[i].montant) : 0; } var divLivraison = document.getElementById("livraison"); if(divLivraison) sousTotal += parseFloat(divLivraison.montant); var divSousTotal = document.getElementById("soustotal"); if(divSousTotal) { divSousTotal.montant = sousTotal; // formate le montant selon les paramètres de langue; sousTotal = number_format(sousTotal, 2, formatDecimal, formatCentaine); divSousTotal.innerHTML = sousTotal; } } function refreshTotal() { var montant = 0; var divSousTotal = document.getElementById("soustotal"); if(divSousTotal) montant += parseFloat(divSousTotal.montant); 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 = number_format(montant, 2, formatDecimal, formatCentaine); divTotal.innerHTML = montant; } } function actualiser_fraisdeport(pays) { if( PMP.common.isUndefined(pays) || !PMP.common.isNumber(pays) ) { var paysCB = document.getElementById("pays"); if(!paysCB) { var msgbox = new PMP.util.pmpMsgBox("Pays non défini", "erreur", "Actualisation des frais de port", null, ""); return false; } var pays = paysCB.value; } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/boutique/_include/alias_boutique.php", "POST"); if(!ajax) { var msgbox = new PMP.util.pmpMsgBox("Impossible de créer l'objet ajax", "erreur", "Actualisation des frais de port", null, ""); return false; } ajax.appendData("action", "calculer_fraisdeport"); ajax.appendData("pays", pays); var retour = ajax.send(); if(!retour) { var msgbox = new PMP.util.pmpMsgBox("Une erreur s'est produite.", "erreur", "Actualisation des frais de port", null, ""); return false; } else { var montant = parseFloat(retour.responseText.trim()); var livraison = document.getElementById("livraison"); if(livraison) { livraison.montant = montant; // formate le montant selon les paramètres de langue; montant = number_format(montant, 2, formatDecimal, formatCentaine); livraison.innerHTML = montant; } } refreshSousTotal(); return true; } function actualiser_nbarticles() { var elements = DomMgr.getElementsByMaskId("qte[%i]", "input"); var qte = 0; for(var i=0; i < elements.length; i++) { qte += parseInt(elements[i].value); } var nbHaut = document.getElementById("nbarticleshaut"); if(nbHaut) nbHaut.innerHTML = qte + " article" + (qte>1 ? "s" : ""); var nbPanier = document.getElementById("nbarticlespanier"); if(nbPanier) nbPanier.innerHTML = qte + " article" + (qte>1 ? "s" : ""); } function enregistrer_compte() { // sauvegarde les infos du compte en session var ajax = new PMP.util.pmpAjax("/boutique/_include/alias_boutique.php", "POST"); if(!ajax) { var msgbox = new PMP.util.pmpMsgBox("Impossible de créer l'objet ajax", "erreur", "Enregistrement des coordonées", null, ""); return false; } ajax.appendData("action", "enregistrer_compte"); var champ1 = document.getElementsByName("champ1"); if(champ1) { for(i = 0; i < champ1.length; i++ ) { if(champ1[i].checked==true) ajax.appendData("champ1", champ1[i].value); } } var champ2 = document.getElementsByName("champ2"); if(champ2) { for(i = 0; i < champ2.length; i++ ) { if(champ2[i].checked==true) ajax.appendData("champ2", champ2[i].value); } } var champ3 = document.getElementById("champ3"); if(champ3) ajax.appendData("champ3", champ3.value); var champ4 = document.getElementById("champ4"); if(champ4) ajax.appendData("champ4", champ4.value); var champ5 = document.getElementById("champ5"); if(champ5) ajax.appendData("champ5", champ5.value); var champ5bis = document.getElementById("champ5bis"); if(champ5bis) ajax.appendData("champ5bis", champ5bis.value); var champ6 = document.getElementById("champ6"); if(champ6) ajax.appendData("champ6", champ6.value); var champ7 = document.getElementById("champ7"); if(champ7) ajax.appendData("champ7", champ7.value); var champ8 = document.getElementById("champ8"); if(champ8) ajax.appendData("champ8", champ8.value); var champ9 = document.getElementById("champ9"); if(champ9) ajax.appendData("champ9", champ9.value); var champ10 = document.getElementById("champ10"); if(champ10) ajax.appendData("champ10", champ10.value); var retour = ajax.send(); if(!retour) { var msgbox = new PMP.util.pmpMsgBox("Une erreur s'est produite.", "erreur", "Enregistrement des coordonées", null, ""); return false; } switch(retour.responseText.trim()) { case "1" : window.location.replace('etape3.php'); break; default: var message = retour.responseText.trim(); // remplacement des noms de champ par le libellé message = message.replace("civ", "Civilité"); message = message.replace("nom", "Nom"); message = message.replace("prenom", "Prénom"); message = message.replace("adresse1", "Adresse"); message = message.replace("adresse2", "Adresse"); message = message.replace("cp", "Code postal"); message = message.replace("ville", "Ville"); message = message.replace("pays", "Pays"); message = message.replace("telephone", "Téléphone"); message = message.replace("email", "E-mail"); message = message.replace("commentaires", "Commentaires "); message = message.replace("mode_paiement", "Mode de Paiement"); // mise en forme du message : saut de ligne, -, espaces... message = "
- " + message.replace(/\,/g, "
- "); message = "Les champs suivants sont incorrectes : " + message; var msgbox = new PMP.util.pmpMsgBox(message, "erreur", "Enregistrement des coordonées", null, ""); break; } } function valider_commande() { var cgv = document.getElementById("champ11"); if( cgv && cgv.checked==false) { var msgbox = new PMP.util.pmpMsgBox("Vous devez accepter les conditions générales de vente pour valider votre commande", "erreur", "Enregistrement de la commande", null, ""); return; } // ajout du produit au panier var ajax = new PMP.util.pmpAjax("/boutique/_include/alias_boutique.php", "POST"); if(!ajax) { var msgbox = new PMP.util.pmpMsgBox("Impossible de créer l'objet ajax", "erreur", "Enregistrement de la commande", null, ""); return; } ajax.appendData("action", "valider_commande"); var retour = ajax.send(); if(!retour) { var msgbox = new PMP.util.pmpMsgBox("Une erreur s'est produite.", "erreur", "Enregistrement de la commande", null, ""); return false; } switch(retour.responseText.trim()) { case "1" : window.location.replace("etape4.php"); break; default: var msgbox = new PMP.util.pmpMsgBox(retour.responseText.trim(), "erreur", "Enregistrement de la commande", null, ""); break; } } // number_format(nombre, nbDecimal, formatDecimal, formaCentaine) function number_format(nombre, nbDecimal, formatDecimal, formatCentaine) { nombre = parseFloat(nombre); if( nombre=="NaN" || nombre==0 ) nombre = 0; // si le nombre de décimales passé en paramètre est valide if (nbDecimal != null) { nombre = nombre.toFixed(nbDecimal); } // on récupère le signe du nombre var sign = nombre < 0 ? "-" : ""; // on récupère la partie entière du nombre var entiere = (nombre > 0 ? Math.floor (nombre) : Math.abs (Math.ceil (nombre))).toString (); // on récupère la partie decimale du nombre var decimale = nombre.toString ().substring (entiere.length + sign.length); // on définit le séparateur: celui passé en paramètre s'il est valide sinon '.' par défaut formatDecimal = formatDecimal != null ? formatDecimal : "."; decimale = nbDecimal != null && nbDecimal > 0 || decimale.length > 1 ? (formatDecimal + decimale.substring (1)) : ""; // si le nombre de décimal est inférieur à nbDecimal on ajoute des 0 if (nbDecimal != null && nbDecimal > 0) { for (i = decimale.length - 1, z = nbDecimal; i < z; ++i) decimale += "0"; } formatCentaine = (formatCentaine != formatDecimal || decimale.length == 0) ? formatCentaine : null; if (formatCentaine != null && formatCentaine != "") { for (i = entiere.length - 3; i > 0; i -= 3) entiere = entiere.substring (0 , i) + formatCentaine + entiere.substring (i); } return sign + entiere + decimale; }