﻿-- Stored procedure
-- =============================================
-- Author:		Paolo Giovanetti
-- Create date: 24/11/2008
-- Description:	Aggiunta chiave primaria autoincrement su tabella di staging 
--				per eliminazione duplicati.
-- =============================================
CREATE procedure [C6Mart].[DM_MIFID]
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @ID_ELAB INT
	DECLARE @TIPO_ELAB VARCHAR(1)
	SET @ID_ELAB = C6MART.GETIDELAB()
	SET @TIPO_ELAB = C6MART.GETTIPOELAB()
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'DM_MIFID',
		GETDATE(),
		'Elaborazione giornaliera'
	)
	TRUNCATE TABLE C6MART.MIFID
	INSERT INTO [C6Mart].[MIFID]
		   ([RETE]
		   ,[COD_FISCALE]
		   ,[COMPILAZIONE]
		   ,[PROFILO_ASS]
		   ,[PROFILO_CALC]
		   ,[DATA_INIZIO_VAL]
		   ,[DATA_FINE_VAL]
		   ,[ID_ELAB]
		   ,[TIPO_ELAB]
           ,[RISKCLASS]
           ,[EXPERIENCE]
		   ,[SCADUTO]
		   ,[COMPLESSITA]
		    ,[CSP]
           ,[IMPORTOSPESA]
          ,[IMPORTORISERVA]
          ,[PERCLUNGOPERIODO]
          ,[ESIGENZEASS]
		   )
	-- modifica del 4/10/2018 per gestire l'errore dovuto ad un cliente duplicato sulla C6STAGING.SPB_MIFID MIFID
			--SELECT
		SELECT DISTINCT
	-- fine modifica del 4/10/2018
		MIFID.RETE AS RETE, 
		MIFID.CODICEFISCALE AS COD_FISCALE, 
		NULL AS COMPILAZIONE, 
		MIFID.CODICEPROFILOASSEGNATO AS PROFILO_ASS, 
		NULL AS PROFILO_CALC, 
		MIFID.DATAINIZIOVALIDITA AS DATA_INIZIO_VAL, 
		MIFID.DATAFINEVALIDITA AS DATA_FINE_VAL,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB,
        RISK.CODICECLASSERC,
        EXPERIENCE,
		CASE 
			--WHEN datediff(dd,DATAINIZIOVALIDITA,getdate())/365.25<3 THEN 0
			WHEN DATAFINEVALIDITA >= getdate() THEN 0
			ELSE 1
		END AS SCADUTO,
	   MIFID.[COMPLESSITA]
	  ,MIFID.[CSP]
      ,MIFID.[IMPORTOSPESA]
      ,MIFID.[IMPORTORISERVA]
      ,MIFID.[PERCLUNGOPERIODO]
      ,MIFID.[ESIGENZEASS]
        FROM C6STAGING.SPB_MIFID MIFID JOIN
		 C6STAGING.SPB_PROF_RISCHIO RISK
		 ON MIFID.CODICEPROFILOASSEGNATO = RISK.CODICEPROFILO
	WHERE MIFID.STATUS in (1) --Se prendo anche lo storico potrei avere duplicazione,2)
--	INNER JOIN ( -- PER ELIMINARE DUPLICAZIONE DATI
--		SELECT SPB_MIFID.RETE, SPB_MIFID.CODICEFISCALE, MAX(OID) AS OID
--		FROM C6STAGING.SPB_MIFID
--		GROUP BY SPB_MIFID.RETE, SPB_MIFID.CODICEFISCALE
--	) DOPPI ON SPB_MIFID.OID = DOPPI.OID
-- CONSOLI - UPDATE PER CLIENTI EX BANCA SARA IN ATTESA DELLA SISTEMAZIONE COMPLETA.
/*UPDATE  C6MART.MIFID
SET SCADUTO=0
WHERE
COD_FISCALE in 
(
'BOILSN65T54B354J'
,'FRIVLR69D27H501F'
,'CTLTZN59B49F717O'
,'FNFLSS62L03D612C'
,'FRNGCR42D07G999O'
,'GRMGRL41T17D612L'
,'MTTMND35P14H791O'
,'FCCMRT41A29H501J'
)*/
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'DM_MIFID' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'DM_MIFID'
		)
END
--select * from c6mart.mifid where scaduto = 1
--
--select * from
--C6STAGING.SPB_MIFID
--where dataInizioValidita < '20080401'