-- ============================================= -- Author: Luca -- Create date: 13/11/2008 -- Description: Aggiornamento tabella contratti -- ============================================= CREATE procedure [C6Mart].[DM_PopolaContratti_20161026] 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_PROGRESSIVO_INVIO = @ULTIMOPROGRINVIO AND VARC6.ORDINE_DI_ELABORAZIONE_RIGA = @ORDINEELAB AND EMAIL.TIPO = 'PERF' END ELSE BEGIN --INSERIMENTO NUOVI CONTRATTI print 'ORDINEELAB=' + convert(varchar,@ORDINEELAB) + ' ULTIMOPROGRINVIO=' + convert(varchar,@ULTIMOPROGRINVIO ) INSERT INTO C6Mart.CONTRATTOSEI ( Rete ,Cod_Fiscale ,Piva_Fiduciaria ,Data_Sott ,CodiceContratto ,Cod_Agente ,Data_Perf_Base ,Data_Perf ,Fascia_CPP ,Email ,Indirizzo ,CAP ,Citta ,Prov ,Nazione ,Presso ,Data_Inizio ,Freq_Diagnosi ,Freq_Monitor ,Freq_DiagnosiPrec ,Freq_MonitorPrec ,Data_InizioConsInv ,Data_InizioBase ,Data_FineBase ,Data_InizioAvanzato ,Data_FineAvanzato ,ProgressivoInvio ,GenerazioneReport ,InvioBenvenuto ,DataUltimoInvio ,ClienteMigrato ,RisorseNA ,NumSolleciti ,Data_UltimoSollecito ,Note ,Rol ,tip_Contratto ,tip_Riattivazione) SELECT VARC6.RETE_PB, VARC6.CODICE_FISCALE, MIGR.PIVA, VARC6.DATA_SOTTOSCRIZIONE_C6, VARC6.CODICE_CONTRATTO, VARC6.PB, VARC6.DATA_PERFEZIONAMENTO_BASE, VARC6.DATA_PERFEZIONAMENTO_C6, VARC6.CPP, VARC6.EMAIL, VARC6.INDIRIZZO, VARC6.CAP, VARC6.CITTA, VARC6.PROVINCIA, VARC6.NAZIONE, VARC6.PRESSO, NULL AS Data_Inizio, VARC6.FREQUENZA_DIAGNOSI, VARC6.FREQUENZA_MONITORAGGIO, NULL AS Freq_DiagnosiPrec, NULL AS Freq_MonitorPrec, NULL AS Data_InizioConsInv, VARC6.DATA_SOTTOSCRIZIONE_BASE, VARC6.DATA_CHIUSURA_BASE, VARC6.DATA_PERFEZIONAMENTO_C6, VARC6.DATA_CHIUSURA_C6, VARC6.ULTIMO_PROGRESSIVO_INVIO, VARC6.FLAG_STAMPA_REPORT AS GenerazioneReport, 'N' as InvioBenvenuto, NULL as DataUltimoInvio, ISNULL(LEFT(MIGR.FLAG_CLIENTE_MIGRATO,1),'N'), NULL AS RisorseNA, 0 AS NumSolleciti, NULL AS Data_UltimoSollecito, NULL AS NOTE, ISNULL(VARC6.Flag_Rol,'N'), CASE WHEN VARC6.tip_Contratto = 'A' THEN 1 WHEN VARC6.tip_Contratto = 'P' THEN 2 ELSE 0 END, VARC6.riattivazione FROM C6STAGING.VARIAZIONE_CONTRSEI VARC6 LEFT JOIN C6STAGING.V_CLIENTI_CONTRSEI_CON_MIGRAZ MIGR ON MIGR.RETE_PB = VARC6.RETE_PB AND MIGR.Codice_Fiscale = VARC6.Codice_Fiscale AND MIGR.codice_contratto = VARC6.codice_contratto LEFT JOIN C6MART.CONTRATTOSEI C6 ON VARC6.RETE_PB = C6.RETE AND VARC6.Codice_Fiscale = C6.Cod_Fiscale AND VARC6.Codice_Contratto = C6.CodiceContratto WHERE 1 = 1 AND VARC6.ULTIMO_PROGRESSIVO_INVIO = @ULTIMOPROGRINVIO AND VARC6.ORDINE_DI_ELABORAZIONE_RIGA = @ORDINEELAB AND C6.COD_FISCALE IS NULL SET @righeInsert = @righeInsert + @@ROWCOUNT END FETCH NEXT FROM ELABORAZIONI INTO @ULTIMOPROGRINVIO, @ORDINEELAB, @RIATTIVAZIONE END SET @fine = GETDATE() print convert(varchar,@inizio,113 ) + ' ' + convert(varchar,@fine,113 ) -- Log esecuzione UPDATE LOG_ESECUZIONE SET Fine = @fine,Tipo = 'UPDATE',Righe = @righeUpdate WHERE Nome = 'DM_PopolaContratti' AND Inizio = (SELECT MAX(Inizio) FROM LOG_ESECUZIONE WHERE Nome = 'DM_PopolaContratti') INSERT INTO LOG_ESECUZIONE VALUES ('DM_PopolaContratti',@inizio,@fine,'INSERT',@righeInsert,'Elaborazione giornaliera') INSERT INTO LOG_ESECUZIONE (Nome, Inizio, Nota) VALUES ('DM_PopolaContratti',GETDATE(),'Elaborazione giornaliera') --Inserisco il cambio migrazioni anche per i clienti per cui non ho una variazione DECLARE @maxInvioSoll AS SMALLINT SET @maxInvioSoll = dbo.getParametro('MaxInvioSoll') UPDATE C6Mart.CONTRATTOSEI SET ClienteMigrato = ISNULL(LEFT(MIGR.FLAG_CLIENTE_MIGRATO,1),'N'), NumSolleciti = CASE --V aggiunta condizione profilo attivo per il riazzeramento solleciti WHEN (LEFT(MIGR.FLAG_CLIENTE_MIGRATO,1)='S' AND ISNULL(C6.RisorseNA,'N')='N') and isnull(profiloAttivo,1) = 1 AND NumSolleciti <= @maxInvioSoll THEN 0 ELSE NumSolleciti END FROM C6MART.CONTRATTOSEI C6 INNER JOIN C6STAGING.V_CLIENTI_CONTRSEI_CON_MIGRAZ MIGR ON C6.RETE = MIGR.RETE_PB AND C6.COD_FISCALE = MIGR.CODICE_FISCALE -- Log esecuzione UPDATE LOG_ESECUZIONE SET Fine = GETDATE(),Tipo = 'UPDATE',Righe = @@ROWCOUNT WHERE Nome = 'DM_PopolaContratti' AND Inizio = (SELECT MAX(Inizio) FROM LOG_ESECUZIONE WHERE Nome = 'DM_PopolaContratti') END