Jump to content

[RESOLU] Représenter la quantité du stock graphiquement - Ex: jauge


Recommended Posts

Bonjour,

C'est le 4em post que je fais, et je n'ai jamais eu de réponses à mes questions..J'espere donc que la communauté de developpeurs de presta pour m'aider ou me donner des pistes cette fois ci !

Je souhaite programmer une sorte de jauge afin d'afficher le stock d'un produit sous forme d'image.
J'ai en effet réussi à assigner une image en fonction du stock du produit (ex: si stock produit <5, une icone rouge apparait)

<!-- number of item in stock -->


available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}>
               {if $product->quantity > 5}{l s='Plenty in Stock'}
               {elseif $product->quantity > 0}{l s='Only '}{$product->quantity|intval}{l s=' left in stock'}
               {elseif $product->quantity < 1}{l s='None left in stock'}
               {/if}

 



Afin de créer ma jauge je pensais donc à créer plusieures images en fonction du stock. Le problème étant que, si un produit à un stock = 1000 et qu'un autre à un stock = 500, cela veut dire qu'un produit affichera une image du stock plein et l'autre produit affichera une image du stock à moitié plein alors qu'il devrait être égal à 100%.
Vous me suivez toujours ?

Ainsi pour pallier à ce projet, il faudrait que je puisse spécifier la quantité en % :

{if $product->quantity > 5%}



J'ai beau chercher une solution en fouillant les forums anglais et français mais je ne trouve pas ! D'autre part je sais qu'il existe le module rsi stock, le fait est que je voudrais vraiment réussir à le faire par moi même, non pas pour une question d'argent, mais tout simplement car j'ai envie d'apprendre à developper sur presta.

Bref, HELP ME please !

Merci

ps: je suis sur presta 1.3.7

Link to comment
Share on other sites

salut

En te lisant il me semble que sa sera bc plus compliquer que sa.
Car si tu veux avoir une jauge avec des quantités différente pour chaque produit il te faudra un nouveau champ dans ta base de donnée qui se nommera (pleine quantité) pour que ta jauge sache que pour ce produit le 100% est égale à 500 et pour celui ci le produit 100% sera 1000. tu me suit ?

Comme cela lors d'ajout d'un produit via le BO il te faudra un nouveau champ (à coté de la quantité produit) qui sera Produit à 100% = p.e 500

J'espère avoir pu t'éclairer un minimum ;-)

salutations

Julien

Link to comment
Share on other sites

Hello !

Merci pour ta réponse ! Effectivement je me doutais bien que ça ne pouvais pas être aussi facile, mais au mois j'ai déja une piste à creuser :) reste à connaitre la procédure maintenant !

Link to comment
Share on other sites

Re

Je viens de potasser un peu et j'ai trouvé un tuto expliquant comment créer un nouveau champs.

ici

Là ou je bloque c'est comment assigner le 100% à la pleine quantité et comment le déclarer dans le tpl ?
Est ce que l'appel suivant est valable ??

{if $product->quantity > 5%} 



merci d'avance :)

Link to comment
Share on other sites

Re,

Bon ça fait 3 jours non stop que je suis dessus et je rencontre des difficultés :

J'ai réussi à créer mon champ "produit 100%" dans le BO et à l'afficher sur le FO..Mais je n'arrive pas à déclarer et à écrire correctement la fonction du calcul du pourcentage et le calcul ne s'éxécute pas :(

Quelqu'un pour m'aider s'il vous plait ?

Link to comment
Share on other sites

salut

Alors maintenant que tu as réussi à donner un "maximum" pour chaque article il te faut aller chercher cette valeur dans ta BD ansi que le nombre d'article réstant.

Ensuite pour l'afficher sur ton FO il te faudra faire une petite fonction pour afficher l'image correspondant au stock :


VS = valeur stock
SC = Stock 100%
ST = stock en %

(VS/SC)*100 = ST

ensuite il te faut mettre dans ta fonction, si ST à une certaine valeur, alors afficher cette image (je ne peux pas t'aider pour la programmation)

Voila j'espère que je peux t'aider un petit peux la dessus.

Salutations

Link to comment
Share on other sites

Bonjour,

Merci pour votre réponse mais j'ai trouvé une solution temporaire entre temps; Je récapitule :

> Tout d'abord on crée un champ quantité 100% dans le BO de la fiche produit (faire une recherche google)
> Ensuite on récupère les champs quantité 100% et champs quantity et on calcul le pourcentage :

quantity = valeur stock
quantity100= Stock 100%
productpercent = stock en %

J'ai donc bien pensé à écrire la formule dans product.php sous la forme :

function Get_Percent($quantity100, $quantity) {
    $product->productpercent = ($quantity / $quantity100 * 100).”%”;
echo $product->productpercent();

}



Mais le probleme c'est que prestashop n'assimile pas la variable $product->productpercent, et le résultat affiché en FO est toujours égal 0. J'ai donc du ruser : Plutot que d'appeler la variable {$product->productpercent} dans le tpl, j'écris directement la formule sous la forme :

 {$product->quantity/$product->quantity100*100}



Il suffit ensuite d'appeler cette formule dans le code tpl avec une condition d'affichage selon la quantité:

{if $product->quantity/$product->quantity100*100 == 100}class="iconeStock"> {/if}



Dans mon cas j'utilise une jauge par cran de 10% > 10 crans = 100% de la barre; Mais il est possible d'en ajouter autant que l'on veux et donc de pouvoir avoir une jauge vraiment personnalisée (exple : le site ulule); Voici le code que j'utilise :

<!-- Jauge Quantité 100% -->

{l s='Project Status'} 

quantity == 0} style="display:none;"{/if}>
quantity/$product->quantity100*100 == 100}class="iconeStock"> {/if}
quantity/$product->quantity100*100<=90} class="iconeStock">{/if} 
quantity/$product->quantity100*100<=80} class="iconeStock">{/if} 
quantity/$product->quantity100*100<=70} class="iconeStock">{/if} 
quantity/$product->quantity100*100<=60} class="iconeStock">{/if} 
quantity/$product->quantity100*100<=50} class="iconeStock">{/if} 
quantity/$product->quantity100*100<=40} class="iconeStock">{/if} 
quantity/$product->quantity100*100<=30} class="iconeStock">{/if} 
quantity/$product->quantity100*100<=20} class="iconeStock">{/if} 
quantity/$product->quantity100*100<=10} class="iconeStock">{/if} 
quantity/$product->quantity100*100 == 0} class="iconeStock">{/if} 



Il s'agit là d'une solution envisageable bien que peut être lourde en terme de code; Il faudrait juste pour cela déclarer correctement la variable $product->productpercent dans product.php mais je n'ai pas la formule adequat. Du coup si quelqu'un à la solution, je suis tout ouie, car si on pouvait récuperer cette variable, on pourrait utiliser la librairie google chart.

Bref, j'espère que cette technique pourra aider les gens qui veulent représenter leur stock graphiquement :)

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