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

123 lines
3.9 KiB
Transact-SQL

-- Schema: C6Mart
-- Stored Procedure: RP_DM_GestioneEmailNA
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)