Jump to content

[RESOLU] Afficher Quantity discount sur product-list.tpl


Recommended Posts

Bonjour, je reviens sur ma question, comment puis je faire pour appeler les fonctions de la classe SpecificPrice.php dans la page product-list.tpl ? Si quelqu'un avait une idée ça m'aiderai et ça aiderai surement d'autres personnes.

 

Merci par avance

Link to comment
Share on other sites

J'ai trouvé une solution, dans la fonction getProductProperties de la classe Product.php, juste avant :

 

self::$producPropertiesCache[$cacheKey] = $row;
return self::$producPropertiesCache[$cacheKey];

 

j'ai ajouté :

 

// PRIX MINI POUR AFFICHER LE PRIX LE PLUS PETIT DANS QUANTITE DISCOUNT
 $id_product = $row['id_product'];
 // Requete qui récupère le prix le plus petit
 $result = Db::getInstance()->Execute('
 SELECT *
 FROM `'._DB_PREFIX_.'specific_price`
 WHERE `id_product` = '.$id_product.' AND `price` = (SELECT MIN(price) FROM `'._DB_PREFIX_.'specific_price` WHERE `id_product` = '.$id_product.')');
 $result = mysql_fetch_array($result);

 // Affichage du prix le plus petit
 $row['prixMini'] =  Tools::displayPrice(Tools::convertPrice($result['price'], $currency), $currency);
 // Si pas de prix de reduction, afficher prix normal
 if ( $row['prixMini'] == 0) {
  $row['prixMini'] = $row['price_without_reduction'];
 }

 

et dans product-list.tpl j'ai ajouté pour l'affichage :

 

{$product.prixMini}

 

Si ça peut aider quelqu'un.

 

Bonne journée à tous.

Link to comment
Share on other sites

  • 1 month later...

Bonjour à tous, le code de Salamandre fonctionne mais pas pour tout les types de réduction (seulement pour celle où on donne le Prix produit (HT) directement).

 

J'ai eu besoin de le faire pour un client donc voici mon code pour la version PrestaShop™ 1.4.7.3 (devrai fonctionner pour toutes les versions 1.4)

 

Cette modif fonctionne pour les réductions en pourcentage et en montant (celle où on ne donne par le prix final HT) aussi !

 

1) D'abord, j'ai copié la fonction formatQuantityDiscounts du controller ProductController et l'ai mise telle qu'elle dans la classe Product.php

 

2) Ensuite dans la classe Product.php j'ai remplacé

$row['specific_prices'] = $specific_prices;

 

par

 

$product = new Product((int)$row['id_product']);
$customer = new Customer((int)$cookie->id_customer);

$row['specific_prices'] = Product::formatQuantityDiscounts(SpecificPrice::getQuantityDiscounts((int)$row['id_product'], (int)Shop::getCurrentShop(), (int)$cookie->id_currency, (int)$cookie->id_country, (int)$customer->id_default_group), $product->getPrice(Product::$_taxCalculationMethod == PS_TAX_INC, false), (float)Tax::getProductTaxRate($row['id_product'], (int)$cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}));

 

Il faut aussi rajouter en haut de la fonction getProductProperties (celle qui est modifiée dans cette étape)

 

global $cart, $cookie;

 

3) Ensuite dans produt-list.tpl il faut mettre :

 

{assign var='start_price' value=$product.price_tax_exc}
{assign var="mini_price" value=$product.price_tax_exc}
{if !$priceDisplay}
 {assign var='start_price' value=$product.price}
 {assign var='mini_price' value=$product.price}
{/if}

{assign var="quantity_discounts" value=$product.specific_prices}

{section name=quantity_discount loop=$quantity_discounts step=-1}
 {if $quantity_discounts[quantity_discount].price != 0 OR $quantity_discounts[quantity_discount].reduction_type == 'amount'}					  
  {if $priceDisplay == 1}
   {assign var='prixProduct' value=($start_price - $quantity_discounts[quantity_discount].real_value|floatval)}

   {if $prixProduct < $mini_price}
	{assign var='mini_price' value=$prixProduct}
   {/if}
  {else}
   {assign var='prixProduct' value=($start_price - $quantity_discounts[quantity_discount].real_value|floatval)}

   {if $prixProduct < $mini_price}
	{assign var='mini_price' value=$prixProduct}
   {/if}
  {/if}
 {else}	  
  {if $priceDisplay == 1}
   {assign var='prixProduct' value=($start_price-($quantity_discounts[quantity_discount].real_value*$start_price/100)|floatval)}

   {if $prixProduct < $mini_price}
	{assign var='mini_price' value=$prixProduct}
   {/if}
  {else}
   {assign var='prixProduct' value=($start_price-($quantity_discounts[quantity_discount].real_value*$start_price/100)|floatval)}

   {if $prixProduct < $mini_price}
	{assign var='mini_price' value=$prixProduct}
   {/if}
  {/if}
 {/if}
{/section}

{convertPrice price=$mini_price|floatval}

 

{convertPrice price=$mini_price|floatval} permet d'afficher le prix avec la devise du client à la place du prix par défaut

 

J'espère que cela aura aidé quelqu'un.

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

  • 4 weeks later...

Bonjour pour l'étape 1:

 

Vous avez copiez le code entier? :

 

public function formatQuantityDiscounts($specificPrices, $price, $taxRate)
{
 foreach ($specificPrices AS $key => &$row)
 {
  $row['quantity'] = &$row['from_quantity'];
  // The price may be directly set
  if ($row['price'] != 0)
  {
   $cur_price = (Product::$_taxCalculationMethod == PS_TAX_EXC ? $row['price'] : $row['price'] * (1 + $taxRate / 100));
		    if ($row['reduction_type'] == 'amount')
	   $cur_price = Product::$_taxCalculationMethod == PS_TAX_INC ? $cur_price - $row['reduction'] : $cur_price - ($row['reduction'] / (1 + $taxRate / 100));
   else
    $cur_price = $cur_price * ( 1  - ($row['reduction']));
   $row['real_value'] = $price - $cur_price;
  }
  else
  {
		    global $cookie;
		    $id_currency = (int)$cookie->id_currency;
   if ($row['reduction_type'] == 'amount')
   {
		  $reduction_amount = $row['reduction'];
		  if (!$row['id_currency'])
			  $reduction_amount = Tools::convertPrice($reduction_amount, $id_currency);
	   $row['real_value'] = Product::$_taxCalculationMethod == PS_TAX_INC ? $reduction_amount : $reduction_amount / (1 + $taxRate / 100);
		    }
   else
		    {
    $row['real_value'] = $row['reduction'] * 100;
		    }
  }
  $row['nextQuantity'] = (isset($specificPrices[$key + 1]) ? (int)($specificPrices[$key + 1]['from_quantity']) : -1);
 }
 return $specificPrices;
}

 

Et ou avez-vous imbriquer ce code dans la classe product.php?

 

Merci d'avance pour votre réponse.

 

Cordialement.

Link to comment
Share on other sites

  • 2 years later...

attention

dans produt-list.tpl

 

ce n'est pas OR

{section name=quantity_discount loop=$quantity_discounts step=-1}
	 {if $quantity_discounts[quantity_discount].price != 0 OR $quantity_discounts[quantity_discount].reduction_type == 'amount'}	

mais AND

{section name=quantity_discount loop=$quantity_discounts step=-1}
	 {if $quantity_discounts[quantity_discount].price != 0 AND $quantity_discounts[quantity_discount].reduction_type == 'amount'}	
Link to comment
Share on other sites

  • 2 years later...

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