-- Schema: C6MartPeriodico
-- Stored Procedure: DM_ALL_PATRIMONIO




-- =============================================
-- AUTHOR:		ALESSANDRO TRINGALI
-- CREATE DATE: 18 SETTEMBRE 2009
-- DESCRIPTION:	
-- =============================================
CREATE procedure [C6MartPeriodico].[DM_ALL_PATRIMONIO]
AS
BEGIN

	SET NOCOUNT ON;

	DECLARE @ID_ELAB INT

	SET @ID_ELAB = [C6MARTPERIODICO].GETIDELAB()

	-- LOG ESECUZIONE
	INSERT INTO LOG_ESECUZIONE
		(NOME, INIZIO, NOTA)
	VALUES (
		'DM_ALL_PATRIMONIO',
		GETDATE(),
		'ELABORAZIONE TRIMESTRALE'
	)

	TRUNCATE TABLE [C6MartPeriodico].[ALL_PATRIMONIO] 

	INSERT INTO [C6MARTPERIODICO].[ALL_PATRIMONIO]

           (
           [CODICE_FISCALE]
           ,[RETE]
           ,[POSITIONID]
           ,[CATALOGUENAME]
           ,[CATALOGUEID]
           ,[COD_ADEGUATEZZA]
           ,[INTERMEDIARIO]
           ,[PATRIMONIO_INTERMEDIARIO]
           ,[EMITTENTE]
           ,[PATRIMONIO_EMITTENTE]
           ,[COMPLESSITA]
           ,[TIPO_PRODOTTO]
           ,[CONTROVALORE_PRODOTTO]
           ,[AZ_OB]
           ,[PATRIMONIO_AZ_OB_EMIT]
           ,[PATRIM_AZ_OB_EMIT_INTER]   
           ,[PATRIMONIO_COMPLESSIVO] 
           ,[CHIAVE_THR]
           )

SELECT 
       CODICE_FISCALE,
       RETE,
       POSITIONID,
       DATI.CATALOGUENAME,
       CAT.CATALOGUEID,
       CASE
            WHEN ADEGUATEZZA IS NULL
                 THEN CAT.COD_ADEGUATEZZA
            ELSE ADEGUATEZZA
       END AS COD_ADEGUATEZZA,
       INTERMEDIARIO,
       SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE,INTERMEDIARIO) AS PATRIMONIO_INTERMEDIARIO,
       EMIT.DESCR AS EMITTENTE,
       CASE
            WHEN EMIT.DESCR IS NULL THEN NULL
            ELSE SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE,EMIT.DESCR)
       END AS PATRIMONIO_EMITTENTE,
       CAT.COMPLEX AS COMPLESSITA,
       CAT.TIPOPRODOTTO,
       CONTROVALORE  AS CONTROVALORE_PRODOTTO,
       CASE WHEN CAT.STRTYPE IS NULL
            THEN AZ_OB
            ELSE CAT.STRTYPE
       END AS AZ_OB,
       SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE,CASE WHEN CAT.STRTYPE IS NULL THEN AZ_OB ELSE CAT.STRTYPE END,EMIT.DESCR) AS PATRIMONIO_AZ_OB_EMIT,
       SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE,INTERMEDIARIO,CASE WHEN CAT.STRTYPE IS NULL THEN AZ_OB ELSE CAT.STRTYPE END,EMIT.DESCR, POSITIONID) AS PATRIM_AZ_OB_EMIT_INTER,
       SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE) AS PATRIMONIO_COMPLESSIVO,
       CHIAVE_THR

  FROM (

       SELECT NULL AS AGENTE,
               C.RETE,
               C.CODICE_FISCALE,
               C.CATALOGUENAME,
               C.CONTROVALORE,
               'BF' AS INTERMEDIARIO,
               SUBSTRING(C.STRINGONA_POS, 1, 57) AS CATALOGUEID,
               C.STRINGONA_POS AS POSITIONID,
               NULL AS ADEGUATEZZA,
               'BF' AS PROVENIENZA,
               NULL AZ_OB,
               '' AS CHIAVE_THR
          FROM C6STAGINGPERIODICO.ALL_CONSUL_ASUL C
         
        union all
        SELECT agente,
               substring(agente,1,1) as rete,
               codicefiscale as codice_FISCALE,
               nome_prodotto as cataloguename,
               SUM(controvalore) AS controvalore,
               intermediario,
				case when codiceisin =  '' then '############' else  codiceisin + replicate(' ', 12-len(codiceisin))  end
				 +
				case when codicemaf =  '' then '###############' else  codicemaf + replicate(' ', 15-len(codicemaf))   end
				+
				case when codiceinterno =  '' then '###############' else  codiceinterno + replicate(' ', 15-len(codiceinterno))   end
				+
				case when codicesottoprodotto =  '' then '###############' else  codicesottoprodotto + replicate(' ', 15-len(codicesottoprodotto))   end

				 as catalogueid,
                      null as positionid,
                      codiceadeguatezza as ADEGUATEZZA ,
                      'PPT' as provenienza,