Jump to content

Appliquer un prix dégressif sur l'ensemble d'un panier


eroux

Recommended Posts

Bonjour,

Je construis actuellement une boutique liée au monde de l'étiquettage.
J'aurais souhaité appliquer un prix dégressif liée à la quantité de plusieurs produits. C'est donc une remise sur le panier. Par exemple, le client achète 30 étiquettes vertes sans logo, 20 étiquettes ronde et 10 étiquettes plastiques... soit 60 étiquettes, il a donc le droit à 6 € d'économies .....

Je sais qu'il y a beaucoup de demande pour considérer les déclinaisons comme un même produit mais je vais au delà et je voudrais appliquer une remise en fonction du volume global de commande. Est-ce possible ? Existe-t-il un module ? même payant ?

Merci d'avance,
Emmanuelle Roux

Link to comment
Share on other sites

  • 2 years later...

60 > 6€ donc 10 % du montant total : pourquoi ne pas utiliser les bons de réduction et choisir 10% sur la totalité de commande.

 

J'y ai pensé mais cette solution n'est pas automatique: c'est au client de trouver le bon de réduction (à moins de forcer l'affichage du bon dans le panier mais même dans ce cas les clients ne savent pas l'utiliser car ce n'est pas intuitif)...

Je m'étonne que les développeurs n'aient pas ajouté cette possibilité dans la gestion des prix des produits?

Link to comment
Share on other sites

C'est possile d'utiliser les bons de reductions, et d'appliquer les reductions automatiquement sur la totalité de commande.

 

Je propose mes services gratuitement si votre demande est toujours d'actualité !

 

Merci pour votre réponse, votre proposition ne se refuse pas :-)

Je suis intéressé de connaitre l'astuce pour que les bons de réduction s’appliquent automatiquement.

Link to comment
Share on other sites

Dans le dossier ontrollers vous modifier le fichier ParentOrderControlle

Remplacer :

 

  if ($this->nbProducts)
 {
  if (Tools::isSubmit('submitAddDiscount') AND Tools::getValue('discount_name'))
  {
   $discountName = Tools::getValue('discount_name');
   if (!Validate::isDiscountName($discountName))
 $this->errors[] = Tools::displayError('Voucher name invalid.');
   else
   {
 $discount = new Discount((int)(Discount::getIdByName($discountName)));
 if (Validate::isLoadedObject($discount))
 {
  if ($tmpError = self::$cart->checkDiscountValidity($discount, self::$cart->getDiscounts(), self::$cart->getOrderTotal(), self::$cart->getProducts(), true))
   $this->errors[] = $tmpError;
 }
 else
  $this->errors[] = Tools::displayError('Voucher name invalid.');
 if (!sizeof($this->errors))
 {
  self::$cart->addDiscount((int)($discount->id));
  Tools::redirect('order-opc.php');
 }
   }
   self::$smarty->assign(array(
 'errors' => $this->errors,
 'discount_name' => Tools::safeOutput($discountName)
   ));
  }
  elseif (isset($_GET['deleteDiscount']) AND Validate::isUnsignedId($_GET['deleteDiscount']))
  {
   self::$cart->deleteDiscount((int)($_GET['deleteDiscount']));
   Tools::redirect('order-opc.php');
  }
  /* Is there only virtual product in cart */
  if ($isVirtualCart = self::$cart->isVirtualCart())
   $this->_setNoCarrier();
 }

 

par :

   	 if ($this->nbProducts)
       {
           if ((int)$this->step == 0)
           {
               if(self::$cart->getOrderTotal() >=200 AND self::$cart->getOrderTotal()<300)
               {
                   $discountName = 'L4FB931J';//L4FB931J correspand au nom de la reduction a appliquer
               }
               elseif(self::$cart->getOrderTotal() >=300 AND self::$cart->getOrderTotal()<400)
               {
                   $discountName = '1QBRDHPK';
               }
               elseif(self::$cart->getOrderTotal() >=400 AND self::$cart->getOrderTotal()<500)
               {
                   $discountName = 'SMPHW0LB';
               }
               elseif(self::$cart->getOrderTotal() >=500 AND self::$cart->getOrderTotal()<600)
               {
                   $discountName = 'Z4HY5FOD';
               }
               elseif(self::$cart->getOrderTotal() >=600 AND self::$cart->getOrderTotal()<700)
               {
                   $discountName = 'EYCCVGZE';
               }
               elseif(self::$cart->getOrderTotal() >=700)
               {
                   $discountName = 'OHBB0CIT';
               }
                   if (!Validate::isDiscountName($discountName))
                       $this->errors[] = Tools::displayError('Voucher name invalid.');
                   else
                   {
                       $discount = new Discount((int)(Discount::getIdByName($discountName)));
                       if (Validate::isLoadedObject($discount))
                       {
                           if ($tmpError = self::$cart->checkDiscountValidity($discount, self::$cart->getDiscounts(), self::$cart->getOrderTotal(), self::$cart->getProducts(), true))
                               $this->errors[] = $tmpError;
                       }
                       else
                           $this->errors[] = Tools::displayError('Voucher name invalid.');
                       if (!sizeof($this->errors))
                       {
                           self::$cart->addDiscount((int)($discount->id));
                           Tools::redirect('order-opc.php');
                       }
                   }
                   self::$smarty->assign(array(
                       'errors' => $this->errors,
                       'discount_name' => Tools::safeOutput($discountName)
                   ));
           }
           if (isset($_GET['deleteDiscount']) AND Validate::isUnsignedId($_GET['deleteDiscount']))
           {
               self::$cart->deleteDiscount((int)($_GET['deleteDiscount']));
               Tools::redirect('order-opc.php');
           }

           /* Is there only virtual product in cart */
           if ($isVirtualCart = self::$cart->isVirtualCart())
               $this->_setNoCarrier();
       }

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