Jump to content

frais de port pas pris en compte avec bon reduction?


Recommended Posts

Bonjour,

j'ai mis frais de port offert a partir de 99€ de commande! ok

j'ai créé un bon de réduction à tous mes clients avec un pourcentage! ok

quand il y a une commande sur un produit avec un prix de base en dessous de 99€ puis la réduction du bon j'ai bien les frais de port qui sont pris en compte ok

Le souci est que quand il y à une commande sur un prix de base au dessus 99€ puis la réduction qui emmène le prix final en dessous de 99€ les frais de port ne sont pas comptés ?

En fait PS garde en mémoir que la commande est au dessus de 99€ donc pas de frais de port, mais ne tiens pas compte de la réduction qui fait passer la commande en dessous de 99€ et donc pas de frais de port pour le client?

C'est ennuyeux , pouvez-vous m'aider svp?

merci
eric

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...
  • 2 weeks later...
  • 2 weeks later...

Bonjour,
Voilà ce qu'il faut faire:
Dans le fichier Classes\Cart.php, vers la ligne 651 vous avez : // Checking discounts in cart
remplacez le code par :

        // Checking discounts in cart
       $products = $this->getProducts();
       $discounts = $this->getDiscounts(true);
       if ($discounts)
           foreach ($discounts AS $id_discount)
           {
               $discount = new Discount(intval($id_discount['id_discount']));
               if (!Validate::isLoadedObject($discount))
                   die(Tools::displayError());
               if ($discount->id_discount_type == 3) //Free Shipping
                   foreach($products AS $product)
                   {
                       $oProduct = new Product($product['id_product']);
                       $categories = Discount::getCategories($discount->id);
                       if(count($categories))
                       {
                           foreach($categories AS $category)
                               if($oProduct->isOnCategoryId($category))
                                   return 0;
                       }
                   }
               elseif ($discount->id_discount_type == 2) //Discount on order (amount)
               {
                   // Order total without fees
                   $orderTotal = $this->getOrderTotal(true, 7);
                   $orderTotal = $orderTotal-$discount->value;
               }
               elseif ($discount->id_discount_type == 1) //Discount on order (%)
               {
                   // Order total without fees
                   $orderTotal = $this->getOrderTotal(true, 7);
                   $orderTotal = floatval($orderTotal-($orderTotal*($discount->value)/100));
               }
           }

       // Order total without fees
       if (!isset($orderTotal))
           $orderTotal = $this->getOrderTotal(true, 7);



Les frais de port seront calculés après application du bon de réduction.

Link to comment
Share on other sites

Bonjour Zaye,

Merci beaucoup! Je t'adore!

Tu viens de me régler 2 problèmes en même temps!

Le bon de réduction se calcule sans les taxes (pour moi au Québec c'est parfait) en plus du transport qui se calcule maintenant sur le montant après réduction donc plus de transport gratuit si la commande est moins que $69 une fois la réduction appliquée.


Je te remercie un million de fois!

Link to comment
Share on other sites

  • 1 month later...

Bonjour Zaye

Ça règle le problème dans la boutique dans le résumé de la facture mais pas sur la facture pdf.
Et même si cela semble une réduction sans les taxes (comme je l'espère toujours) ce n'est pas le cas.

Capture d'écran du résumé (réduction $8.97)

Capture d'écran de la facture pdf (réduction $9.32)

Donc les fameuses taxes se calculent toujours sur le bon de réduction et ça je trouve ça tout à fait ridicule.

Est-il possible de faire afficher les chiffres comme sur le résumé et faire en sorte que les taxes ne soient pas calculées sur le bon de réduction?


Merci de ton aide

30665_r6hruOXdSgXdWTZuMOoc_t

30666_a3zK78SYfXD7vi0TYHVt_t

Link to comment
Share on other sites

Bonjour France,

Le code que j'ai rapporté plus haut n'est pas de moi. Je l'ai mis en ordre à partir de solutions données sur d'autres threads.
Je n'avais pas remarqué ce problème de taxe car pour l'instant je vais travailler en HT.
Je ferai quelques essais dès que j'aurai un peu de temps et ne manquerai pas de te dire si je trouve quelque-chose.

Link to comment
Share on other sites

  • 1 year later...
  • 1 month later...

Bonjour,

 

Fichier classes/cart.php

 

function getOrderShippingCost($id_carrier = NULL, $useTax = true)
{
 global $defaultCountry;
 if ($this->isVirtualCart())
  return 0;
 $products = $this->getProducts();
 $discounts = $this->getDiscounts(true);
 if ($discounts)
  foreach ($discounts AS $id_discount)
if ($id_discount['id_discount_type'] == 3)
{
 if ($id_discount['minimal'] > 0)
 {
  $total_cart = 0;
  $categories = Discount::getCategories((int)($id_discount['id_discount']));
  if (sizeof($categories))
   foreach($products AS $product)
	if (Product::idIsOnCategoryId((int)($product['id_product']), $categories))
	 $total_cart += $product['total_wt'];
  if ($total_cart >= $id_discount['minimal'])
   return 0;
 }
 else
  return 0;
}
 $order_total = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);

 

Modif sur la version 1.4.6.2

 

J'ai copié le debut de la fonction ou il faut effectuer la modification BOTH_WITHOUT_SHIPPING au lieu de ONLY_PRODUCTS_WITHOUT_SHIPPING

 

Je garanti rien par contre :)

Edited by jcandres (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
  • 2 months later...

Bonjour,

 

Fichier classes/cart.php

 

function getOrderShippingCost($id_carrier = NULL, $useTax = true)
{
 global $defaultCountry;
 if ($this->isVirtualCart())
  return 0;
 $products = $this->getProducts();
 $discounts = $this->getDiscounts(true);
 if ($discounts)
  foreach ($discounts AS $id_discount)
if ($id_discount['id_discount_type'] == 3)
{
 if ($id_discount['minimal'] > 0)
 {
  $total_cart = 0;
  $categories = Discount::getCategories((int)($id_discount['id_discount']));
  if (sizeof($categories))
   foreach($products AS $product)
	if (Product::idIsOnCategoryId((int)($product['id_product']), $categories))
	 $total_cart += $product['total_wt'];
  if ($total_cart >= $id_discount['minimal'])
   return 0;
 }
 else
  return 0;
}
 $order_total = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);

 

Modif sur la version 1.4.6.2

 

J'ai copié le debut de la fonction ou il faut effectuer la modification BOTH_WITHOUT_SHIPPING au lieu de ONLY_PRODUCTS_WITHOUT_SHIPPING

 

 

Ca fonctionne nickel avec une PS 1.4.6.2 et sur PS 1.4.3

Merci

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

bonjour

augmenter le prix pour la livraison n'a pas d'interet, ce serait valable si mes frais de port étaient egal a 10€

 

pour ce qui est de selectionner un montant en euro au lieu d'un %  ca n'y change rien. le client garde les benefice des frais de ports gratuit même s'il redescent sous le seuil qui declenche la gratuitée.

 

cdlt

Link to comment
Share on other sites

  • 3 months later...
  • 1 year later...

Bonjour,

 

Fichier classes/cart.php

 

function getOrderShippingCost($id_carrier = NULL, $useTax = true)
{
  global $defaultCountry;
  if ($this->isVirtualCart())
   return 0;
  $products = $this->getProducts();
  $discounts = $this->getDiscounts(true);
  if ($discounts)
   foreach ($discounts AS $id_discount)
	if ($id_discount['id_discount_type'] == 3)
	{
	 if ($id_discount['minimal'] > 0)
	 {
	  $total_cart = 0;
	  $categories = Discount::getCategories((int)($id_discount['id_discount']));
	  if (sizeof($categories))
	   foreach($products AS $product)
		if (Product::idIsOnCategoryId((int)($product['id_product']), $categories))
		 $total_cart += $product['total_wt'];
	  if ($total_cart >= $id_discount['minimal'])
	   return 0;
	 }
	 else
	  return 0;
	}
  $order_total = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);
Modif sur la version 1.4.6.2

 

J'ai copié le debut de la fonction ou il faut effectuer la modification BOTH_WITHOUT_SHIPPING au lieu de ONLY_PRODUCTS_WITHOUT_SHIPPING

 

Je garanti rien par contre smile.png

 

 

Ça fonctionne aussi sur 1.6.0.14, dans classes > cart.php line 2642  remplacer ONLY_PRODUCTS_WITHOUT_SHIPPING par BOTH_WITHOUT_SHIPPING

Link to comment
Share on other sites

  • 6 months later...
  • 3 months later...

bonjour

je viens d'acheter le module et je l'ai utilisé pour la première fois. je me rends compte, que le code de réduction créé lors d'un remboursement ne peut pas servir directement a payer les frais de port également. je suis obligé d'aller modifier l'otion à refund pour que cela soit possible et c'est la ou cela me gêne.

j'aimerais que lorsque je crée un code réduction lors d'un avoir il soit automatiquement en mode refund afin d'inclure les frais de ports. Comment faire ?

est il possible de mettre l'option refund par defaut ou programmer le module pour qu'elle soit sélectionné automatiquement pour les code issu d'un avoir.

 

cdlt

Link to comment
Share on other sites

C'est tout à fait possible.

Vous devez éditer le fichier /controllers/AdminOrdersController.php et passez la valeur à 2 (refund et partiel autorisé) ou 3 (refund en une seule fois) à la ligne 777 (env.)

$cart_rule->partial_use = 1;

devient donc, par exemple:

$cart_rule->partial_use = 2;

Notez ce changement car si vous faites une mise à jour de votre Prestashop ces modifications seront perdues.

Link to comment
Share on other sites

  • 2 weeks later...

bonjour

encore une question, avec votre module est ce que le fonctionnement de la remise en pourcentage reste inchangé ? c'est à dire qu'il ne s'applique qu'au produit et non au frais de port ou est elle appliqué également aux frais de port ce que nous ne voulons pas.

 

cdlt

Link to comment
Share on other sites

Mon module permet les bons de réductions en TTC (équivalent argent) sur l'ensemble de la commande. Les réductions en % ne sont pas possibles si vous choisissez "Type Remboursement".

Vos autres règles en % conservent le fonctionnement d'origine, c'est à dire uniquement sur les produits (Hors Frais de port)

Link to comment
Share on other sites

  • 1 year later...

Bonjour a tous

 

Je relance ce post car suite a une mise a jour de 1.6.1.0 vers PRESTA 1.6.1.12 je rencontre ce problème de frais de port

frais de port pas pris en compte avec bon réduction ...

Port gratuit à partir de 49€

Montant commande  50€ = ok port gratuit

après Remise 1ere commande  5%  = 47,50€

 

Le port reste  gratuit alors qu'il devrait être facturé puisque la cde passe sous les 49€   !

 

  ..... :(

 

Merci pour votre aide

 

 

Link to comment
Share on other sites

  • 1 year later...

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