JoeSatriani Posted October 7, 2011 Share Posted October 7, 2011 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! Je suis avec Prestashop 1.4.4.1 Link to comment Share on other sites More sharing options...
Carl Favre Posted October 7, 2011 Share Posted October 7, 2011 Bonjour JoeSatriani, Dans la partie Clients>Groupes, tu peux choisir d'afficher soit les prix HT ou TTC. Pour afficher les 2 à la fois, il me semble avoir vu plusieurs sujets. Tu as déjà fait une recherche ? Carl Link to comment Share on other sites More sharing options...
JoeSatriani Posted October 7, 2011 Author Share Posted October 7, 2011 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 More sharing options...
Carl Favre Posted October 7, 2011 Share Posted October 7, 2011 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. Link to comment Share on other sites More sharing options...
Broceliande Posted October 7, 2011 Share Posted October 7, 2011 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 More sharing options...
JoeSatriani Posted October 7, 2011 Author Share Posted October 7, 2011 Merci Broceliande, j'attends votre réponse avec impatience, pendant ce temps je vais essayer de créer des fonctions et je vous tiens au courant de mon avancé! Encore merci! Cordialement Link to comment Share on other sites More sharing options...
JoeSatriani Posted October 7, 2011 Author Share Posted October 7, 2011 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 More sharing options...
Broceliande Posted October 7, 2011 Share Posted October 7, 2011 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 More sharing options...
JoeSatriani Posted October 7, 2011 Author Share Posted October 7, 2011 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 More sharing options...
Broceliande Posted October 7, 2011 Share Posted October 7, 2011 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 More sharing options...
JoeSatriani Posted October 7, 2011 Author Share Posted October 7, 2011 C'est pas grave, c'est déjà gentil de votre part de me répondre, je vais étudier comment réaliser un module et je vous tiens au courant. Merci de votre aide! Cordialement. Link to comment Share on other sites More sharing options...
Nicolas.Gilles Posted October 13, 2011 Share Posted October 13, 2011 Bonjour Joe Satriani, avez vous trouvez le bon accord pour résoudre votre problème ? Je suis aussi intéressé au cas ou. Merci je continu mes recherches. Link to comment Share on other sites More sharing options...
Sbizz Posted October 13, 2011 Share Posted October 13, 2011 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 More sharing options...
Broceliande Posted October 13, 2011 Share Posted October 13, 2011 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! 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 More sharing options...
Nicolas.Gilles Posted October 14, 2011 Share Posted October 14, 2011 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 More sharing options...
Sbizz Posted October 14, 2011 Share Posted October 14, 2011 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 More sharing options...
Nicolas.Gilles Posted October 15, 2011 Share Posted October 15, 2011 Merci Sbizz, tu as parfaitement compris dire que je me suis pris la tête pour rien, j'aurais du poser la question plutôt . ç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. Link to comment Share on other sites More sharing options...
Sbizz Posted October 15, 2011 Share Posted October 15, 2011 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 More sharing options...
JoeSatriani Posted October 17, 2011 Author Share Posted October 17, 2011 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 More sharing options...
Nicolas.Gilles Posted October 18, 2011 Share Posted October 18, 2011 Merci Sbizz je vais étudier Smarty de plus près j'ai 'impression que cela répondra à pas mal de questions que je me pose. ( et puis je vais apprendre quelque chose de plus ) @ bientôt tous Link to comment Share on other sites More sharing options...
JoeSatriani Posted October 19, 2011 Author Share Posted October 19, 2011 Up! J'ai toujours pas trouvé de solution à propos de mon problème d'affichage...les tuto sur internet pour créer des modules sont vite faits expliqués... Link to comment Share on other sites More sharing options...
Sbizz Posted October 19, 2011 Share Posted October 19, 2011 Nethercott constructions t'offre un bon tutoriel, c'est avec lui que j'ai débuté. Link to comment Share on other sites More sharing options...
JoeSatriani Posted October 20, 2011 Author Share Posted October 20, 2011 Okai, merci Sbizz! Link to comment Share on other sites More sharing options...
JoeSatriani Posted October 21, 2011 Author Share Posted October 21, 2011 Bonjour à tous, du coup j'ai juste eu à modifier les fichiers .tpl et php pour afficher les prix HT et TTC. Etant donnée que mon entreprise ne voudra pas faire de mise à jour pour Prestashop, je ne risque rien. Cordialement! Link to comment Share on other sites More sharing options...
xueid89 Posted October 22, 2011 Share Posted October 22, 2011 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now