-- =============================================
-- Author:		alessandro Tringali
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE procedure [C6MartPeriodico].[RP_SRV_ESTRAZ_GIORNALIERA_CC]
AS
BEGIN
	SET NOCOUNT ON;
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'SRV_ESTRAZ_GIORNALIERA_CC',
		GETDATE(),
		'Elaborazione giornaliera'
	)
--V Cancellazione delle tuple inserite nel giorno corrente, può accadere che la procedura viene 
-- lanciata più di una volta, in quel caso inserirei righe doppie.
DELETE FROM C6MartPeriodico.ESTRAZ_GIORNALIERA_CC
WHERE DATEDIFF(dd,dataGenerazione,getDate()) = 0
INSERT INTO C6MartPeriodico.ESTRAZ_GIORNALIERA_CC
SELECT
a.COD_FISCALE,
A.RETE,
A.CODICECONTRATTO,
DATAGENERAZIONE,
NUMERO_CC,
C.CTV_CC,
D.TOT_CTV,
D.TOT_CTV_NO_CC
FROM
[C6MartPeriodico].[RP_vContrattiPerGenerazioneReport] A,
C6MartPeriodico.GESTIONE_PDF_FTP B, 
(
       SELECT 
       COD_FISCALE, 
       RETE, 
       COD_CC AS NUMERO_CC, 
       SUM(SALDOCONTABILE) AS CTV_CC 
       FROM C6MartPeriodico.ANAG_CC 
       GROUP BY 
       COD_FISCALE, 
       RETE,
       COD_CC
  ) C,
(       SELECT COD_FISCALE, RETE,
       SUM(CTV) AS TOT_CTV,
       SUM(CASE WHEN TIPO_PRODOTTO='CC' THEN 0 ELSE CTV END) AS TOT_CTV_NO_CC FROM C6MartPeriodico.PATRIMONIO_BF 
       GROUP BY COD_FISCALE, RETE
)D
WHERE
A.COD_FISCALE=B.CODICEFISCALE
AND A.RETE=B.RETE
AND A.COD_FISCALE=C.COD_FISCALE
AND A.RETE=C.RETE
AND A.COD_FISCALE=D.COD_FISCALE
AND A.RETE=D.RETE 
ORDER BY 1,2,3,5
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'DELETE',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'SRV_ESTRAZ_GIORNALIERA_CC' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'SRV_ESTRAZ_GIORNALIERA_CC'
		)
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'SRV_ESTRAZ_GIORNALIERA_CC',
		GETDATE(),
		'Elaborazione giornaliera'
	)
END