72 lines
1.5 KiB
Transact-SQL
72 lines
1.5 KiB
Transact-SQL
USE [StockMan]
|
|
GO
|
|
|
|
/****** Object: StoredProcedure [dbo].[stp_ItemShrinkHist] Script Date: 29/09/2016 23:44:55 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
-- =============================================
|
|
-- Author: S.E.L.
|
|
-- Create date: 2016.09.21
|
|
-- Description: Riduce i movimenti per una data locazione-item (nulli, oppure a somma nulla a pari giorno)
|
|
-- =============================================
|
|
CREATE PROCEDURE [dbo].[stp_ItemShrinkHist]
|
|
(
|
|
@ItemID INT = 0
|
|
)
|
|
AS
|
|
BEGIN
|
|
-- SET NOCOUNT ON added to prevent extra result sets from
|
|
-- interfering with SELECT statements.
|
|
SET NOCOUNT ON;
|
|
|
|
BEGIN tran
|
|
-- elimino in primis i movimenti nulli...
|
|
DELETE
|
|
FROM ItemFlux
|
|
WHERE Qta = 0
|
|
AND ItemID = @ItemID
|
|
|
|
-- cerco movimenti di un item solo positivi o solo negativi
|
|
;WITH cteAdd AS
|
|
(
|
|
SELECT *
|
|
FROM ItemFlux
|
|
WHERE Qta > 0
|
|
AND ItemID = @ItemID
|
|
), cteRem AS
|
|
(
|
|
SELECT *
|
|
FROM ItemFlux
|
|
WHERE Qta < 0
|
|
AND ItemID = @ItemID
|
|
)
|
|
-- li incrocio e se si annullano..
|
|
, cteNull AS
|
|
(
|
|
SELECT a.*
|
|
FROM cteAdd a INNER JOIN cteRem r
|
|
ON a.LocationID=r.LocationID
|
|
AND a.dtMov = r.dtMov
|
|
AND ABS(a.Qta) = ABS(r.Qta)
|
|
)
|
|
--select * from cteNull
|
|
-- ora che li ho selezionati li elimino...
|
|
DELETE iflx
|
|
FROM ItemFlux iflx INNER JOIN cteNull cte
|
|
ON iflx.LocationID = cte.LocationID
|
|
AND iflx.ItemID = cte.ItemID
|
|
AND iflx.dtMov = cte.dtMov
|
|
WHERE ABS(iflx.Qta) = ABS(cte.Qta)
|
|
|
|
COMMIT tran
|
|
END
|
|
|
|
GO
|
|
|
|
|