Jump to content

Assigner un produit à la catégorie "Accueil"


Recommended Posts

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 :D

 

Link to comment
Share on other sites

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

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 :D )

 

Sur ce, bonne journée à toi Olivier. 

 

 

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