PDC_REPORT_CreazioneDB/sql/Collaudo/funzioni/dbo_Replace_Testo_Email.sql
2025-06-10 15:29:00 +02:00

107 lines
5.3 KiB
Transact-SQL

CREATE FUNCTION [dbo].[Replace_Testo_Email]
(
@CODICE_CONTRATTO as varchar(16) = '',
@CODICE_FISCALE as varchar(16) = '',
@COGNOME_CLIENTE as varchar(20) = '',
@NOME_CLIENTE as varchar(20) = '',
@CODICE_PB as varchar(6) = '',
@COGNOME_PB as varchar(20) = '',
@NOME_PB as varchar(20) = '',
@DATA_PERFEZIONAMENTO as datetime = null,
@FREQUENZA_DIAGN as varchar(16) = '',
@FREQUENZA_MONITOR as varchar(16) = '',
@PERC_RNA as varchar(3),
@TIP_CONTRATTO as int = -1,
@DATA_REVOCA_CONTRATTO as datetime = '2001-01-01',
@DATA_SOTTOSCRIZIONE_CONTRATTO as datetime = '2001-01-01',
@RETE AS NVARCHAR(5) = 'S',
@TESTO as TEXT = ''
)
RETURNS varchar(5000)
AS
BEGIN
DECLARE @TESTO_DI_RITORNO as varchar(8000)
DECLARE @TIPO_REPORT_D as varchar(100)
DECLARE @TIPO_REPORT_M as varchar(100)
DECLARE @CODMAN AS VARCHAR(6)
DECLARE @TIP_CONTRATTO_TEXT as nvarchar(20)
SET @TIP_CONTRATTO_TEXT = case @TIP_CONTRATTO when 1 then 'Sei' when 2 then 'Sei Versione Private' else 'Sei' end
DECLARE @RETE_TEXT as nvarchar(20)
SET @RETE_TEXT = case @RETE when 'F' then 'Fideuram' else 'SanPaolo Invest' end
IF @FREQUENZA_MONITOR is null
BEGIN
SET @TIPO_REPORT_M = '';
SET @FREQUENZA_MONITOR = '';
END
ELSE
BEGIN
SET @TIPO_REPORT_M = 'Monitoraggio';
if @FREQUENZA_MONITOR = 'T'
SET @FREQUENZA_MONITOR = 'Trimestrale';
if @FREQUENZA_MONITOR = 'S'
SET @FREQUENZA_MONITOR = 'Semestrale';
if @FREQUENZA_MONITOR = 'A'
SET @FREQUENZA_MONITOR = 'Annuale';
SET @TIPO_REPORT_M = 'Report ' +@TIPO_REPORT_M + ' ' + @FREQUENZA_MONITOR;
END
if @FREQUENZA_DIAGN is null
BEGIN
SET @TIPO_REPORT_D = '';
SET @FREQUENZA_DIAGN = '';
END
else
BEGIN
SET @TIPO_REPORT_D = 'Diagnosi';
if @FREQUENZA_DIAGN = 'T'
SET @FREQUENZA_DIAGN = 'Trimestrale';
if @FREQUENZA_DIAGN = 'S'
SET @FREQUENZA_DIAGN = 'Semestrale';
if @FREQUENZA_DIAGN = 'A'
SET @FREQUENZA_DIAGN = 'Annuale';
SET @TIPO_REPORT_D = 'Report ' + @TIPO_REPORT_D + ' ' + @FREQUENZA_DIAGN;
END
-- modifica del 10/3/2017 per gestire codici mandato maggiori di 4 caratteri (tt T-1933818-K3C4)
--SET @CODMAN= CASE WHEN @CODICE_FISCALE LIKE '%@%' THEN SUBSTRING(@CODICE_FISCALE,4,4) ELSE '' END
SET @CODMAN= CASE WHEN @CODICE_FISCALE LIKE '%@%' THEN SUBSTRING(@CODICE_FISCALE,4,LEN(rtrim(@CODICE_FISCALE))-3) ELSE '' END
-- fine modifica del 10/3/2017 per gestire codici mandato maggiori di 4 caratteri (tt T-1933818-K3C4)
SET @TESTO_DI_RITORNO = isnull(@TESTO,'/$TESTO NON VALORIZZATO$/');
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$ACAPO$/',char(10));
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$CODICE_CONTRATTO$/',@CODICE_CONTRATTO);
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$CODICE_FISCALE$/',@CODICE_FISCALE);
IF (@CODMAN = '')
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$COGNOME_CLIENTE$/',@COGNOME_CLIENTE)
ELSE
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$COGNOME_CLIENTE$/',@COGNOME_CLIENTE + '-' + @CODMAN)
--SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$DATA_REVOCA_CONTRATTO$/',dbo.ToShortDateString(@DATA_REVOCA_CONTRATTO));
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$DATA_SOTTOSCRIZIONE_CONTRATTO$/',dbo.ToShortDateString(@DATA_SOTTOSCRIZIONE_CONTRATTO));
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$TIP_CONTRATTO$/',isnull(@TIP_CONTRATTO_TEXT,'--TIP CONTRATTO--'));
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$RETE$/',isnull(@RETE_TEXT,'--RETE--'));
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$NOME_CLIENTE$/',@NOME_CLIENTE);
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$CODICE_PB$/',@CODICE_PB);
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$PERC_LIMITE_RNA$/',@PERC_RNA);
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$COGNOME_PB$/',isnull(@COGNOME_PB,'/$COGNOME_PB$/'));
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$NOME_PB$/',isnull(@NOME_PB,'/$NOME_PB$/'));
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$report_type_monitoraggio$/',@TIPO_REPORT_M);
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$report_type_diagnosi$/',@TIPO_REPORT_D);
if not @DATA_PERFEZIONAMENTO is null
begin
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$DATA_PERFEZIONAMENTO$/',dbo.ToShortDateString(@DATA_PERFEZIONAMENTO));
--V Condizione aggiunta per evitare il fatto che sulla mail non compaia una data di generazione del report antecedente alla data attuale
IF ((@DATA_PERFEZIONAMENTO + 15) < getdate())
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$DATA_INVIO_REPORT$/',dbo.ToShortDateString(GETDATE() + 1));
ELSE
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$DATA_INVIO_REPORT$/',dbo.ToShortDateString(dateadd(day,cast(dbo.getParametro('NUMGIORNIDALPERF_REP') as smallint),@DATA_PERFEZIONAMENTO)));
--
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,'/$GG_DA_PERF$/',cast(dbo.getParametro('NUMGIORNIDALPERF_REP') as smallint));
SET @TESTO_DI_RITORNO = REPLACE(@TESTO_DI_RITORNO,
'/$DATA_REVOCA_CONTRATTO$/',
dbo.ToShortDateString(
dateadd(
day,(
(CAST(dbo.getParametro('MaxInvioSoll') as smallint)-1) *
CAST(dbo.getParametro('NUMGIORNIDASOLLECITO') as smallint)+
CAST(dbo.getParametro('NUMGIORNIDALPERF') as smallint)),
@DATA_PERFEZIONAMENTO)));
end
RETURN @TESTO_DI_RITORNO
END