1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
DECLARE
-- Variables communes
numDepanneurCourant BSINTER.CODE_DEP%TYPE;
numDepanneur BSINTER.CODE_DEP%TYPE;
numArticle BSPIECE.NO_ARTICLE%TYPE;
quantiteLivre BSPIECE.QTE_LIVREES%TYPE;
prixRevient BSPIECE.PRIX_REVIENT%TYPE;
dateDebut DATE;
dateFin DATE;
-- Etape 1 : table tampon
-- Etape 2 : calcul du stock maxi
dateJour1 BSINTER.DATE_INTER%TYPE;
dateJour2 BSINTER.DATE_INTER%TYPE;
totalQuantiteLivrees BSPIECE.QTE_LIVREES%TYPE;
stockMaxi BSPIECE.QTE_LIVREES%TYPE;
tmpCalcul NUMBER;
tmpCalcul2 NUMBER;
-- Curseurs
CURSOR curseurDate
is SELECT DISTINCT A.DATE_INTER
FROM BSINTER A
WHERE A.DATE_INTER >= (ADD_MONTHS(SYSDATE,-1)) AND A.DATE_INTER <= SYSDATE;
--CURSOR depanneurs
--is SELECT DISTINCT I.CODE_DEP
-- FROM BSINTER I
-- ORDER BY I.CODE_DEP;
CURSOR curseurConsoPieces
is SELECT DISTINCT I.CODE_DEP, P.NO_ARTICLE, SUM(P.QTE_LIVREES), P.PRIX_REVIENT
FROM BSINTER I, BSPIECE P
WHERE I.CODE_DEP = numDepanneurCourant
AND I.NO_INTER = P.NO_INTER
AND I.DATE_INTER >= (ADD_MONTHS(SYSDATE,-3)) -- dateDebut
AND I.DATE_INTER <= SYSDATE -- dateFin
GROUP BY I.CODE_DEP, P.NO_ARTICLE, P.PRIX_REVIENT
ORDER BY I.CODE_DEP, P.NO_ARTICLE;
CURSOR curseurStockPieces
is SELECT C.CODE_DEP, C.NO_ARTICLE, C.QTE_LIVREES, C.PRIX_REVIENT
FROM BSCONSOM2 C
WHERE C.CODE_DEP = numDepanneurCourant
ORDER BY C.CODE_DEP, C.NO_ARTICLE;
BEGIN
-------------------------------------------------
-- ETAPE 1 : remplissage de la table tampon
--
--
-- Initialisation dees variables
numDepanneurCourant := '530';
dateDebut := (ADD_MONTHS(SYSDATE,-3)); --'01/09/2004'; --
dateFin := SYSDATE; --'01/12/2004'; --
-- On vide la table résultat
DELETE FROM BSCONSOM2;
DELETE FROM BSDEBUG;
-- Parcours des pièces consommées de dateDebut à dateFin
-- et chargement des quantités livrées dans BSCOMSOM2
OPEN curseurConsoPieces;
LOOP
FETCH curseurConsoPieces into numDepanneur,numArticle,quantiteLivre,prixRevient;
-- On insère l'article
INSERT INTO BSCONSOM2 VALUES (numDepanneur,numArticle,quantiteLivre,prixRevient,0);
INSERT INTO BSDEBUG VALUES('Nouvel article créé : ' || numArticle || ' livré en ' || quantiteLivre || ' unités.');
commit;
EXIT WHEN curseurConsoPieces%NOTFOUND;
END LOOP;
CLOSE curseurConsoPieces;
End; |
Partager