Jump to content

Petit souci avec les bons de réduction


Ann

Recommended Posts

Bonjour à toutes et à tous

Désolée si ce sujet a été déjà évoqué. Je me retrouve avec un petit souci concernant les bons de réduction et le moment ou ils interviennent dans une commande.

1) Est il possible d'attribuer ces bons à une partie du stock et non à l'ensemble ? ( par exemple, seuls les produits non soldés bénéficient d'une remise )

2) Est il possible de déplacer l'instant ou intervient cette remise ? ( exemple , avant les frais de transport et non pas après comme actuellement )

J'utilise la version V1.1

Merci

Ann

Link to comment
Share on other sites

Bonjour,

2) Est il possible de déplacer l'instant ou intervient cette remise ? ( exemple , avant les frais de transport et non pas après comme actuellement )


Tiens c'est étrange car d'après mes différents test il me semblais que les bons de réductions se faisaient sur le total des produits et que les frais de ports se rajoutait ensuite !

Bonne journée,
Link to comment
Share on other sites

Et bien malheureusement cela ne marche pas.
J'offre les frais de port à partir de 100 € d'achat et ça fait pas mal de commande où je perd du fric à cause de ça...
Les clients en ont pour plus de 100 € mais avant la réduction et comme les frais de port ont déjà été calculés, j'en suis de ma poche.
Je vous ai mis en pièce jointe une copie de ma dernière commande à problème...

7570_0nf0mjsJbtWYOhaDyPAX_t

Link to comment
Share on other sites

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

J'ai testé la v1.2 alpha2.
Malheureusement le calcul des frais de port est toujours effectué avant application des bons d'achats ou des codes reduc.
Je trouve cela tres genant, mais peut etre est ce normal.
Qui peut dire si c'est un bug qui sera corrigé, ou une vraie volonté et ca restera ainsi jusqu'a la fin des temps.
Merci

Link to comment
Share on other sites

Bonjour,

C'est en effet le comportement voulu par le logiciel.
Il n'est pas prévu de modifier celui-ci dans un avenir proche.

Il n'est pas non plus possible d'attribuer des bons de réductions à une partie du stock.

Link to comment
Share on other sites

Voici une réponse qui en dit long sur la connaissance du commerce de nos chers concepteurs !!

Ceci signifie donc qu'il est considéré comme "normal " de pouvoir perdre de l'argent à cause d'un non sens de conception !!!

Franchement, on croit rêver !!!

Si un jour vous souhaitez être conseillé en commerce , demandez avant...

J'ai 20 ans d'expérience en matière de commerce et même si je n'y connais rien en info, une gestion rigoureuse des risques devrait être la première tâche d'un concepteur digne de ce nom, au lieu de vouloir fournir un vrai Disneyland de gadgets approximatifs !!!

Link to comment
Share on other sites

Ce que je voulais dire, c'est qu'en effet, même si ce comportement peut paraitre stupide, c'est bien celui qui est voulu par le logiciel.
Cela ne veut pas dire que c'est le meilleur, le plus adapté, ou le mieux pensé.
Non, j'ai juste voulu dire que c'était bien ce qui avait été programmé par le logiciel à la base.

Maintenant, il est clair qu'une réflexion devrait être engagée à ce sujet, afin d'offrir un choix au marchand pour savoir quand doivent être pris en compte les bons de réductions. Je vous suggère de faire une demande dans le feature request.

Link to comment
Share on other sites

Merci pour cette reponse claire.
Malheureusement, ce n'est pas pour moi non plus le fonctionnement qui m'arrange.
Mais si la majorité est pour, je m'incline.

Pour le "feature request" in French

Je souhaiterais pour le futur qu'il soit possible de choisir a quel moment s'applique les bons de réductions, pour calculer les frais de port.
Actuellement le calcul du panier se fait ainsi:

"Total produits" hors "bon de réduction" détermine "les frais de port"
EX:
les frais de ports sont offerts a partir de 50euros
1a- J'achete des produits pour 55 euros , les fdp =0
2a - J'achete des produits pour 45 euros, je paye les fdp
*Si, le gentil commerçant m'offre un bon de reduction de 20%

1b- J'achete des produits pour 55 euros - 20% de reduc = 44 euros. Je devrais payer les fdp, mais non, les fdp =0 puisque le prix avant reduc est >50euros

Il serait donc intéressant que

"Total produits" moins "bon de réduction" détermine "les frais de port" et non le "contraire"

Voila

Pour moi, c'est clair, j'espere que quelqu'un saura l'exprimer en anglais!!!
Merci d'avance.

Link to comment
Share on other sites

Est-ce que ça peut être reformulé comme ça ?

"Baser l'application du franco de port sur le montant avant réduction et non pas après."

Actuellement
Frais de ports (10 €) offerts à partir de 50 euros
Bon de réduction de 20 %.

Montant total achats : 55 €
Montant réduction : 11 €
Total après réduction : 44 € => frais de ports non appliqués.
Total : 44 €

Comportement désiré
Frais de ports offerts à partir de 50 euros
Bon de réduction de 20 %.

Montant total achats : 55 € => frais de ports seront appliqués (10 €)
Montant réduction : 11 €
Total après réduction : 44 €
Frais de port : 10 €
Total : 54 €

Link to comment
Share on other sites

Merci de ton aide,
C'est exactement ca, mais je deplacerais le commentaire vert comme ci dessous.

“Baser l’application du franco de port sur le montant avant réduction et non pas après.”

Actuellement
Frais de ports (10 €) offerts à partir de 50 euros
Bon de réduction de 20 %.

Montant total achats : 55 €
Montant réduction : 11 €
Total après réduction : 44 € => frais de ports non appliqués.
Total : 44 €

Comportement désiré
Frais de ports offerts à partir de 50 euros
Bon de réduction de 20 %.

Montant total achats : 55 €
Montant réduction : 11 €
Total après réduction : 44 € => frais de ports seront appliqués (10 €)
Frais de port : 10 €
Total : 54 €


En esperant que ca puisse convaincre les devellopeurs.
Un grand merci
Link to comment
Share on other sites

Merci de ton aide,
C'est exactement ca, mais je deplacerais le commentaire vert comme ci dessous.


Heu ben non, c'est justement le "55 €" qui doit déterminer que les frais de port seront ajoutés.

Bon je traduis ça et le poste dans le FR.
Link to comment
Share on other sites

  • 2 weeks later...

J'ai réussi à résoudre le problème en modifiant la classe Cart.php comme ci-dessous:

Ligne 621 vous avez le code suivant;

        // 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;
                       }
                   }    


Il faut rajouter à la suite le code suivant:

                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);



Ce qui donne pour finir:

        // 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);



Vous trouverez également ci-joint le fichier www/classes/Cart.php intégral pour la v1.1 ainsi que les captures d'écran montrant le fonctionnement (j'ai juste masqué les produits) pour des frais de ports offerts à partir de 50 euros d'achats.

En espérant avoir été assez clair...

Sam_

NB: j'ai mis à jour le fichier Cart.php après résolution du bug décrit à la suite de ce post...
Le fichier joint est donc à jour et sans bug connu à ce jour ;)

8908_BQtuqvRo0AJZeBwMgItW_t

8909_eDDatpLG7AJcNNvl0TKF_t

Cart.php

Link to comment
Share on other sites

Merci Sam pour cette proposition.
Je suis tres intéressé par cette evolution, je me permet donc d'envoyer cette modif en txt attaché (de ce que j'ai cru comprendre), pour que d'autres puissent tester.
Chez moi, ca ne fonctionne pas. En fait pas de changement par rapport a ce qu'il se passait avant.

Fichier attaché supprimé, il comportait une erreur
Link to comment
Share on other sites

Merci beaucoup pour tes explications.
J'ai un fonctionnement semblable au tien dans les deux cas que tu testes, c'est parfait.

Mais j'ai un probleme avec le 3eme cas.
Par exemple un panier a 60 euros, une reduc de 5 euros = 55 euros les Fdp ne sont plus gratuits...

Link to comment
Share on other sites

J'ai trouvé:
ligne 652, il faut remplacer:

$orderTotal = floatval($orderTotal*($discount->value)/100);



par:

$orderTotal = floatval($orderTotal-($orderTotal*($discount->value)/100));



Voici le nouveau fichier www/classes/Cart.php

Merci à laurent75014 pour les tests et la validation...

Cart.php

Link to comment
Share on other sites

Parfait, merci beaucoup
Bravo pour ta persévérance.

Faut il laisser cette demande d'évolution dans le bug_tracker, est il nécessaire que d'autres développeurs travaillent sur un problème résolu ? Ou peuvent ils simplement le reutiliser?
Je laisse a Zendik, le soin de juger.

Link to comment
Share on other sites

Hello,

Merci pour cette modif, je vais tester.

Par contre j'ai un mal fou à comprendre le problème initial alors qu'hier ça me paraissait clair ('tin c'est Alzheimer ça non ? :/)

Est-ce que vous voulez dire que, après cette modif, un code remise est susceptible de faire redescendre "le montant pour le calcul du franco de port" à un seuil où le client devra finalement les payer ?

Exemple:

- Franco à 50 euros

- Commande à 53 euros (donc franco)

- bon de remise de 5 euros (soit 48, franco perdu :o )

= Le client paye quand même les frais de port ? (auquel cas il a intérêt de jeter son bon de réduc...)

Ca c'est l'exemple "négatif", pour l'autre je vois pas :/
C'est mode boulet aujourd'hui ou faut que j'arrête le café ? :D

Link to comment
Share on other sites

L'objectif est que quelque soit les reduc (en euros ou en %), le client paye les Fdp si le total apres reduc est inferieur au franco. (dans la version actuel de PS ce n'est pas le cas).

Il y a effectivement des cas limites comme celui que tu cites, ou il sera préférable pour le client de ne pas utiliser son bon de reduc, ou plutot de rajouter un article pour bénéficier de la reduc et des fdp gratuits. (Une petite incitation a consommer +)

Link to comment
Share on other sites

Oui le but est bien de faire payer le port si le franco n'est pas atteint, bon de réductions déduits...

Ce qui est le cas sur la grande majorité des sites de e-commerce, puisqu'il y a effectivement un intérêt commercial à ce qu'un client rajoute un produit à son panier pour bénéficier de son bon de réduction + de la gratuité des frais de port...

Ca permet aussi de soigner la marge dégagée par le site... 'fin j'arrête: je vais pas vous faire un cours de marketing...

Cdt,

Sam_

Link to comment
Share on other sites

Merci pour vos réponses.

Oui j'avais bien compris l'aspect commercial, ce que je voulais définir sans avoir besoin d'étudier le code c'est l'aspect technique et les incidences éventuelles.

[HS]
Concernant cet aspect marketing, il est vieillot. Mais chacun voit midi à sa porte et gère sa boutique comme il l'entend :)
Personnellement les aspects marketing incitatifs, les pubs, et autres techniques me font fuir parce que je les détecte dans la plupart des cas (en tant qu'acheteur). J'essaie de ne pas trop transposer pour mes propres techniques de ventes mais j'ai quand même tendance à éviter de prendre les clients pour des buses, je sais qu'ils comprennent la manoeuvre, ça me dérange...
Néanmoins, avec cette modif, on est loin de ce que font certains distributeurs aujourd'hui, comme par exemple proposer des lots de 3 pièces "à prix exceptionnel!" quand les 3 achetés séparémment sont moins coûteux, ça, ça fait plus que me "déranger".

Link to comment
Share on other sites

Si j'ai bien compris, ça veut dire que la modif te conviens... (?) ;)

Concernant les incidences éventuelles, très honnêtement, je n'en vois pas puisqu'il s'agit d'une modif effectuée directement dans la fonction d'une classe qui est appelée au moment du récap du panier... La PrestaTeam pourra certainement valider le code, voir l'intégrer à une prochaine version, si toutefois il s'agit du fonctionnement qu'ils souhaitent avoir pour PrestaShop...

J'ai d'ailleurs certaines idées d'évolutions en ce qui concerne les bons de réductions, avec des options de folie... si ça me chauffe trop, je me jette à l'eau ! Il serait d'ailleurs intéressant de pouvoir effectuer des sondages pour avoir l'avis de la communauté...

Cdt,

Sam_

Link to comment
Share on other sites

Oui techniquement il rempli sont rôle y-a pas de souci, mais avant qu'il me convienne il faut que je teste plusieurs situations pour comprendre la percéption du client, en particulier dans les cas où le "cadeau"(bon de réduction) va lui faire perdre le franco, je ne suis pas en mesure de dire aujourd'hui si c'est "juste" ou pas :o

Link to comment
Share on other sites

J’ai d’ailleurs certaines idées d‘évolutions en ce qui concerne les bons de réductions, avec des options de folie… si ça me chauffe trop, je me jette à l’eau ! Il serait d’ailleurs intéressant de pouvoir effectuer des sondages pour avoir l’avis de la communauté…


Pas cap, jette toi a l'eau.. dis nous a quoi tu penses .
Ok, on vote d'abord.
Link to comment
Share on other sites

Je pense aux possibilités suivantes:
- Ajout automatique des bons d'achats personnels dont le client dispose à son panier
- Création de bon de réductions permanents gagnés par les clients s'ils ont dépensé X euros sur la boutique pendant un laps de temps...

Link to comment
Share on other sites

  • 2 months later...

Bonjour,
Version PS 1.2.0.8 online
Suite aux modification sur classes/cart.php qui n'est pas le même que la version 1.1, ça ne fonctionne pas. J'aurais besoin d'un oeil avisé... Où est l'erreur ?


// 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)
{
$total_cart = 0;
$categories = Discount::getCategories($discount->id);
foreach($products AS $product)
{
if(count($categories))
if (Product::idIsOnCategoryId($product['id_product'], $categories))
$total_cart += $product['total_wt'];
}
if ($total_cart >= $discount->minimal)
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
$orderTotal = $this->getOrderTotal(true, 7); (Si je laisse cette ligne (répétition d'une ligne du dessus, j'ai une page d'erreur sur cette ligne !)



Alors, une idée ???

Link to comment
Share on other sites

  • 2 months later...

Bonsoir,

Hummm... je ne suis pas un pro du marketing ni des usages en bons de réduction, mais en tant qu'acheteur (et futur vendeur) il me semble qu'appliquer la réduction AVANT d'ajouter les frais de ports est plus logique, les frais de ports étant en toute logique appliqué en fonction du total d'achats et non du total facture, réduction ou pas. Les frais de ports sont une "taxe" à part.

D'ailleurs si on applique les frais de port en fonction du poids, la réduction n'a aucun effet sur les frais de ports, le panier à toujours le même poids. (je ne sais pas si je me fait bien comprendre... )

En tout cas j'imaginais ce "problème" résolu dans les versions > 1.2.0 Qu'en est-il ?

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,
et merci pour cette modif.

Appliquée à une version 1.2.5.0, cela fonctionne parfaitement !

Pour faire suite au post de monvidedressing, ne pas oublier le test avant la dernière ligne :

 

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

Link to comment
Share on other sites

  • 8 months later...
  • 7 months later...

Bonjour,

J'ai ce même problème très embêtant qui me fait perdre pas mal d'argent, je suis en version 1.3.1.1 et j'ai essayé cet modif mais ca ne fonctionne pas.. Est ce que quelqu'un pourrait m aider svp?

Merci d'avance.

Gaelle

Link to comment
Share on other sites

  • 7 months later...
  • 2 years 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...