Jump to content

Add new field in order detail


Serial

Recommended Posts

Hi,

 

First, I add a new column in Cart (see CoupeCart.png image in attached files).

In shopping-cart-product-line.tpl :

<!-- Coupe de tissus -->
	{if $product.id_category_default != 99 && $product.id_category_default != 100 && $current_step != 'payment'}
	<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>
	{else $product.id_category_default == 99 || $product.id_category_default == 100 && $current_step != 'payment'}
		<td class="coupe_tissus" data-title="{l s='Coupe'}"></td>
	{/if}
<!-- Jusqu'ici -->

In cart-summary.js, I created a function to calculate my new value when the customer click on "Calculer".

// Par défaut, on cache les div pour la coupe
	[].slice.call(document.querySelectorAll(".param_coupe")).forEach(function(_node){
    	_node.style.display='none';
	});

	// 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); 
		}
	);
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);
}

Now, I want to save in a variable which contains string like this : $myVariable = pieces + "x" + metres for each products in cart.

After, I want to save this variable in order_detail table for each products too.

 

Thanks if you can help me !

post-1055497-0-60823700-1443175382_thumb.png

Edited by Serial (see edit history)
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...