-- ============================================= -- Author: Luca -- Create date: 13/11/2008 -- Description: Aggiornamento tabella contratti -- ============================================= CREATE procedure [C6Mart].[DM_PopolaContratti_old240213] AS BEGIN DECLARE @ULTIMOPROGRINVIO int--SMALLINT DECLARE @ORDINEELAB 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 FROM C6STAGING.VARIAZIONE_CONTRSEI --where ORDINE_DI_ELABORAZIONE_RIGA < 10000 and ULTIMO_PROGRESSIVO_INVIO > 1000 ORDER BY ULTIMO_PROGRESSIVO_INVIO, ORDINE_DI_ELABORAZIONE_RIGA --APERTURA CURSORE OPEN ELABORAZIONI FETCH NEXT FROM ELABORAZIONI INTO @ULTIMOPROGRINVIO, @ORDINEELAB WHILE @@FETCH_STATUS = 0 BEGIN --AGGIORNAMENTO CONTRATTI ESISTENTI UPDATE C6Mart.CONTRATTOSEI SET --Rete = VARC6.RETE_PB Cod_Fiscale = VARC6.CODICE_FISCALE ,Data_Sott = VARC6.DATA_SOTTOSCRIZIONE_C6 --,CodiceContratto = ,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 --,Data_Inizio = ,Freq_Diagnosi = VARC6.FREQUENZA_DIAGNOSI ,Freq_Monitor = ISNULL(VARC6.FREQUENZA_MONITORAGGIO,'T') --,Freq_DiagnosiPrec = --,Freq_MonitorPrec = --,Data_InizioConsInv = ,Data_InizioBase = VARC6.DATA_SOTTOSCRIZIONE_BASE ,Data_FineBase = VARC6.DATA_CHIUSURA_BASE --,Data_InizioAvanzato = ,Data_FineAvanzato = VARC6.DATA_CHIUSURA_C6 ,ProgressivoInvio = VARC6.ULTIMO_PROGRESSIVO_INVIO ,GenerazioneReport = VARC6.FLAG_STAMPA_REPORT --,InvioBenvenuto = --,DataUltimoInvio = --,ClienteMigrato = ISNULL(LEFT(MIGR.FLAG_CLIENTE_MIGRATO,1),'N') --,RisorseNA = ,NumSolleciti = CASE WHEN (C6.Rete <> VARC6.Rete_PB OR C6.Cod_Agente <> VARC6.PB) THEN 0 --WHEN (LEFT(MIGR.FLAG_CLIENTE_MIGRATO,1)='S' AND ISNULL(C6.RisorseNA,'N')='N') THEN 0 ELSE NumSolleciti END --,Data_UltimoSollecito = --,Note = ,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 FROM C6MART.CONTRATTOSEI C6 INNER JOIN C6STAGING.VARIAZIONE_CONTRSEI VARC6 ON -- no join sul codice fiscale poiché, in caso di sua variazione, verrebbe trattato come nuovo contratto C6.RETE = VARC6.RETE_PB --AND C6.COD_FISCALE = VARC6.CODICE_FISCALE AND C6.CODICECONTRATTO = VARC6.CODICE_CONTRATTO AND VARC6.ULTIMO_PROGRESSIVO_INVIO = @ULTIMOPROGRINVIO AND VARC6.ORDINE_DI_ELABORAZIONE_RIGA = @ORDINEELAB SET @righeUpdate = @righeUpdate + @@ROWCOUNT --INSERIMENTO NUOVI CONTRATTI 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 ) 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, isnull(VARC6.FREQUENZA_MONITORAGGIO,'T'), 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,--Aggiunta perchè mancava, Fabrizio e Valerio per Azzeramento numero solleciti email NULL AS Data_UltimoSollecito, NULL AS NOTE, 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 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 --V Inserito questo controllo in quanto in caso di chiusura di un contratto e riapertura inseriva due righe 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 --V nuova condizione rilassamento del vincolo è corretto? AND C6.COD_FISCALE IS NULL --V Vecchia condizione che va in errore nel caso carichiamo le fiduciarie,il job va in errore, facendolo rigirare le vuole ricaricare, violando la pk --AND (C6.COD_FISCALE IS NULL -- OR CHARINDEX('@', VARC6.Codice_Fiscale) > 0) SET @righeInsert = @righeInsert + @@ROWCOUNT FETCH NEXT FROM ELABORAZIONI INTO @ULTIMOPROGRINVIO, @ORDINEELAB END SET @fine = GETDATE() -- 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