106 Gestion de la facturation des repas dans un restaurant scolaire

Download Report

Transcript 106 Gestion de la facturation des repas dans un restaurant scolaire

E
x
e
r
c
i
c
e
s
Vêtement
N° vêtement
Date minimum de reprise
Remis (O N)
1,1
1,1
Est classé
0,n
Type vêtement
N° type de vêtement
Libellé type de vêtement
0,n
1,1
Tarif
Prix vêtement
Est nettoyé
0,n
Correspond
0,n
0,n
1,n
Client
N° client
Nom client
Tél. client
Adresse client
1,n
Appartient
1,1
Facture
Période
Qualité
N° qualité
Nom qualité
N° période
Date début période
Date fin période
N° facture
Date facture
4 - Requête SQL
SELECT Nom_client, Adresse_client, Count(Facture.N°_facture) AS [Nombre de factures]
FROM ((Client INNER JOIN facture ON Client.N°_client = facture.N°_client) INNER JOIN Vêtement ON facture.
N°_facture = Vêtement.N°_facture) INNER JOIN Qualité ON Qualité.N°_qualité = Vêtement.N°_qualité
WHERE date_facture>Now()-180 AND Nom_qualité="luxe"
GROUP BY Nom_client
HAVING Count(Facture.N°_facture)>3
Gestion de la facturation des repas
106 dans un restaurant scolaire
1 - Modèle de données à compléter
Lien familial
0,n
Parent
N° parent
Nom parent
Adresse parent
24
0,n
E
x
e
r
c
i
c
e
s
2 - Modèle de flux
Feuille réservation remplie
Activité
Gestion des
réservations
Liste des repas
réservés
Activité
Facturation
Facture
Parents
Règlement
Reçu et feuille réservation
Activité
Gestion des
règlements
Activité
Modification
du prix
Prix modifié
Conseil
d’établissement
Nouveau prix repas
Lettre de rappel
Activité
Relance
3 - Le MOTA
Type de poste : Économat
Feuilles
de réservation
remplies
30 du mois
précédent
ET
Jour
Enfant
Gestion des réservations
Saisie des repas réservés
Toujours
Planning
Créé
Liste repas
réservés
Il est nécessaire de créer l’association Planning pour connaître les repas réservés par jour et par enfant.
25
E
x
e
r
c
i
c
e
s
Type de poste : Facturation
2 du mois
Liste repas
réservés
ET
Mois
Enfant
Facturation
Calcul montants à régler
Création factures
Parent
Toujours
Planning
Facture
Facture
Créée
Règlement
Gestion des règlements
MAJ de la facture
Facture
Créée
Toujours
Reçu et feuille
réservation
La donnée Payée dans l’entité Facture prend la valeur OUI.
26
Payée
E
x
e
r
c
i
c
e
s
Nouveau
prix repas
Modification du prix
Mois
Mise à jour du prix repas
Toujours
Ancien
prix
Nouveau
prix
Prix modifié
Type de poste : Relance
27 du mois
ET
Édition lettres de relance
Facture
MAJ des factures relancées
Créé
Relancée
Toujours
Lettre de
relance
La donnée Payée dans l’entité Facture prend la valeur NON.
La donnée Relance dans l’entité Facture prend la valeur OUI.
27
E
x
e
r
c
i
c
e
s
4 - Le modèle de données complété
Lien familial
0,n
0,n
Enfant
Parent
N° parent
Nom parent
Adresse parent
Parent défaillant (O N)
Est sous la responsabilité
1,1
1,n
N° enfant
Nom enfant
Prénom enfant
Classe
Date naissance
0,n
1,n
Est adressée
Planning
Repas réservé (O N)
1,1
0,n
Date
Date
1,1
Facture
N° facture
Date facture
Montant facture
Payé (O N)
Relance (O N)
Fait partie
Mois
Correspond
1,1
0,n
N° mois
Nom mois
Prix repas
1,n
5 - Écrire la requête qui met à jour la facture F1875 quand le règlement est intervenu.
UPDATE Facture SET [Réglé(O_N)]=”Oui”
WHERE N°_facture=”F1875”
6 - Écrire la requête affichant les factures du mois de mars non réglées.
SELECT Facture.N°_facture, Facture.[Réglé(O_N)]
FROM Facture INNER JOIN mois ON Facture.N°_mois=mois.N°_mois
WHERE [Réglé(O_N)]=”non”AND Nom_mois=”mars”
7 - Écrire la requête calculant le nombre de repas par parent pour le mois de mars.
SELECT parent.N°_parent, Nom_parent, Count(Repas_réservé_O_N) AS [Nombre de repas]
FROM (((mois INNER JOIN Jour ON mois.N°_mois = Jour.N°_mois)INNER JOIN Planning ON Jour.N°_jour =
Planning.N°_jour)INNER JOIN enfant ON enfant.N°_enfant = Planning.N°_enfant) INNER JOIN parent ON
parent.N°_parent = enfant.N°_parent
WHERE Nom_mois="mars" and Repas_réservé_O_N)="oui"
GROUP BY parent.N°_parent
8 - Écrire la requête calculant le montant à payer par parent pour le mois de mars.
SELECT parent.N°_parent, Nom_parent, sum(prix_repas) AS [Montant à payer]
FROM (((mois INNER JOIN Jour ON mois.N°_mois=Jour.N°_mois) INNER JOIN Planning ON
Jour.N°_jour=Planning.N°_jour) INNER JOIN enfant ON enfant.N°_enfant=Planning.N°_enfant) INNER JOIN parent ON
parent.N°_parent=enfant.N°_parent
WHERE Nom_mois="mars" and Repas_réservé_O_N="oui";
GROUP BY parent.N°_parent
En fait, c’est la même requête que la précédente, mais il faut comprendre le calcul réalisé : sum(prix_repas).
Au lieu de compter le nombre de repas, il suffit de sommer les prix de repas.
Ainsi, pour chaque ligne résultat de la requête, il y aura un repas réservé et donc un prix de repas.
En additionnant tous ces prix de repas, on obtient bien le prix à payer.
28