Jump to content

Exception sur les frais de port gratuit


MaMouT

Recommended Posts

Bonjour à tous,
j'ai une question qui me vient d'un client et je me tourne vers vous car je ne trouve pas de solution simple.
En gros, il veux faire des frais de port gratuit à partir d'un certain montant mais il dispose de certains produits considérés comme encombrant par son transporteur et qui lui facture un supplément non négligeable (et du coup pas rentable).
La question est: est-il possible de désactiver les frais de port gratuit sur certains produits ?
Une chose important : il est en version 1.3.3.0 et pour l'instant, on ne change pas le système!
D'avance merci pour vos réponses.
MaMouT

Link to comment
Share on other sites

  • 1 month later...
  • 10 months later...

Bonjour,

C'est un manque de base dans PS, il est impossible de conditionner les frais de port par produit ou même de définir un frais de port fixe.

 

Votre solution est d'ajouter un champs dans la fiche produit et de conditionner les frais de port gratuit si cette condition (définie par le nouveau champs) et true ou false dans Cart.php.

 

 

Ckarone

Link to comment
Share on other sites

ok, mais ne peut on pas se servir du champ "frais de port supplémentaires" dans les fiches produit du BO pour que ces derniers s'appliquent en permanence.

de plus c'est contradictoire avec ce que vous dites, on peu depuis la v1.4 mettre des frais de port supplémentaires pour un seul produit, le seul pb c'est que en cas de dépassement du seuil de fp offerts ces frais de port supplémentaires s'annulent!!

Link to comment
Share on other sites

ok, mais ne peut on pas se servir du champ "frais de port supplémentaires" dans les fiches produit du BO pour que ces derniers s'appliquent en permanence.

de plus c'est contradictoire avec ce que vous dites, on peu depuis la v1.4 mettre des frais de port supplémentaires pour un seul produit, le seul pb c'est que en cas de dépassement du seuil de fp offerts ces frais de port supplémentaires s'annulent!!

 

À bien y penser, même si cela fonctionnait on aurait toujours un problème car si c'est un frais de port que l'on met pour 1 produit, si le client en prend 2, les frais de port vont se calculer en double ce qui n'est pas correct (dans mon cas). Il faudrait que le système calcul les frais de port à partir du poids du produit tel qu'on l'a défini au départ.

Link to comment
Share on other sites

Avoir des frais de port fixe à partir du champs "frais de port supplémentaires" c'est possible mais pour cela il faut modifier/overrider la class Cart.php et modifier le comportement de la méthode getTotalWeight() .

 

Il faut exclure les produits qui on un frais de port fixe dans la requête sql suivante:

public function getTotalWeight()

{
 if (!isset(self::$_totalWeight[$this->id]))
 {
  $result = Db::getInstance()->getRow('
  SELECT SUM((p.`weight` + pa.`weight`) * cp.`quantity`) as nb
  FROM `'._DB_PREFIX_.'cart_product` cp
  LEFT JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product`
  LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON cp.`id_product_attribute` = pa.`id_product_attribute`
  WHERE (cp.`id_product_attribute` IS NOT NULL AND cp.`id_product_attribute` != 0)
  AND (p.`additional_shipping_cost` IS NULL OR p.`additional_shipping_cost` = 0)
  AND cp.`id_cart` = '.(int)($this->id));
  $result2 = Db::getInstance()->getRow('
  SELECT SUM(p.`weight` * cp.`quantity`) as nb
  FROM `'._DB_PREFIX_.'cart_product` cp
  LEFT JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product`
  WHERE (cp.`id_product_attribute` IS NULL OR cp.`id_product_attribute` = 0)
  AND (p.`additional_shipping_cost` IS NULL OR p.`additional_shipping_cost` = 0)
  AND cp.`id_cart` = '.(int)($this->id));
  self::$_totalWeight[$this->id] = round((float)($result['nb']) + (float)($result2['nb']), 3);
 }
 return self::$_totalWeight[$this->id];
}

 

J'ai pas testé mais cela doit fonctionner.

 

@cockpitinferno il est pas possible de base de définir un frais de port fixe par produit mais seulement d'ajouter un supplément.

 

@France Vos frais de port ne sont pas conditionnés par la quantité de produit ?

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

Bonjour ckarone

 

Mes frais de port se calcule sur le poids du produit donc avec ta méthode avec des frais fixes le coût des frais de port va se calculer en double.

Voici un exemple: 1 produit qui pèse 2 lbs = $11.99 + taxes de frais de transport. Si le client en a 2 les frais de port deviennent $13.99 + taxes donc seulement $2 de plus que si le client avait 1 seul contenant.

 

Avec les frais fixes le client payerait $11.99 x 2 ce qui n'est pas correct.

 

 

Merci

Link to comment
Share on other sites

  • 2 weeks later...

merci ckarone pour cette piste

 

je viens d'essayer en local mais ca ne fonctionne pas complètement bien.

il me laisse bien des frais de port même si je dépasse 100€ mais ce sont des frais de port qui ne correspondent à rien.

 

dans l'exemple, j'ai un produit de 12kg avec des FP de 19.13€ et un supplément de 5.98€ donc total 25.11€

si j'ajoute un autre article de 2 ou 3kg et pour que le total soit supérieur à 100€ (seuil de gratuité des fp) il me laisse des fp de 15.55€ ce qui ne correspond à rien.

 

je voudrais n'avoir que les 5.98€ de supplément.

est ce possible.

Link to comment
Share on other sites

Je pensais que ca se jouait plus vers là:

 

  // Additional Shipping Cost per product
       foreach($products AS $product)
           $shipping_cost += $product['additional_shipping_cost'] * $product['cart_quantity'];

       $shipping_cost = Tools::convertPrice($shipping_cost, Currency::getCurrencyInstance((int)($this->id_currency)));

 

mais je ne vois pas quoi ajouter pour que ca s'applique en permanence.

Link to comment
Share on other sites

  • 3 weeks later...
  • 7 months later...

Bonsoir,

 

Moi aussi j'ai ce problème et je trouve ça galérant depuis des mois et je ne trouve pas de solutions. j'ai même acheté un module qui je pensais m'apporterais une solution en créant des exceptions (produits sans livraison gratuite) mais je me suis trompée ce ne sont pas les exceptions que l'on peut indiquer mais les produits auquels on veut y associer la livraison gratuite. Bref quasiment tout le catalogue... ha la la ça traine.

 

Prestashop si vous passez par là, merci d'avance de nous proposer une solution !

Link to comment
Share on other sites

en 1.4 j'ai fait une bidouille avec le module stiff carrier categ. en fait j'ai créé un transporteur spécial pour certains produits.

 

avec 1.5 maintenant c'est en natif donc tu peux créer facilement un transporteur spécifique qui s'appliquera à ces produits uniquement et qui ne sera jamais gratuit.

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