-- =============================================
-- Author:		Alessandro Tringali
-- Create date: 18 Settembre 2009
-- Description:	
-- =============================================
CREATE procedure [C6MartPeriodico].[DM_MONITORAGGIO_DETTAGLIO_pre_selective]
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_MONITORAGGIO_DETTAGLIO_pre_selective',
		GETDATE(),
		'Elaborazione trimestrale'
	)
	TRUNCATE TABLE [C6MartPeriodico].[MONITORAGGIO_DETTAGLIO] 
	INSERT INTO [C6MartPeriodico].[MONITORAGGIO_DETTAGLIO]
           ([RETE]
           ,[COD_FISCALE]
           ,[POSITION_ID]
           ,[ID_AREA]
           ,[DATA_ASSOCIAZIONE]
           ,[VERSATO_NETTO_DA_ASSOC]
           ,[UTILE_PERDITA_DA_ASSOC]
           ,[ID_ELAB])
	SELECT
			B.RETE,
			B.CODFIS,
			B.POSITIONID,
			A.[ID_AREA],
			case when A.TIPPROD='CC' and data_associazione < '20110211' then cast('20110211' AS DATETIME)
			ELSE DATA_ASSOCIAZIONE END AS DATA_ASSOCIAZIONE,
			A.CVNNAC AS [VERSATO_NETTO_DA_ASSOC],
			CASE WHEN A.CVNNAC =0 THEN 0 ELSE (B.CTV - A.CVNNAC) END AS [UTILE_PERDITA_DA_ASSOC],
			@ID_ELAB AS [ID_ELAB]
			FROM
			C6STAGINGPERIODICO.SPB_CONTR_SINTESI B
			INNER JOIN
			(
            SELECT
            TCP.RETE AS  [RETE],
			CASE
				WHEN MAN.CODMAND IS NULL THEN TCP.CODFIS
				ELSE dbo.getFiduciariaByCodMand(MAN.CODMAND)
			END AS [COD_FISCALE],
			   TCP.CODPROD,
			   TCP.TIPPROD, 
			   TCP.CODINT, 
			   TCP.MAF,
			   TCP.ISIN,
			   TCP.SUBPROD, 
			   TCP.CODCONF, 
			   TCP.NUMPOL, 
			   TCP.CONTO, 
			   TCP.RUBR, 
			   TCP.CUSTGAR,
			   TCP.TERMID, 
			   TCP.ANNO, 
			   TCP.PROG,
               TCP.CODPROG,
			CASE 
            WHEN TCP.CODAREA='EXR' THEN 'EXT' ELSE TCP.CODAREA 
            END AS ID_AREA,
			CASE WHEN TCP.DTINGRESSO=0 THEN 
				 (CASE WHEN TCP.DTININAC=0 THEN NULL ELSE cast(CAST(TCP.DTININAC AS VARCHAR(8)) as datetime)END)
			ELSE cast(CAST(TCP.DTINGRESSO AS VARCHAR(8)) as datetime)
            --ELSE CAST(DTININAC AS DATETIME)  
            END AS [DATA_ASSOCIAZIONE],
			TCP.CVNNAC
			FROM
            C6STAGINGPERIODICO.TANAB ANA 
            JOIN 
			C6STAGINGPERIODICO.TCPTAB TCP
            ON ANA.CODAREA=TCP.CODAREA
            AND ANA.RETE=TCP.RETE
            AND ANA.CODPROG=TCP.CODPROG
            AND ANA.CODFIS=TCP.CODFIS
			LEFT OUTER JOIN
			C6STAGINGPERIODICO.WMANDATI MAN
			ON ANA.CODFIS = MAN.CODMAND
            WHERE DTVALORIZ NOT IN (99991231) AND 
                  DTUSCITA=99991231) A
			ON 
				A.COD_FISCALE=B.CODFIS
			AND B.RETE=B.RETE
			AND A.CODPROD=B.CODPROD
			AND A.CODCONF=B.CODCONF
			AND A.CODINT=B.CODINT
			AND A.SUBPROD=B.SUBPROD
			AND A.NUMPOL=B.NUMPOL
			AND A.CONTO=B.CONTO
			AND (case when a.TIPPROD='CC' and (a.rubr is null OR LTRIM(RTRIM(a.rubr)) = '') then '000' else a.rubr end)=B.RUBR
            AND (		CASE
					WHEN PCTKEY IS NULL OR PCTKEY = '' OR LTRIM(RTRIM(PARSENAME(REPLACE(PCTKEY, '/', '.'), 1))) = '' THEN 0
					ELSE CAST(PARSENAME(REPLACE(PCTKEY, '/', '.'), 1) AS decimal(9, 0)) END ) =A.PROG
			AND (case when a.TIPPROD='cc' and (a.CUSTGAR is null OR LTRIM(RTRIM(a.CUSTGAR)) = '') then '0' else A.CUSTGAR end)=B.CUSTGAR
--			AND A.MAF=B.MAF
		--V Modifica skandia di tipo ASU2
			AND b.isin = case when (a.tipprod = 'ASU2') then a.isin else 'na' end
	--da eliminare Trimestrale Ottobre 2012
	--and B.CODFIS not in ('FF@6120', 'SNTRNI51C01D077B', 'FNTLRA71A61E625O', 'NTMLSN59D60E625H')
	--and a.cod_fiscale not in ('GHBSRG47C01B033J')
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'DM_MONITORAGGIO_DETTAGLIO_pre_selective' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'DM_MONITORAGGIO_DETTAGLIO_pre_selective'
		)
END