SMJK Posted April 14, 2016 Share Posted April 14, 2016 Bonjour, Je travaille sur le site d'une boutique de vente de matériel informatique, et l'une des demandes de mon responsable était d'afficher un tarif différent en fonction du groupe auquel appartient le client. Pour cela j'ai surcharger la méthode priceCalculation() de la classe Product.php, en me servant de l'id_group dans un switch pour attribuer a une variable $tarif, le nom de la table dans laquelle la méthode doit récupérer le prix. Voici le morceau de code en question: switch ($id_group){ case 1: $tarif = "tarif_3"; break; case 7: $tarif = "tarif_6"; break; case 9: $tarif = "tarif_1"; break; case 5: $tarif = "tarif_4"; break; case 6: $tarif = "tarif_5"; break; case 10 : $tarif = "tarif_7"; break; } $cache_id_2 = $id_product.'-'.$id_shop; if (!isset(self::$_pricesLevel2[$cache_id_2])) { $sql = new DbQuery(); $sql->select('`'.$tarif.'`, product_shop.`ecotax`'); $sql->from('product', 'p'); $sql->innerJoin('product_shop', 'product_shop', '(product_shop.id_product=p.id_product AND product_shop.id_shop = '.(int)$id_shop.')'); $sql->where('p.`id_product` = '.(int)$id_product); if (Combination::isFeatureActive()) { $sql->select('IFNULL(product_attribute_shop.id_product_attribute,0) id_product_attribute, product_attribute_shop.`price` AS attribute_price, product_attribute_shop.default_on'); $sql->leftJoin('product_attribute_shop', 'product_attribute_shop', '(product_attribute_shop.id_product = p.id_product AND product_attribute_shop.id_shop = '.(int)$id_shop.')'); } else { $sql->select('0 as id_product_attribute'); } Je récupère bien le prix des produits en fonction du groupe du client, seulement voila, lorsque je veux ajouter un produit à la catégorie "Accueil" du site, il me retourne cette erreur: "Notice à la ligne 85 du fichier ..\..\..\prestashop\override\classes\Product.php [8] Undefined variable: tarif" J'y ai passé ma matinée à chercher comment résoudre ce problème mais je tombe à court de solutions? et je me tourne vers vous pour un peu d'aide s'il vous plaît. En vous remerciant par avance Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted April 14, 2016 Share Posted April 14, 2016 Oulala !!!! Mais pourquoi réinventer la roue ? 1. tu créer un groupe (dans client / groupe) 2. Tu vas dans ta fiche produit coté admin, tu créer un prix spécifique et tu l'attribut à ton groupe fraîchement créé. Si tu veux que ce groupe est une remise permanente sur l'ensemble des produits, tu peux le définir directement lorsque tu créé le groupe. Et t'as pas besoin de faire de code:) Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted April 14, 2016 Share Posted April 14, 2016 et au passage je penses que tu as cette erreur parce que ton client n'a aucun groupe assigné et donc d'après ton code aucun tarif n'existe. Il faut que tu rajoute un "defaut" dans ton switch ! Link to comment Share on other sites More sharing options...
SMJK Posted April 14, 2016 Author Share Posted April 14, 2016 Justement, il n'y a pas de réduction fixe attribuée à un groupe ... Dans un même groupe, un produit peut avoir une réduction de 15% et un autre de 50 ... C'est le responsable qui fixe lui même chaque tarifs de groupe pour un même article dans une base Access, données ensuite récupérer par un logiciel tiers qui les envoient dans la base du presta. C'est un système qu'il a mis en place sur son site avec prestashop 1.3.1.1. C'est bancal, mais ça fonctionne ... Quand à ta solution, elle a résolue mon problème, et je t'en remercie grandement ! (note pour plus tard: toujours penser au Default dans un switch case ) Sur ce, bonne journée à toi Olivier. Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted April 15, 2016 Share Posted April 15, 2016 J'ai bien fait de revenir posté mon dernier message alors Content d'avoir pu t'aider ! si tu veux me rendre la pareille j'ai besoin de l'avis de tous le monde ici: https://www.prestashop.com/forums/topic/520671-jai-besoin-de-votre-avis-pour-le-logo-du-blog/ 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