prestasafe Posted May 21, 2015 Share Posted May 21, 2015 (edited) Bonjour à tous, j'ai développé un module pour un de mes clients qui permet de faire des réduction en fonctions de tranches de prix. Ex: à partir de 300€ HT 10% sur le panier à partir de 600€ HT 15% sur le panier à partir de 800€ HT 20% sur le panier bref le module marche très tous les module de paiement prennent le bon prix sauf paypal. Je cherche à appliquer la reduction sur le prix final car il n'est pas prix en compte... Quelqu'un sait quelle est la ligne précise. j'ai fait beaucoup de chose mais rien n'est pris en compte. Merci d'avance ! Edited May 21, 2015 by guigui23 (see edit history) Link to comment Share on other sites More sharing options...
prestasafe Posted May 21, 2015 Author Share Posted May 21, 2015 J'approche un peu, ça se passe dans /modules/paypal/express_checkout/process.php le soucis est que dès que j'applique ma reduction j'ai un message d'erreur me disant que les montant ne correspondent pas. La je bloque. Link to comment Share on other sites More sharing options...
prestasafe Posted May 21, 2015 Author Share Posted May 21, 2015 (edited) J'ai trouvé un moyen. J'ai un peu triché mais ça fonctionne.Pour ma part j'ai modifier la method setDiscountsList dans le /module/paypal/express_checkout/process.php voici le détail du code si ça peu aider des personnes. private function setDiscountsList(&$fields, &$index, &$total) { $discounts = (_PS_VERSION_ < '1.5') ? $this->context->cart->getDiscounts() : $this->context->cart->getCartRules(); // override web-batier.com $tranche = $this->context->cart->getReductionTranche(); if($tranche > 0){ $discounts[]['id_discount'] = 10000; $discounts[]['name'] = 'Reduction panier'; $discounts[]['value_real'] = (float)$tranche; } // end override if (count($discounts) > 0) foreach ($discounts as $discount) { $fields['L_PAYMENTREQUEST_0_NUMBER'.++$index] = $discount['id_discount']; $fields['L_PAYMENTREQUEST_0_NAME'.$index] = $discount['name']; if (isset($discount['description']) && !empty($discount['description'])) $fields['L_PAYMENTREQUEST_0_DESC'.$index] = Tools::substr(strip_tags($discount['description']), 0, 50).'...'; /* It is a discount so we store a negative value */ $fields['L_PAYMENTREQUEST_0_AMT'.$index] = - 1 * Tools::ps_round($discount['value_real'], $this->decimals); $fields['L_PAYMENTREQUEST_0_QTY'.$index] = 1; $total = Tools::ps_round($total + $fields['L_PAYMENTREQUEST_0_AMT'.$index], $this->decimals); } } et du coup ça m'ajoute ça sous forme de bon de réduction. Au moins ça marche ! PS: Il faut aussi modifier la method getTotalPaid() pour tomber sur le même montant sinon ça marche pas non plus Edited May 22, 2015 by guigui23 (see edit history) Link to comment Share on other sites More sharing options...
seb776 Posted May 21, 2015 Share Posted May 21, 2015 Hello, Si je me fie a ta description de ce que fait le module, tu peux faire tout ça juste avec des règles panier bien paramétrées. Pas besoin de module ! Link to comment Share on other sites More sharing options...
prestasafe Posted May 21, 2015 Author Share Posted May 21, 2015 Salut, Le module est très très particulier, j'ai bien étudié la chose et je n'ai pas trouvé d'autre moyen. Voici un aperçu de ce que le client souhaite dans la fiche produit. Les règle de panier se cumulent dans prestashop et impossible de les paramètrer comme voulait le client. Link to comment Share on other sites More sharing options...
seb776 Posted May 21, 2015 Share Posted May 21, 2015 ok, c'était au cas la chose t'avais échappé et pour les futurs lecteurs du sujet Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now