Jump to content

[Patch] Afficher les prix au kilo ou au litre (MAJ -> v3)


Recommended Posts

Joli site ton épicerie basque !
... Et sacré module en perspective, mais la page que tu linkes ne montre pas clairement si le module résoud notre problème de prix unitaire :
actuellement Prestashop 1.4 ne gère pas proprement ce PU dès qu'il existe des déclinaisons : le PU augmente systématiquement avec la quantité vu que Prestashop ne tient pas compte pour le calculer de l'augmentation de la quantité, seulement de celle du prix TTC ...

Ou alors j'ai loupé un truc dans le back-office ? ça m'étonne qu'on ne soit pas plus nombreux à avoir ce problème : toutes les boutiques faisant de l'alimentaire sont concernées, mine de rien !

Link to comment
Share on other sites

Merci Rom !

Pour le probleme des declinaisons c'est effectivement un bon casse-tete !
Sinon vous pouvez voir du coté d'une edition spéciale de Presta German Edition ou figure la notion de prix au kilo.

http://www.homepage-community.de/ecommerce_eigener_onlineshop/prestashop_baseprice_modul_grundpreis-t599.0.html
http://www.prestashop-deutschland.de/prestashop-modul-baseprice-grundpreis-nach-pangv/490.html

Link to comment
Share on other sites

Merci Rom !

Pour le probleme des declinaisons c'est effectivement un bon casse-tete !
Sinon vous pouvez voir du coté d'une edition spéciale de Presta German Edition ou figure la notion de prix au kilo.

http://www.homepage-community.de/ecommerce_eigener_onlineshop/prestashop_baseprice_modul_grundpreis-t599.0.html
http://www.prestashop-deutschland.de/prestashop-modul-baseprice-grundpreis-nach-pangv/490.html


Ben justement , ça me semble pas si compliqué que ça en fait , compte tenu qu'on connais toujours le prix final , et qu'il suffit d'avoir la logique inverse , je m'explique :

J'ai traîté ce type de demande deux ou trois fois au moins.
Chaque fois la première idée du client était de pouvoir avoir un prix unitaire en guise de prix et trouver une méthode 'savante' disons pour que le prix final corresponde au prix d'un lot, par exemple , ou d'un conditionnement.

Le truc c'est que presta ne permet pas d'avoir des quantité décimales, et c'est pas un mal je dirais ...

Comme ce qui est obligatoire, c'est l'affichage du prix unitaire, et qu'au final le web marchand achete et vends presque toujours des lots indivisibles, l'approche est donc de partir du prix de chaque lot ou article , de traiter les déclinaisons et prix dégressifs comme bon nous semble, et d'avoir simplement une correspondance quantitative , du rapport unitaire, et l'unité souhaitée (pour affichage)

Exemple : j'ai un lot de lattes de parquet de xxx m² que je vends 100€
Un module me permet de dire que le prix d'un lot sur ce produit est un prix au m²
Un autre champ me permet d'indiquer qu'une unité de lot correspond à xxx m²

En front office , la partie rendu du module a tous les éléments en main pour calculer et afficher, si et seulement si les champs existent pour ce produits , une phrase du type : 'Soit xx,xx € au m²' , et ce quelque soit le prix final ou la déclinaison , puisque c'est justement de ce prix final que l'on repart pour le calcul.

La règlementation est respectée , et la gestion des lots ou des conditionnements , tarifs degressifs , etc ,en est facilitée, puisqu'on conserve toutes les fonctionnalités native .

Côté achat , on achète des quantités indivisibles , sans aucune gestion particulière.

La méthode s'adapte à toute sorte d'unité , puisqu'on utilise dans tous les cas un coeficient unique pour un produit.

Au final on a un module somme toute plutôt simple à coder.

Il reste simplement à expliquer au web marchand en quoi l'approche est plus simple et plus avantageuse . Ce qui n'est pas compliqué non plus
Link to comment
Share on other sites

@Ludo: Je ne parle pas allemand :[ ... ça y est, je regrette d'avoir choisi Espagnol en LV2 ! Si tu as un équivalent de ce lien en English ou Espanol, je prends !

@Brocéliande : ta technique consiste à utiliser en BO le champs prix (HT ou TTC) pour y stocker le PU (prix unitaire), puis à jouer sur les quantités pour proposer des baisses de prix unitaires, c'est bien ça ? C'est bien pensé, mais est-ce applicable aux boutiques dans lesquelles la commande ne peut se résumer à une quantité de tel article ?

Je m'explique par un exemple, sur une boutique d'épicerie fine imaginaire (mais plus pour longtemps).
Si un client veut 1 Kg de mon pâté aux truffes, ça ne me suffit pas pour lui dire combien il me doit.
Parce que mon pâté existe en boîtes de 100, 200 et 500g ; et que sa commande sera moins chère s'il prend 2 fois 500g que 10 fois 100g !

En BD, je crée un seul article (vu que les ingrédients, le descriptif etc. sont les mêmes pour les 3 boîtes) et je propose mon article en 3 déclinaisons de poids: 100g/200g/500g. L'idée étant que la boîte de 500g revient moins chère du Kg que celle de 100g, sauf que le PU calculé par Prestashop buggue et va en augmentant .

Si la technique que tu évoques reste valable dans ces cas-là, peux-tu donner un peu + d'infos ?

Link to comment
Share on other sites

Une solution pour "maitriser" le prix unitaire dans les déclinaisons sous Prestashop 1.4

Ca y est, j'ai trouvé quels fichiers modifier pour afficher correctement mes PU (prix unitaires) pour les produits de type "Ma boîte de pâté aux truffes" : déclinée en 3 versions :

- boîte de 100g à 10€ - soit 100€/Kg

- boîte de 200g à 15€ - soit 75€/Kg

- boîte de 500g à 30€ - soit 60€/Kg (notez les prix dégressifs)

J'avais beau remplir avec attention les infos en BO, le PU calculé n'était pas correct.... Je n'ai toujours pas compris d'ailleurs par quel savant calcul mon cher Prestashop arrivait aux résultats proposés... Pas grave, on va continuer quand même !

La solution consiste en BO à laisser dans la page principale du produit le prix de vente à 0€ et le PU à 0€/Kg
Pour chaque déclinaison du produit , la différence de prix à définir sera du coup le prix de la déclinaison, idem pour la différence de poids et pour la différence de PU. (technique fortement inspirée par ShagShag sur ce forum, merci à lui) NB: pour nos histoires de PU il suffit de laisser le PU à 0, mais je vous encourage à le faire aussi pour le prix...ça vous épargnera du calcul mental !

Il y a ensuite 2 fichiers à retoucher pour que Prestashop affiche le PU malgré ces valeurs initiales à 0 :

Dans themes/mon_theme_perso/product.tpl ligne 294 environ :
transformer l'affichage du prix unitaire qui ressemble à ça :

{if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
   {math equation="pprice / punit_price"  pprice=$productPrice  punit_price=$product->unit_price_ratio assign=unit_price}

{convertPrice price=$unit_price} {l s='per'} {$product->unity|escape:'htmlall':'UTF-8'}
{/if}



en ça : (on affiche le PU même s'il vaut 0 dans le cas où existent des déclinaisons)

{if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
   {math equation="pprice / punit_price"  pprice=$productPrice  punit_price=$product->unit_price_ratio assign=unit_price}

{convertPrice price=$unit_price} {l s='per'} {$product->unity|escape:'htmlall':'UTF-8'}
{elseif isset($groups) && !empty($product->unity) && $product->unit_price_ratio == 0.000000}

{l s='xxx'} {l s='per'} {$product->unity|escape:'htmlall':'UTF-8'}
{/if}



Dans themes/mon_theme_perso/js/product.js ligne 333 environ :
transformer la répercussion du prix unitaire qui ressemble à ça :

if (productUnitPriceRatio > 0 )
{    newUnitPrice = (productPrice / parseFloat(productUnitPriceRatio)) + selectedCombination['unit_price'];
   $('#unit_price_display').text(formatCurrency(newUnitPrice, currencyFormat, currencySign, currencyBlank));
}



en ça : (on calcule le PU de la déclinaison si il est à 0 pour le produit)

if (productUnitPriceRatio > 0 )
{    newUnitPrice = (productPrice / parseFloat(productUnitPriceRatio)) + selectedCombination['unit_price'];
   $('#unit_price_display').text(formatCurrency(newUnitPrice, currencyFormat, currencySign, currencyBlank));
}
else if (productUnitPriceRatio == 0 )
{    newUnitPrice = selectedCombination['unit_price'];
   $('#unit_price_display').text(formatCurrency(newUnitPrice, currencyFormat, currencySign, currencyBlank));
}

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Bonjour à tous,

J'écris ici car je cherche depuis un bon bout de temps une solution à mon problème.

En fait j'aimerais afficher un prix unitaire au mètre carré pour des produits comme rouleaux de tapis.

J'utilise donc le champ prix à l'unité dans l'onglet infos de mon produit. Le problème est que lorsque j'ajoute une déclinaison en augmentant le prix du rouleau, le prix à l'unité augmente lui aussi, même si je laisse "impact sur le prix à l'unité" à "auncun". J'ai parcouru rapidement ce post qui me semblait quasi similaire à ce que je recherche. Mais sans trouver de réponse.

Quelqu'un d'aimable aurait-il la solution ?

Merci beaucoup.

[EDIT] : Ok j'ai rien dis, il suffisait de changer l'ID "unit_price_display" en autre chose pour que le JS ne s'applique pas.. C'est lui qui calculait (je ne sais pas trop comment) le prix.

Link to comment
Share on other sites

Salut Irina231,

J'ai eu exactement le même souci que toi... avec des Kg !
Si tu utilises Prestashop 1.4, je t'encourage à mettre en place la solution que j'ai trouvée : elle n'est pas "parfaite" mais en attendant que l'équipe de Prestashop supprime ce bug étrange sur les PU, elle fonctionne.

Tout est expliqué dans mon message ci-dessus (16mai) : il y a juste quelques lignes à modifier dans 2 fichiers : product.tpl et product.js : pas besoin d'être un expert - je suis moi-même assez peu doué :) - il suffit de copier-coller les bouts de code et de vérifier que ça marche.
Au cas ou, fais au préalable une copie des 2 fichiers à modifier, que tu pourras restaurer si jamais la modif devait ne pas fonctionner chez toi... Comme ça, pas de risque !

Le truc qui n'est pas parfait, c'est que cette modif t'oblige, pour que le prix unitaire affiché soit correct, à renseigner les infos en BO d'une certaine façon, c'est aussi expliqué dans mon message.

Dis-nous ce que ça donne !

Link to comment
Share on other sites

Salut Rom Soul,

J'ai essayé ta méthode, il me semble que cela ne fonctionne pas. Du moins ce n'est pas ce que j'essayais de mettre en place. J'ai juste désactivé le javascript qui agissait sur mon prix unitaire, puisque je n'avais pas besoin qu'il recalcule mes prix unitaire. Merci quand même, bonne soirée

Link to comment
Share on other sites

  • 11 months later...

Ca marche très bien !

Merci Rom Soul !

 

C'est une solution provisoire très facile à mettre en place en attendant que la motif soit faite.

(1 an est passé depuis ton poste et rien n'a évolué... si ?)

 

Pour parfaire le tout, il faudrait virer "augmenter/diminuer" dans le BO..

Link to comment
Share on other sites

  • 2 months later...

Bonjour à tous,

 

je dois installer ce patch sur une version 1.3.6 mais je ne vois comment faire avec le fichier .diff, je ne trouve pas les lignes correspondantes...

Quelqu'un à t'il déjà fait cette mise à jour sur cette version de Prestashop ?

 

j'ai trouvé tout ce qu'il fallait en page 4 de ce post.

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

  • 2 months later...

MERCI ROm SOul !!

Ton explication super claire fonctionne très bien même sur la version 1.5.

En plus cette solution est beaucoup plus intéressante et pratique que la version de base qui consiste à augmenter ou diminuer le prix, le poids et surtout le poids au kg (là c'est du grand n'importe quoi) en fonction des déclinaisons.

Encore merci Rom Soul !

Link to comment
Share on other sites

Avec plaisir Jullover ! Je n'ai fait qu'améliorer un peu la solution que d'autres avaient trouvé... Chacun amène sa pierre a l'édifice ^_^

 

J'aurais pourtant mis ma main au feu l'an dernier que ce bug serait rectifié en 1.5 ... Pour ma part je m'en tiens à la 1.4.8 pour l'instant, je laisse les autres essuyer un peu les plâtres !

Link to comment
Share on other sites

Le système est bien, mais...

lorsque dans prix spécifique, j'attribue un prix de vente du produit HT pour un groupe et pour une déclinaison, le prix dans la fiche produit n'est pas le bon. Il ajoute le prix du produit que je viens rentrer au prix de la déclinaison concernée...

 

par exemple si j'ai rentré comme prix spécifique 10 euros et que ma déclinaison est de 12 euros, alors il va afficher 22 euros au lieu d'afficher 10 euros...

 

Ce qui est dingue c'est que dans la "product-list" et dans le panier, les prix sont corrects...

Dans la product-list (product_list.tpl) et dans le panier(shopping-cart-product-libe.tpl) le prix est appelé de cette façon :

{convertPrice price=$product.price}

alors que dans la fiche produit (product.tpl) le prix est appelé avec :

{convertPrice price=$productPrice} :

 

En changeant l'un par l'autre, ça plante, évidemment...

product.tpl a l'air de faire appel à product.js pour afficher le prix,

mais je ne sais pas quelle ligne modifier pour lui dire quel est le bon prix...

 

AU SECOUR !!

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

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

Pour prestashop version 1.5.6.1, ça marche ou pas ? Je galère, je ne pige pas comment sont calculés les prix dans les déclinaisons dans "Impact sur le prix à l'unité".

Quelqu'un peut-il m'éclairer je vous prie.

 

Cordialement.

 

MErci Olabong

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