PDC_REPORT_CreazioneDB/sql/storedCollaudo/C6Mart_DM_PopolaContratti.sql
2025-06-06 19:02:52 +02:00

120 lines
3.9 KiB
Transact-SQL

-- 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