benscasi Posted March 9, 2010 Share Posted March 9, 2010 Bonjour,j'ai créé une fonction dans la classe Product qui calcule les prix dégressifs d'un produit dans un panier et qui TIENT COMPTE DES DECLINAISONS. LE problème est que je dois appeler cette fonction a chaque fois que le prix d'un produit est affiché donc de nombreuses fois ! La solution serait de créer un module qui remplace la fonction de base par ma fonction mais je ne sais pas comment faire.Merci de me dire si c'est possible et comment faire, je donnerai tout le code une fois le module créé Link to comment Share on other sites More sharing options...
vins Posted March 10, 2010 Share Posted March 10, 2010 Heu comment tu fais pour tenir compte de l'impact du prix dégressif sur une déclinaison alors qu'il n'existe rien dans le BO pour renseigner ce genre d'infos ? Sinon, je vois pas bien comment tu va faire pour calculer ton prix à toutes les étapes de l'achat d'un produit (affichage, panier, facture). Un bout de code ?A plus. Link to comment Share on other sites More sharing options...
benscasi Posted March 11, 2010 Author Share Posted March 11, 2010 Bonjour,j'ai créé une fonction dans la classe Product.php : /** * retourne le prix d'un produit ds un panier * * @param $id_cart, $id_product, $id_product_attribute, $product_quantity, $usetax * @return calcule et retourne le prix degressif s'il existe sinon prix de base */ public function getPriceDegr($id_cart, $id_product, $id_product_attribute, $product_quantity, $usetax=true) { $price = floatval(self::getPriceStatic(intval($id_product), $usetax, intval($id_product_attribute), 6, NULL, false, true, $product_quantity)); $compteur_produits = Db::getInstance()->getrow(' SELECT sum(quantity) as qt FROM `'._DB_PREFIX_.'cart_product` WHERE `id_cart` = '.intval($id_cart).' and `id_product` = '.intval($id_product)); if (intval($id_product) > 1 AND ($qtyD = QuantityDiscount::getDiscountFromQuantity(intval($id_product), intval($compteur_produits['qt'])))) return $price -= QuantityDiscount::getValue($price, $qtyD->id_discount_type, $qtyD->value); else return $price; } Cette fonction calcule le prix d'un produit dans un panier : s'il existe un prix degressif il le retourne sinon il retourne le prix "normal".J'ai modifié ensuite les fichiers qui participent au calcul du total du panier : Order.php, Cart.php, Discount.php, AdminOrders.phpLe soucis est le panier ne se rechargeant pas a chaque ajout de produit, j'ai uniquement le total qui est calculé avec les prix degressifs, je n'ai pas le prix des produits qui se mettent a jour.Je souhaiterais pouvoir créer un module qui modifie les prix mais sans toucher au coeur de prestashop. Link to comment Share on other sites More sharing options...
baal Posted May 18, 2010 Share Posted May 18, 2010 bonjour, j ai un souci embettant avec les prix degressifsje dois realiser une reduction automatique du type:je veux que tout article qui coute 6 euros vendu par deux donne une remise (dans tout mon site, dans differentes rubriques) 6 euros l unité X2 = 10 euros est ce possible?si oui commentmerci beaucoup de votre aide Link to comment Share on other sites More sharing options...
olea Posted May 18, 2010 Share Posted May 18, 2010 @jerometastDans ton exemple, pour 3 produits, tu souhaites faire 3*5€ et non 2*5€+1x6€ ? Link to comment Share on other sites More sharing options...
baal Posted May 19, 2010 Share Posted May 19, 2010 je recapitule :il faut que dans tout mon site, si un client choisi un bijoux à 6 euros et qu’il en prends un de plus(n importe ou dans le site) à 6 euros il ai immediatement une remise de 2 euros6+6=12 – 2euros de remise immediate = 10 euroset sil en prends 4 etc…comment realiser cela est ce posible?merci Link to comment Share on other sites More sharing options...
baal Posted June 1, 2010 Share Posted June 1, 2010 toujours personne qui ai la solution?... Link to comment Share on other sites More sharing options...
jktoque Posted December 1, 2010 Share Posted December 1, 2010 Domage que personne n'ai trouvé une solution à la question, car je suis également très intéressé. Link to comment Share on other sites More sharing options...
kenaki Posted January 24, 2011 Share Posted January 24, 2011 Oui!! Je relance le sujet qui est très intéressant! Link to comment Share on other sites More sharing options...
yvesbj Posted February 1, 2011 Share Posted February 1, 2011 Effectivement, très intéressant, ce serait chouette si une personne avait la solution ou un module à proposer Link to comment Share on other sites More sharing options...
kosor Posted February 8, 2011 Share Posted February 8, 2011 Bonjour,je me permet de relancer le sujet de départ qui était la recherche d'une solution pour que les prix dégressif sur un produit prennent en compte les déclinaison sur ce même produit.car sauf erreur de ma part actuellement sur prestashop pour une remise sur 20 tee shirt XX achetéssi un client achète 10 tee shirt XX taille L+ 10 tee shirt XX taille XLIl n'a pas la remise pour 20 tee shirt XXSi quelqu'un a une solution...merci d'avance. Link to comment Share on other sites More sharing options...
Samantha66 Posted February 28, 2011 Share Posted February 28, 2011 Bonjour,Merci pour ta fonction getPriceDegr() !Elle m'a beaucoup inspirer pour ma fonction de prix dégressif par poids.Je n'ai pas encore réussit à en faire un module, mais dès que j'ai quelque chose je le poste ici Bonne journée. Link to comment Share on other sites More sharing options...
Damemarianne Posted July 12, 2011 Share Posted July 12, 2011 Bonjour, Même problème que vous je voulais des prix dégressifs qui s'appliquent quelque soit la déclinaison dans le panier.Je ne sais pas si on pourrait coller un module là au milieu, ma modif touche directement le cœur donc faites attention.Dans le fichier classes/Product.php on va modifier la fonction de calcul de prix "getPriceStatic" ligne 1360 environIl s'agit de modifier le test qui vérifie si on a droit à la réduction de quantité :Juste après if (intval($id_cart)) // Quantity discount { $totalQuantity = intval(Db::getInstance()->getValue(' SELECT SUM(`quantity`) FROM `'._DB_PREFIX_.'cart_product` WHERE `id_product` = '.intval($id_product).' AND `id_cart` = '.intval($id_cart)) ) + intval($quantity); } Ajouter : $totalQuantity2 = intval(Db::getInstance()->getValue(' SELECT SUM(`quantity`) FROM `'._DB_PREFIX_.'cart_product` WHERE `id_product` = '.intval($id_product).' AND `id_cart` = '.intval($id_cart)) ); (Cela ressemble au bout de code au dessus mais sans l'ajout de la quantité du produit en cours, je pense que cela serait peut être plus optimisé en ne faisant qu'une requête et en affectant deux variable, mais ne sachant pas trop à quoi correspond le test au dessus je me suis abstenue)Ensuite changer : if ($quantity > 1 AND ($qtyD = QuantityDiscount::getDiscountFromQuantity($id_product, $quantity))) Par : if ($totalQuantity2 > 1 AND ($qtyD = QuantityDiscount::getDiscountFromQuantity($id_product, $totalQuantity2))) Link to comment Share on other sites More sharing options...
romda Posted July 13, 2011 Share Posted July 13, 2011 Merci beaucoup Damemarianne pour ta solution. Elle fonctionne parfaitement ici sur PS 1.3.7.0. Link to comment Share on other sites More sharing options...
Salamandre Posted May 24, 2012 Share Posted May 24, 2012 Quelqu'un à une solution pour la version 1.4 de presta ?? Link to comment Share on other sites More sharing options...
Salamandre Posted May 25, 2012 Share Posted May 25, 2012 Autant pour moi y'a pas de soucis avec la version 1.4... Link to comment Share on other sites More sharing options...
mylesk42 Posted September 19, 2013 Share Posted September 19, 2013 Bonjour, Quelqu'un a t-il une solution pour PS 1550 (de mon côté, pas testé le code ci-dessus sur PS 1550 mais je doute ..).? Merci Link to comment Share on other sites More sharing options...
mylesk42 Posted September 20, 2013 Share Posted September 20, 2013 Bonjour, Quelqu'un a t-il testé su PS1550 ? Merci Link to comment Share on other sites More sharing options...
mylesk42 Posted September 20, 2013 Share Posted September 20, 2013 En fait cela existe bien en standard dans PS 1550 y compris la gestion par déclinaison. 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