Salamandre Posted June 13, 2012 Share Posted June 13, 2012 (edited) Bonjour, je cherche à afficher le prix le plus petit de Quantity Discount à la place du prix "de base" dans la page product-list.tpl de mon template. Si quelqu'un à une idée... Merci par avance et bonne fin d'après midi à tous. Edited June 17, 2012 by Salamandre (see edit history) Link to comment Share on other sites More sharing options...
federico8 Posted June 13, 2012 Share Posted June 13, 2012 Je voudrais savoir ça aussi... Link to comment Share on other sites More sharing options...
Salamandre Posted June 16, 2012 Author Share Posted June 16, 2012 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 More sharing options...
Salamandre Posted June 17, 2012 Author Share Posted June 17, 2012 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 More sharing options...
luciep Posted July 18, 2012 Share Posted July 18, 2012 (edited) 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 July 18, 2012 by luciep (see edit history) Link to comment Share on other sites More sharing options...
EtapDesign Posted August 14, 2012 Share Posted August 14, 2012 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 More sharing options...
natachaC Posted April 14, 2015 Share Posted April 14, 2015 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 More sharing options...
Sebastien MAS Posted November 17, 2017 Share Posted November 17, 2017 Bonjour, je cherche à faire la même modification sur une version 1.6, car la solution ci-dessus n'est pas compatible Vous avez une idée pour que je puisse faire cela avec un overwrite de la classe Product !! Merci Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now