Jump to content

Probléme de prix


jbju

Recommended Posts

Bonjour,

 

Je souhaiterais savoir comment il est possible récupérer le prix à l'unité sur la pagelist?

 

En effet le code présent dans le fichier product.tpl ne fonctionne pas une fois ajouté dans le fichier product-list.tpl

 

Pour info voici le code:

{if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
 {math equation="pprice / punit_price"  pprice=$productPrice  punit_price=$product->unit_price_ratio assign=unit_price}
   <p class="unit-price"><span id="unit_price_display">{convertPrice price=$unit_price}</span> {l s='per'} {$product->unity|escape:'htmlall':'UTF-8'}</p>
  {/if}

 

Si quelq'un arrive à m'aider la dessus.... ;)

Merci

Link to comment
Share on other sites

Hedrad,

 

Je souhaite récupérer le prix à l'unité sur les différentes page-list de catégorie.

En effet le prix à l'unité peut être complété dans le back office

Prix de vente TTC : € Prix HT à l'unité : € par soit 0.00 € par avec taxes

 

Une fois ce prix et l'unité complétés Le prix "soit 0.00€ par avec taxes" est affiché sur la fiche produit.

On se retrouve donc par exemple sur la fiche produit avec:

15€ pour la barquette de 1.5 kg

soit 10€ par Kg

 

Cependant le prix à l'unité n'est pas affiché sur la page-list le seul prix affiché étant 15€ pour la barquette (vous l'aurez compris je souhaite faire apparaitre 10€ par Kg plutot que le prix de l'article packagé.

 

Le bout de code copié plus haut permet d'affiché de prix à l'unité dans la fiche produit

J'ai tenté de copier ce bout dans le fichier product-list.tpl mais cela ne fonctionne pas.

 

En espérant avoir était un peu plus clair

N'hésitez pas si vous avez d'autres questions.

Link to comment
Share on other sites

Ce n'est pas si évident. En fait, le fichier product.tpl "reçoit" la variable $product qui contient toutes les infos dont notamment celles que tu affiches.

 

Sur product-list.tpl ce n'est pas la variable $product que tu reçois mais la variable $productS (remarque le S) qui est générée par la méthode getProducts() de la classe Category.php.

La variable $product que tu vois dans product-list.tpl est en fait un item issu du foreach de$products et permet ainsi de lister les produits de la catégorie. Tu suis ?

 

La méthode getProducts utilisée dans la classe Category est moins "riche" que l'objet Product créé dans le controller Product.php pour la page produit.

 

Il faut donc que tu complètes cette méthode getProducts() dans la classe classes/Category.php pour qu'elle prenne aussi en compte cette histoire de prix à l'unité. Je ne peux pas te répondre comme ça parce que ça peut être long, je te laisse faire des recherches pour avancer un peu.

Link to comment
Share on other sites

Merci pour ces explications Franckm1000,

 

Après avoir regardé de plus près tes explications voilà mes quelques remarques et le début d'un raisonnement quelque peu brouillon:

 

- Si je comprend bien ce que tu m'as dit il va falloir modifier la requête sql de la méthode getProducts de la classe Category.php (surement qu'il faudra d'ailleurs effectuer une nouvelle jointure) le but étant de récupérer le prix unitaire comme dans Product.php

 

- Je vais donc voir mon fichier Product.php pour y trouver d'où pourrait bien provenir mon prix unitaire

après cette recherche cette ligne me semble affecter le prix unitaire dans unit_price à l'aide d'une division de price/unit_price_ratio

$this->unit_price = ($this->unit_price_ratio != 0  ? $this->price / $this->unit_price_ratio : 0);

 

​- Je vais donc devoir non pas récupérer le prix unitaire mais le calculer après avoir récupéré le prix (price) et l'unit_price_ratio

 

- Je continue à chercher dans mon fichier Product.php pour trouver un signe de vie de l'unit_price_ratio et je tombe sur cette ligne:

$fields['unit_price_ratio'] = (float)$this->unit_price > 0 ? $this->price / $this->unit_price : 0;

 

- Je vais donc devoir non pas récupérer l'unit_price_ratio mais le calculer avec le prix sur l'unit_price?

 

- Je commence à être un peu perdu et je décide donc d'aller voir en BDD ou je peux bien trouver ces informations (à priori je cherche "price" et "unit_price"

 

- Je retrouve bien "price" dans la table ps_product_attribute

 

- Je décide donc de chercher le prix d'un produit que je connais:

  • Je commence par afficher le "price" d'un article déterminé pour le retrouver après en BDD (pour cela j'ajoute
    {$product|@var_dump}

    dans mon fichier product.tpl

  • Je retrouve le prix affiché sur cette ligne
    [i]public[/i][size=2] 'price' => float 12.541806[/size]


  • Je decide donc de retrouver ce prix en BDD donc je fais une recherche avec un LIKE 12.541806 a sur le champ "price" de la table ps_product_attribute et là je ne le retrouve pas (Zut !)

Et la je suis un peu désorienté car je pensais y retrouver le "price" de mon produit (soit 12.541806 d'après mon affichage) pour ensuite pouvoir valider tout ce qui est écrit précedemment et tenter de faire les opérations et modifier la requête mais à voir je ne suis pas sur la bonne route ou me suis égaré dans un buisson ;)

 

Appel à Franckm1000 ou à toute autre personne:

"Je me suis planté quelque part dans mon raisonnement? Je suis sur la bonne voie ou carrément perdu?"

 

Merci beaucoup pour l'aide

Link to comment
Share on other sites

Dans le fichier Controller/CategoryController, après:

public function process()
{

 

Tu mets:

$my_prices=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'product');
self::$smarty->assign('my_prices',$my_prices);

 

Ensuite dans le fichier produc-list.tpl, dans le foreach (par exemple avant <div class="center_block">) tu mets:

{foreach from=$my_prices item=my_price}
			{if $product.id_product==$my_price.id_product}
				{if !empty($my_price.unity) && $my_price.unit_price_ratio > 0.000000}
					 {math equation="pprice / punit_price"  pprice=$my_price.price  punit_price=$my_price.unit_price_ratio assign=unit_price}
					<p class="unit-price"><span id="unit_price_display">{convertPrice price=$unit_price}</span> {l s='per'} {$my_price.unity|escape:'htmlall':'UTF-8'}</p>
				{/if}
		   {/if}
	   {/foreach}

 

Ca marche non ? ;)

Edited by franckm1000 (see edit history)
  • Like 1
Link to comment
Share on other sites

Je l'ai mis juste après:

 

public function initContent()
{

et ça a à l'air de fonctionner en espérant que je n'ai pas fait du grand n'importe quoi.

En tout cas on dirait que ça marche.

 

Merci beaucoup.

PS: n'hésitez pas à me dire si j'ai fait du grand n'importe quoi en le plaçant là ;)

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