Jump to content

Problème tarif par quantité sur déclinaisons dans panier


alex8521

Recommended Posts

Bonjour, 

J'ai un soucis sur un site prestashop avec les tarifs par quantité. 

Je m'explique

J'ai un produit qui existe un plusieurs déclinaisons, par exemple Tshirt(taille s, taille m, taille l). Le prix inittial est de 10 euros pour toutes les déclinaisons. 

Il dispose d'un tarif par quantité

- 10 Tshirt s : 9 euros l'unité. 

- 10 Tshirt m : 9 euros l'unité. 

- 10 Tshirt  : 9 euros l'unité. 

 

Dans mon panier j'ai 10 Tshirt taille S et un T shirt taille m. 

 

Le panier total devrait être de 100 euros hors il est de 99 euros. 

A partir du moment où une des déclinaisons à atteint un tarif par quantité, il s'applique automatiquement à toutes les autres déclinaisons dans le panier.  

 

Ça fait quelques jours que je bug sur ce problème, avez-vous déjà eu le même soucis ? 

Merci beaucoup pour votre aide. 

Link to comment
Share on other sites

En fait quand vous mettez une réduction pour une quantité de 10, ça s'applique sur le produit mais pas sur la déclinaison en elle même, si je prend un exemple comparable avec des remises à partir de 10 déclinaisons dans le panier, il suffit d'avoir 7 unités d'une déclinaison et 3 d'une autre pour avoir la remise, ça a toujours été comme ça sur prestashop :

 

declinaison.thumb.jpg.a4d6b4411618576c0d93f410b15fc154.jpg

Link to comment
Share on other sites

Bonjour, 

Merci pour votre retour. 

J'ai maintenant les bons tarifs dans la colonne des informations produit.

J'ai overridé dans la class Product, la requette sql dans la function getStaticPrice()

 

$sql = 'SELECT SUM(`quantity`)

                FROM `' . _DB_PREFIX_ . 'cart_product`

                WHERE `id_product` = ' . (int) $id_product . ' AND `id_product_attribute` =' . $id_product_attribute . '

                AND `id_cart` = ' . (int) $id_cart ;

Par contre j'ai toujours une erreur de calcul de prix dans la somme total dans le récapitulatif panier. 

Auriez-vous une idée de l' endroit à modifier pour que la somme dans le panier soit bonne ? 

 

Merci. 

 

Capture.JPG

Edited by alex8521 (see edit history)
Link to comment
Share on other sites

Après quelques tests, j'ai réussi à solutionner mon problème. 

Toujours dans l'override de la class Product, j'ai ajouté ces lignes au début de la function priceCalculation

 if($id_product_attribute !== "" && $id_product_attribute > 0 ) {

        $sql = $sql = 'SELECT SUM(`quantity`)

        FROM `' . _DB_PREFIX_ . 'cart_product`

        WHERE `id_product` = ' . (int) $id_product . '

        AND `id_cart` = ' . (int) $id_cart . ' AND `id_product_attribute` = ' . (int) $id_product_attribute;

   $result = Db::getInstance()->getValue($sql, _PS_USE_SQL_SLAVE_);

        if(!empty($result)){

            $real_quantity = $result;

        } 

       }

Je ne sais pas si c'est une bonne façon de faire, mais pour le moment les différents prix et calculs dans le panier sont bons. 

Je reste attentif pour voir si cela ne créée pas d'autres erreurs. 

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