﻿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