THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 [résolu] livraisons

(14-10-2015 11:46:25)


Bonjour,

J'ai plusieurs type de produits,
tous les produits devraient pouvoir être retirer sur place, certains (id rubrique=1.2.3.4) uniquement doivent être envoyés en lettre suivie, d'autres (id rubrique=7) en colissimo.
Si il y a au au moins produit dans la category 7 et d'autres, forcer la livraison a colissimo.

J'ai commencé a regarder pour mettre une condition ifloop dans order-delivery-module-list,
mais je sèche un peu, je ne sais pas si c'est la bonne méthode.

Last edited by vz777 (19-10-2015 12:53:33)

Offline

#2 Re: [résolu] livraisons

(14-10-2015 12:58:14)


La meilleure solution serait d'intervenir dans le code de tes modules de livraison, pour adapter la méthode isValid() à tes conditions particulières de livraison.

Mais modifier order-delivery-module-list, c'est possible aussi. Mais pas avec {ifloop}. Je suppose que tu dois utiliser une boucle cart pour vérifier les catégories de produit présentes dans le panier, et mémoriser dans une variable si tu proposes lettre suivie ou pas.

Tu utilisera ensuite cette variable dans la boucle delivery, pour afficher ou non lettre suivie.


OpenStudio Toulouse

Offline

#3 Re: [résolu] livraisons

(14-10-2015 21:03:24)


Dans isValid, j'ai donc mis :

            if ($category_id==1)

mais ça me met une erreur de namespace,
je suis un boulet ...

Offline

#4 Re: [résolu] livraisons

(14-10-2015 21:18:55)


Il sort d'ou ce $category_id ?


OpenStudio Toulouse

Offline

#5 Re: [résolu] livraisons

(14-10-2015 21:50:23)


il doit falloir que je mette quelque chose comme use Thelia/core/lib/Thelia/Action/cart.php,
ou du moins que je dise clairement au module ou aller chercher la category.

Dans ma tête, c'est simple : si id category du produit ajouté au panier est égale à x, module tu fonctionnes, sinon tu fonctionnes pas,
mais pour traduire ça ...

Offline

#6 Re: [résolu] livraisons

(15-10-2015 19:53:45)


Bon après avoir fouillé de pas mal de cotés ...

J'ai fini par trouver quelque chose me semblant bien mais qui marche pas :

 $categoryId = $this->getRequest()->get('categoryId'); 

Offline

#7 Re: [résolu] livraisons

(19-10-2015 09:16:57)


Bon j'ai trouvé la modélisation de la base de données thelia,
si ça peut aider quelqu'un : https://github.com/thelia/model/blob/ma … _model.png

Mais bon j'ai toujours pas trouvé une solution,
pour mon problème ..

Si quelqu'un peut m'aider, plz

Offline

#8 Re: [résolu] livraisons

(19-10-2015 09:48:20)


Le modèle de BD ne va pas vraiment t'aider.

Dans la méthode isValid() de ton module lettre suivie, tu dois énumérer les produits du panier, et vérifier si un des produits appartient à la rubrique ID 7. Si c'est le cas, tu retourne false. Un truc du genre :

            $cart = $this->getRequest()->getSession()->getSessionCart($this->getDispatcher());

            $cartItems = $cart->getCartItems();

            foreach ($cartItems as $cartItem) {
                if ($cartItem->getProduct()->getDefaultCategoryId() === 7) {
                   return false;
                }
            }

Je n'ai pas testé, mais tu vois l'idée ?


OpenStudio Toulouse

Offline

#9 Re: [résolu] livraisons

(19-10-2015 10:21:06)


merci beaucoup,
j'y vois un peu plus clair du coup !

pour l'heure,
je me rends compte que quoi je fasse
que je mette des pauvres essais de moi
ou le code que tu viens de me donner,

j'ai toujours une erreur de namespace : Parse error: syntax error, unexpected 'namespace' (T_NAMESPACE) in ../local/modules/Lettresuivie/Lettresuivie.php on line 1

je vais essayer de trouver une solution

Offline

#10 Re: [résolu] livraisons

(19-10-2015 10:49:11)


Tu dois avoir un caractère parasite quelque part.


OpenStudio Toulouse

Offline

#11 Re: [résolu] livraisons

(19-10-2015 12:53:11)


youpi ça marche,

merci roadster