Bonjour,
J'essaye de modéliser une base de donnée pour suivre des négociations de plusieurs contrats en simultané. La société (= nous) fait des offres, le client fait des contre-offres, jusqu’à ce qu’un accord soit conclu (montant offre = montant contre-offre). Le but est de créer un tableau qui résume l’avancement des négociations pour tous les contrats (dernière offre, dernière contre-offre, négociations conclues ou non…)
-------------
Plus précisément, on a une première table « Contrats » avec les champs :
- Numéro_contrat (numérique)
- Nom_contrat (texte)
Pour chaque contrat il arrive de nombreux évènements : à une certaine date, un montant est proposé par l’une ou l’autre des parties (nous = offre, ou le client = contre-offre). L’évènement peut donc être de deux types : offre (envoi par nous) ou contre-offre (envoyée par le client).
=> Table « Types_évènement » avec un champ « Type » et les valeurs « offre » et « contre-offre ».
Pour chaque évènement qu’on entre dans la base de données, on spécifie aussi le statut du contrat :
=> Table « Statuts » avec un champ « Statut » et les valeurs « en négociation », « accord conclu », « en attente réponse client », etc.
La table évènements est donc montée de la façon suivante :
=> Table « Évènements » avec les champs :
- Date_évènement (date)
- Numéro_contrat (numérique) : liste de choix faisant référence à la table « Contrats »
- Type : liste de choix faisant référence à la table « Types_évènement »
- Montant (monétaire)
- Statut : liste de choix faisant référence à la table « Statuts »
-------------
Ce que j’ai déjà fait :
États :
- Un état affichant uniquement la liste des contrats
- Un état affichant l’historique complet pour tous les contrats (affichage pour chaque contrat de tous les évènements avec leur type, leur montant et leur statut par ordre chronologique, regroupés par contrat)
Formulaires :
- Des formulaires pour ajouter un nouveau contrat ou un nouvel évènement
Requêtes :
- Une requête qui sort la date de l’offre la plus récente pour chaque contrat. Pour cela :
- On fait une requête sélection,
- On ajoute les tables Contrats, Évènements et Types_évènement et on joint les champs correspondants
- On prend les champs
- « Numéro_contrat » (avec tri croissant) de la table Contrats
- « Nom_contrat » de la table Contrats
- « Date_évènement » de la table Évènements
- « Type » de la table Types_évènement => avec critère « contre-offre »,
- On affiche les totaux de colonne et on met Max sur « Date_évènement »
-------------
Ce qu’on veut faire :
La requête indiquée ci-dessus est un début, mais je veux afficher un unique tableau avec une ligne par contrat, où on résume :
- Le numéro et le nom du contrat,
- L’offre la plus récente avec sa date et son montant,
- La contre-offre la plus récente avec sa date et son montant,
- Le statut le plus récent (en négociation, accord conclu, etc.)
Visiblement ça prend pas mal de requêtes et je n’y connais rien en SQL. Des idées ?
Partager