-- =============================================
-- Author:		Paolo Giovanetti
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE procedure [C6Mart].[DM_ANAG_CLIENTI]
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_ANAG_CLIENTI',
		GETDATE(),
		'Elaborazione giornaliera'
	)
	DELETE C6MART.ANAG_CLIENTI 
	FROM C6MART.ANAG_CLIENTI
	INNER JOIN C6STAGING.ALL_CF_PB 
		ON ANAG_CLIENTI.RETE = ALL_CF_PB.RETE_PB
		AND ANAG_CLIENTI.COD_FISCALE = ALL_CF_PB.CODICEFISCALE
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'DELETE',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'DM_ANAG_CLIENTI' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'DM_ANAG_CLIENTI'
		)
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'DM_ANAG_CLIENTI',
		GETDATE(),
		'Elaborazione giornaliera'
	)
	INSERT INTO [C6Mart].[ANAG_CLIENTI]
		   ([RETE]
		   ,[COD_FISCALE]
		   ,[NOME]
		   ,[COGNOME]
		   ,[DATA_NASCITA]
		   ,[STATO_CIVILE]
		   ,[NUM_COMPONENTI]
		   ,[NUM_FIGLI]
		   ,[ETA]
		   ,[PARTITA_IVA]
		   ,[CITTADINANZA]
		   ,[PERSONA_FIS_GIUR]
		   ,[INDIRIZZO]
		   ,[LOCALITA]
		   ,[PROVINCIA]
		   ,[CAP]
		   ,[NAZIONE]
		   ,[PRESSO]
		   ,[TEL_RECAPITO]
		   ,[TEL_CELL]
		   ,[E_MAIL]
		   ,[DATA_INIZIO]
		   ,[DATA_FINE]
		   ,[STATO]
		   ,[RAG_SOC]
		   ,[SESSO]
		   ,[ID_PROMOTORE]
		   ,[ID_ELAB]
		   ,[TIPO_ELAB])
	SELECT
		distinct
		CONTRATTOSEI.RETE AS RETE,
		CONTRATTOSEI.COD_FISCALE AS COD_FISCALE,
		ISNULL(SPB_CLIENTI.NOME,ALL_CF_PB.NOME) AS NOME,
		ISNULL(SPB_CLIENTI.COGNOME,ALL_CF_PB.COGNOME) AS COGNOME,
		ISNULL(ALL_CF_PB.DATA_NASCITA,SPB_CLIENTI.DATADINASCITA) AS DATA_NASCITA,
		CASE
 			WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) < '40' 
				AND ALL_CF_PB.MARITALSTATUS = 'Married' THEN 'Coniugato'
 			WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) < '40' 
				AND ALL_CF_PB.MARITALSTATUS = 'Divorced' THEN 'Divorziato'
 			WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) < '40' 
				AND ALL_CF_PB.MARITALSTATUS = 'Single' THEN 'Libero'
 			WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) > '40' 
				AND ALL_CF_PB.MARITALSTATUS = 'Married' THEN 'Coniugata'
 			WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) > '40' 
				AND ALL_CF_PB.MARITALSTATUS = 'Divorced' THEN 'Divorziata'
 			WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) > '40' 
				AND ALL_CF_PB.MARITALSTATUS = 'Single' THEN 'Libera'
 			ELSE NULL
		END AS STATO_CIVILE,
		S25.NUMEROCOMPONENTI AS NUM_COMPONENTI,
		S25.NUMEROFIGLI AS NUM_FIGLI,
		S25.ETA AS ETA,
		NULL AS PARTITA_IVA,
		SPB_CLIENTI.CITTADINANZA AS CITTADINANZA,
		NULL AS PERSONA_FIS_GIUR,
		ISNULL(SPB_INDIRIZZI.INDIRIZZO, '') AS INDIRIZZO,
		ISNULL(SPB_INDIRIZZI.CITTA, '') AS LOCALITA,
		ISNULL(SPB_INDIRIZZI.PROVINCIA, '') AS PROVINCIA,
		ISNULL(SPB_INDIRIZZI.CAP, '') AS CAP,
		ISNULL(SPB_INDIRIZZI.NAZIONE, '') AS NAZIONE,
		'' AS PRESSO,
		NULL AS TEL_RECAPITO,
		NULL AS TEL_CELL,
		CONTRATTOSEI.EMAIL AS E_MAIL,
		SPB_CLIENTI.DATAATTIVAZIONECLIENTE AS DATA_INIZIO,
		NULL AS DATA_FINE,
		NULL AS STATO,
		NULL AS RAG_SOC,
		CASE
 			WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) < '40' THEN 'M'
			ELSE 'F'
		END AS SESSO,
		ALL_CF_PB.CODICE_PB AS ID_PROMOTORE,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB
	FROM 
		C6MART.CONTRATTOSEI  
	INNER JOIN 
		C6STAGING.ALL_CF_PB 
		ON 
			CONTRATTOSEI.RETE = ALL_CF_PB.RETE_PB
			AND CONTRATTOSEI.COD_FISCALE = ALL_CF_PB.CODICEFISCALE
	LEFT OUTER JOIN 
		C6STAGING.S25_CLI_CLIENTE S25
		ON 
			S25.CODICEFISCALE = CONTRATTOSEI.COD_FISCALE
			AND S25.RETE = CONTRATTOSEI.RETE
	LEFT OUTER JOIN 
		C6STAGING.SPB_CLIENTI 
		ON 
			C6STAGING.SPB_CLIENTI.CODICERETE = CONTRATTOSEI.RETE
			AND C6STAGING.SPB_CLIENTI.CODICEFISCALE = CONTRATTOSEI.COD_FISCALE
	LEFT OUTER JOIN 
		C6STAGING.SPB_INDIRIZZI 
		ON 
			C6STAGING.SPB_INDIRIZZI.RETE = CONTRATTOSEI.RETE
			AND C6STAGING.SPB_INDIRIZZI.CODICEFISCALE = CONTRATTOSEI.COD_FISCALE
	WHERE
		CONTRATTOSEI.DATA_FINEAVANZATO IS NULL
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'DM_ANAG_CLIENTI' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'DM_ANAG_CLIENTI'
		)
END