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
| CREATE PROCEDURE usp_Get_PU_byDate
@code_produit INT,
@Num_fact INT
AS
BEGIN
-- vérification de la validité des données
IF @code_produit IS NULL OR @code_produit = 0
BEGIN
RAISERROR('Le code produit saisi est invalide !', 16, 1)
END
IF @Num_fact IS NULL OR @Num_fact = 0
BEGIN
RAISERROR('La date saisie est invalide !', 16, 1)
END
-- Recherche du dernier prix unitaire appliqué à cette date pour ce produit
DECLARE @date_mvt DATETIME
SELECT @date_mvt = Date_mvt
FROM dbo.Ligne_facture
WHERE Num_fact = @Num_fact
AND code_produit = @code_produit
WITH
CTE_LAST_PU AS
(
SELECT @code_produit AS code_produit,
MAX(Date) AS dateMax
FROM dbo.Produit
WHERE Code_produit = @code_produit
AND Date <= @date_mvt
)
SELECT P.code_produit,
P.PU,
C.dateMax
FROM dbo.Produit AS P
JOIN CTE_LAST_PU AS C
ON P.code_produit = C.code_produit
AND P.Date = C.dateMax
END |
Partager