-- Schema: C6Mart
-- Stored Procedure: DM_PopolaContratti

----- not used in mart 
CREATE procedure [C6Mart].[DM_PopolaContratti] 
AS
BEGIN

		DECLARE @ULTIMOPROGRINVIO int--SMALLINT
	DECLARE @ORDINEELAB int--SMALLINT
	DECLARE @RIATTIVAZIONE int--SMALLINT
	DECLARE @inizio DATETIME
	DECLARE @fine DATETIME
	DECLARE @righeUpdate INT
	DECLARE @righeInsert INT

	SET @inizio = GETDATE()
	SET @righeUpdate = 0
	SET @righeInsert = 0

	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE (Nome, Inizio, Nota)
			VALUES ('DM_PopolaContratti',@inizio,'Elaborazione giornaliera')

	--AGGIORNAMENTO CONTRATTI
	--I RECORD PRESENTI NELLA VARIAZIONE_CONTRSEI POTREBBERO ESSERE 
	--POPOLATI IN ELABORAZIONI DIFFERENTI. VANNO ESEGUITI IN ORDINE
	--DICHIARAZIONE CURSORE PER ESTRARRE LE ELABORAZIONI

	DECLARE ELABORAZIONI CURSOR LOCAL FORWARD_ONLY 
	FOR
	SELECT ULTIMO_PROGRESSIVO_INVIO, ORDINE_DI_ELABORAZIONE_RIGA, RIATTIVAZIONE
	FROM C6STAGING.VARIAZIONE_CONTRSEI
	ORDER BY ULTIMO_PROGRESSIVO_INVIO, ORDINE_DI_ELABORAZIONE_RIGA
	
	--APERTURA CURSORE
	OPEN ELABORAZIONI
	FETCH NEXT FROM ELABORAZIONI INTO @ULTIMOPROGRINVIO, @ORDINEELAB, @RIATTIVAZIONE
	WHILE @@FETCH_STATUS = 0
	BEGIN

		--AGGIORNAMENTO CONTRATTI ESISTENTI
		UPDATE C6Mart.CONTRATTOSEI
		SET
			 Cod_Fiscale = VARC6.CODICE_FISCALE
			,Data_Sott = VARC6.DATA_SOTTOSCRIZIONE_C6			
			,Cod_Agente = VARC6.PB
			,Data_Perf_Base = VARC6.DATA_PERFEZIONAMENTO_BASE
			,Data_Perf = VARC6.DATA_PERFEZIONAMENTO_C6
			,Fascia_CPP = VARC6.CPP
			,Email = VARC6.EMAIL
			,Indirizzo = VARC6.INDIRIZZO
			,CAP =  VARC6.CAP
			,Citta = VARC6.CITTA
			,Prov = VARC6.PROVINCIA
			,Nazione = VARC6.NAZIONE
			,Presso = VARC6.PRESSO			
			,Freq_Diagnosi = VARC6.FREQUENZA_DIAGNOSI
			,Freq_Monitor = isnull(VARC6.FREQUENZA_MONITORAGGIO,'T')			
			,Data_InizioBase = VARC6.DATA_SOTTOSCRIZIONE_BASE
			,Data_FineBase = VARC6.DATA_CHIUSURA_BASE			
			,Data_FineAvanzato = VARC6.DATA_CHIUSURA_C6
			,ProgressivoInvio = VARC6.ULTIMO_PROGRESSIVO_INVIO
			,GenerazioneReport = VARC6.FLAG_STAMPA_REPORT
			,Rol = isnull(VARC6.Flag_Rol,'N') 			 
			,tip_Contratto = CASE
								WHEN VARC6.tip_Contratto = 'A' THEN 1
								WHEN VARC6.tip_Contratto = 'P' THEN 2
								ELSE 0			                   	
			                 END
			,tip_Riattivazione = @RIATTIVAZIONE
			,numRevoche = CASE 
							WHEN @RIATTIVAZIONE = 0 THEN numRevoche
							ELSE 0 
						 END	
			,data_UltimaRevoca = CASE 
									WHEN @RIATTIVAZIONE = 0 THEN data_UltimaRevoca
									ELSE NULL
								END
			,invioBenvenuto = CASE 
								WHEN @RIATTIVAZIONE = 0 THEN invioBenvenuto
								ELSE 'N'
							 END
			 ,numSolleciti = CASE 								
								WHEN (C6.Rete <> VARC6.Rete_PB OR C6.Cod_Agente <> VARC6.PB) THEN 0
								WHEN @RIATTIVAZIONE = 0 THEN numSolleciti
								ELSE 0
							 END	
			 ,data_UltimoSollecito = CASE 
										WHEN @RIATTIVAZIONE = 0 THEN data_UltimoSollecito
										ELSE NULL 
									 END	
			 ,data_Invio_Monitoraggio_Trimestrale =	CASE 
														WHEN @RIATTIVAZIONE = 0 THEN data_Invio_Monitoraggio_Trimestrale
														ELSE  NULL
													 END
			 ,data_Invio_Diagnosi_Trimestrale =	CASE 
													WHEN @RIATTIVAZIONE = 0 THEN data_Invio_Diagnosi_Trimestrale
													ELSE NULL 
												 END			 				
				FROM C6MART.CONTRATTOSEI C6
					INNER JOIN C6STAGING.VARIAZIONE_CONTRSEI VARC6
					ON  C6.RETE = VARC6.RETE_PB
						AND C6.CODICECONTRATTO = VARC6.CODICE_CONTRATTO
						AND VARC6.ULTIMO_PROGRESSIVO_INVIO = @ULTIMOPROGRINVIO				
						AND VARC6.ORDINE_DI_ELABORAZIONE_RIGA = @ORDINEELAB
				
				SET @righeUpdate = @righeUpdate + @@ROWCOUNT
				
		IF  @@ROWCOUNT > 0
			IF @RIATTIVAZIONE = 1 
				BEGIN  
					UPDATE C6MART.Gestione_EMAIL 
						SET TIPO = 'OLD'
						FROM C6MART.Gestione_EMAIL EMAIL
							INNER JOIN C6STAGING.VARIAZIONE_CONTRSEI VARC6
							 ON VARC6.CODICE_FISCALE = EMAIL.COD_FISCALE
							AND VARC6.rete_pb = EMAIL.RETE
							AND VARC6.ULTIMO_PROGR
