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

Access Discussion :

Gestion de stock en location


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Gestion de stock en location
    Bonjour à tous,

    Je suis en train de développer un fichier Access pour gérer les stocks de ma TPE (très petite entreprise) de location de matériel son et lumière.
    J’ai fait toute la partie d’architecture de la BDD ainsi que les différents formulaires de remplissage de cette dite BDD. Je bloque sur une dernière partie, qui est la plus importante, je cherche à savoir l’état de mes stocks à une date donnée.
    Malgré mes diverses recherches sur internet je n’ai pas trouvé ce que je cherchais.

    Voici mon schéma de BDD :
    Nom : Schéma stock.jpg
Affichages : 3139
Taille : 73,5 Ko

    L’important c’est de savoir si les Produits sont disponibles entre les dates de début et de fin de marge.
    Qui plus ai il y a des Pack, constitué d’autre produit, les différents Pack sont listé dans la table des Produit.

    Comment puis-je faire pour que, lorsque je rentre une date, j’ai l’état de mon stock à cette date ? Et ce tout en tenant compte du matériel contenu dans les Packs ?
    Je ne sais pas trop par où commencer…

    Merci beaucoup si vous avez des pistes de réflexion à ce sujet. Si il y a des choses que j'ai mal expliqué n'hésitez pas à poser des questions.
    Matthias

  2. #2
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour
    J'imagine que toutes tes tables ne sont pas présentes sur ton image !
    Je travail dans le même domaine, mais sans les livraisons ni presta.
    A mon (humble) avis , plusieurs remarques, pour commencer :

    a) faire une table "tarifs" avec un Id_Produit, Id_tva, le Prix_U_HT , une date de début et de fin. Cela permettra une évolution des tarifs.
    b) faire une table "tbl_tva" dans le même esprit que la table "tarifs" On l'a vu cette année ,le taux de tva peut changer.
    c) la table "T_Affaire" contient des champs qui n'ont rien à y faire . Elle ne devrait contenir que l'Id_Affaire,l'Id_Client ,éventuellement l'ID_responsable (il vaut mieux scinder les clients en 2 tables),la date de début et de fin de la location, l'ID_tva ,éventuellement qui à fait le devis. En gros, la partie administrative et les données fixes.
    d) faire une table "Detail_Affaire" ,qui contiendra la partie technique ; Id_Affaire, Id_Produit, quantité
    mais aussi Id_tva, et Prix_U_HT (voir les discussions sur l’utilité de stocker le pu plutôt que d’alourdir les RecordSource des formulaires).
    c) sans doute faire une (ou 2) table à part pour les prestations (livraisons ,montage, régie …)

    Les "packs" c'est un peu galère, surtout quand on débute !

    Pour le planning, je procède ainsi:

    - une table "moncalendrier", voir http://www.developpez.net/forums/d403854/logiciels/microsoft-office/access/ihm/creer-calendrier/
    Cette table contient la période de travail que tu aura choisi (un mois, 3 mois ,un an ...).
    - une table "planning" avec un champ "madate" ,un champ "Id_Produit" et un champ "reste".

    A chaque ouverture de ma base ,la table "moncalendrier" est refaite en tenant compte de la location la plus ancienne (Début location) - 7 jours pour avoir une marge .Ensuite ,les données de la table planning sont effacées et reconstruites de la façon suivante (en remplaçant la table materiel par ta table "T_Produit").

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO planning ( madate, code, reste )
    SELECT moncalendrier.madate, materiel.code, materiel.stock
    FROM moncalendrier, materiel
    WHERE ((moncalendrier.madate)=True)
    ORDER BY moncalendrier.madate, materiel.cle;
    Ainsi, tu obtiens une table de x jours multiplié par x Id_Produit dont le champ « reste » = le stock. Dans mon cas ,86760 enregistrements en travaillant sur un an.
    Ensuite, tu mets à jour en fonction des locations de « T_Affaire » et de « Detail_Affaire ». Pour simplifier, j’ais fait d’ abord une requête nommé « SimpleDetailPlanning” regroupant les 2 tables précitées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE SimpleDetailPlanning LEFT JOIN planning ON SimpleDetailPlanning.code = planning.code SET planning.reste = planning!reste-SimpleDetailPlanning!quant
    WHERE (((planning.madate)>=[SimpleDetailPlanning]![depart] And (planning.madate)<[SimpleDetailPlanning]![retour]));
    A noter que dans mon cas ,le matériel étant sensé revenir le matin ,il n’est donc pas décompté le jour du retour (<[SimpleDetailPlanning]![retour]).

    Bonne lecture et bon courage .

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Je pense qu'il te faudrait une table "reservation" (je n'ai pas tout compris a ton MCD peut être l'as tu déjà) qui liste les réservations effectuées, ainsi tu pourra obtenir avec des requêtes très simples des infos telles que : toutes les réservations, les réservation par produits et/ou par date etc.

  4. #4
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour le forum.
    @ Yunie68 , visiblement c'est la table "T_Affaire" qui fait office de table "reservation".
    Une affaire serait l'équivalent d'une réservation ,voir les points c et d de ma réponse.
    Cdlt

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci beaucoup pour ta réponse Thierry !

    En effet je n'ai pas mis toutes les tables, il manque 3 tables : T_clients, T_interlocuteurs, (Du coup scindé comme tu la dit) et T_jours (c'est une petite tables pour la facturation de plusieurs jours de location). Je ne les avait pas mise pour concentrer ma questions sur les stock, cela dit j’apprécie beaucoup pour ton retour sur le reste!

    Je vais répondre point par point pour voir si j'ai bien compris et pour te demander 1 ou 2 clarifications.
    a) Du coup dans cette table les champs date de début et fin c'est pour savoir quand j'ai changé le prix de mes articles, càd remplir le champ "fin" quand je change mon prix, c'est bien ça ?
    b) Selon ton expérience, Pense tu qu'il vaut mieux adapter la tva pour chaque produit où par "catégorie" des produits ? Et j'imagine que c'est le même concept que a) pour les dates.
    c) En fait je comprend pas trop ta remarque, dans cette table j'ai essayé de mettre toutes les données fixe comme tu dit, par exemple le % d'accompte. Pourquoi il faudrait séparer ces données dans une autre table ?
    d) en fait le "détail_affaire" c'est mon affaire produit non ?

    Concernant le planning, j'ai bien compris la logique et ce à quoi tu arrive par contre il y qq truc que je ne sais pas trop comment faire!
    - Comment fait-tu pour remettre à jour la table Planning à partir d'une date précise ? tu utilise la fonction crecal ?

    - j'arrive pas à utiliser la commande avec "SimpleDetailPlanning" il faut utiliser DoCmd.RunSQL ? J'ai trouvé ça : http://www.developpez.net/forums/d10...nements-table/
    Tu pense que ça peut être utilisé ?

    Voilà
    Désolé pour le temps que j'ai mis à te répondre, je voulais bien lire et relire ce que tu m'as écrit...

    Matthias

  6. #6
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour Matthias.

    a) et b) = oui .

    exemple ,y compris les accessoires gratuits:

    Id_Tarif code DateDebutPrix DateFinPrix PuHt
    131 hk 01/01/2000 31/12/2013 10,00
    285 hk 01/01/2014 01/01/2050 11,00
    280 xlrm 01/01/2000 01/01/2050 0,00

    Id_Tva DateDebutPrix DateFinPrix Tva
    1 01/01/2000 31/12/2013 0,196
    2 02/01/2014 01/01/2050 0,20

    c) et d) :C'est plus logique de travailler avec un formulaire et son sous-formulaire, le premier étant lié aux données administratives (T_Affaire), le second ayant comme source les données matériels (détail_affaire).Si tu veux aussi visualiser les données "montage" (techniciens ...) il faudra les mettre dans un onglet de ce formulaire .Chaque partie étant en relation père-fils par le numéro de réservation.
    -J'utilise la fonction crecal pour creer la table "moncalendrier".
    -Concernant ton lien, les évènements de table ne sont apparus qu'à partir de 2010. J'utilise Access 2003 au boulot et 2007 (mdb) à la maison.
    _Docmd.RunSql "UPDATE SimpleDetailPlanning LEFT JOIN ......" met à jour la table planning en fonction des réservations déjà prises (mise à jour global).
    Pour le reste ,je reponds tout à l'heure.

  7. #7
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut suite
    Là ,celà va se compliquer un peu. Avec Access tu as le choix de manipuler du sql en vba , et/ou de faire des requetes en dure en benéficiant de la technologie Rushmore. Certain "puristes" voudraient des applications épurées, sans requetes visibles. C'est à mon avis une erreur ,car avec une requete, tu peux verifier facilement si tu obtiens les résultats attendus, c'est aussi plus facile à maintenir, à faire évoluer et tout simplement à comprendre pour quelqu'un qui reprendrait ton appli. C'est le cas si on est obligé de passer par 2 ou 3 requetes successives pour obtenir ce que l'on veux. Certaine de ces requetes "preliminaires" peuvent servir à plusieurs endroits de ton application.
    Le cas est un peu different si tu utilises des variables dans les requetes. Là c'est plus pratique de passer par sql/vba.

    Dans mon application j'utilise 2 formulaires distincts. Un pour les reservations uniquement ,un autre pour visualiser ,modifier une réservation existante.Pour mettre à jour les données de la table planning à partir du form réservation, dans un module indépendant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub CalculResaReservation()
    'met à jour les donnees planning à la fermeture du form reservation
        DoCmd.SetWarnings False
     
       DoCmd.OpenQuery "calcul reservation"
     
        DoCmd.SetWarnings True
     
    End Sub
    La requete "calcul reservation" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE planning INNER JOIN Requête_Matthias ON planning.code = Requête_Matthias.code SET planning.reste = [planning]![reste]-[Requête_Matthias]![quant]
    WHERE (((planning.madate)>=[Requête_Matthias]![depart] And (planning.madate)<[Requête_Matthias]![retour]));
    Comme expliqué au debut de ce message j'ai des requetes "type" que j'utilise à plusieurs endroits de mon appli.Alors pour simplifié, je t'ai fais un exemple de requete qui lie les 2 tables principales (dans ton cas ce sera "T_Affaire" et "détail_affaire") et en ne selectionnant que la réservation en cours.
    La requete "Requête_Matthias" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCTROW resa_simple.reservation, resa_simple.depart, resa_simple.retour, detail_resa.code, detail_resa.quant
    FROM resa_simple INNER JOIN detail_resa ON resa_simple.reservation = detail_resa.reservation
    WHERE (((resa_simple.reservation)=[Formulaires]![reservation]![numero reserv]));
    Ainsi, ne sont concernés que le(s) matériel(s) réservé(s) dans l'interval de date du form réservation.

    Pour le 2° formulaire, celui de visualisation/modification, il ya encore énormément de chose à dire !
    Si il y a des suppressions, modification de quantité etc ... soit il faut recalculer tout le planning à chaque modif ,mais celà peut-etre contraignant en réseau ,soit il faut mettre à jour pour chaque materiel modifié/supprimé. Là ,c'est de l'optimisation qui peut faire gagner pas mal de temps en réseau, mais c'est compliqué à mettre en place !
    Bonne lecture.

Discussions similaires

  1. Gestion de stock : Formule en section Détail
    Par JeremieT dans le forum IHM
    Réponses: 4
    Dernier message: 16/12/2005, 17h02
  2. Gestion de stock CMUP après chaque entrée
    Par priest69 dans le forum Access
    Réponses: 9
    Dernier message: 13/12/2005, 10h03
  3. Gestion de stock - Prix Moyen Pondéré
    Par hugo69 dans le forum Access
    Réponses: 33
    Dernier message: 28/10/2005, 17h03
  4. Analyses du progiciel de gestion de stock COSWIN CS 5.2
    Par africanroseonlyone dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 13/10/2005, 15h01
  5. gestion des stocks
    Par gekondo dans le forum Access
    Réponses: 1
    Dernier message: 30/09/2005, 11h41

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