Fonction de calcul de stock par ordre d'insertion - PHP - Programmation
Marsh Posté le 04-05-2008 à 12:48:16
Je suis pas sûr d'avoir bien compris.
Version neuneu: si tu as la quantité en stock pourquoi tu veux la calculer
Version autre: t'as ton stock avec la quantité réelle, tu voudrais décompter les quantités en commande donc qui vont sortir sous peu et avoir la quantité réellement disponible c'est bien ça
Si c'est ça, pourquoi tu décrémentes pas quand ça passe en commande
Marsh Posté le 04-05-2008 à 13:12:04
Je decremente deja a la commande.
Ce que je cherche a faire c'est un afficher par exemple Dispo ou non dispo suivant l'ordre d'arrivé de la commande.
Je m'explique, je me suis peut etre mal exprimé:
J'ai 3 commandes sur un meme produit (disons 1 pieces par commande) et j'en ai seulement 2 en stock, je voudrais que pour les 2 premieres commandes ca me dise que c'est dispo mais pas pour la derniere, car j'ai que 2 produits en stock et 3 produits ont été commandés.
Sachant que je vais gérer l'ordre par l'id da la commande, donc par chronologie.
Marsh Posté le 04-05-2008 à 15:08:53
Si tu décrémentes ton stock au moment où est enregistrée la commande, je vois pas trop où est le problème.
Avec un stock de 1 pièce :
Une première commande est enregistrée, la pièce est disponible donc dans une association entre le produit et la commande tu peux avoir un champ disponibilité qui vaudra vrai pour ce premier cas.
Ensuite, à la seconde commande, tu te retrouve avec un stock à 0. Dans ce cas dans ton association entre le produit et la commande, ton champ indiquant la disponibilité vaut faux.
Et puis si tu dois gérer différente quantité de commande, à ce moment là ton champ indiquant la disponibilité des produits peut être un champ numérique indiquant combien de produits étaient disponibles à la commande.
Ce que je comprend pas, c'est qu'apparemment tu cherche à calculer les disponibilité après avoir enregistré les commandes alors qu'il est bien plus simple de les calculer au moment où tu enregistre la commande, non?
Marsh Posté le 04-05-2008 à 19:33:31
Humm c'est pas facile a expliquer en fait.
L'application est une gestion commerciale developpée par mes soins.
Voila je cherche comment faire pour lorsque je mets a jour mon stock via mon admin, pour qu'a la volée, une fonction passe en boucle ma table produits_vendus pour modifier le statut et le passé en dispo, tout en prenant en compte la quantité en commande pour chaque produit et la quantité en stock.
Ex:
stock = 20
Commande 1 = 10 (qté)
Commande 2 = 5 (qté)
Commande 3 = 7 (qté)
Je souhait faire une fonction qui va me donner pour resultat:
Commande 1 = Ok (donc on update le statut a dispo)
Commande 2 = OK (on update aussi le statut)
Commande 3 = pas dispo (car stock - 10 - 5 - 7 = -2 ) ==> En gros il ne reste pas assez de produit en stock pour mettre ce produit en dispo.
J'espere avoir été clair cette fois ci. ?
Merci de votre aide, car la je seche
Marsh Posté le 05-05-2008 à 01:59:17
Je comprends toujours pas mieux
En voyant la chose simplement, tu as un stock. Si la quantité de la commande est inférieure ou égale à ce stock => ok
Sinon la commande ne peut être honorée en l'état.
Après si tu veux gérer une commande que tu peux pas honorer c'est autre chose. Mais au final t'as une quantité connue que tu gères en temps réel, tu sais donc avant de valider une commande si t'en a assez ou pas.
Marsh Posté le 05-05-2008 à 11:53:07
En fait je m'embrouille tout seul !
Je vais essayer de faire ca autrement:
J'ai 3 tables: facture, facture_has_objet et stock
je voudrais faire la requête suivante
Sélectionner toutes les entrées dans la table facture
dont au moins une des entrées de la table facture_has_objet à une quantité inférieur à la quantité de ma table stock.
Sachant que s'il n'y pas d'équivalence entre la table facture_has_objet et stock, alors la valeur de stock = 0.
Je veux donc afficher toutes les commandes dont au moins un des produits commandé n'est pas en quantité suffisante dans le stock.
Table facture
idfacture
Table facture_has_objet
facture_idfacture
reference
quantite
Table stock
idstock
reference
quantite
Merci de votre aide
Marsh Posté le 05-05-2008 à 12:22:50
Ah bah voilà un problème énoncé clairement
Tu crois pas que tu pourrais faire un effort de réflexion à Et au passage c'est du sql pas du php
Marsh Posté le 05-05-2008 à 12:28:18
Code :
|
ça doit faire ce que tu demandes, aux erreurs de syntaxe près.
Par contre, les perfs de cette requête vont être absolument lamentables. Pense à bien mettre tes indexs sur tous les champs où cela sera nécessaire.
Si c'est encore trop lent, revois la structure de ta base
Marsh Posté le 05-05-2008 à 16:45:48
Le code que tu m'as donné ne me retourne pas le résultat souhaité
Ce que je veux faire c'est afficher toutes les commandes dont au moins un des produits commandé n'est pas en quantité suffisante dans le stock.
Sachant que la table stock est alimentée à a chaque fois que je rentre un produit en stock (reception), par contre si un produit en commande n'a jamais été receptionné, il n'a pas d'entrée dans cette table stock.
Voila mon code de départ avant que je ne me demande si on ne pouvais pas faire ca de facon plus propre, ca va peut etre vous aider à comprendre ce que je cherche a faire
Code :
|
Marsh Posté le 05-05-2008 à 20:11:52
Je pense que tu devrais apprendre les bases du SQL...
http://sql.developpez.com/sqlaz/jointures/
Marsh Posté le 06-05-2008 à 16:27:06
Merci du conseil mais j'ai deja regardé par ici !
Si je demande un peu d'aide sur ce site c'est que je n'y suis pas parvenu par mes moyens. Effectivement je ne maitrise pas trop la partie jointure et sous requete.
Marsh Posté le 06-05-2008 à 16:49:48
pipo83 a écrit : Le code que tu m'as donné ne me retourne pas le résultat souhaité |
Ouais bin malgré toutes tes explications, j'arrive toujours pas a voir le résultat que tu souhaites obtenir.
pipo83 a écrit : Ce que je veux faire c'est afficher toutes les commandes dont au moins un des produits commandé n'est pas en quantité suffisante dans le stock. |
Oui mais le problème vu la structure de ta bdd c'est que la table stock ne contient pas le stock mais la somme des entrées sans tenir compte des sorties ( ou alors j'ai rien compris).
Admettons la situation suivante:
1/ Ajout de 10 pour la reference 1
2/ Ajout de 5 pour la référence 1
3/ Commande de 12 pour la référence 1
4/ Ajout de 3 pour la référence 1
D'après tes explications, dans la table stock pour la référence 1, j'aurais 18 en quantité au lieu de 6.
Donc pour savoir si le stock est suffisant, il faut prendre en compte les factures précédentes. Enfin c'est ce que j'avais compris de ton "apres decompte des references suivant leur ID ASC".
Et bien la requête donnée plus haut c'est exactement ce qu'elle fait.
Le > avait pour but de remonter les factures non couvertes par le stock, si tu veux celles couvertes remplace le par <=
Si maintenant ta table stock est toujours à jour, une simple jointure suffit:
Code :
|
Marsh Posté le 06-05-2008 à 17:30:05
Citation : Oui mais le problème vu la structure de ta bdd c'est que la table stock ne contient pas le stock mais la somme des entrées sans tenir compte des sorties ( ou alors j'ai rien compris). |
Ma table stock contient bien la valeur du stock et non pas les entrées. En fait cette table stock je la mets a jour quand dans mon admin je valide la reception du produit. Par contre si une référence n'a jamais étée receptionné dans mon admin, elle n'est pas présente dans la table stock, car je ne l'ai jamais recue !
Je ne cherche a faire de décompte de stock mais a afficher dans un tableau la liste des commandes dont au moins un des produits (de la table facture_has_objet) n'est pas en quantité suffisante (dans la table stock) ou dont la référence n'a pas été trouvée dans la table stock (c'est la cas par ex des références que je n'ai jamais validé comme reçues dans mon admin)
Marsh Posté le 08-05-2008 à 21:30:30
Merci Anapajari !
J'ai réussi en bidouillant avec ta réponse.
Marsh Posté le 04-05-2008 à 12:35:55
Bonjour a tous,
j'ai un petit problème auquel je ne trouve pas de solution, je vais essayer d'être clair pour vous l'expliquer.
Je cherche un moyen de calculer la valeur restante en fonction de l'ordre d'incrémentation dans ma base des entrées Commandes.
Ex:
Dans un tableau j'ai les 3 lignes suvantes:
-REFERENCE1 QUANTITE(5) ID(1) devrait afficher==> 5 en stock
-REFERENCE2 QUANTITE(1) ID(2)
-REFERENCE1 QUANTITE(2) ID(3) devrait afficher==> 2 en stock
Dans une table stock, j'ai la valeur de mon stock pour chaque reference, j'ai par exemple 10 en quantite pour la reference REFERENCE1
Je voudrais afficher en face de chaque reference le stock restant apres decompte des references suivant leur ID ASC
Quelle fonction permet de faire cela ?
Merci de votre aide.....