Comment gérer la tarification ? [Résolu]

Signaler
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
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.
A voir également:

12 réponses

Messages postés
282
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
15 août 2012
2
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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
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)
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
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
Messages postés
282
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
15 août 2012
2
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.
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
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)
Messages postés
282
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
15 août 2012
2
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.
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
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
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
heu désolé pour les liens.

jack

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

Cordialement
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
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.