

/*************************************************
* STORED zzz_resetDtx
*
* fa un reset di tutte le operazioni svolte sui datamatrix nelle ultime X ore x poter fare test, nelle tabelle
* - ElencoCartellini (che erano collegati ai dtx indicati...) porta qta a zero... 
* - PosizioneUdcCorrente --> li elimina
* - toglie associazione DTX
* - Dtx2UDC
* - StoricoDtx2UDC
* - ElencoCartellini --> li elimina (quelli modificati nelle ultime X ore con qta a zero...)
* 
* Steamware, S.E.L.
* mod: 2014.03.08
*
*************************************************/
CREATE PROCEDURE [dmtx].[zzz_resetDtx]
(
	@ore			INT = 0 -- default 0 ore = non fa nulla
)
AS

SET XACT_ABORT ON;

BEGIN TRAN

	-- ElencoCartellini (che erano collegati ai dtx indicati...) porta qta a zero... 
	UPDATE ElencoCartellini
	SET Qta = 0
	WHERE UDC IN (
			SELECT DISTINCT UDC
			FROM Dtx2UDC
			WHERE DataOra >= DATEADD(hour, @ore, GETDATE())
			)

	-- PosizioneUdcCorrente --> li elimina	
	DELETE
	FROM PosizioneUdcCorrente
	WHERE UDC IN (
			SELECT DISTINCT UDC
			FROM Dtx2UDC
			WHERE DataOra >= DATEADD(hour, @ore, GETDATE())
			)

	-- toglie associazione DTX
	UPDATE dtx
	SET Associato = 0
	FROM dmtx.v_ElencoDatamatrixBMW AS Dtx
	INNER JOIN Dtx2UDC d2c ON Dtx.DataMatrix COLLATE SQL_Latin1_General_CP1_CI_AS = d2c.DataMatrix
	WHERE d2c.DataOra >= DATEADD(hour, @ore, GETDATE())
		AND dtx.Associato = 1

	DELETE
	FROM AL2UDC
	WHERE UDC IN (
			SELECT DISTINCT UDC
			FROM Dtx2UDC
			WHERE DataOra >= DATEADD(hour, @ore, GETDATE())
			)

	-- Dtx2UDC
	DELETE
	FROM Dtx2UDC
	WHERE DataOra >= DATEADD(hour, - @ore, GETDATE())
	
	-- StoricoDtx2UDC
	DELETE
	FROM StoricoDtx2UDC
	WHERE DataEv >= DATEADD(hour, - @ore, GETDATE())
	
	-- ElencoCartellini --> li elimina (quelli modificati nelle ultime X ore con qta a zero...)
	DELETE
	FROM ElencoCartellini
	WHERE Qta = 0
	and ModDate >= DATEADD(hour, @ore, GETDATE())

COMMIT Tran

RETURN