Commit c3f490dc authored by Elias Leinenweber's avatar Elias Leinenweber
Browse files

commit random parce que ca marche

parent 9e6668a6
......@@ -3,13 +3,13 @@ SET SERVEROUTPUT ON;
CREATE OR REPLACE PACKAGE GestionCommandes IS
PROCEDURE AfficheProchainesCommandes;
FUNCTION CoutLigneCommande(numcom commande.numc%TYPE, numtarif tarif.numt%TYPE)
RETURN tarif.prix%TYPE;
RETURN REAL;
FUNCTION CoutCommande(numcom commande.numc%TYPE)
RETURN tarif.prix%TYPE;
RETURN REAL;
FUNCTION GainJour(jour DATE)
RETURN tarif.prix%TYPE;
RETURN REAL;
FUNCTION GainMois(annee NUMBER, mois NUMBER)
RETURN tarif.prix%TYPE;
RETURN REAL;
PROCEDURE Facture(numcom commande.numc%TYPE);
PROCEDURE MeilleureCommandeMoisCourant;
END GestionCommandes;
......@@ -37,6 +37,7 @@ AS
GROUP BY c.numc, dateheure_cmd,adresse1, adresse2, codepostal, ville
ORDER BY dateheure_cmd;
BEGIN
DBMS_OUTPUT.PUT_LINE('---------------------------------');
FOR cmd IN curProchainesCommandes LOOP
DBMS_OUTPUT.PUT_LINE('Numéro commande : '|| cmd.numc);
DBMS_OUTPUT.PUT_LINE('Quantité de pizzas : '|| cmd.qtPiz);
......@@ -46,6 +47,7 @@ BEGIN
DBMS_OUTPUT.PUT_LINE('Complément d''adresse : '|| cmd.adresse2);
END IF;
DBMS_OUTPUT.PUT_LINE('Code postal : '|| cmd.codepostal);
DBMS_OUTPUT.PUT_LINE('---------------------------------');
END LOOP;
END AfficheProchainesCommandes;
......@@ -55,9 +57,9 @@ END AfficheProchainesCommandes;
* remises).
*/
FUNCTION CoutLigneCommande(numcom commande.numc%TYPE, numtarif tarif.numt%TYPE)
RETURN tarif.prix%TYPE
RETURN REAL
AS
cout tarif.prix%TYPE;
cout REAL;
BEGIN
SELECT ((100 - NVL(l.remise, 0)) / 100) * l.quantite * t.prix
INTO cout
......@@ -75,9 +77,9 @@ END CoutLigneCommande;
* commande (en tenant compte des éventuelles remises).
*/
FUNCTION CoutCommande(numcom commande.numc%TYPE)
RETURN tarif.prix%TYPE
RETURN REAL
AS
cout tarif.prix%TYPE;
cout REAL;
CURSOR curLigneCmd IS
SELECT numc, tarif
......@@ -98,9 +100,9 @@ END CoutCommande;
* passé en paramètre.
*/
FUNCTION GainJour(jour DATE)
RETURN tarif.prix%TYPE
RETURN REAL
AS
gain tarif.prix%TYPE;
gain REAL;
CURSOR curCmdJour IS
SELECT numc
......@@ -121,9 +123,9 @@ END GainJour;
* sur un mois donné.
*/
FUNCTION GainMois(annee NUMBER, mois NUMBER)
RETURN tarif.prix%TYPE
RETURN REAL
AS
gain tarif.prix%TYPE;
gain REAL;
CURSOR commandesDuMois IS
SELECT numc
......@@ -151,7 +153,7 @@ END GainMois;
PROCEDURE Facture(numcom commande.numc%TYPE)
AS
datec commande.dateheure_cmd%TYPE;
total tarif.prix%TYPE;
total REAL;
CURSOR lignesFacture IS
SELECT UPPER(p.nompiz) pizza, t.taille taille, l.quantite qte,
......@@ -200,20 +202,24 @@ END Facture;
*/
PROCEDURE MeilleureCommandeMoisCourant
AS
meilleureCmd commande.numc%TYPE;
coutMeilleureCmd tarif.prix%TYPE;
BEGIN
SELECT numc, CoutCommande(numc)
INTO meilleureCmd, coutMeilleureCmd
-- on utlise un cursor pour pouvoir afficher plusieurs commandes dans le cas
-- où il ya plusieurs meilleures commandes !
CURSOR curMeilleuresCmd IS
SELECT numc, CoutCommande(numc) cout
FROM commande
WHERE TO_CHAR(SYSDATE, 'MM/YYYY') = TO_CHAR(dateheure_cmd, 'MM/YYYY')
AND CoutCommande(numc) =
(SELECT MAX(CoutCommande(numc))
FROM commande
WHERE TO_CHAR(SYSDATE, 'MM/YYYY') = TO_CHAR(dateheure_cmd, 'MM/YYYY'));
DBMS_OUTPUT.PUT_LINE('Meilleure commande du mois : ' || meilleureCmd);
DBMS_OUTPUT.PUT_LINE('Avec un coût de : ' || coutMeilleureCmd);
BEGIN
DBMS_OUTPUT.PUT_LINE('---------------------------------');
FOR meilleureCmd IN curMeilleuresCmd LOOP
DBMS_OUTPUT.PUT_LINE('Meilleure commande du mois : ' || meilleureCmd.numc);
DBMS_OUTPUT.PUT_LINE('Avec un coût de : ' || meilleureCmd.cout);
DBMS_OUTPUT.PUT_LINE('---------------------------------');
END LOOP;
END MeilleureCommandeMoisCourant;
END;
/
......@@ -3,8 +3,7 @@
* numt, numpiz, taille, prix, date_deb_tarif, date_fin_tarif) en cas de
* modification de tarif.
*/
CREATE OR REPLACE TRIGGER
HistoTarifs
CREATE OR REPLACE TRIGGER HistoTarifs
AFTER UPDATE ON tarif FOR EACH ROW
BEGIN
INSERT INTO historique_tarifs (numt, pizza, taille, prix, date_deb_tarif)
......
# D31 Projet
# Mini-projet D31
Pizza
\ No newline at end of file
La pizzeria *Pronto* propose un service de livraison de pizzas avec des
commandes qui peuvent être passées par téléphone ou sur le site Web. Ce service
s'appuie sur une base de données.
......@@ -263,17 +263,23 @@ INSERT INTO ligne_cmd VALUES (1313, 15, 2, NULL);
-- AJOUT DE NOS VALEURS
-- TEST de GestionCommandes.AfficheProchainesCommandes, 6.a)
-- commande doit être affiché
INSERT INTO commande VALUES (666, 'L.', 'Elias', '6666666666', 'Route de la richesse', 'Manoir luxuriant', 67000, 'STRASBOURG',
SYSDATE +INTERVAL '30' MINUTE, NULL, NULL, NULL);
INSERT INTO ligne_cmd VALUES (666, 2, 1, 5);
INSERT INTO ligne_cmd VALUES (666, 10, 12, NULL);
INSERT INTO commande VALUES (777, 'F.', 'Francois', '0123456789', 'Avenue Oblique', 'etage 2', 60568, 'SAINT-AUBIN-SOUS-ERQUERY',
-- commande doit être affiché
INSERT INTO commande VALUES (777, 'F.', 'Francois', '0123456789', 'Avenue Oblique', NULL, 60568, 'SAINT-AUBIN-SOUS-ERQUERY',
SYSDATE +INTERVAL '45' MINUTE, NULL, NULL, NULL);
INSERT INTO ligne_cmd VALUES (777, 4, 2, 20);
INSERT INTO ligne_cmd VALUES (777, 18, 12, 10);
INSERT INTO ligne_cmd VALUES (777, 6, 4, NULL);
-- commande ne doit pas être affiché
INSERT INTO commande VALUES (888, 'Z.', 'Mathieu', '0123456789', 'Route des mathématiques', 'et de S32', 67000, 'STRASBOURG',
SYSDATE -INTERVAL '45' MINUTE, NULL, NULL, NULL);
INSERT INTO ligne_cmd VALUES (888, 4, 2, 20);
INSERT INTO ligne_cmd VALUES (888, 18, 12, 10);
INSERT INTO ligne_cmd VALUES (888, 6, 4, NULL);
-- TEST Triger 7.
-- la modification d'un tarif devrait insérer des lignes dans la table
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment