PDC_REPORT_CreazioneDB/sql/Produzione/procedure/C6Mart_RP_DM_GestioneEmailNA.sql
2025-06-10 15:29:00 +02:00

148 lines
5.5 KiB
Transact-SQL

CREATE PROCEDURE [C6Mart].[RP_DM_GestioneEmailNA]
AS
BEGIN
DECLARE @NUMGIORNIDALPERF SMALLINT
DECLARE @NUMGIORNIDASOLLECITO SMALLINT
DECLARE @MaxInvioSoll SMALLINT
DECLARE @ID_ELAB INT
SET @NUMGIORNIDALPERF = CAST(dbo.getParametro('NUMGIORNIDALPERF') as smallint)--7
SET @NUMGIORNIDASOLLECITO = CAST(dbo.getParametro('NUMGIORNIDASOLLECITO') AS SMALLINT) --7
SET @MaxInvioSoll = CAST(dbo.getParametro('MaxInvioSoll') AS SMALLINT)--12
SET @ID_ELAB = C6MART.GETIDELAB()
INSERT INTO LOG_ESECUZIONE(Nome, Inizio, Nota)
VALUES ('RP_DM_GestioneEmailNA_AND',GETDATE(),'Elaborazione giornaliera')
BEGIN TRANSACTION
SELECT DISTINCT ChiaveClientePB
INTO #CaricamentoMassivoC6SC
FROM [CONSUNI].ConsulenzaUnicaFL.dbo.CaricamentoMassivoC6SC WHERE ESITO = 0 AND CHIUSO = 'N'
SELECT
vc.rete,
vc.cod_fiscale,
VC.ChiaveClientePb,
CASE
WHEN ISNULL(numSolleciti,0) = 0 THEN '1_SOLL_NOASS'
WHEN numSolleciti = 1 THEN '2_SOLL_NOASS'
WHEN numSolleciti = 2 THEN '3_SOLL_NOASS'
ELSE 'S_SOLL_NOASS'
END as tipoEmail,
getDate() as DataGenerazione,
CASE WHEN RSES.chiaveclientepb IS NULL THEN 'N' ELSE 'S' END AS ContrRSES,
@ID_ELAB AS ID_ELAB
INTO #CLIENTINA
FROM C6Mart.vcontrattisei VC
LEFT JOIN C6MART.CODICI_PROMOTORI_FITTIZI PF
ON VC.COD_AGENTE BETWEEN PF.CODICEDA AND PF.CODICEA
AND VC.RETE = PF.RETE
LEFT JOIN #CaricamentoMassivoC6SC RSES
ON RSES.chiaveclientepb = VC.chiaveclientepb
WHERE 1 = 1
AND VC.numSolleciti < @MaxInvioSoll
-- modifica del 3/10/2018 per gestire i casi in cui VC.Data_UltimoSollecito = 0 e che manda in errore
-- la sp (Error: Implicit conversion from data type datetime to smallint is not allowed. Use the CONVERT function to run this query)
--AND ((ISNULL(VC.numSolleciti,0) = 0 AND DATEDIFF(DAY,VC.Data_Perf,GETDATE()) >= @NUMGIORNIDALPERF)
-- OR
-- (DATEDIFF(DAY,isnull(VC.Data_UltimoSollecito,GETDATE()),GETDATE()) >= @NUMGIORNIDASOLLECITO))
AND ((ISNULL(VC.numSolleciti,0) = 0 AND DATEDIFF(DAY,VC.Data_Perf,GETDATE()) >= @NUMGIORNIDALPERF)
OR
(DATEDIFF(DAY,isnull(
case when isdate(VC.Data_UltimoSollecito) = 1
then VC.Data_UltimoSollecito
else
GETDATE()
end
,GETDATE()),GETDATE()) >= @NUMGIORNIDASOLLECITO))
--fine modifica del 3/10/2018
-- modifica del 3/10/2018 per gestire i valori 'date' del campo e che mandano in errore di conversione la sp
--AND VC.InvioBenvenuto = 'N'
AND cast(VC.InvioBenvenuto as varchar) = 'N'
-- fine modifica del 3/10/2018
AND VC.clienteMigrato = 'S'
AND VC.risorseNA = 'S'
AND VC.Data_FineAvanzato > getDate()
AND PF.RETE IS NULL
--AND VC.COD_FISCALE + VC.RETE IN (SELECT COD_FISCALE+RETE FROM C6MART.TestEmailAnd)
INSERT INTO C6Mart.GESTIONE_EMAIL (Rete,Cod_Fiscale,Tipo,Data_Generazione,ID_ELAB)
SELECT
rete,
cod_fiscale,
tipoEmail,
DataGenerazione,
@ID_ELAB AS ID_ELAB
FROM #CLIENTINA
WHERE ContrRSES = 'S'
UPDATE c6mart.CONTRATTOSEI_METADATI
SET numSolleciti = isnull(numSolleciti,0) + 1, Data_UltimoSollecito = getDate()
where chiaveclientepb in (
select chiaveclientepb FROM #CLIENTINA
WHERE ContrRSES = 'S')
INSERT INTO C6Mart.GESTIONE_EMAIL (Rete,Cod_Fiscale,Tipo,Data_Generazione,ID_ELAB)
SELECT
email.rete,
email.cod_fiscale,
'REVOCA_NOASS' as tipoEmail,
getDate() as DataGenerazione,
@ID_ELAB AS ID_ELAB
FROM C6Mart.vcontratti VC
INNER JOIN [C6Mart].[CONTRATTOSEI_METADATI] MD
ON MD.chiaveclientepb = VC.chiaveclientepb
INNER JOIN c6mart.gestione_Email EMAIL
ON VC.RETE = EMAIL.RETE
AND VC.COD_FISCALE = EMAIL.COD_FISCALE
LEFT JOIN C6MART.CODICI_PROMOTORI_FITTIZI PF
ON VC.COD_AGENTE BETWEEN PF.CODICEDA AND PF.CODICEA
AND VC.RETE = PF.RETE
WHERE 1 = 1
AND EMAIL.Tipo IN ('S_SOLL_NOASS','REVOCA_NOASS')
AND (
(MD.numRevoche> 0) -- SONO NEL CASO DI REVOCA SUCCESSIVA BRAVO VALERIO
OR
(MD.numSolleciti = @MaxInvioSoll and MD.risorseNA = 'S')-- SONO NEL CASO DI PRIMA REVOCA
)
AND VC.Data_FineAvanzato > getDate()
AND (DATEDIFF(DAY,isnull(MD.Data_UltimaRevoca,MD.Data_UltimoSollecito),GETDATE()) >= @NUMGIORNIDASOLLECITO)
AND PF.RETE IS NULL
--AND VC.COD_FISCALE + VC.RETE IN (SELECT COD_FISCALE+RETE FROM C6MART.TestEmailAnd)
GROUP BY email.rete, email.cod_fiscale
UPDATE c6mart.[CONTRATTOSEI_METADATI] SET numRevoche = isnull(numRevoche,0) + 1, data_UltimaRevoca = getDate()
FROM C6Mart.vcontratti VC
INNER JOIN [C6Mart].[CONTRATTOSEI_METADATI] MD
ON MD.chiaveclientepb = VC.chiaveclientepb
INNER JOIN c6mart.gestione_Email EMAIL
ON VC.RETE = EMAIL.RETE
AND VC.COD_FISCALE = EMAIL.COD_FISCALE
LEFT JOIN C6MART.CODICI_PROMOTORI_FITTIZI PF
ON VC.COD_AGENTE BETWEEN PF.CODICEDA AND PF.CODICEA
AND VC.RETE = PF.RETE
WHERE 1 = 1
AND EMAIL.Tipo IN ('S_SOLL_NOASS','REVOCA_NOASS')
AND (
(MD.numRevoche> 0) -- SONO NEL CASO DI REVOCA SUCCESSIVA BRAVO VALERIO
OR
(MD.numSolleciti = @MaxInvioSoll and MD.risorseNA = 'S')-- SONO NEL CASO DI PRIMA REVOCA
)
AND VC.Data_FineAvanzato > getDate()
AND (DATEDIFF(DAY,isnull(MD.Data_UltimaRevoca,MD.Data_UltimoSollecito),GETDATE()) >= @NUMGIORNIDASOLLECITO)
AND PF.RETE IS NULL
--AND VC.COD_FISCALE + VC.RETE IN (SELECT COD_FISCALE+RETE FROM C6MART.TestEmailAnd)
update C6Mart.GESTIONE_EMAIL
set Inviata = 'S', Data_Invio = getdate()
where Cod_Fiscale = 'CRCTMS62A05H501D'
-- Log esecuzione
UPDATE
LOG_ESECUZIONE
SET
Fine = GETDATE(),
Tipo = 'UPDATE',
Righe = @@ROWCOUNT
WHERE
Nome = 'RP_DM_GestioneEmailNA_AND' AND
Inizio = (
SELECT
MAX(Inizio)
FROM
LOG_ESECUZIONE
WHERE
Nome = 'RP_DM_GestioneEmailNA_AND'
)
COMMIT
END