Stocks

Documentation en chantier du plugin Stocks

Gestion de quantités en stock sur les produits.

Dépot :
https://git.spip.net/spip-contrib-extensions/stocks.git

Le plugin étant en développement vous pouvez trouver des informations dans le readme du projet

Les stocks de produit sont gérables depuis une page gestion des stocks
accessible depuis le menu edition.
?exec=gerer_stocks

Chaque ligne du tableau affiche :
-  le titre du produit et son logo au survol
-  le statut du produit
-  le parent /rubrique
-  la reférence
-  livrable / immatériel (et mode de livraison si le plugin livraison est installé)
-  le stock : formulaire permettant d’initialiser un stock avec une valeur, ou de le mettre à jour. Les stocks non initialisés sont signalés.

BOUCLES

Parmètres :
id_stock
objet
id_objet
quantite

Afficher une liste déroulante dans une page panier, si le stock est supérieur a 1, sinon on affiche juste 1.

<td class="prix_unitaire">[(#GET{prix_unitaire}|prix_formater)]</td>
<td class="quantite">
#SET{quantite_choisi,''}
<BOUCLE_enStock(STOCKS){objet}{id_objet}>
#SET{stock, #QUANTITE}
</BOUCLE_enStock>
<B_dispoStock>
	<select name="quantites[#OBJET][#ID_OBJET]">
<BOUCLE_dispoStock(DATA){enum 1,#GET{stock}}{0,50}{si #GET{stock}|>{1}}>
	#SET{quantite_choisi, #ENV{quantites}|table_valeur{#OBJET}|table_valeur{#ID_OBJET}|sinon{#QUANTITE}}
	<option value="#VALEUR"[(#GET{quantite_choisi}|=={#VALEUR}|oui) selected]>#VALEUR</option>
</BOUCLE_dispoStock>
	</select>
</B_dispoStock>
	[(#SET{quantite_choisi,1})]
	#GET{quantite_choisi}
<//B_dispoStock>
</td>
<td class="montant">[(#GET{prix_unitaire}|mult{#GET{quantite_choisi}}|prix_formater)]</td>

BALISES

[(#EN_STOCK)] affiche la quantité dans un contexte sans utiliser de boucle. A noter que sur une page panier EN_STOCK ne fonctionnera pas comme attendu car l’objet en cours du contexte est panier_lien, la balise retourne alors la quantité

Exemple : Page produit pour conditionner l’ajout au panier

<BOUCLE_test_produit_enstock(CONDITION){si #EN_STOCK|>{0}}>
[<div class="ajouter_panier">(#BOUTON_ACTION{<i class="icon-plus icon-white" aria-hidden="true"></i><:paniers:action_ajouter:>,
						#URL_ACTION_AUTEUR{
							remplir_panier,
							produit-#ID_PRODUIT-1,
							#SELF|ancre_url{popup_panier}
						},
						pull-right
					})</div>]
</BOUCLE_test_produit_enstock>
  <button class="btn btn-disable pull-right"><:stocks:stock_epuise:></button>
<//B_test_produit_enstock>

Évolutions

v0.2.5

Supprimer un stock

-  Ajout d’une action pour supprimer un stock
-  Ajout au formulaire gerer stock (utilisé la page d’édition d’un produit et la page des stocks) d’un bouton action de suppression du stock.
-  Rechargement du bloc conteneur quand on agit sur le formulaire pour mettre a jour les infos et passer de créer à éditer/supprimer
-  ajout d’un pagination sur la liste des stocks, on trie par date inverse.

En test
-  Ajout aux utilise le plugin livraison
-  Ajout d’une colonne dans le listing des stocks « Livraison » qui affiche si le produit est immatériel ou livrable
-  dans le cas d’un produit livrable, et si le plugin livraison est installé, on affiche le/s modes de livraison « forcés » si il en a d’associés au produit, sinon on signale que les rêgles de livraison classique s’applique.

0.2.4
-  Ajoute un statut epuisé aux produits
-  Config : Dépublier un produit en le passant en statut épuisé quand son stock est <= 0
-  Au passage d’une commande a payé le stock est mis a jour
-  Repasser l’article en statut publié quand on re-crédite le stock

Discussion

5 discussions

  • Bonjour,

    Stocks est annoncé compatible avec SPIP 4.2, mais je ne trouve pas le dépôt / ZIP qui contient cette version compatible.

    Répondre à ce message

  • 1

    Bonjour,

    ce plugin est il implémentable avec les déclinaisons de prix pour créer un stock par déclinaison ?

    -  Si oui comment ?
    -  Si non quelqu’un aurait-t-il des pistes ?

    • Hello,

      En l’état je ne pense pas que ce soit utilisable tel quel.

      Tout dépend de la manière dont le plugin qui gère tes déclinaisons fonctionne. Actuellement je l’ai utilisé sur des objets produits, en théorie les stocks sont aussi utilisable sur d’autres objets mais je ne l’ai pas testé (les fonctions sont dans le code ...), Mais en théorie les stocks fonctionnent avec tout objet ayant un #PRIX ... l’interface de gestion des stocks devra certainement être adaptée je pense, pour afficher correctement ce que tu souhaite, mais tu peut surcharger cette page depuis ton squelette si besoin...

    Répondre à ce message

  • 2

    Bonjour,

    je ne suis pas sûre d’être sur le bon plugin pour cette question ;)

    je n’ai que des pièces uniques, le stock est bien réglé a 1
    et pourtant sur la page panier on peut toujours modifier la quantité manuellement
    y’a t-il une solution pour bloquer cela ?

    j’ utilise Stocks 0.2.11 - SPIP 3.2

    Merci bien,
    Laëtitia

    • Bonjour,

      J’ai vu passer des travaux sur ce plugin récemment, et j’ai pas trop suivi ...
      Au départ stock ne gère pas les modèle panier, il faut surcharger et adapter suivant son besoin.

      Voici le squelette que j’utilise sur quelques sites pour gérer la gestion des quantités, il faut surcharger le formulaires/panier et modifier la colonne quantité ainsi :

      <td class="quantite">
      	#SET{quantite_choisi,''}
      	<BOUCLE_enStock(STOCKS ?){si #PLUGIN{stocks}}{objet}{id_objet}>
      		#SET{stock, #QUANTITE}
      	</BOUCLE_enStock>
      	<B_dispoStock>
      		<select name="quantites[#OBJET][#ID_OBJET]">
      			<BOUCLE_dispoStock(DATA){enum 1,#GET{stock}}{0,50}{si #GET{stock}|>{1}}>
      				#SET{quantite_choisi, #ENV{quantites}|table_valeur{#OBJET}|table_valeur{#ID_OBJET}|sinon{#QUANTITE}}
      				<option value="#VALEUR"[(#GET{quantite_choisi}|=={#VALEUR}|oui) selected]>#VALEUR</option>
      			</BOUCLE_dispoStock>
      		</select>
      		</B_dispoStock>
      			[(#SET{quantite_choisi,1})]
      			#GET{quantite_choisi}
      		<//B_dispoStock>
      </td>

      si on a plus d’un produit on affiche un select avec les produits dispos en stock, sinon juste 1

      je peut fournir le lien vers le squelette e-commerce qui me sert de base si ça ne vous suffit pas pour arriver a vos fins... ;-)

      Bonne journée

    • et en fait je me rend compte que c’était déjà documenté dans l’article

      Stocks

    Répondre à ce message

  • 6

    Hello,

    Dans le fichier paquet.xml de ce plugin il y a des « [ » au lieu de « ] »
    comme par exemple ici :
    <utilise nom="livraison" compatibilite="[2.6.0;["/>

    Je m’en suis aperçue car cela génère une erreur sur la page exec=gerer_stocks (le plugin livraison n’est pas installé sur mon site).

    • Hello,

      Merci du retour, je ne m’en était pas rendu compte effectivement, mon squelette de base installe toute ces dependances ...
      Le plugin est sur qit.spip je crois maintenant, tu peut commiter la modif ? ou je m’en charge ?

      Je crois que livraison a bougé aussi récemment, faut que je vérifie que ça casse pas, et je fais plus beaucoup de spip depuis un an ... donc peut de temps

    • Bonsoir,
      J’ai essayé mais je ne peux pas modifier le code ni ajouter de ticket (je ne suis pas administrateur sur spip git,)

    • Bon j’ai regardé brièvement mais en fait c’est pas du paquet.xml que le problème doit venir car la declaration de bornes de compatibilitée est coorect raport a
      https://plugins.spip.net/redaction-du-paquet-xml.html#compatibilite

      en gros on autorise toutes les version a partir de ... et supérieures

      Je pense que ça doit plutot venir de la boucle condition, sur la page gérer stocks, qui doit toujours retourner vrai , et donc doit t’afficher un truc dans le genre la table livraison n’existe pas ...

      tu peut surcharger cette page en attendant depuis ton squelette (si ce n’est déjà fait ^^), ... je test et commit une version rapide...

    • Bon a priori ça devrait être corrigé en version v0.2.11 par https://git.spip.net/spip-contrib-extensions/stocks/commit/4767e7880f53563340d8eb5ac18b52ddfed3bc22

      Dis moi si ça résout ton erreur.
      Bonne journée

    • Merci bien,
      Pour l’instant je ne vois que les versions suivantes sur la page ?exec=charger_plugin (toutes versions disponibles)
      Stocks 0.0.5 - dev - déjà installé [bizarre... je n’ai pas cette version sur le serveur]
      Stocks 0.2.10 - dev - déjà installé

      et pas la 0.2.11.
      Il faut sans doute attendre la mise à jour du dépôt.

    • Autant pour moi avec git.spip il faut créer un tag pour que le paquet soit mis a jour, c’est fait
      tu devrais avoir la bonne version dispo ... prochainement

    Répondre à ce message

  • 2

    Bonjour,

    J’utilise Stocks 0.2.10 - dev sur un SPIP 3.2 et j’ai l’impression que quelque chose a changé :
    lorsqu’un produit n’a pas de stock défini, c’est à dire que la quantité disponible n’est pas limitée, l’ajout d’une quantité dans le panier ne se fait pas. Le produit est bien ajouté mais avec la quantité zéro.
    Dans la table stocks la quantité est à zéro même lorsque aucun stock n’a été défini pour le produit.

    Dans mon squelette produit j’avais :
    <BOUCLE_test_produit_enstock(CONDITION) {si #EN_STOCK|!=={0}}>
    à la place de
    <BOUCLE_test_produit_enstock(CONDITION){si #EN_STOCK|>{0}}>

    mais cela ne fonctionne plus.

    si je réinstalle Stocks 0.1.7 - dev ça refonctionne !

    Merci

    • Bonjour,

      Désolé du temps de réponse et merci du signalement, je vais regarder ce qui a pus introduire cet effet de bord. Malheureusement je suis en mission en ce moment, et pas sur le CMS spip donc ça risques de prendre un peut de temps …

    • Bonjour,

      D’accord merci.
      En attendant je remet la dernière version du plugin et je contourne en faisant un test sur le mot-clé du produit pour afficher le #STOCK seulement si le mot clé = 1 et je mets le stock des produits avec mot clé 2 à 1000 (voyons grand !).

      <BOUCLE_enStock0(STOCKS) {objet}{id_objet}>
      #SET{stock, #QUANTITE}
      </BOUCLE_enStock0>
      
      <BOUCLE_test_produit_stock(STOCKS) {id_produit} {quantite>=1}>
      <BOUCLE_test_produit_nostock(PRODUITS) {id_produit} {id_mot=2}>
      </BOUCLE_test_produit_nostock>
      [Il reste <strong>#EN_STOCK</strong>&nbsp;(#EN_STOCK|singulier_ou_pluriel{place,places})]
      <//B_test_produit_nostock>
      </BOUCLE_test_produit_stock>

      dd

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom