gestion de stock

WRInaute discret
Bonjour,

Je suis en train de créer un site marchand (php 4 et mysql 4.0) et j'arrive au moment de la gestion de stock. Et là, ca coince. Pas d'idée, je n'arrive pas à trouver des modèles qui pouraient m'aider...
Par où commencer ? J'aimerais faire les choses proprement et ne pas coder au feeling. Je me dis que d'autres ont déjà fait ca mais comment ? N'existe t-il pas un schéma "standard", une modélisation de gestion de stock pour site e-commerce ?? (c'est à dire prenant en compte le pb des accès concurrents par ex.)

Quelqu'un pour m'aider ?
merci d'avance :)
 
WRInaute accro
marylinepsyche a dit:
Quelqu'un pour m'aider ?

Moi je peux surement t'aider...

Mais qu'entend-tu par gestion des stocks ?
Normalement, la gestion des stocks ne se fait pas au niveau du site e-commerce mais au niveau de la gestion commerciale. Un simple export de la base de données en csv ou xml (ref_produit; stock;) te permet de mettre à jour les stocks affichés sur le site. A la limite, si ta gestion commerciale est connecté à ton site, ça se fait automatiquement, sans intervention manuelle.

Pourquoi le faire au niveau de la gestion commerciale ?
Hé bien, tout simplement car tu a des entrées / sorties de stocks.
Entrées : bon de commande fournisseur, bons de réceptions puis factures fournisseurs. C'est là que tu gère tes entrées en stock informatique, tes reliquats fournisseurs.
Sorties : tes factures : ventes, prêt ou location (je sais pas) sur n'importe quel canal de vente (si tu a un magasin ou plusieurs sites e-commerce.

Il faut aussi que tu prenne en compte le type de stock : neuf, défraichi, prêt fournisseur, ...

Enfin, ce que j'appelle la gestion des stocks, c'est un ou plusieurs outils d'analyse intégré(s) à ta gestion commerciales qui te permettent :
- d'anticiper les ruptures de stocks
- d'idenfifier les sur-stocks (par exemple à écouler en déstockage)
- d'analyser ta valeur de stock (et oui, les impôts la dessus, ça fait mal).
- etc...
 
WRInaute discret
Je m'explique :
j'ai un site e-commerce d'un coté, et une base de donnée qui gère les stocks de la société de l'autre (à savoir 4D).
Pour rentrer les stocks, ca se fera manuellement, parce qu'on ne met pas en vente la totalité des stocks d'un produit (autrement dit, je ne peux pas exporter le stock d'un produit et le mettre sur le site, parce que pour chaque produit, on decide du stock à metttre en vente, qui ne sera pas le meme que celui de 4D)

Pour la gestion des stocks ligne, c'est plus que nécessaire :
si 2 personnes mettent le meme article dans leur panier, et qu'il n'en reste qu'un en stock, il ne faut pas que les deux soient débitées au final.
C'est le pb des accès concurrents, comment gère t-on ça en mysql ?

bref, je ne peux pas faire un simple export csv pour la gestion du panier.
Le seul moment ou je ferai un export, c'est quand une commande sera passée. Là elle sera exportée dans 4D et le stock mis à jour.
 
WRInaute accro
Ca a l'air bien compliquée ton affaire !

Donc, si je comprend bien : la mise à jour des stocks se fait depuis 4D grâce à un import en csv dans le site e-commerce. Mais les stocks du site ne sont pas les mêmes que ceux de 4D (alors là, il faut m'expliquer pourquoi ?).
Quand 2 personnes commandent le même modèle d'article (donc 2 articles au total), il ne faut qu'il n'y en ait qu'1 seul qui décrémente le stock du site (là aussi, il faut m'expliquer pourquoi, car tes stocks vont être complètement faux au final)

Tout ça m'a l'air bien farfelu : Normalement, quand un article entre en magasin (après le bon de réception), il entre en stock informatique. De là, il est disponible sur le site (il est en plus marqué avec un numéro de série - code barre, numéro de série constructeur, ... - pour la tracibilité de l'article). Dès qu'il sort en facture (ou en prêt, ou location, ...), il sort du stock informatique. C'est très simple pourtant.

Ne vendrait tu pas des articles uniques par hasard (genre occasion) ?
Parce que là, c'est un peu différent. Effectivement, si l'article est unique, il ne peut pas être commandé par 2 personnes en même temps. En même temps, MySQL ne peut pas traiter 2 requêtes en même temps. Même à quelques millisecondes d'intervalles, il est possible d'indiquer à la 2ème personne que l'article a déjà fait l'objet d'une commande et est en attente de paiement. La 2ème personne se trouve alors en file d'attente.
Pour ce principe d'occasion ou de produits uniques, personnellement, je ne développerais pas une boutique intégralement. Tu peux très bien affiché ton catalogue sur un site et renvoyé vers les boutiques pro d'Ebay pour ce qui concerne la vente, ça fonctionne très bien.
 
WRInaute accro
Sinon, peut-être que tu veux tout simplement parlé des stocks limités.

Scénario :
- j'ai 2 Articles X en stocks
- une 1ère personne m'en commande 2
- une 2ème personne m'en commande 1 seconde plus tard 1.

Effectivement 2-3=(-1) en stock. Tu te dis que -1 en stock est une valeur abérante. Non. (-1) en stock signifie +1 à réapprovisionner.

Maintenant à toi de trouver les solutions pour ne pas froisser la confiance du 2ème client. Exemples :
- afficher "ATTENTION ! stock limité" dans le panier + une jolie phrase qui fait bien
- pourquoi pas le rappeler par téléphone pour lui expliquer que sa commande prendra du retard.
- ne le débiter qu'à l'expédition de la commande (très IMPORTANT : ce n'est parce que le client passe son numéro de carte sur le site, que techniquement, tu ne peux pas faire un paiement différé. Avec la plupart des logiciels de paiement des grandes banques, tu peux techniquement le faire)
- bien communiquer avec des messages automatiques par e-mails.
- etc...
 
WRInaute discret
blman a dit:
Ca a l'air bien compliquée ton affaire !

Donc, si je comprend bien : la mise à jour des stocks se fait depuis 4D grâce à un import en csv dans le site e-commerce. Mais les stocks du site ne sont pas les mêmes que ceux de 4D (alors là, il faut m'expliquer pourquoi ?).
nous ne vendons que des produits en quantité limité, des fins de série en quelque sorte. par ex, si j'ai un produit dans 4D,dont le stock est de 20, je décide de n'en vendre que 10 sur le site, parce que les 10 autres sont réservés à autre chose.

blman a dit:
Quand 2 personnes commandent le même modèle d'article (donc 2 articles au total), il ne faut qu'il n'y en ait qu'1 seul qui décrémente le stock du site (là aussi, il faut m'expliquer pourquoi, car tes stocks vont être complètement faux au final)
non. quand 2 personnes commandent le meme article mais qu'il n'en reste qu'un à vendre, pb sur le stock.
 
WRInaute discret
blman a dit:
Sinon, peut-être que tu veux tout simplement parlé des stocks limités.

Scénario :
- j'ai 2 Articles X en stocks
- une 1ère personne m'en commande 2
- une 2ème personne m'en commande 1 seconde plus tard 1.

Effectivement 2-3=(-1) en stock. Tu te dis que -1 en stock est une valeur abérante. Non. (-1) en stock signifie +1 à réapprovisionner.
c'es la le hic, c'est qu'on ne réapprovisionne pas.

blman a dit:
Maintenant à toi de trouver les solutions pour ne pas froisser la confiance du 2ème client. Exemples :
- afficher "ATTENTION ! stock limité" dans le panier + une jolie phrase qui fait bien
Hors de question ! c'est un site sérieux, il faut que ca marche nickel.
j'ai vu qu'on pouvait utiliser des commandes mysql comme Commit, Rollback, ou locker des tables, donc je pense que c'est gérable.
Le tout, c'est de trouver une modélisation de tout ca !!
 
WRInaute accro
OK, je comprend mieux !

Eh bien pourquoi ne définie tu pas une variable "stock à vendre". Lors de l'import depuis 4D, tu ne met à jour que les produits qui ont une valeur de stock comprise entre 0 et "stock à vendre" ? (c'est peut-être déjà ce que tu fais)

Après, quand il ne te reste plus beaucoup de produit, c'est un choix à faire :
- soit tu décrémente le stock lors de la facture
- soit tu décrémente le stock lors du paiement
- soit tu décrémente le stock lors de l'ajout au panier.

Tu comprend que plus tu décrémente le stock tard, plus tu peux faire de clients insatisfaits. Par contre, plus tu décrémente le stock tôt, plus il te restera de produit dans ton stock (marqué indisponible mais réellement disponible à cause de la perte entre l'ajout au panier et l'expédition effective de la commande (tu en a toujours qui ne payent pas ou qui annule leur commande entre ces 2 étapes - cf goulot d'étranglement lors d'une commande).

A toi de faire le choix. Pour ce qui est du cas ou 2 clients commandent le même article en même temps, il suffit de stipuler au 2ème que son article est en stock très limité et blablabla... De toute façon, au niveau de MySQL, tu ne peux pas enregistrer 2 commandes en même temps. (mais c'est un cas très rare)
 
WRInaute accro
marylinepsyche a dit:
blman a dit:
Maintenant à toi de trouver les solutions pour ne pas froisser la confiance du 2ème client. Exemples :
- afficher "ATTENTION ! stock limité" dans le panier + une jolie phrase qui fait bien
Hors de question ! c'est un site sérieux, il faut que ca marche nickel.
j'ai vu qu'on pouvait utiliser des commandes mysql comme Commit, Rollback, ou locker des tables, donc je pense que c'est gérable.
Le tout, c'est de trouver une modélisation de tout ca !!

Il y a de très gros sites e-commerce qui font ça.

Après, comme je te disais, tout dépend du moment où tu décrémente tes stocks. Plus tôt, mieux c'est pour le client (mais moins pour le marchand) et inversement.
 
WRInaute accro
Regarde ici :
http://www.rueducommerce.fr/Ordinateurs ... n-15-4.htm

Clique sur "acheter". Puis dans ton panier, modifie ton panier pour en mettre 50.

Voila le message "Le produit de référence HP-FR203 est en quantité limitée. Pour commander 50 pièces de cette référence, merci de prendre contact avec notre service avant-vente au 0892 46 56 66 (0.34€/min).".

Dans le panier, ils t'ont plafonné la quantité à 11, quantité vraissemblablement réellement en stock.
 
WRInaute passionné
marylinepsyche a dit:
j'ai vu qu'on pouvait utiliser des commandes mysql comme Commit, Rollback, ou locker des tables, donc je pense que c'est gérable.
Le tout, c'est de trouver une modélisation de tout ca !!

Regarde pour quelle version de mysql c'est, 4.0, 4.1 ou 5.x, je pencherais pour du 5.x.

Mais je serais de l'avis de blman. Ton cas me semble assez classique, le seul truc chiant ça va être pour savoir quelle partie du stock est réservé au site.

J'ai fais un site où pareil le stock était limité et il n'y avait pas de réapro auto. Une fois le stock à 0 je n'affichais plus le produit; et à chaque affichage du panier je vérifie que le produit est toujours en stock (panier via cookies donc si le gars revient 2 semaines après les stocks ont surement changés).

Je décremente le stock au moment du paiement, du coup y'a un risque si deux personnes vont au paiement au même moment, mais ça reste limité.
 
Discussions similaires
Haut