Comment gérer la tarification ?

Résolu
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 - 8 avril 2009 à 00:25
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 - 12 avril 2009 à 03:25
Bonsoir à tous,

je suis devenu insomniaque depuis que j'ai un problème de conception . Je suis entrain de cogiter sur la conception d'une gestion de laboratoire d'analyses bio-médicale. Mon problème est que je ne sais pas comment gérer la tarification des examens. En supposant qu'à une date D1 un examen X coûte 30 euros et que deux semaines plus tard (par exemple le 21 mars) ce même examen passe à 35 euros à présent. Comment ne pas fausser mes calculs lorsque je voudrai avoir l'état mensuels des recettes sachant que le passage de 30 à 35 euros a eu lieu durant le mois (20 jours à 30 euros et 11 jours à 35 euros)? Merci d'avance de sauver la vie de quelqu'un qui agonise .

NB : Voici mes entités.

=Entité Examen===
-numexam
-dateexam

=Entité Tarif=====
-numtarif
-tarif

Cordialement.

12 réponses

radcur Messages postés 282 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 15 août 2012 2
9 avril 2009 à 03:31
bonsoir,

pour ma part c'est bien ce que j'expliquais à l'exception que RefTarif, Date_debut et Date_fin sont la clé primaire.  Ce n'est pas le cas dans mon MCD car seulement RefTarif est souligné.  

Par contre, ça c'est à toi de voir, est-il possible d'avoir plusieurs examens dans la même facturation ? Si oui, ton MCD aura besoin de modification.

Je crois que maintenant, c'est à toi de prendre la solution qui te semble la plus appropriée

Sur ce,
Bonne soirée
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 avril 2009 à 15:36
Re

NOTA important pour la compréhension de mes explicatins :
Pour moi, RefExam est la référence du type d'analyse, pas l'identifiant d'une fiche client
La table Examen est, pour moi, la fiche type décrivant un examen.
Ta gestion d'une fiche client est ailleurs et hors de ces explicatifs

Pour ma part (table tarifaire), non, ce n'est pas ça.
La table Tarification :
   Remplacer RefTarif par RefExam
   Déclarer les 2 champs RefTarif et RefIndexTarif comme clé primaire
La table Examen :
   Ajouter un champ RefIndexTarif
   Ajouter lien entre RefExam+RefIndexTarif vers les mêmes champs de la table Tarification
Dans le programme :
A la création d'une nouvelle fiche d'examen ET UNIQUEMENT A CE MOMENT LA :
(il n'est pas question de pourvoir modifier ces champs après coup)
- Rechercher dans Tarification :
   Le champ RefExam correspond au RefExam de la fiche que tu crées
   Le champ RefIndexTarif de plus grand pour ce RefExam, c'est à dire une requète du genre
   Select max(RefIndexTarif) From Tarification
    Where RefExam = X
   où X est la référence de l'examen de la fiche que tu es en train de créer
- Insérer cette valeur dans Examen:RefIndexTarif au moment de la validation de la fiche

Dans on programme toujours, quand tu voudras modifier un tarif, il te suffira de créer une nouvelle fiche dans Tarification en utilisant le même RefExam mais en incrémentant le RefIndexTarif.
Les nouvelles fiches d'examen prendront donc ce nouveau tarif puisqu'elles recherche le plus grand Index dispoinible pour cet examen.
Les fiches précédemment crées continueront à utiliser le RefIndexTarif qui leur a été attribué lors de la création de la fiche.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 avril 2009 à 01:30
Salut
Une solution : n'augmente pas les tarifs ... c'est une solution, non ?
Dans ton cas, comme dans celui d'une comptabilité, les tables tarifs ne doivent servir qu'une seule fois, à la création de la fiche.
A la création, tu interroge la table tarif et tu stockes le résultat dans la fiche, pas le lien vers le résultat.

Autre solution : Indexer les tarifs.
Quand un examen augmente, il ne faut pas toucher à la fiche tarif existante, mais en créer une autre fiche, avec une nouvelle référence, par exemple genre de lien :
   FicheExamen         FicheTarifs
   RefExam             RefTarif (1)
   RefTarif (1)        RefIndexTarif (2)
   RefIndexTarif (2)   Montant
                       DateCréation

Quand tu modifies un tarif, tu recopies le dernier tarif connu pour cette RefTarif dans une nouvelle fiche tarif, et tu incréemntes un Index.
Le lien avec la fiche examen doit donc avoir deux liens avec la fiche tarif

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
8 avril 2009 à 03:07
Salut jack et Merci pour ton aide. Je n'ai pas du tout compris ta 1ère méthode (Merci de bien vouloir m'éclaircir) mais si j'ai bien compris la seconde tu me proposes d'avoir deux tables (Examen et Tarif) et deux relations entre ces tables (FicheExamen et FicheTarifs avec comme propriétés pour cette dernière la date de création). Voici "schématisé" ce que j'ai compris :

Examen ***** FicheExamen ****** Tarif
refexam reftarif
dateexam refindextarif
resultat montant
datecreation
***** FicheTarif********

Est-ce bien cela? Désolé de te faire répéter mais je ne vois pas trop comment est-ce que tu me suggère de procéder. Merci d'avance de bien vouloir procéder par étape.

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
radcur Messages postés 282 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 15 août 2012 2
8 avril 2009 à 03:31
Bonjour,

Une autre alternative serait que dans ta table des tarifs, tu as un champ date_debut et un champ date_fin.
 Exemple:

Examens,      Date_debut,   Date_fin,   tarif
Examen X, 11-11-2008,30-03-2009,30$
Examen Y, 01-01-2008,31-12-2008,45$
Examen X, 01-04-2009, 01-01-2029,35$
Examen Y, 01-01-2009, 06-04-2009, 65$

À la date de l'examen X du client ABC, tu n'as qu'à vérifier quelle est la tarification en vigueur pour la date.

Advenant qu'il doit y avoir une correction de facturation, tu chargeras toujours le tarif en vigueur à la date de l'examen.
0
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
8 avril 2009 à 11:05
Salut radcur et Merci pour ton aide. Le problème de ta solution est qu'on ne sait jamais quand est-ce que le coût de l'examen sera modifié (aléa du coût de la vie). As-tu une autre solution pour moi s'il te plaît? Si tu as compris les propositions de jack, peux-tu me les expliquer s'il te plaît, elles me paraissent bien aussi? Merci d'avance.

Cordialement
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 avril 2009 à 12:29
Re
1ère solution :
Saisir le coût de ton examen lors de la création de la fiche examen pour un nouveau client
Ecrire / saisir le montant dans la fiche.
Aucune raison que ce montant soit modifié ensuite.
Mais cela t'oblige à saisir ce montant à chaque fois que tu crées une fiche examen pour un nouveau client

2ème solution :
En reprenant mes arguments, je vois que je me suis embrouillé.
On peut supprimer RefTarif et ne garder que RefExam et RefIndexTarif
La date n'est là que pour servir de repère et n'entre pas dans le lien entre les tables.
Créer une table de tarification avec, pour référence, 2 infos :
- La référence de l'examen : RefExam
- L'index de révision de prix : RefIndexTarif
Bien sûr, tu renseignes dans cette table tous les examens possible.
Quand tu veux modifier le tarif d'un examen, tu crées une nouvelle fiche avec la même RefExam, mais avec un nouveau RefIndexTarif (et accessoirement, la date à laquelle tu l'as fait)
Dans cette table, il y aura donc 2 clés primaires

A la création d'une fiche examen pour un nouveau client (et uniquement à ce moment là), ton programme devra aller rechercher dans la table Tarifs celui correspond à ton examen (RefExam) et prendre le tarif dont l'index de révision est le plus grand (RefIndexTarif).
Une fois ta fiche crée, il ne faudra plus modifier ces références.

Est-ce plus clair ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
radcur Messages postés 282 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 15 août 2012 2
8 avril 2009 à 18:58
Re

Les dates sont des références pour connaitre le tarif qui était en vigueur à la date de l'examen.  Ainsi si un client passe un examen X en date du 1er décembre 2008, il est facturé 30$.  S'il revient 5 mois plus tard (donc le premier avril 2009) passer de nouveau l'examen X, il sera facturé 35$ .  Impérativement tu dois avoir un écran de saisie de tarifs, quand tu créés une nouvelle tarification, tu entres la date d'entrée en vigueur et la date de fin est une date lointaine dans le futur et tu clos la période de facturation précendente en mettant dans la date_fin la date d'entrée en vigueur de la nouvelle facturation - 1 jour.  Donc avec la date de facturation, tu factureras toujours le tarif en vigueur de l'examen en question.

En gros ma solution ressemble à la 2e solution de Jack.  Plutôt que de passer par un index, j'utilisais la date de debut et de fin pour connaitre le tarif.  J'ai 3 champs en clés primaire (l'examen (son code), la date de début et la date de fin) alors que Jack n'en a que 2.
0
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
9 avril 2009 à 00:54
Bonsoir jack et radcur, je vous remercie du fond du coeur pour votre aide. Je vous envoies les images de vos propositions histoire d'être sûr que j'ai bien compris ce que vous me proposez.

 [%5Burl=http://www.zimagez.com/zimage/propositionjack.php%5D%5Bimg%5Dhttp://www.zimagez.com/avatar/propositionjack.jpg%5B/img%5D%5B/url%5D Proposition de jack :]

[%5Burl=http://www.zimagez.com/zimage/propositionradcur.php%5D%5Bimg%5Dhttp://www.zimagez.com/avatar/propositionradcur.jpg%5B/img%5D%5B/url%5D  Proposition de radcur : ]

Cordialement
0
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
9 avril 2009 à 01:03
heu désolé pour les liens.

jack

radcur
0
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
9 avril 2009 à 12:26
Merci à toi radcur pour ta très précieuse aide. Excellente journée.

Cordialement
0
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
12 avril 2009 à 03:25
Bonjour et Merci jack pour ta disponibilité, ta patience, ton aide et tes explications qui m'ont vraiment été salvateur. Je pense à présent pouvoir m'en sortir. Si tu es intéressé je pourrais envoyer mon MCD complet pour que tu me donnes ton avis. Qu'en penses-tu? Merci d'avance.

NB : Désolé pour le retard mais j'avais un problème de Net.

Cordialement.
0
Rejoignez-nous