-- Schema: C6Mart
-- Stored Procedure: PL_D_S180ProdottiComplessitaAlta





--[C6Mart].[PL_D_S180ProdottiComplessitaAlta] 'f', 'ff@9225'
CREATE   procedure [C6Mart].[PL_D_S180ProdottiComplessitaAlta] --'W','BRGDNT48P60D612V'
	-- Add the parameters for the stored procedure here
	@Rete char(1), 
	@CodiceFiscale varchar(16)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	declare @TotalePatrimonio decimal(12,2)

	-- acquisiamo il totale patrimonio del cliente
	SELECT @TotalePatrimonio = ctv
	FROM
		C6Mart.vPatrimonioBFAggregato
	WHERE
		RETE = @Rete AND
		COD_FISCALE = @CodiceFiscale
--
 SELECT
    1 as Ordine,
    codicecontratto as CodiceContratto,
    nomeprodotto as NomeProdotto,
    controvalore as Controvalore,
	compl_base as Complessita,
    ((controvalore * 100) / @TotalePatrimonio) as Peso,
    @TotalePatrimonio as TotalePatrimonio,
    SUM(controvalore) OVER () as SommaControvalore,
    SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
	into #temp
FROM
    [C6Mart].[TB_S180ProdottiComplessitaAlta]
WHERE
    rete = @Rete
    AND cod_fiscale LIKE 
        CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN '%%'
        ELSE @CodiceFiscale
        END
    AND codman = 
        CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN SUBSTRING(@CodiceFiscale, 4, LEN(@CodiceFiscale) - 3)
        ELSE ''
        END
    AND Compl_Base > 3

	union all
	SELECT
    2 as Ordine,
    codicecontratto as CodiceContratto,
    nomeprodotto as NomeProdotto,
    controvalore as Controvalore,
	compl_base as Complessita,
    ((controvalore * 100) / @TotalePatrimonio) as Peso,
    @TotalePatrimonio as TotalePatrimonio,
    SUM(controvalore) OVER () as SommaControvalore,
    SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
FROM
    [C6Mart].[TB_S180ProdottiComplessitaAlta]
WHERE
    rete = @Rete
    AND cod_fiscale LIKE 
        CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN '%%'
        ELSE @CodiceFiscale
        END
    AND codman = 
        CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN SUBSTRING(@CodiceFiscale, 4, LEN(@CodiceFiscale) - 3)
        ELSE ''
        END
    AND Compl_Base > 2

	union all
	SELECT
    3 as Ordine,
    codicecontratto as CodiceContratto,
    nomeprodotto as NomeProdotto,
    controvalore as Controvalore,
	compl_base as Complessita,
    ((controvalore * 100) / @TotalePatrimonio) as Peso,
    @TotalePatrimonio as TotalePatrimonio,
    SUM(controvalore) OVER () as SommaControvalore,
    SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
FROM
    [C6Mart].[TB_S180ProdottiComplessitaAlta]
WHERE
    rete = @Rete
    AND cod_fiscale LIKE 
        CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN '%%'
        ELSE @CodiceFiscale
        END
    AND codman = 
        CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN SUBSTRING(@CodiceFiscale, 4, LEN(@CodiceFiscale) - 3)
        ELSE ''
        END
    AND Compl_Base > 1

	-- --20180905 Fine modifica
	order by ordine,Compl_Base desc

	delete from #temp where ordine=1 and SommaPesi<20 --pesi definiti da banca se la somma dei pesi di tutti prodotti a complessita alta č <20 
	delete from #temp where ordine=2 and SommaPesi<30 --pesi definiti da banca se la somma dei pesi di tutti prodotti a complessita alta e medio-alta č <30 
	delete from #temp where ordine=3 and SommaPesi<50 --pesi definiti da banca se la somma dei pesi di tutti prodotti a complessita alta e medio-alta e medio-bassa č <50 

--	select * from #temp --order by ordine,Complessita

	DECLARE @ordineConcatenato VARCHAR(4)

SELECT @ordineConcatenato = COALESCE(@ordineConcatenato + '', '') + CAST(ordine AS VARCHAR)
FROM (SELECT DISTINCT ordine FROM #temp) AS subquery
-- @ordineConcatenato conterrā i valori distinti concatenati della colonna 'ordine'


SELECT Ordine,CodiceContratto,NomeProdotto,Controvalore,Complessita,Peso,TotalePatrimonio,SommaControvalore,SommaPesi,@ordineConcatenato AS O
