Jump to content

Mettre le montant de la réduction dans la vignette produit


marie12

Recommended Posts

Bonjour,

 

Je voudrais afficher dans la vignette le montant de la réduction telle qu'elle s'affiche en fiche produit.

 

J'ai tenté de mettre ces lignes (issues de product.tpl) dans vignette.tpl :

 

{if $product->specificPrice AND $product->specificPrice.reduction_type == 'percentage'}

<p id="reduction_percent"><span id="reduction_percent_display">-{$product->specificPrice.reduction*100}%</span></p>

{/if}

 

Mais ça m'affiche seulement "-0%", alors que certains de mes produits ont déjà une réduction en pourcentage, qui s'affiche correctement en fiche-produit.

 

Comment faire ?

Link to comment
Share on other sites

Bonjour,

 

Je voudrais afficher dans la vignette le montant de la réduction telle qu'elle s'affiche en fiche produit.

 

J'ai tenté de mettre ces lignes (issues de product.tpl) dans vignette.tpl :

 

 

 

Mais ça m'affiche seulement "-0%", alors que certains de mes produits ont déjà une réduction en pourcentage, qui s'affiche correctement en fiche-produit.

 

Comment faire ?

 

Le hic c'est que vignette.tpl , ça on connait pas , il sort d'ou ce tpl ?

Dans tous les cas les infos que tu as dans le tpl produit (product.tpl) sont assignées à smarty par un controller (ProductController), et que sur d'autres pages ce sont d'autres controllers, et enfin , que selon ces controllers toutes les infos ne sont pas nécessairement dispos .

Par exemple dans les listings produits...

De plus si dans le controller product $product est un objet , dans d'autres il est le plus souvent un tableau associatif et accéder à une propriété se fait par un . au lieu d'un -> ...

Link to comment
Share on other sites

OK, merci pour ta réponse, je comprends un peu mieux.

Donc le tpl de la vignette a été créé pour afficher dans une page catégorie la liste des produits avec un certain nombre d'informations par produit, de façon que le client puisse faire une commande déjà à ce stade, sans rentrer dans la fiche produit, si les infos lui suffisent.

 

J'ai regardé les Controllers, je n'en ai pas vu de spécifique à la vignette. Dans le CategoryController.php, je n'ai pas vu de lignes pour les éléments internes à la vignette (mais peut-être que quelque chose m'a échappé ?)...

 

Ci-joint une copie d'écran qui montre 2 vignettes dans une liste de produits.

 

Le développeur qui m'a codé cela a mis :

<p class="sansPromoProduit">{if $product.reduction_>0}<sup>-{$product.partie_entiere}</sup><sub>{$product.partie_decimale}</sub> <span>%</span>{/if}</p>

 

Mais depuis que j'ai passé l'affichage des prix en TTC, ça ne marche plus. Une réduction est apparue systématiquement sur toutes les vignettes (alors que les fiches produits sont ok).

Quand je mets un prix spécifique avec -10% de réduction, alors j'ai une réduction de -24,74% au lieu de -16,38%.

 

Ce que je veux, c'est récupérer le code du montant de la réduction, tel qu'il s'affiche dans la fiche-produit.

Quand je recopie le code de la fiche-produit dans la vignette, la réduction n'est pas prise en compte.

 

J'ai essayé

{$product->specificPrice.reduction*100}

cela donne 0, alors qu'un de mes produits a un prix spécifique avec 10% de réduction

J'ai essayé :

{$product.specificPrice.reduction*100}

affichage : 0

 

Une solution ?

post-47017-0-90708500-1355904696_thumb.jpg

Link to comment
Share on other sites

Et voici ce que je trouve dans le fichier override/classes/Product.php :

 

public static function getProductsProperties($id_lang, $query_result)

{

$resultsArray = array();

if (is_array($query_result))

foreach ($query_result AS $row)

if ($row2 = Product::getProductProperties($id_lang, $row))

{

// var_dump($row2);

$reduction=($row2['price_without_reduction']-$row2['price_tax_exc'])*100/$row2['price_without_reduction'];

// $reduction=100*(1-$row2['price_tax_exc']/$row2['price_without_reduction']);

// echo $reduction.'<br>';

$partie_entiere=(int) ($reduction);

// echo $partie_entiere.'<br>';

$partie_decimale=($reduction-$partie_entiere)*100;

if ($partie_decimale<1)

$partie_decimale=0;

$partie_decimale=(int) substr($partie_decimale,0,2);

// echo $partie_decimale;

 

 

// echo $partie_decimale.'<br>';

$row2['reduction_']=$reduction;

$row2['partie_entiere']=$partie_entiere;

$row2['partie_decimale']=$partie_decimale;

if ($partie_decimale!=0)

$row2['partie_entiere']=$row2['partie_entiere'].',';

else

$row2['partie_decimale']='';

 

 

$resultsArray[] = $row2;

 

}

return $resultsArray;

}

La formule :

$reduction=($row2['price_without_reduction']-$row2['price_tax_exc'])*100/$row2['price_without_reduction'];

devrait marcher, qu'il s'agisse d'un prix HT ou d'un prix TTC... (a prioiri, seules des réductions en pourcentage seront appliquées).

Comment expliquer qu'avec cette formule, ce soit -16,38% qui s'affiche, et non 0 ?

Edited by marie12 (see edit history)
Link to comment
Share on other sites

OK, j'ai compris. Et j'ai refait les calculs, ce sont les variables utilisées qui ne sont pas les bonnes.

 

$reduction=($row2['price_without_reduction']-$row2['price_tax_exc'])*100/$row2['price_without_reduction'];

 

price_without_reduction ---> c'est le prix TTC avant la réduction

price_tax_exc ----> c'est le prix HT après la réduction.

 

Si on utilise que des prix sans taxe, ça colle.

Quelle variable faut-il utiliser pour appeler le prix d'origine, sans taxe et avant réduction ?

Link to comment
Share on other sites

  • 1 month later...

Ca marche nikel avec cette formule :

$reduction=($row2['reduction'])*100/($row2['price_tax_exc']+$row2['reduction']);

 

Euh moi aussi je cherche à afficher le pourcentage sur la vignette.

 

Pouvez vous m'indquer le code à copier dans le tpl. Ya-t-il un fichier .php à modifier ?

 

Merci !

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