Jump to content

Affichage prix unitaire selon nombre d’unités par emballage (SPCB)


Recommended Posts

Bonjour,

Sur notre boutique prestashop, nous permettons uniquement l'achat de nos produits par carton de x unités. Nous affichons ainsi le prix par carton.
Je suis à la recherche d'un bout de code qui permettrait de diviser le prix affiché (par unité, par carton de 6, de 12..) par le nombre d'unité contenu dans ce carton. On renseignerait une case attribut "Sous par combien" (SPCB) de la déclinaison du produit créée à cet effet par ce nombre unitaire (1,6,12) . La dernière étape consisterait à afficher le résultat précédé de la mention "prix unitaire" sous le prix du produit avec une formule du type (prix ffiché HT ou TTC/SPCB)
Je n'ai pas su trouver de solution pour faire autrement...Quelqu'un aurait la solution?

Merci

Link to comment
Share on other sites

Ah ba moi qui cherché sur le forum un post sur les prix unitaires lol, je peux pas tomber sur plus récent ...

Natsu moi aussi je serais interessé car je ne vend quasiment par lot et c'est bien que le client voye combien il a gagné sur le prix unitaire si il prend un lot de 5, 10 ou 20 par exemple ^^

Link to comment
Share on other sites

Bonjour

Je m'insère également car c'est un peu plus compliqué que cela voir mon post déposé ici :

http://www.prestashop.com/forums/viewthread/33298/

Il y a énormément de gens qui en ont besoin car la loi l'impose, c'est pourquoi j'ai mis ce post dans French laws.
Par obligation de la PS team c'est en anglais, donc si certains veulent des détails en Français n'hésitez pas.
J'espère que la PS Team mettra un module à disposition car c'est une réglementation pas une option. De plus la DGCCRF scrute les sites internet, normal c'est la crise donc on se retourne vers les entreprises qui affichent une augmentation, donc les commerçants du Net, en plus c'est facile pas besoin de se déplacer pour contrôler, donc nous avons un risque si l'on vends des produits au poids ou autre mesure sans développer le prix au kg ou à l'unité etc..... Attention je ne critique pas le travail de la DGCCRF car s'ils n'étaient pas là, tous les margoulins de France et de Navarre feraient n'importe quoi.

Link to comment
Share on other sites

@ Jean-Bruno

Demande à un non programmeur comme moi de mettre un truc comme ça en place et là c'est moi qui vais trouver cela compliqué ;-)

PS : il me semble d'ailleurs et sauf erreur de ma part, que sur ton site il n'y ai pas mention non plus des prix au litre par exemple. A moins que ce ne soit obligatoire que dans l'alimentaire.

Link to comment
Share on other sites

;-) là l'idée serait de juste changer un code d'affichage et creer un attribut qu'on appelerait "SPCB" (tiré du jargon logistique) et on divise le prix affiché par cet attribut dans sa déclinaison. C'est la manière la plus simple de faire. J'ai piqué l'idée dans un post quand je voulais affiché du HT là ou c'était pas possible : du coup il suffisait d'ajouter

/1.196

dans le tpl et ça marchait parfaitement. Bricolage efficace. Ici l'intérêt c'est que ça peut marcher aussi bien pour du TTC, du HT, des euros, des yens…
Mais Natsu a certainement une methode plus académique ;-)

PS : sur mon site j'attend un module comme ça depuis des mois entiers. et j'avais lu par ailleurs qu'il suffisait de mettre la contenance et le prix mais je peux me tromper.

Link to comment
Share on other sites

@Jean Bruno

J'ai questionné la team à ce sujet et c'est eux qui m'ont demandé de créer le premier post dans French laws, on verra bien si c'est plus efficace, en espérant ne pas avoir à attendre des mois.

J'ai bien pensé au système du poids et de faire un calcul dessus mais il est utilisé pour le poids du transport donc avec l'emballage. Retour case départ pour moi.

Link to comment
Share on other sites

Un exemple dans product.tpl

{/if}
{if $priceDisplay == 1}
{convertPrice price=$product->getPrice(false, $smarty.const.NULL, 2)}
                       {l s='tax excl.'}
               {/if}



Te donne le prix hors taxe

si je rajoute /10 après l'accolade la formule, cela te divise ton prix par 10

{if $priceDisplay == 1}
{convertPrice price=$product->getPrice(false, $smarty.const.NULL, 2)/10}
                       {l s='tax excl.'}
               {/if}



Tu peux essayer, ça marche parfaitement bien. Donc si il y avait un moyen de récupérer mon attribut à la place de ce 10, ça marcherait je pense.

Link to comment
Share on other sites

@jean-Bruno

Je ne pense pas car avant de retrouver l'attribut il faut gérer le groupe, puis l'attribut, puis le poids, mais comme déjà précisé cela pose problème car le champ poids est géré pour les frais de port, il faudrait donc un champ spécifique ou l'on peut préciser l'unité de mesure.

Pourquoi on ne pourrai pas créer simplement un champ ou l'on saisirait nos unités de mesure à chaque saisie d'un produit (donc dans catalogues/infos) et ensuite simplement récupérer ce chiffre par une variable.

Link to comment
Share on other sites

@Jean-Bruno

Je propose une piste également, je te rassure je ne doit pas être plus doué que toi en programmation.

C'est juste que vous parlez d'un conditionnement, exemple par paquet de 12, mais vous ne vendez pas tous les produits en paquet de 12, il se peut également que ce soit pas 15, 20, 30 etc.... donc il vous faut bien saisir cela quelque part ???

Ou alors j'ai pas compris le post (si si ça m'arrive)

Les KGS viennent tout simplement parce que je vends au kilo ;-)

Link to comment
Share on other sites

;-)
Justement, le seul endroit ou on peut créer ce "SPCB" en relation avec chaque produit c'est bien dans les attributs. Il faut par contre créer une déclinaison "conditionnement" : pack de 10, de 30, de 300 peu importe. et ce serait dans cette déclinaison que j'irais bien piocher cet attribut.
Tu me suis ?
Si tu fais ça sur chaque produit on ne pourra pas, à mon avis, faire des déclinaisons, ou on ne pourra pas repiquer dedans.

Pour des kilos tu pourrais pour chaque produit créer un attribut "kg" et ensuite créer la formule pour le prix au kilo.

exemple : paquet de 2 kg 5 à 20 euros > attribut KG > 2,5
formule (prix du paquet /2,5) et il t'affichera 8 euros/kg (il faudra aussi gérer les virgules)

ou plus précis et pour pas s'embêter un attribut "grammes"

exemple : paquet de 2 kg 5 à 20 euros > attribut "grammes"> 2500
formule (prix du paquet /2500*1000)

Je peut pas trouver plus simple et cela permet de tout garder dans ton TPL et donc d'être valable après chaque mise à jour de ta boutique. Et qui plus est tu peux faire du gramme, millilitre, unité, il suffit de faire une correspondance par rapport à ton unité si je ne me trompe pas

Link to comment
Share on other sites

Justement, le seul endroit ou on peut créer ce “SPCB” en relation avec chaque produit c’est bien dans les attributs. Il faut par contre créer une déclinaison “conditionnement” : pack de 10, de 30, de 300 peu importe. et ce serait dans cette déclinaison que j’irais bien piocher cet attribut.
Tu me suis ?


Maintenant OUI

Par contre pour le .tpl, si tu récupère une variable, en cas de mise à jour, ce sera écrasé, non ???
Link to comment
Share on other sites

Ton exemple me renvoi a celui de la page 1 c'est ça ? Bon je ressayerais taleur la je suis en pleine ajout de produits et déclinaisons :). Mais bon bizarre car je l'ai fait taleur a 12h j'ai bien /10 que ça soit avant la paranthèse ou après mais rien y fait ...

Link to comment
Share on other sites

    {if $priceDisplay == 1}
{convertPrice price=$product->getPrice(false, $smarty.const.NULL, 2)}
                       {l s='tax excl.'}
               {/if}



Ligne 200 dans /prestashop/product.tpl ... On est bien d'accord ? Car j'ai beau essayer toutes les modifications possibles sur cette ligne rien est pris en compte ...

Link to comment
Share on other sites

Alors par contre je suis bien dans les bonnes lignes de code car j'arrive a enveler le prix TTC ou HT en supprimant les lignes :).

Donc oui pour ce souci de prix unitaire, je me suis penché dessus et je pense que le plus "facile" c'est de créer une case prix unitaire sur le BO dans l'onglet Attribut et Déclinaisons, et dans le générateur de déclinaison ... Du coup on aurait la possibilité de pouvoir rajouter notre prix unitaire pour chaque lot crée (10pièces = 1.74€ .... 20 pièces = 0.98€)

Il me faudrait un coup de main pour faire le module ce weekend j'en ai jamais réalisé malheureusement donc je risque de pataugé un peu au début et j'ai un pote développeur qui doit passé aussi (moi malheureusement mes compétences en phpobjet sont assez limitées :/)

Link to comment
Share on other sites

Euuuh je reviens sur ta ligne de code, effectivement ça y es ça marche mais j'ai un souci car le prix reste affiché 2seconde (même pas) et le prix normal (soit le prix HT sans être divisé par 10) reviens juste après ....

EDIT (car sinon je fais un monologue lol) : J'ai créer un nouvelle ligne qui me permet d'afficher une deuxième fois le prix HT mais cette fois-ci divisé par 10. Donc niquel pour ton code Jean Bruno, par contre j'aimerais savoir ou changer le HT et mettre autre chose a la place comme par exemple prix en lot de 10 :)

Link to comment
Share on other sites

Moi oui mais ca devient compliqué pour moi
Moi je cherche a garder le prix au cartons mais a côté je voudrais afficher "soit XXX€ au m2"
Cela veut dire qu il faudrait créer un module pour que dans l'admin on puisse rentrer les différents conditionnements de cartons et la ca deviens complexe.

Link to comment
Share on other sites

Bah il me semble que c'est un peu comme nous tous ... Moi c'est des vêtements je veux affiché le prix unitaire selon le lot que le client choisi (10/20/50 et bien évidement vous avez compris que ce prix unitaire est dégressif). Faut attendre maintenant que Natsu s'y penche dessus :)

Link to comment
Share on other sites

Oui c'est quasiment la même chose moi le prix est dégressif car si tu me prend 10tshirts ou 100tshirts le prix a l'unité sera pas le même forcement ;)

Moi j'en suis la grâce a Jean-Bruno j'ai pu bidouiller le bloc mais quand je change de déclinaison ça ne change pas le prix unitaire malheureusement :/


Screen

Link to comment
Share on other sites

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

Hello,

Je ne suis pas mort mais j'ai beaucoup de boulot pour mon book de fin d'année (création d'un DVD interactif + book papier) qui me prennent tout mon temps libre du coup j'ai plus trop le temps de toucher à prestashop :(

Ceci dit, je vais essayer de faire rapidement

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour à tous,

J'ai un problème assez similaire.

Il s'agit d'une boutique de vin, les bouteilles sont vendues par caisse/carton de 6 ou 12 selon les vins.

Je suis actuellement obligé de générer des produits "carton de 6" ou des déclinaisons (le résultat est le même).

Je voudrais pouvoir afficher le produit à l'unité avec son PU car :


- c'est la base de comparaison sur le net


- c'est l'unité de mesure du stock

et que lorsque l'on commande, le chiffre soit un multiple du conditionnement minimum.
Il faudrait idéalement que ce conditionnement minimum soit une variable dans la fiche produit.

Des idées ?

Merci d'avance,

Paul

Link to comment
Share on other sites

  • 1 month later...

Un petit Up

La loi Chatel n'a pas changé... Toujours pas d'idée pour le Prix unitaire ?

Un calcul peut-il être fait simplement... (enfin... un calcul...) sur la fiche produit qui permette d'afficher x €/ u vente?

Link to comment
Share on other sites

Moi je ne sais toujours pas ou récupérer la variable de l'attribut une fois créé

Mais sinon

Les opérations mathématiques peuvent être directement appliquées aux variables.
Exemple 3.7. Exemples d'opérations mathématiques
{$foo+1}
{$foo*$bar}
{* quelques exemples plus compliqués *}
{$foo->bar-$bar[1]*$baz->foo->bar()-3*7}
{if ($foo+$bar.test%$baz*134232+10+$b+10)}
{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}
{assign var="foo" value="`$foo+$bar`"}

{math}
{math} autorise les designers de templates à effectuer des opérations dans le template.
• Toute valeur numérique peut être utilisée dans une opération, et le résultat sera affiché à la place des balises "equation".
• Les variables utilisées dans l'opération sont passées en tant que paramètre, et peuvent être des variables de templates ou
des valeurs statiques.
• +, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans et tan sont tous des
opérateurs valides. Voir la documentation PHP pour plus d'informations sur ces fonctions mathématiques [http://php.net/
eval].
• Si vous spécifiez l'attribut assign, la sortie de la fonction {math} sera assignée à la variable donnée plutôt que d'être
directement affichée.
91
Note technique: {math} est une fonction coûteuse en terme de performances, du fait qu'elle utilise la fonction
PHP eval() [http:/ / php.net/ eval]. Effectuer les calculs dans votre code PHP est beaucoup plus efficient, donc,
chaque fois que possible, effectuez vos calculs directement dans PHP et assignez le résultat au template. Evitez
coût que coût les appels répétitifs à la fonction {math}, comme on pourait le faire une une boucle {section}.
Nom attribut Type Requis Défaut Description
equation chaîne de caractères Oui n/a L'opération à éxécuter
format chaîne de caractères Non n/a Le format du résultat
(sprintf)
var numeric Oui n/a Les variables de
l'opération
assign chaîne de caractères Non n/a Variable de template
dans laquelle la sortie
sera assignée
[var ...] numeric Oui n/a Valeurs des variables
de l'opération
Exemple 8.24. {math}
Exemple a :
{* $height=4, $width=5 *}
{math equation="x + y" x=$height y=$width}
L'exemple ci-dessus affichera :
9
Exemple b :
{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}
{math equation="height * width / division"
height=$row_height
width=$row_width
division=#col_div#}
L'exemple ci-dessus affichera :
100
Exemple c :
{* vous pouvez utiliser des parenthèses *}
{math equation="(( x + y ) / z )" x=2 y=10 z=2}
L'exemple ci-dessus affichera :
6
Fonctions utilisateur
92Fonctions utilisateur

Exemple d :
{* vous pouvez définir un format sprintf pour l'affichage *}
{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
L'exemple ci-dessus affichera :
9.44
Fonctions utilisateur

Link to comment
Share on other sites

  • 1 month 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...