Jump to content

Pouvoir afficher/cacher le prix ht d'un produit [Résolu]


Recommended Posts

Bonjour,

 

je suis un noob en Prestashop :) et j'aimerai pouvoir afficher les 2 prix HT et TTC d'un

produit mais aussi pouvoir cacher le prix HT du produit a la demande du client.

 

Je m'explique un peu plus, le site que je dois faire s'adresse à une clientèle professionnelle, et d'après la demande du client, je dois pouvoir cacher le prix HT car ils peuvent regarder le site avec des particuliers et ces derniers ne doivent pas voir le prix HT.

 

J'ai déjà essayé de modifier le code en rajoutant des lignes déjà proposé dans d'autre forum, mais en vain... :(

 

Merci de vos réponses! :D

 

Je suis avec Prestashop 1.4.4.1

Link to comment
Share on other sites

Bonjour Carl, oui j'ai déjà effectué plusieurs recherches ne menant à rien car les versions diffèrent beaucoup.

 

J'ai par ailleurs tenté de modifier moi même les codes mais je me suis plus embrouillé qu'autre chose! :/

 

J'ai modifié le product.tpl et le Product.php, a ce jour j'ai reussi à afficher les prix HT des produits juste en modifiant le mot "price" par "wholesale_price" dans le Product.php à la ligne 1813->1824

 

// fetch price & attribute price
 $cacheId2 = $id_product.'-'.$id_product_attribute;
 if (!isset(self::$_pricesLevel2[$cacheId2]))
  self::$_pricesLevel2[$cacheId2] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
  SELECT p.`wholesale_price`,
  '.($id_product_attribute ? 'pa.`wholesale_price`' : 'IFNULL((SELECT pa.wholesale_price FROM `'._DB_PREFIX_.'product_attribute` pa WHERE id_product = '.(int)($id_product).' AND default_on = 1), 0)').' AS attribute_price,
  p.`ecotax`
  '.($id_product_attribute ? ', pa.`ecotax` AS attribute_ecotax' : '').'
  FROM `'._DB_PREFIX_.'product` p
  '.($id_product_attribute ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.`id_product_attribute` = '.(int)($id_product_attribute) : '').'
  WHERE p.`id_product` = '.(int)($id_product));
 $result = self::$_pricesLevel2[$cacheId2];
 $price = (float)(!$specific_price OR $specific_price['wholesale_price'] == 0) ? $result['wholesale_price'] : $specific_price['price'];
 // convert only if the specific price is in the default currency (id_currency = 0)
 if (!$specific_price OR !($specific_price['wholesale_price'] > 0 AND $specific_price['id_currency']))
  $price = Tools::convertPrice($price, $id_currency);

 

Par contre, j'espère que cela ne va pas affecter la suite de la commande ou même les factures clients.

 

Cordialement

Link to comment
Share on other sites

Oui en effet sur les anciennes versions c'était faisable d'avoir les 2 en même temps mais sur les dernières versions ce n'est plus possible sur toutes les pages.

 

Merci Carl de m'avoir pointé le topic....Et Atch d'avoir routé Carl sur moi lol .

Joe il existe une possibilité passe partout , en réalité.

L'idée est de créer un module qui enregistre une ou deux fonctions supplémentaires dans smarty.

C'est bcp plus simple que ça en a l'air , l'idée finale étant d'avoir une fonction getProductPriceHT par exemple , et getProductPriceTTC , utilisables dans smarty indépendamment des variables déja présentes.

Ex d'usage dans smarty {getProductPriceTTC id_product=$product.id}

Bien sur sur les pages permettant aisément le double affichage , si l'on raisonne en terme d'optimisation , il serait inutile de les utiliser, mais elle seront efficaces partout ailleurs.

Je vais voir si j'ai le temps de préparer un exemple, quelque chose , je promets rien.

Link to comment
Share on other sites

J'ai crée une fonction public mais je ne sais pas l'ajouté dans le tpl pour l'afficher! Pouvez-vous m'aider ?

 

Product.php

//Creation d'une fonction pour le prix ht
public function AfficherPriceHT($id_product){

 $justId = $id_product;
 if (!isset(self::$_wholesale[$justId]))
 self::$_wholesale[$justId] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
 SELECT p.`wholesale_price` FROM `'._DB_PREFIX_.'product` WHERE p.`id_product` = '.(int)($id_product));
 $result = self::$_wholesale[$justId];
}
//Fin de creation de fonction

Link to comment
Share on other sites

J'ai crée une fonction public mais je ne sais pas l'ajouté dans le tpl pour l'afficher! Pouvez-vous m'aider ?

 

Product.php

//Creation d'une fonction pour le prix ht
public function AfficherPriceHT($id_product){

 $justId = $id_product;
 if (!isset(self::$_wholesale[$justId]))
 self::$_wholesale[$justId] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
 SELECT p.`wholesale_price` FROM `'._DB_PREFIX_.'product` WHERE p.`id_product` = '.(int)($id_product));
 $result = self::$_wholesale[$justId];
}
//Fin de creation de fonction

 

 

Je crains que ce ne soit pas tout à fait la bonne approche.

Je me demande à quoi fait référence self:: dans ta méthode, ni ou tu l'as placée ?.

Par ailleurs il me semble que wholesale_price est le prix de vente ht , certes , mais ne tient pas compte des réductions éventuelles...

 

Peux tu me dire ou tu comptes placer la fonction , dans un module ou un controller ? une override ?

Link to comment
Share on other sites

Justement, wholesale_price fait référence au prix HT, je n'ai aucune taxe à rajouté sur les prix.

 

Ensuite, pour la fonction, je compte la placer dans Product.php puis je compte utiliser le résultat dans le fichier product.tpl.

 

Sa me botterait bien de faire un module, seulement je ne sais pas du tout comment en faire un! :x

Link to comment
Share on other sites

Justement, wholesale_price fait référence au prix HT, je n'ai aucune taxe à rajouté sur les prix.

 

Ensuite, pour la fonction, je compte la placer dans Product.php puis je compte utiliser le résultat dans le fichier product.tpl.

 

Sa me botterait bien de faire un module, seulement je ne sais pas du tout comment en faire un! :x

 

Oui mais :

- wholesale_price retourne le prix sans tenir compte des éventuelles réductions .

Eg : produit à 119.60€ , en solde à 50% , wholesale_price va te retourner 100€ , c pas glop

 

 

Product.php est une classe , si tu la modifies en brut de pomme sans passer par l'overriding , tu pourras plus mettre à jour , et crois moi c'est dommage .

 

Ben faire un module c'est moins difficile qu'il n'y parait , et il existe plusieurs tutos (google is your friend, mais la recherche du forum aussi) .

 

Si j'avais plus de temps j'aurais été jusqu'à fournir un exemple , mais en l'état ce n'est juste pas possible.

Link to comment
Share on other sites

Déjà "wholeprice" correspond au prix d'ACHAT du produit et non au prix de VENTE (très différent !).

 

Ensuite, dans product.tpl, tu peux remarquer une ligne intéressante :

 

{assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, 2)}

 

Ligne: 243 de mon product.tpl.

 

Tu fais une petite recherche de getPrice :

 

/**
* Get product price
* Same as static function getPriceStatic, no need to specify product id
*
* @param boolean $tax With taxes or not (optional)
* @param integer $id_product_attribute Product attribute id (optional)
* @param integer $decimals Number of decimals (optional)
* @param integer $divisor Util when paying many time without fees (optional)
* @return float Product price in euros
*/
public function getPrice($tax = true, $id_product_attribute = NULL, $decimals = 6, $divisor = NULL, $only_reduc = false, $usereduc = true, $quantity = 1)
{
 return self::getPriceStatic((int)($this->id), $tax, $id_product_attribute, $decimals, $divisor, $only_reduc, $usereduc, $quantity);
}

 

D'après le commentaire, la fonction maître, c'est getPriceStatic, qui, oh !, est static. Donc utilisable à volonté. Bref, dans ton cas, si tu restes sur product.tpl, tu as la variable smarty $product. Donc pas besoin de passer par getPriceStatic. Mais si tu en as besoin autre part, tu sais qu'elle existe.

 

Bref, lis un peu le commentaire pour savoir comment t'en servir.

 

Concernant l'option d'afficher oupa le prix HT/TTC, pour ça, il faut passer par un petit module et une modification de ton product.tpl.

 

Je vais pas t'apprendre à faire un module, tu as des tutoriels (piste: Nethercott constructions). Si tu veux pas te faire chier à faire une table dans ta base de données, tu peux utiliser la table "configuration". Tu initialises 2 nouvelles variables par produit :

*MY_MOD*_DISPLAY_HT_*ID* = true / false

*MY_MOD*_DISPLAY_TTC_*ID* = true / false

 

*MY_MOD* = nom de ton module, ça évite les conflits.

*ID* = ID du produit. Si tu veux généraliser pour TOUS les produits, y'a qu'à l'enlever.

 

Ensuite, il faut assigner ces deux valeurs pour le product.tpl. Tu vas direction le controller des produits et dans la fonction "process", qui, par définition, s'éxecute juste après avoir affiché le header.tpl, tu les assign à smarty.

 

Pour finir, dans product.tpl, tu rajoutes des conditions.

Link to comment
Share on other sites

Bonjour,

 

je suis un noob en Prestashop :) et j'aimerai pouvoir afficher les 2 prix HT et TTC d'un

produit mais aussi pouvoir cacher le prix HT du produit a la demande du client.

 

Je m'explique un peu plus, le site que je dois faire s'adresse à une clientèle professionnelle, et d'après la demande du client, je dois pouvoir cacher le prix HT car ils peuvent regarder le site avec des particuliers et ces derniers ne doivent pas voir le prix HT.

 

J'ai déjà essayé de modifier le code en rajoutant des lignes déjà proposé dans d'autre forum, mais en vain... :(

 

Merci de vos réponses! :D

 

Je suis avec Prestashop 1.4.4.1

 

En relisant , il me semble que tu cherches midi à 14h ...

Les clients pro raisonnent en HT , il n'est donc pas nécessaire de leur filer le prix TTC dont il se moquent éperdument. C'est même rédhibitoire parce que visualiser le prix TTC peut leur donner une idée fausse du prix.

 

Imaginons que tu crées un groupe dans le BO , appelé PRO

Imaginons que tu configures ce groupe pour afficher les prix en HT et non TTC (tout ça se fait en natif)

Imaginons que tu affiches TTC pour les prix tax included et HT pour les prix tax excluded (natif aussi c'est des traductions)

 

Les clients à l'arrivée verrons les prix TTC , mais une fois un client passé manuellement dans le groupe pro ,

les prix seront tous HT

 

Et si tu as bien géré tes traducs , ben ce sera affiché soit 10 € HT , soit 11.96 € TTC par ex

 

La pour le coup y'a pas une ligne de code ....

Link to comment
Share on other sites

Bonjours les gars

 

Je trouve la question de JoeStriani intéressante tout de même. Le cas dont je vais vous parler est un peu différent mais ...

 

Voila, certains produits ont déjà leur prix indiqués sur les boites, c'est ce qu'on appel le prix "public conseillé" ou constaté je ne sais plus.

 

Le commerçant à décidé de faire systématiquement une remise de 5% sur les prix par ex, a tout les clients qui s’inscrivent et ce de façon permanente. (5% gérés avec un groupe client)

 

Mais pour ce détacher de ces concurrents le commerçant voudrait montrer le prix public et le prix de vente avec le remise qu'il pratique et ce systématiquement sur les fiches produits et partout sur le site en fait.

 

J'ai un exemple très concret de prix déjà affiché sur les articles: le monde du livre.

Sur les livres le prix de vente est déjà inscrit souvent en tout cas (on peut tous le constater). Et Amazon par exemple sur son site met systématiquement le prix du produit et le prix avec les fameux 5% de remise.

(légalement ils ne peuvent appliqué plus en remise je crois ... mais là je m'éloigne du sujet)

Le monde du jeu aussi est à la même enseigne, les boites ont déjà leur prix indiquées dessus et je suis certain qu'il existe d'autres cas...

 

Donc même si ce n'est pas le même cas que JoeS, pouvoir afficher 2 prix en même temps me parait plus que légitime et pratique.

 

 

PS si mon post doit être déclassé en tan que nouveau post a part entière je comprendrais.

 

Bonne journée à tous

Link to comment
Share on other sites

Bah c'est directement possible ça...

 

Tu mets ton "Prix de vente HT" (ou TTC, comme le souhaite ton client) et ensuite, tu mets une remise de 5% dans l'onglet "Prix" du produit.

 

Du coup, sur la fiche produit, tu vas avoir un truc du style:

 

Prix de vente : 9.5€

Prix réelle : 10€

Remise : 5%

 

Enfin, si j'ai bien compris.

Link to comment
Share on other sites

Merci Sbizz, :D tu as parfaitement compris

 

dire que je me suis pris la tête pour rien, j'aurais du poser la question plutôt :P .

 

ça fonctionne nickel sur la fiche produit par contre lorsque je clique sur catégorie dans le listing des produits il y à juste "PRIX REDUIT" d'inscrit mais pas le pourcentage.

 

Et dans les produits PHARES j'ai juste le prix avec la réduction faite d'inscrite mais visuellement on ne sait pas qu'il y a une réduction tan que l'on à pas cliqué sur la fiche produit.

 

Enfin dernière question peut on personnaliser le texte Prix réduit.

 

 

PS: avant de vous souhaiter à tous un très bon weekend et pleins de ventes pour ceux qui on une boutique en ligne;

je tiens à remercier la communauté présente ici sur le forum, j'ai bien progressé grâce à vous toutes et tous.

 

Alors Bon weekend. :P

Link to comment
Share on other sites

Pour la taille, il faut aller toucher dans le CSS.

 

Je te conseil FireBug de FireFox pour avoir l'ID du <span> ou de la balise qui couvre le prix.

 

Pour montrer la remise, il faut par contre trouver la variable.

 

Peut être mettre la balise {debug} de smarty dans le fichier catégorie template, pour voir les assignations. Si tu trouves pas de variable faisant référence aux réductions, il va falloir aller chercher dans ProductController quelle variable te donne ces informations, etc.

 

Bref, là je peux pas trop te répondre, je n'ai pas trop regardé et j'ai pas du tout le temps pour l'instant.

 

Par contre, de ce que je sais, tu peux activer un BLOCK qui t'affiche les produits en promotion !

Link to comment
Share on other sites

 

En relisant , il me semble que tu cherches midi à 14h ...

Les clients pro raisonnent en HT , il n'est donc pas nécessaire de leur filer le prix TTC dont il se moquent éperdument. C'est même rédhibitoire parce que visualiser le prix TTC peut leur donner une idée fausse du prix.

 

Imaginons que tu crées un groupe dans le BO , appelé PRO

Imaginons que tu configures ce groupe pour afficher les prix en HT et non TTC (tout ça se fait en natif)

Imaginons que tu affiches TTC pour les prix tax included et HT pour les prix tax excluded (natif aussi c'est des traductions)

 

Les clients à l'arrivée verrons les prix TTC , mais une fois un client passé manuellement dans le groupe pro ,

les prix seront tous HT

 

Et si tu as bien géré tes traducs , ben ce sera affiché soit 10 € HT , soit 11.96 € TTC par ex

 

La pour le coup y'a pas une ligne de code ....

 

Bonjour Broceliande, je vois pas trop ou tu veux en venir avec les groupes ? Parce que, si j'ai bien compris, un groupe de personnes, imaginons les professionnels, à un groupe attribué qui est le 2, et si je leur met un autre groupe pour qu'ils puissent voir les prix TTC, ils ne pourront pas voir les prix TTC car ils ont déjà un groupe attribué. Me suis-je fais comprendre ?

Cordialement

Link to comment
Share on other sites

Bonjour Voila une solution qui semble fonctionner trouvé sur le net,

A partir de la version Prestashop V1.3.XX, cette option n'est plus proposée. (affichages HT ou TTC )

Voici une solution pour afficher les tarifs HT et TTC :

Connectez vous à votre base de données.

affichez le contenu de la TABLE : “ps_group”

modifiez le champ : “price_display_method “ avec la valeur 2

rappel des valeurs possibles pour l’affichage des prix sur votre boutique.

0 = TTC

1 = HT

2 = HT et TTC

Editez chaque groupes clients auxquels vous désirez affichez les 2 tarifs HT et TTC.

Voila. c’est tout simple.

En espérant que cela vous aide.

 

A vous de créer un groupe pro et un groupe particulier.

 

Cordialement G. PREVEAUX

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