Files
2014-02-18 18:01:35 +01:00

68 lines
1.8 KiB
Transact-SQL

-- =============================================
-- Author: S.E. Locatelli
-- Create date: 2014.01.15
-- Description: stp_packageCost
-- SOSTITUITA da query + funzione
-- =============================================
CREATE PROCEDURE [dbo].[stp_packageCost]
(
@CodItem NVARCHAR(50) = '',
@CodClient NVARCHAR(50) = '',
@CodPackag NVARCHAR(50) = '',
@PDesc NVARCHAR(50) OUTPUT,
@RMWeight DECIMAL(9,4) OUTPUT,
@Weight DECIMAL(9,4) OUTPUT,
@Tare DECIMAL(9,4) OUTPUT,
@PackCost DECIMAL(9,6) OUTPUT,
@TareStRat DECIMAL(9,4) OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @trovati INT = 0,
@RMCost DECIMAL(9,3)
-- calcolo RMCost e RMWeight da tab PackageDet
SELECT @RMCost = RMCost, @RMWeight = RMWeight, @PDesc= PackagDesc
FROM PackagDet
WHERE CodPackag = @CodPackag
-- Calcolo peso e tara da selezione gerarchica
SELECT @trovati = COUNT(*)
FROM Package2ItemClient WHERE CodItem = @CodItem AND CodClient = @CodClient AND CodPackag = @CodPackag
IF(@trovati > 0)
-- primo tentativo: cerco il package dato SIA Cliente che Item che Package
BEGIN
SELECT TOP 1 @Weight = [Weight], @Tare = Tare
FROM Package2ItemClient WHERE CodItem = @CodItem AND CodClient = @CodClient AND CodPackag = @CodPackag
ORDER BY TotQta DESC
END
ELSE
-- secondo tentativo: se non lo trovo cerco per SOLO ITEM e package
BEGIN
SELECT @trovati = COUNT(*) FROM Package2Item WHERE CodItem = @CodItem AND CodPackag = @CodPackag
IF(@trovati > 0)
BEGIN
SELECT TOP 1 @Weight = [Weight], @Tare = Tare
FROM Package2Item WHERE CodItem = @CodItem AND CodPackag = @CodPackag
ORDER BY TotQta DESC
END
ELSE
BEGIN
SELECT @Weight = [Weight], @Tare = Tare
FROM Package2 WHERE CodPackag = @CodPackag
END
END
-- faccio ultimi calcoli!
SELECT @PackCost = @RMCost / @Weight, @TareStRat = (@RMWeight - @Tare) / @Weight
END