IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Aide calcul quantité en stock


Sujet :

WinDev

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Emirats Arabes

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Aide calcul quantité en stock
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    PROCEDURE AjouteLigneBL()
     
    nRefProduit			est un entier
    nIndiceProduit		est un entier
     
    nRefProduit = COMBO_Produits..Valeur
    nIndiceProduit = TableCherche(TABLE_Bon_Liv.COL_Num_Prod,nRefProduit)
     
    SI nIndiceProduit = -1 ALORS 
     
    	HLitRecherchePremier(Stocks, Num_Prod,TABLE_Bon_Liv.COL_Num_Prod)		
     
    	SI HTrouve(Stocks) = Vrai ALORS  		
    		Stocks.Qte_en_Stock = Stocks.Qte_en_Stock - (SAI_Qte_BLExt) 	
    	FIN	
     
    HModifie(Stocks)	
    	// Ajoute une ligne pour ce produit
    TableAjouteLigne(TABLE_Bon_Liv, 0, Bon_Liv.Num_BL,Produit.Num_Prod, Produit.Des_Prod,SAI_Qte_BL, Stocks.Qte_en_Stock)
     
    	TableEnregistre(TABLE_Bon_Liv)
     
     
    SINON  //1 : Ajouter
    	//2 : Modifier
    	//3 : Annuler
     
    	SELON Dialogue ("La référence du produit indiquée est déjà présente dans la commande.")
    		// Ajouter
     
    CAS 1	Stocks.Qte_en_Stock += TABLE_Bon_Liv.COL_Qte_Livree_Ext[nIndiceProduit] 	
    	TABLE_Bon_Liv.COL_Qte_Livree_Ext[nIndiceProduit] += SAI_Qte_BLExt
     
    	Stocks.Qte_en_Stock -= TABLE_Bon_Liv.COL_Qte_Livree_Ext[nIndiceProduit]	
    	HModifie(Stocks)			
    	TABLE_Bon_Liv.COL_Qte_Stock[nIndiceProduit] = stocks.Qte_en_Stock
    Que dois-je faire? Pouvez-vous m'aider s'il vous plaît ?

    Merci bien.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    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

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Emirats Arabes

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    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

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    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.

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,

    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.
    Gros +1 pour les triggers !
    si j'ai bien compris votre réponse un seul fichier Mouvement stocks gère tous le stock
    Une table sert à gérer les entrées sorties
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nIndiceProduit = TableCherche(TABLE_Bon_Liv.COL_Num_Prod,nRefProduit)
     
    SI nIndiceProduit = -1 ALORS 
     
    	HLitRecherchePremier(Stocks, Num_Prod,TABLE_Bon_Liv.COL_Num_Prod)
    C'est plutôt bizarre... tu cherche la valeur de ta combo dans ta table au début puis tu dis que si tu trouve pas dans ta table tu bas chercher dans ton fichier la ligne sélectionnée (enfin je crois moi je mets plutôt COL_Num_Prod[TABLE_Bon_Liv] si je veux la ligne courante) donc forcément, enfin il me semble, que tu vas trouver n'importe quoi. Je crois que tu devrais plutôt chercher la valeur de ta combo dans ton fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	SI HTrouve(Stocks) = Vrai ALORS 
    		Stocks.Qte_en_Stock = Stocks.Qte_en_Stock - (SAI_Qte_BLExt) 
    	FIN 
     
    	HModifie(Stocks) 
    	// Ajoute une ligne pour ce produit
    	TableAjouteLigne(TABLE_Bon_Liv, 0, Bon_Liv.Num_BL,Produit.Num_Prod, Produit.Des_Prod,SAI_Qte_BL, 	Stocks.Qte_en_Stock)
     
    	TableEnregistre(TABLE_Bon_Liv)
    Ensuite ici tu ne traite pas tout les cas.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SINON
    //1 : Ajouter
    //2 : Modifier
    //3 : Annuler
     
    SELON Dialogue ("La référence du produit indiquée est déjà présente dans la commande.")
    // Ajouter
     
    	CAS 1 Stocks.Qte_en_Stock += TABLE_Bon_Liv.COL_Qte_Livree_Ext[nIndiceProduit] 
    		TABLE_Bon_Liv.COL_Qte_Livree_Ext[nIndiceProduit] += SAI_Qte_BLExt
     
    		Stocks.Qte_en_Stock -= TABLE_Bon_Liv.COL_Qte_Livree_Ext[nIndiceProduit] 
    		HModifie(Stocks) 
    		TABLE_Bon_Liv.COL_Qte_Stock[nIndiceProduit] = stocks.Qte_en_Stock
    Là tu t'y prends mal. Déjà tu devrais décrémenter ton stock de la quantité à ajouter au BL.

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Stocks.Qte_en_Stock-=SAI_Qte_BLExt
    HModifie(Stocks)
    Ensuite tu modifie ton affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TABLE_Bon_Liv.COL_Qte_Livree_Ext[nIndiceProduit] += SAI_Qte_BLExt
    TABLE_Bon_Liv.COL_Qte_Stock[nIndiceProduit] -= SAI_Qte_BLExt
    En plus je crois que tu oublie de modifier la position de ton curseur, tu ne fais pas de HLitRecherche sur la table Stocks....

    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

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  6. #6
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Emirats Arabes

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    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 , pour les intégrités réferencielle ça sera un combat
    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

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Citation Envoyé par AlelMourad Voir le message
    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 , pour les intégrités réferencielle ça sera un combat
    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
    Bonjour,

    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

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

Discussions similaires

  1. Calculer la quantité en stock d'un article
    Par sandy3 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/11/2014, 19h58
  2. [Débutant] Calculer la quantité en stock et l'afficher automatiquement dans un datagridview
    Par sahar-dead angel dans le forum VB.NET
    Réponses: 3
    Dernier message: 01/07/2014, 09h45
  3. [XL-2003] Aide calcul de stock en VBA
    Par Nishruu05 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/05/2011, 14h59
  4. [AC-2007] Calculer quantité stock
    Par DyDansh dans le forum IHM
    Réponses: 2
    Dernier message: 29/04/2010, 16h21
  5. [MySQL] Aide envoie commande (calcul quantité + prix commande total)
    Par klue_ dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/05/2007, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo