-- =============================================
-- Author:		Berni Francesco
-- Create date: 24 Aprile 2009
-- Description: 
-- =============================================
-- C6MartPeriodico.[GC_VerificheCampioneSelect] 'F', '011717'
CREATE procedure [C6MartPeriodico].[GC_VerificheCampioneSelect]
 -- Add the parameters for the stored procedure here
 @Rete char(1) = null, 
 @CodicePB varchar(6) = null,
 @CodiceFiscale varchar(16) = null,
 @NomeCliente varchar(50) = null,
 @CognomeCliente varchar(50) = null,
 @DataSottDA datetime = null,
 @DataSottA datetime = null,
 @RFADA decimal = null, 
 @RFAA decimal = null, 
 @VaRDA decimal = null, 
 @VaRA decimal = null,
 @Delimiter char(1) = '|',
 @Profilo varchar(50) = null,
 @Diagnosi bit = 0, 
 @Monitoraggio bit = 0, 
 @NonVerificato bit = 0,
 @Verificato bit = 0, 
 @OK bit = 0, 
 @KO bit = 0,
 @pdfC6 int = 1
AS
BEGIN
SELECT		   distinct  C6MartPeriodico.GESTIONE_PDF_FTP.IdReport,
			   C6Mart.CONTRATTOSEI.Rete, 
				Case C6Mart.CONTRATTOSEI.Rete when 'F' then 'Fideuram' else
			    Case  C6Mart.CONTRATTOSEI.Rete when 'S' then 'San Paolo' End End
				as Rete,	
			   C6Mart.CONTRATTOSEI.Cod_Agente,
				CASE 
					WHEN C6Mart.CONTRATTOSEI.Cod_Fiscale LIKE '%@%' THEN C6MartPeriodico.ANAG_CLIENTI.COGNOME + ' ' + REPLACE(C6MartPeriodico.ANAG_CLIENTI.NOME,'$','') + ' - ' + SUBSTRING(C6Mart.CONTRATTOSEI.Cod_Fiscale, CHARINDEX('@',C6Mart.CONTRATTOSEI.Cod_Fiscale) + 1 , LEN(C6Mart.CONTRATTOSEI.Cod_Fiscale) - CHARINDEX('@',C6Mart.CONTRATTOSEI.Cod_Fiscale) + 1)
					ELSE C6MartPeriodico.ANAG_CLIENTI.COGNOME + ' ' + C6MartPeriodico.ANAG_CLIENTI.NOME
				END AS NOMINATIVOCLIENTE, 
			   Case C6MartPeriodico.GESTIONE_PDF_FTP.TipoReport when 'D' then 'Diagnosi' else
			   Case C6MartPeriodico.GESTIONE_PDF_FTP.TipoReport when 'M' then 'Monitoraggio' End End
				as TipoReport,	
			   C6MartPeriodico.VERIFICHECAMPIONE.UserModify,
               ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Verifica, 0) AS VERIFICA,
			   ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Esito, '-') AS Esito,
               C6Mart.CONTRATTOSEI.Cod_Fiscale,
			   @pdfC6 as pdfC6   
-- From 
    FROM			C6Mart.CONTRATTOSEI INNER JOIN
                C6MartPeriodico.GESTIONE_PDF_FTP ON 
				C6Mart.CONTRATTOSEI.Rete = C6MartPeriodico.GESTIONE_PDF_FTP.Rete AND 
                C6Mart.CONTRATTOSEI.Cod_Fiscale = C6MartPeriodico.GESTIONE_PDF_FTP.CodiceFiscale 
	--INNER JOIN
	LEFT OUTER JOIN
               C6MartPeriodico.RISCHIO_AGGREGATO 
			   ON C6Mart.CONTRATTOSEI.Rete = C6MartPeriodico.RISCHIO_AGGREGATO.RETE 
			   AND C6Mart.CONTRATTOSEI.Cod_Fiscale = C6MartPeriodico.RISCHIO_AGGREGATO.COD_FISCALE 
			   --AND C6MartPeriodico.RISCHIO_AGGREGATO.COD_AGGREG = 'COMPLESSIVO|BF' 	
	INNER JOIN
               C6MartPeriodico.MIFID 
			   ON C6Mart.CONTRATTOSEI.Rete = C6MartPeriodico.MIFID.RETE 
			   AND C6Mart.CONTRATTOSEI.Cod_Fiscale = C6MartPeriodico.MIFID.COD_FISCALE 
	INNER JOIN
               C6MartPeriodico.ANAG_CLIENTI ON 
			   C6Mart.CONTRATTOSEI.Rete = C6MartPeriodico.ANAG_CLIENTI.RETE 
			   AND C6Mart.CONTRATTOSEI.Cod_Fiscale = C6MartPeriodico.ANAG_CLIENTI.COD_FISCALE 
	INNER JOIN
               C6MartPeriodico.vPatrimonioBFAggregato ON 
			   C6Mart.CONTRATTOSEI.Rete = C6MartPeriodico.vPatrimonioBFAggregato.RETE 
			   AND C6Mart.CONTRATTOSEI.Cod_Fiscale = C6MartPeriodico.vPatrimonioBFAggregato.COD_FISCALE 
	LEFT OUTER JOIN
               C6MartPeriodico.VERIFICHECAMPIONE ON 
			   C6MartPeriodico.GESTIONE_PDF_FTP.IdReport = C6MartPeriodico.VERIFICHECAMPIONE.IdReport 
	WHERE	1=1 
	-- rete
	AND (@Rete is null OR @Rete = '-' OR C6Mart.CONTRATTOSEI.Rete = @Rete)
    AND (@CodicePB is null OR C6Mart.CONTRATTOSEI.Cod_Agente = @CodicePB)
    --AND (@CodiceFiscale is null OR C6Mart.CONTRATTOSEI.Cod_Fiscale = @CodiceFiscale)
	AND (@CodiceFiscale is null OR C6Mart.CONTRATTOSEI.Cod_Fiscale like @CodiceFiscale + '%')
    AND (@NomeCliente is null OR C6MartPeriodico.ANAG_CLIENTI.NOME LIKE '%' + @NomeCliente + '%')
    AND (@CognomeCliente is null OR UPPER(C6MartPeriodico.ANAG_CLIENTI.COGNOME) LIKE UPPER(@CognomeCliente))
    AND ( 	     
			(@Diagnosi = 1 AND  C6MartPeriodico.GESTIONE_PDF_FTP.TipoReport = 'D')
			 OR 
			(@Monitoraggio = 1 AND C6MartPeriodico.GESTIONE_PDF_FTP.TipoReport = 'M')
			OR
			(@Monitoraggio = 0 AND @Diagnosi = 0 AND C6MartPeriodico.GESTIONE_PDF_FTP.TipoReport IN ('D', 'M'))
		) 
	AND (@DataSottDA is null OR C6Mart.CONTRATTOSEI.Data_Sott > CONVERT(DATETIME, @DataSottDA , 103))
	AND (@DataSottA is null OR C6Mart.CONTRATTOSEI.Data_Sott < CONVERT(DATETIME, @DataSottA , 103))
	AND (@RFADA is null OR C6MartPeriodico.vPatrimonioBFAggregato.CTV > @RFADA)
	AND (@RFAA is null OR C6MartPeriodico.vPatrimonioBFAggregato.CTV < @RFAA)
	AND (@VaRDA is null OR C6MartPeriodico.RISCHIO_AGGREGATO.VAR_PERC_PTF > @VaRDA)
	AND (@VaRA is null OR C6MartPeriodico.RISCHIO_AGGREGATO.VAR_PERC_PTF < @VaRA)
    AND (
			@Profilo IS NULL OR C6MartPeriodico.MIFID.PROFILO_ASS in 
			(select [value] from  dbo.Split(@Delimiter, @Profilo)) 
		)
    AND ( 
----			(@Verificato = 0 OR (@Verificato = 1 AND  C6MartPeriodico.VERIFICHECAMPIONE.Verifica = 1))
----			 OR 
----			(@NonVerificato = 0 OR (@NonVerificato = 1 AND C6MartPeriodico.VERIFICHECAMPIONE.Verifica = 0))
				(@Verificato = 1 AND  ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Verifica,0) = 1)
				OR 
				(@NonVerificato = 1 AND ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Verifica,0) = 0)
				OR 
				(@Verificato = 0 AND @NonVerificato = 0 
				 AND (ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Verifica,0) = 1 
				 OR ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Verifica,0) = 0))
		) 
	AND ( 
			(@OK = 1 AND  ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Esito, '-') = 'OK')
			 OR 
			(@KO = 1 AND ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Esito, '-') = 'KO')
			 OR
			(@OK = 0 AND @KO = 0 AND ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Esito, '-') IN ('-','KO','OK'))
			 OR
			(@OK = 1 AND @KO = 1 AND ISNULL(C6MartPeriodico.VERIFICHECAMPIONE.Esito, '-') IN ('-','KO','OK'))
		) 
    --AND ISNULL(C6MartPeriodico.GESTIONE_PDF_FTP.FlagInvio,'N') = 'N' --C6MartPeriodico.getIdElab() 
	AND C6MartPeriodico.VERIFICHECAMPIONE.datafine is  null 
	--AND ISNULL(C6MartPeriodico.GESTIONE_PDF_FTP.DEFINITIVO, 0) = 0
END