Jump to content

[RESOLU]Ajouter des frais de port supplémentaires par déclinaison Prestashop 8.2


Recommended Posts

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 by Lenoiry (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

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

  • Lenoiry changed the title to [RESOLU]Ajouter des frais de port supplémentaires par déclinaison Prestashop 8.2

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