CREATE procedure [C6MartPeriodico].[DM_DettaglioMovimenti_20160913]
AS BEGIN
DECLARE @RETE char(1), @CODFIS varchar(16), @CODMAN varchar(6)
DECLARE @DETT_MOV_PREC decimal(15,2), @DETT_MOV_CORR decimal(15,2), @MOV_TRIMESTRE_PREC decimal(15,2)
DECLARE @TrimestreDettMov varchar(8)
DECLARE @appoDataAvvioMon varchar(8)
--SET @appoDataAvvioMon = '20151201'
SET @appoDataAvvioMon = '20160301' --simulazione del 18/03/2016
--SET @TrimestreDettMov = C6MartPeriodico.getTrimestreDettMov()
SET @TrimestreDettMov = C6MartPeriodico.getTrimestre2(getdate(), 0) --'20120531' simul
TRUNCATE TABLE C6MartPeriodico.DettaglioMovimenti
DECLARE DettMov_cursor CURSOR FOR
SELECT 
	RETE,
	CODFIS,
	CODMAN
FROM
	[C6StagingPeriodico].[W6APAG]
--WHERE 
--	CODFIS='BCCPRZ52T67H945W' AND RETE='F'
GROUP BY
	RETE,
	CODFIS,
	CODMAN
/*
SELECT 
	[RETE],
	CASE
		WHEN CODMAN = ''
			THEN CODFIS
			ELSE 'FF@' + CODMAN
		END AS COD_FIS
FROM
	[C6StagingPeriodico].[W6APTR]
GROUP BY
	RETE,
	CASE WHEN CODMAN = '' THEN CODFIS ELSE 'FF@' + CODMAN END
*/
DECLARE @DataAvvioMon DATETIME --varchar(8)
DECLARE @DataPrecInvioRep DATETIME --varchar(8)
OPEN DettMov_cursor
FETCH NEXT FROM DettMov_cursor
INTO @RETE, @CODFIS, @CODMAN
WHILE @@FETCH_STATUS = 0
BEGIN
	IF @CODMAN <> ''
		SET @CODFIS = 'FF@' + @CODMAN
	SELECT @DataAvvioMon = DATA_FOTO
	FROM
	C6MARTPERIODICO.MONITORAGGIO_INIZIALE
	WHERE 
    		RETE = @RETE AND
		    COD_FISCALE = @CODFIS
	IF EXISTS (SELECT * FROM C6MARTPERIODICO.MONITORAGGIO_REPORT
	WHERE RETE = @RETE AND COD_FISCALE = @CODFIS)
	BEGIN
		--PRECEDENTE
		IF @DataAvvioMon < '20111001'
			  SET @DETT_MOV_PREC = null
-----------------------------------
		IF @CODMAN <> ''
			SET @CODFIS = 'FF§' + @CODMAN
		IF @DataAvvioMon >= '20111001' AND @DataAvvioMon <= @appoDataAvvioMon
			SELECT
				@DETT_MOV_PREC = (sum(APPORTI) - sum(PRELIEVI))
				FROM [C6StampeCentralizzate].[C6StagingPeriodico].[W6APAG]
			WHERE
				RETE = @RETE
			AND
				CODFIS = @CODFIS
			AND
				CODMAN = @CODMAN
			AND
				DTTRIM < @TrimestreDettMov
			GROUP BY RETE, CODFIS, CODMAN
		--CORRENTE
		SELECT
			@DETT_MOV_CORR = (sum(APPORTI) - sum(PRELIEVI))
			FROM [C6StampeCentralizzate].[C6StagingPeriodico].[W6APAG]
		WHERE
			RETE = @RETE
		AND
			CODFIS = @CODFIS
		AND
			CODMAN = @CODMAN
		AND
			DTTRIM = @TrimestreDettMov
		GROUP BY RETE, CODFIS, CODMAN
		Set @MOV_TRIMESTRE_PREC = @DETT_MOV_CORR
	END
	ELSE
	BEGIN
		--ACCORPAMENTO (cambiare prossima simulazione)
		SET @DETT_MOV_PREC = null
		IF @DataAvvioMon < '20111001'
			SET @DETT_MOV_CORR = null
		IF @DataAvvioMon >= '20111001' AND @DataAvvioMon < @appoDataAvvioMon
		   begin
				SELECT
				@DETT_MOV_CORR = (sum(APPORTI) - sum(PRELIEVI))
				FROM [C6StampeCentralizzate].[C6StagingPeriodico].[W6APAG]
				WHERE
					RETE = @RETE
				AND
					CODFIS = @CODFIS
				AND
					CODMAN = @CODMAN
				GROUP BY RETE, CODFIS, CODMAN
				SELECT
				@MOV_TRIMESTRE_PREC = (sum(APPORTI) - sum(PRELIEVI))
				FROM [C6StampeCentralizzate].[C6StagingPeriodico].[W6APAG]
				WHERE
					RETE = @RETE
				AND
					CODFIS = @CODFIS
				AND
					CODMAN = @CODMAN
				AND
					DTTRIM = @TrimestreDettMov
				GROUP BY RETE, CODFIS, CODMAN
			end
		IF @DataAvvioMon >= @appoDataAvvioMon
		   begin
				SELECT
				@DETT_MOV_CORR = (sum(APPORTI) - sum(PRELIEVI))			
				FROM [C6StampeCentralizzate].[C6StagingPeriodico].[W6APAG]
				WHERE
					RETE = @RETE
				AND
					CODFIS = @CODFIS
				AND
					CODMAN = @CODMAN
				AND
					DTTRIM = @TrimestreDettMov
				GROUP BY RETE, CODFIS, CODMAN
				Set @MOV_TRIMESTRE_PREC = @DETT_MOV_CORR
			end
------------------------------------
	END
	IF @CODMAN <> ''
		SET @CODFIS = 'FF@' + @CODMAN
	INSERT INTO C6MartPeriodico.DettaglioMovimenti
		(RETE, COD_FIS, DETT_MOV_PREC, DETT_MOV_CORR, DETT_MOV_TRIMESTRE_PREC)
	VALUES
		(@RETE, @CODFIS, @DETT_MOV_PREC, @DETT_MOV_CORR, @MOV_TRIMESTRE_PREC)
	SET @DETT_MOV_PREC = null
	SET @DETT_MOV_CORR = null
	SET @MOV_TRIMESTRE_PREC = null
	FETCH NEXT FROM DettMov_cursor
	INTO @RETE, @CODFIS, @CODMAN
END
CLOSE DettMov_cursor
DEALLOCATE DettMov_cursor
END