Prestashop : Ajouter un client à un groupe automatiqument !

Suite aux précédent billets, nous sommes les heureux possesseurs d’un prestashop tuné, capable de cacher certaines pages et de désactiver certains produits aux utilisateurs n’ayant pas le niveau suffisant.

Ne reste plus qu’a modifier automatiquement les groupes des utilisateurs, suite à l’achat d’un certain produit, disons un ticket d’entrée.

Premiere étape, modifier nos produits pour définir lesquels attribue un nouveau groupe au client, et quel groupe.

BDD :

Créons un champ « nlvl »  int(3) dans la table ps_products, juste apres le champ xlvl du precedent tuto.

Modification du produit :

Reprenons le precedent tuto, en changeant chaque occurrence de « xlvl » par « nlvl ».
N’oublions pas de changer les descriptions, « Niveau de sécurité minimum »  devient « Nouveau groupe client (0 pour désactiver) »

A ce stade, nous devrions pouvoir affecter notre parametres « nouveau groupe » à nos produits via le back office.

Rendons maintenant le mécanisme actif !

Attribution du nouveau groupe

Le code suivant pourrait s’intégrer à plusieurs endroits du processus de commande.  Nous, nous allons choisir de squatter le processus orderHistory.  Quelque soit le canal de paiement, on peut se fier la bonne execution de ce code, pour n’importe quel statut de commande confirmant le paiement (ps_order_status => is_paid)

Editons classes/order/OrderHistory.php et ajoutons ceci juste apres  »        if ($new_os->paid == 1) { »

$customer = new Customer((int)$order->id_customer);
            foreach ($order->getProductsDetail() as $product) {
                $proct = new Product($product['product_id']);
                if($customer->id_default_group < $proct->nlvl){
                    Db::getInstance()->execute('UPDATE `'._DB_PREFIX_."customer` SET id_default_group='".(int)$proct->nlvl."' WHERE `id_customer` = '".(int)$order->id_customer."'");
                    Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_."customer_group` (`id_group`, `id_customer`) VALUES ('".(int)$proct->nlvl."','".(int)$order->id_customer."')");
                    break;
                }
            }

Citons Joey Starr pour finir : « Big up a moi-même ! »

 

Laisser un commentaire