|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Analyste d'exploitation Inscription : janvier 2013 Messages : 3 ![]() |
Bonjour tout le monde
Je cherche depuis quelques jours une solution à mon problème. Mon projet consiste à gérer la gestion de stock des produits. Ce que je veux faire c'est de gérer les stocks. j'ai 3 fichiers, Ligne Prod-Livraison « relation composée BL-Produit » :"ID_BL_Prod , N° BL, IDProd ,Quantité Liv ", Produit:" IDProd, Nom Produit, Prix HT", Stocks :"N° Stock , IDProd, Quantité en stock ". Je veux que lorsque je clique sur ajouter, chaque produit livré diminue en stock . Par exemple la Qté En Stock du produit X = 200, si dans ma table (Table fichier) je livre ce produit avec Qté=50 la Qté En Stock de celui-ci devient 150 (y compris la Qté en stock du fichier stocks bien sûr) et ainsi de suite pour chaque produit. J’ai essayé plusieurs procédures d’indice produit mais ca n’a pas marcher (La Qté en stock du produit prédécesseur ou successeur soustraire la qté du produit indicé (selon action insertion – ajout – ou modif de la Qté) Voici mon code : Code :
Merci bien. |
||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() |
Bonjour,
Je ne suis pas sûr de bien comprendre votre problème.... Ce que je sais c'est qu'une gestion de stock nécessite généralement une table d'entrée sortie où chaque mouvement a un sens (le plus simple de gérer le sens 1 pour les entrées et -1 pour les sorties afin de calculer les quantités avec une simple multiplication). Le stock initial + la somme des mouvements multipliés par leurs sens permettra alors de connaitre la quantité actuellement en stock. Lors d'un inventaire c'est la démarche inverse, on mets à jour le stock de la table des produits et la différence permet de calculer le mouvement nécessaire (en 1 ou -1). Je ne sais pas si ça vous aidera....
__________________
SQL : le véritable Esperanto PHP/HTML/JS/CSS : et avec ça tu fais fessebouc ! Windev : ***** et **** parce que ***** même si ****** bien ![]() "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris) |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Analyste d'exploitation Inscription : janvier 2013 Messages : 3 ![]() |
Merci michel.souris
par exemple l'ajout dans la table: Chaise 260 Table 340 Chaise - Qte Liv 10 * En Stk 250 Table - 20 * 230 calculé 250 moin 20 -- évidement je sais,l'augmentation de la Qté en stock ce fait par l'achat 'Entrées' inversement aux sorties "ce que j'ai dans l'analyse *Entrées,Sorties et Stocks* comme fichiers.si j'ai bien compris votre réponse un seul fichier Mouvement stocks gère tous le stock |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 550 ![]() |
Bonjour,
Chez nous on a deux tables: Une pour les encours de stock Une pour les mouvements de stock. La mise à jour des encours de stock passe par 2 triggers: Le premier trigger est sur la table des lignes de document: la création/modification d'une ligne de document crée ou modifie un mouvement de stock Le deuxième trigger est sur la table des mouvements: la création/modification d'un mouvement modifie l'encours de stock corrrespondant Pour les calculs, dans les premier trigger il suffit de soustraire la valeur "avant modification" et d'ajouter la valeur "après modification". Ainsi tous les cas sont gérés, et le fait de passer par des triggers permet de s'affranchir de l'interface utilisateur. Chez nous comme on enregistre autant les mouvement "réels" (qui influent sur le stock) que "prévisionnels" (qui n'influent pas sur le stock), la table des mouvements est quelque peu volumineuse, ce qui ne pose pas de problème avec les bons indexes. Tatayo. |
|
|
10
|
|
|
#5 | ||||||||||||
|
Membre actif
![]() |
Citation:
Citation:
L'autre table sert à gérer l'état de votre stock (on pourrait également que vous stockiez d'autre information dans cette table si vous deviez par exemple gérer des origines et des zones de stockage). Si tu n'as pas la possibilité de faire tourner de trigger (parce que tu es en HF classic par exemple) tu peux faire tourner un script qui assure la cohérence des données. En ce qui concerne ton script... J'avoue je n'y comprend pas grand chose... Là je n'ai pas Windev sous la main mais j'ai l'impression que : Code :
Code :
Si tu trouve ton stock tout va bien, ton curseur se positionne sur le bon enregistrement tu modifie ton stock "de la bonne ligne" en base de données. Par contre si tu appelle plusieurs fois à la suite ta fonction le curseur reste sur la même position (enfin je pense) du coup je sais pas trop ce que tu fais ! Code :
Donc : Code :
Code :
Et du manière général, si je peux permettre, teste le retour de tes fonctions et traite les SINON. [EDIT] Et passe ton code au pas à pas ! [/EDIT]
__________________
SQL : le véritable Esperanto PHP/HTML/JS/CSS : et avec ça tu fais fessebouc ! Windev : ***** et **** parce que ***** même si ****** bien ![]() "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris) |
||||||||||||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Analyste d'exploitation Inscription : janvier 2013 Messages : 3 ![]() |
Salut michel.souris , tatayo , merci d'avoir répondus , de vos aides et précieuses informations
j'ajouterai les fichiers mouvement et encours du stock en liaison avec le le fichier produit et fournisseur ainsi que le client Mouvement :"IdMouv,Num_Four,Num_Prod,Libelle*Entrées,Sorties*,Qté,Date, et Num_Client" qui peut être sera mon probleme -Num_Client- le premier trigger j'ai pas d'idées de ses champs ... voici une partie de mon analyse comment était : ![]() Lors de l’ajout initial d’un produit ne pose aucun problème en Qté du stock (calculée parfaitement) le problème que j'avais c'est que lors de l'ajout ou modification d'une Qté à la livrée d'un produit existe dans la table : QtéStock = 390+2 - 22 = 380 ![]() la soustraction se fait entre la qté du dernier ajouté*dernière position du curseur* et la somme : Col_Qté_Livrée+Sai_Qté_Liv : 800 - 22 = 780 ![]() c se que j'ai voulu résourde s'il y'a un script pour ça..et merci pour vos lumières
|
|
|
00
|
|
|
#7 |
|
Membre actif
![]() |
Citation:
Je voudrais bien vous aider mais malheureusement je ne pense pas comprendre pas tout ce que vous cherchez à dire. La chose que je constate sur votre MCD c'est qu'il y a une table ENTREE et une table SORTIE au lieu d'avoir une table MOUVEMENT unique qui gère les entrées et les sorties. Ensuite vos exemples de calculs sont erronés... QtéStock = 390+2 - 22 = 380 >>>> QtéStock = 390+2 - 22 = 370 Col_Qté_Livrée+Sai_Qté_Liv : 800 - 22 = 780 >>> 800 - 22 = 778 Ca ne facilite pas la compréhension de votre problème. Peut être est-ce volontaire afin de montrer ce qui vous dérange ?
__________________
SQL : le véritable Esperanto PHP/HTML/JS/CSS : et avec ça tu fais fessebouc ! Windev : ***** et **** parce que ***** même si ****** bien ![]() "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris) |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com