THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonjour,

Je viens vous exposer plusieurs "dysfonctionnements" que j'ai repéré dans la v 2.2.0.

Prenons un produit coûtant 40.83 € H.T. Si j'ajoute ce produit dans mon panier en étant déconnecté, son prix dans celui sera bien 40.83€. Le premier problème vient lorsque je me connecte ensuite avec un compte client bénéficiant d'une remise permanente (disons 10%). Le prix du produit dans le panier ne change pas alors qu'il devrait être à 36.75€, pourtant je remarque que si j'ajoute un produit en étant connecté, sa valeur dans le panier sera bien de 36.75€ et qu'il repassera bien à son prix non remisé (40.83€) lors de la déconnexion. Je pense donc à un bug et je vous en fait part.

Secondo, j'ai vu que le prix du produit changeait dans le backoffice selon la remise du client connecté, cela voudrait dire que la session du client est active dans le BO ? N'est-ce pas problématique ?

J'illustre mes propos :

Déconnecter dans le FO :
1s7x.png

Connecter avec un compte client bénéficiant de remise dans le FO :

g8rq.png

Offline


Je pense que tu peux lever une issue pour chacun des problèmes : https://github.com/thelia/thelia/issues


OpenStudio Toulouse

Offline


C'est fait !

Sinon une petite idée pour actualisé le prix de mes produits dans le panier à la connexion ?

Offline


Oui.

Il te faut intervenir dans Action/Cart.php, et remplacer :

                // A customer is logged in.
                if (null === $cart->getCustomerId()) {
                    // The cart created by the customer when it was not yet logged in
                    // is assigned to it after login.
                    $cart->setCustomerId($customer->getId())->save();
                } elseif ($cart->getCustomerId() != $customer->getId()) {
                    // The cart does not belongs to the current customer
                    // -> clone it to create a new cart.
                    $cart = $this->duplicateCart(
                        $cartRestoreEvent->getDispatcher(),
                        $cart,
                        CustomerQuery::create()->findPk($customer->getId())
                    );
                }

par :

                    // clone it to create a new cart.
                    $cart = $this->duplicateCart(
                        $cartRestoreEvent->getDispatcher(),
                        $cart,
                        CustomerQuery::create()->findPk($customer->getId())
                    );

Je vais faire une PR sur ce point.


OpenStudio Toulouse

Offline


Parfait, ça fonctionne ! Merci beaucoup roadster, tu viens d'enjoliver ma journée !

Bonne journée à toi

Offline


Ce n'est qu'une réparation provisoire, je viens de faire une PR sur le sujet : https://github.com/thelia/thelia/pull/1801


OpenStudio Toulouse