Lenoiry Posted March 26 Share Posted March 26 (edited) Bonjour à tous, Je travaille sur un projet sous PrestaShop 8.2, et mon client souhaite ajouter des frais de port spécifiques par déclinaison d’un produit. Problème : Actuellement, PrestaShop permet d’ajouter des frais de port supplémentaires par produit via le champ additional_shipping_cost, mais cette option n’existe pas au niveau des déclinaisons. Objectif : Je cherche la meilleure solution pour ajouter un montant supplémentaire au total des frais de port en fonction de la déclinaison choisie par le client. Pistes envisagées : Créer un champ personnalisé dans les déclinaison pour stocker un montant additionnel. Modifier le calcul des frais de port pour inclure ce montant lors de l’ajout au panier. Utiliser un hook ou une surcharge propre . Questions : Existe-t-il déjà une méthode native ou un hook permettant d’ajouter dynamiquement un montant aux frais de livraison en fonction d’une déclinaison ? Avez-vous des recommandations sur la meilleure façon d’implémenter cela proprement via un module ? Merci d’avance pour vos conseils ! Edited April 4 by Lenoiry (see edit history) Link to comment Share on other sites More sharing options...
Lenoiry Posted April 4 Author Share Posted April 4 Bonjour, je n’ai pas encore trouvé de solution. Quelqu’un aurait une piste ? 😊 Link to comment Share on other sites More sharing options...
Lenoiry Posted April 4 Author Share Posted April 4 Bonjour à tous, J'ai trouvé une solution ! Je voulais la partager pour ajouter des frais de port spécifiques par déclinaison de produit sous PrestaShop 8.2. Voici comment j'ai résolu le problème : 1. Création d'un champ personnalisé dans les déclinaisons J'ai créé un champ personnalisé additional_shipping_cost dans la table product_attribute pour stocker le montant supplémentaire de frais de port pour chaque déclinaison. Cela permet de lier des frais de port spécifiques à chaque combinaison de produit. 2. Modification de l'override de la classe Cart.php Ensuite, j'ai créé un override de la classe Cart.php pour ajouter dynamiquement ce montant aux frais de port lors de l'ajout au panier. Dans l'override de Cart.php, j'ai modifié la méthode getProducts() pour récupérer le champ additional_shipping_cost pour chaque déclinaison de produit dans le panier. class Cart extends CartCore { public function getProducts($refresh = false, $id_product = false, $id_country = null, $fullInfos = true, bool $keepOrderPrices = false) { $products = parent::getProducts($refresh, $id_product, $id_country, $fullInfos, $keepOrderPrices); foreach ($products as &$product) { if (!empty($product['id_product_attribute'])) { $sql = 'SELECT additional_shipping_cost FROM ' . _DB_PREFIX_ . 'product_attribute WHERE id_product_attribute = ' . (int) $product['id_product_attribute']; $product['additional_shipping_cost'] = (float) Db::getInstance()->getValue($sql); } } return $products; } } Conclusion : Cette approche m'a permis d'intégrer efficacement des frais de port supplémentaires par déclinaison, tout en respectant l'architecture de PrestaShop. J'espère que cela pourra aider ceux qui rencontrent le même besoin. N'hésitez pas si vous avez des suggestions pour améliorer la solution ! 😁 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