Jump to content

Sauvegarder un nouveau champ dans order_detail


Serial

Recommended Posts

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...