Serial Posted September 14, 2015 Share Posted September 14, 2015 Bonjour, J'aimerai proposé à mes clients la possibilité de couper leur produit gratuitement. J'ai crée une nouvelle colonne "Coupe" dans le tableau du panier (shopping-cart.tpl) pour chaque produits : <th class="cart_coupe item text-center">{l s='Coupe'}</th> Ensuite, j'ai défini la ligne du tableau pour chaque produit dans shopping-cart-product-line.tpl : <td class="coupe_tissus" data-title="{l s='Coupe'}"> <input class="coupe_select" type="checkbox" value="no" name="checkbox_coupe_{$product.id_product}_{$product.id_product_attribute}_{if $quantityDisplayed > 0}nocustom{else}0{/if}_{$product.id_address_delivery|intval}">Coupe</input> <div class="param_coupe {$icpClass}" name="param_coupe_{$product.id_product}_{$product.id_product_attribute}_{if $quantityDisplayed > 0}nocustom{else}0{/if}_{$product.id_address_delivery|intval}"> <div class="coupe-content"><input id="nb_pieces" type="text" value="{$product.cart_quantity}" name="pieces_{$product.id_product}_{$product.id_product_attribute}_{if $quantityDisplayed > 0}nocustom{else}0{/if}_{$product.id_address_delivery|intval}" style="width:40px;"/> pièce(s) x <input id="nb_metres" type="text" name="metres_{$product.id_product}_{$product.id_product_attribute}_{if $quantityDisplayed > 0}nocustom{else}0{/if}_{$product.id_address_delivery|intval}" style="width:40px;" disabled /> m</div> <input class="bouton_calculer" type="button" value="Calculer" /> </div> </td> J'ai donc créer à l'intérieur de chaque ligne de produits une checkbox appelé "Coupe". Si elle est cochée, ca montre une petite fenêtre ou le client peut calculer sa découpe en fonction de la quantité choisie. Il écrit le nombre de pièces qu'il souhaite et ensuite il clique sur le bouton "Calculer". Le calcul est juste une division entre la quantité et le nombre de pièces qu'il souhaite, puis affichage du résultat dans l'input grisé "nb_metres". Tout ca est réalisé dans mon cart-summary.js : // Au changement d'une checkbox "Coupe" $('.coupe_select').change('click', function(e){ e.preventDefault(); var icp = ppCart.getIcp($(this)); if ($('.coupe_select' + ppCart.getIcpSelector(icp)).attr('checked')) { $('div.param_coupe' + ppCart.getIcpSelector(icp)).show('slow'); } else { $('div.param_coupe' + ppCart.getIcpSelector(icp)).hide('slow'); } } ); // Lors du clic sur le bouton Calculer $('.bouton_calculer').on('click', function(e){ e.preventDefault(); var icp = ppCart.getIcp($(this)); // On relève le numéro de la ligne var pieces = $("input#nb_pieces" + ppCart.getIcpSelector(icp)).val(); // On récupère le nombre de pièces de la ligne (par défaut : 1) var quantite = $('input.cart_quantity_input' + ppCart.getIcpSelector(icp)).val().replace(",","."); // On récupère la quantité // On appelle la fonction CalculCoupe avec les valeurs de la ligne du produit. CalculCoupe(pieces,quantite,icp); } ); Ma fonction CalculCoupe : function CalculCoupe(pieces, quantite, icp) { // Conversion des chaînes en tant que nombre pour pouvoir faire la division pieces = parseInt(pieces); quantite = parseFloat(quantite); // Déclaration d'une variable metres résultant de la division // On vérifie sir le chiffre contient plus de 3 chiffres après la virgule // Si c'est le cas, on fixe à 3 chiffres après la virgule // Puis on affiche le nombre de mètres dans la case var metres = quantite / pieces; if (metres.toString().split(".")[1].length > 3) { metres = metres.toFixed(3); } $('input#nb_metres' + ppCart.getIcpSelector(icp)).val(metres); } Tout ca fonctionne. Maintenant mon souci est le suivant : J'aimerai donc pour chaque produits contenu dans le panier, lorsqu'il valide sa commande, enregistrer la découpe qu'il a saisi (donc dans mon JS, les variables metres et pieces). Ce résultat est concaténer. Exemple : son produit a une quantité de 3. Il veut découpé son produit en 3. J'aurai donc un résultat du style : 3x1. Et la où je sèche, c'est sauvegarder ce résultat dans un champ de la table order_detail que j'ai crée appelé coupe_tissu. Merci pour votre aide précieuse ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now