Jump to content

Modifier L'ordre De Tri Des Produits Sur Le Bon De Livraison


Recommended Posts

Bonjour,

 

Je recherche depuis plusieurs heures comment changer le tri sur le Bon de Livraison d'une boutique.

 

J'ai localisé le template d'affichage du BL, mais pas moyen de faire un tri sur la variable $order_details (c'est un tableau d'objet product? ou un object contenant les info de la commande et une collection (tableau) d'objet product?)

 

Je pense que le code de tri est à rajouter dans pdf/delivery-slip.tpl ici :

<!-- PRODUCTS TAB -->
<table style="width: 100%">
	<tr>
		<td style="width: 22%; padding-right: 7px; text-align: right; vertical-align: top">
			<!-- CUSTOMER INFORMATIONS -->
			<b>{l s='Order Number:' pdf='true'}</b><br />
			{$order->getUniqReference()}<br />
			<br />
			<b>{l s='Order Date:' pdf='true'}</b><br />
			{dateFormat date=$order->date_add full=0}<br />
			<br />
			<b>{l s='Payment Method:' pdf='true'}</b><br />
			<table style="width: 100%;">
			{foreach from=$order_invoice->getOrderPaymentCollection() item=payment}
				<tr>
					<td style="width: 50%">{$payment->payment_method}</td>
					<td style="width: 50%">{displayPrice price=$payment->amount currency=$order->id_currency}</td>
				</tr>
			{foreachelse}
				<tr>
					<td>{l s='No payment'}</td>
				</tr>
			{/foreach}
			</table>
			<br />
			{if isset($carrier)}
			<b>{l s='Carrier:' pdf='true'}</b><br />
			{$carrier->name}<br />
			<br />
			{/if}			
			<!-- / CUSTOMER INFORMATIONS -->
		</td>
		<td style="width: 78%; text-align: right">
			<table style="width: 100%">
				<tr style="line-height:6px;">
					<td style="text-align: left; background-color: #4D4D4D; color: #FFF; padding-left: 10px; font-weight: bold; width: 60%">{l s='ITEMS TO BE DELIVERED' pdf='true'}</td>
					<td style="background-color: #4D4D4D; color: #FFF; text-align: left; font-weight: bold; width: 20%">{l s='REFERENCE' pdf='true'}</td>
					<td style="background-color: #4D4D4D; color: #FFF; text-align: center; font-weight: bold; width: 20%">{l s='QTY' pdf='true'}</td>
				</tr>
				<!-- -------------------------------------------------------------------------------------------------------------------------------- -->
				Code de tri ) rajouter?
				<!-- -------------------------------------------------------------------------------------------------------------------------------- -->
				{foreach $order_details as $product}
				{cycle values='#FFF,#DDD' assign=bgcolor}
				<tr style="line-height:6px;background-color:{$bgcolor};">
					<td style="text-align: left; width: 60%">{$product.product_name}</td>
					<td style="text-align: left; width: 20%">
						{if empty($product.product_reference)}
							---
						{else}
							{$product.product_reference}
						{/if}
					</td>
					<td style="text-align: center; width: 20%">{$product.product_quantity}</td>
				</tr>
				{/foreach}
			</table>
		</td>
	</tr>
</table>
<!-- / PRODUCTS TAB -->

Si vous avez une idée, je suis preneur, car je tourne en rond depuis un bon moment.

Link to comment
Share on other sites

Bonjour,

 

D'abord faut comprendre que les vues (les .tpl dans notre cas) servent à afficher des valeurs et non à faire des traitements, si besoin de traiter ou re traiter les données, il faut le faire dans les modèles ou dans un moindre mesure dans les contrôleurs.

 

De plus presta est te permet de surcharger facilement les classes de modeles ou de controlleurs.

 

Ceci étant, je suis pas là pour te faire la morale :P essaye ça pour voir :

				{* On declare un variable tableau *}
				{assign var="arrayTemp" value=array()}
				
				{* On met les $produit dans le tableau avec le product_name comme clé *}
				{foreach $order_details as $product}
					{append var="arrayTemp" value=$product index=$product.product_name}
				{/foreach}
				
				{* On trie le tableau suivant la clé *}
				{ksort($arrayTemp)}
				
				{* On boucle le resultat *}
				{foreach $arrayTemp as $product}
				{cycle values='#FFF,#DDD' assign=bgcolor}
				<tr style="line-height:6px;background-color:{$bgcolor};">
					<td style="text-align: left; width: 60%">{$product.product_name}</td>
					<td style="text-align: left; width: 20%">
						{if empty($product.product_reference)}
							---
						{else}
							{$product.product_reference}
						{/if}
					</td>
					<td style="text-align: center; width: 20%">{$product.product_quantity}</td>
				</tr>
				{/foreach}

Bon dev :)

  • Like 1
Link to comment
Share on other sites

Super!!!! Ca marche!

 

Je me doutais bien qu'il y avait un modèle et un contrôleur derrière, mais comme j'ai pas touché sérieusement de code depuis 3 ans, je suis un peu perdu :)

 

Ils sont où les modèles pour voir si j'arrive au même résultat dans le modèle en triant directement dans le order_details?

 

En tout cas, merci beaucoup!

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...