--exec C6MartPeriodico.DM_MONITORAGGIO_INIZIALE_AGGIORNAMENTO_RFA
CREATE procedure [C6MartPeriodico].[DM_MONITORAGGIO_INIZIALE_AGGIORNAMENTO_RFA]
as
begin
	DECLARE @DataCongelamento DATETIME;
	DECLARE @DataCongelamento_Day int;
	DECLARE @DataCongelamento_Month int;
	DECLARE @DataCongelamento_Year int;
	SET @DataCongelamento		= C6MartPeriodico.getDataCongelamento();
	SET @DataCongelamento_Day	= day(@DataCongelamento);
	SET @DataCongelamento_Month	= month(@DataCongelamento);
	SET @DataCongelamento_Year = year(@DataCongelamento);
	-------------------------------------------------------------------
	-- Preparazione del tracciato dei valori
	-- da inserire in MONITORAGGIO_INIZIALE e PHOTO_DATA
	-------------------------------------------------------------------
	declare @NuoviValori table
	(
		Rete						varchar(1)
		,Cod_Fiscale				varchar(16)
		,Data_Foto					datetime
		,Ctv_Totale					decimal(15, 2)
		,Ctv_Ext					decimal(15, 2)
		,Ctv_Inv					decimal(15, 2)
		,Ctv_Ris					decimal(15, 2)
		,Ctv_Pre					decimal(15, 2)
		,Ctv_Liq					decimal(15, 2)
		,Ctv_Cc						decimal(15, 2)
		,Ctv_Na						decimal(15, 2)
		,ImportoPartiteViaggianti	decimal(15, 2)
		,Var_Complessivo			decimal(15, 3)
		,Var_Copertura				decimal(15, 3)
	);
	with K as
	(	select distinct Rete, Cod_Fiscale, Data_Foto
		from	C6MartPeriodico.MONITORAGGIO_INIZIALE
		where	(	day(Data_Foto) = 31			and month(Data_Foto) = 12		and year(data_foto) = @dataCongelamento_year and
					@DataCongelamento_Day = 31	and @DataCongelamento_Month = 12)
				or
				(	day(Data_Foto) = 31			and month(Data_Foto) = 3		and year(data_foto) = @dataCongelamento_year and
					@DataCongelamento_Day = 1	and @DataCongelamento_Month = 4)
				or
				(	day(Data_Foto) = 30			and month(Data_Foto) = 6		and year(data_foto) = @dataCongelamento_year and
					@DataCongelamento_Day = 1	and @DataCongelamento_Month = 7)
				or
				(	day(Data_Foto) = 30			and month(Data_Foto) = 9		and year(data_foto) = @dataCongelamento_year and
					@DataCongelamento_Day = 1	and @DataCongelamento_Month = 10)
	)
	, Controvalore_Totale as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Ctv) as Ctv_Totale
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Ctv
		from	C6MartPeriodico.Patrimonio_Bf
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, Controvalore_Ext as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Ctv) as Ctv_Ext
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Ctv
		from	C6MartPeriodico.Patrimonio_Bf
		where	id_Area = 'Ext'
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, Controvalore_Inv as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Ctv) as Ctv_Inv
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Ctv
		from	C6MartPeriodico.Patrimonio_Bf
		where	id_Area = 'Inv'
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, Controvalore_Ris as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Ctv) as Ctv_Ris
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Ctv
		from	C6MartPeriodico.Patrimonio_Bf
		where	id_Area = 'Ris'
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, Controvalore_Pre as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Ctv) as Ctv_Pre
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Ctv
		from	C6MartPeriodico.Patrimonio_Bf
		where	id_Area in ('Pre','Pre1','Pre2')
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, Controvalore_Liq as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Ctv) as Ctv_Liq
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Ctv
		from	C6MartPeriodico.Patrimonio_Bf
		where	id_Area = 'Liq'
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, Controvalore_Cc as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Ctv) as Ctv_Cc
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Ctv
		from	C6MartPeriodico.Patrimonio_Bf
		where	id_Area = 'Cc'
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, Controvalore_Na as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Ctv) as Ctv_Na
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Ctv
		from	C6MartPeriodico.Patrimonio_Bf
		where	id_Area = 'Na'
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, PartiteViaggianti as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Importo) as Importo
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Importo
		from	c6martperiodico.partite_viaggianti
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, PartiteViaggianti_Patrimonio_Bf as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.PartVia_DisInv) as Importo
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, PartVia_DisInv
		from	c6martperiodico.Patrimonio_Bf
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		group by K.Rete, K.Cod_Fiscale
	)
	, VarCopertura as
	(
		select	K.Rete, K.Cod_Fiscale,
				Sum(C.Var_Perc_Ptf) as Var_Complessivo,
				Sum(C.Copertura)	as Var_Copertura
		from	K
		inner join
		(
		select	Rete, Cod_Fiscale, Var_Perc_Ptf, Copertura, COD_AGGREG
		from	C6MartPeriodico.RISCHIO_AGGREGATO
		) C
		on	K.Rete = C.Rete and
			K.Cod_Fiscale = C.Cod_Fiscale
		where C.COD_AGGREG = 'COMPLESSIVO|BF'
		group by K.Rete, K.Cod_Fiscale
	)
	-------------------------------------------------------------------
	-- Calcolo dei nuovi valori per l'aggiornamento
	-- della MONITORAGGIO_INIZIALE e della PHOTO_DATA
	-------------------------------------------------------------------
	insert into @NuoviValori
	select	K.Rete,
			K.Cod_Fiscale,
			K.Data_Foto,
			coalesce(Controvalore_Totale.Ctv_Totale, 0)	as Ctv_Totale,
			coalesce(Controvalore_Ext.Ctv_Ext, 0)		as Ctv_Ext,
			coalesce(Controvalore_Inv.Ctv_Inv, 0)		as Ctv_Inv,
			coalesce(Controvalore_Ris.Ctv_Ris, 0)		as Ctv_Ris,
			coalesce(Controvalore_Pre.Ctv_Pre, 0)		as Ctv_Pre,
			coalesce(Controvalore_Liq.Ctv_Liq, 0)		as Ctv_Liq,
			coalesce(Controvalore_Cc.Ctv_Cc, 0)			as Ctv_Cc,
			coalesce(Controvalore_Na.Ctv_Na, 0)			as Ctv_Na,
			coalesce(PartiteViaggianti.Importo + PartiteViaggianti_Patrimonio_Bf.Importo, 0) as ImportoPartiteViaggianti,
			coalesce(VarCopertura.Var_Complessivo, 0)	as Var_Complessivo,
			coalesce(VarCopertura.Var_Copertura, 0)		as Var_Copertura
	from	K		
					inner join Controvalore_Totale	on	K.Rete = Controvalore_Totale.Rete							and
														K.Cod_Fiscale = Controvalore_Totale.Cod_Fiscale
					left join Controvalore_Ext		on	K.Rete = Controvalore_Ext.Rete								and
														K.Cod_Fiscale = Controvalore_Ext.Cod_Fiscale
					left join Controvalore_Inv		on	K.Rete = Controvalore_Inv.Rete								and
														K.Cod_Fiscale = Controvalore_Inv.Cod_Fiscale
					left join Controvalore_Ris		on	K.Rete = Controvalore_Ris.Rete								and
														K.Cod_Fiscale = Controvalore_Ris.Cod_Fiscale
					left join Controvalore_Pre		on	K.Rete = Controvalore_Pre.Rete								and
														K.Cod_Fiscale = Controvalore_Pre.Cod_Fiscale
					left join Controvalore_Liq		on	K.Rete = Controvalore_Liq.Rete								and
														K.Cod_Fiscale = Controvalore_Liq.Cod_Fiscale
					left join Controvalore_Cc		on	K.Rete = Controvalore_Cc.Rete								and
														K.Cod_Fiscale = Controvalore_Cc.Cod_Fiscale
					left join Controvalore_Na		on	K.Rete = Controvalore_Na.Rete								and
														K.Cod_Fiscale = Controvalore_Na.Cod_Fiscale
					inner join VarCopertura			on	Controvalore_Totale.Rete = VarCopertura.Rete				and
														Controvalore_Totale.Cod_Fiscale = VarCopertura.Cod_Fiscale
					left join PartiteViaggianti		on	VarCopertura.Rete = PartiteViaggianti.Rete					and
														VarCopertura.Cod_Fiscale = PartiteViaggianti.Cod_Fiscale
					left join PartiteViaggianti_Patrimonio_Bf
													on	PartiteViaggianti.Rete = PartiteViaggianti_Patrimonio_Bf.Rete	and
														PartiteViaggianti.Cod_Fiscale = PartiteViaggianti_Patrimonio_Bf.Cod_Fiscale
	-------------------------------------------------------------------
	-- Aggiornamento MONITORAGGIO_INIZIALE
	-------------------------------------------------------------------
	Update	Destinazione
	set		CTV_Totale			= NuoviValori.Ctv_Totale
			,CTV_EXT			= NuoviValori.Ctv_Ext
			,CTV_INV			= NuoviValori.Ctv_Inv
			,CTV_RIS			= NuoviValori.Ctv_Ris
			,CTV_PRE			= NuoviValori.Ctv_Pre
			,CTV_LIQ			= NuoviValori.Ctv_Liq
			,CTV_CC				= NuoviValori.Ctv_Cc
			,CTV_NA				= NuoviValori.Ctv_Na
			,PARTITA_VIAGGIANTE	= NuoviValori.ImportoPartiteViaggianti
			,VAR_COMPLESSIVO	= NuoviValori.Var_Complessivo
			,VAR_COPERTURA		= NuoviValori.Var_Copertura
	from	
	@NuoviValori NuoviValori
	inner join 
	C6MartPeriodico.MONITORAGGIO_INIZIALE	Destinazione
	on	NuoviValori.Rete		= Destinazione.Rete			and
		NuoviValori.Cod_Fiscale	= Destinazione.Cod_Fiscale
	-------------------------------------------------------------------
	-- Aggiornamento PHOTO_DATA
	-------------------------------------------------------------------
	Update	Destinazione
	set		C_CTVEXT_34DCC		= NuoviValori.Ctv_Ext
			,C_CTVINV_990D8		= NuoviValori.Ctv_Inv
			,C_CTVRIS_43FEA		= NuoviValori.Ctv_Ris
			,C_CTVPRE_A0E49		= NuoviValori.Ctv_Pre
			,C_CTVLIQ_54D1B		= NuoviValori.Ctv_Liq
			,C_CTVCC_E242D		= NuoviValori.Ctv_Cc
			,C_CTVNA_473EA		= NuoviValori.Ctv_Na
			,C_INVESTIMEN_5F936	= NuoviValori.ImportoPartiteViaggianti
			,C_VAR_16494		= NuoviValori.Var_Complessivo
			,C_COPVAR_5C6E5		= NuoviValori.Var_Copertura
	from	
	@NuoviValori NuoviValori
	inner join 
	C6STAGINGPERIODICO.PHOTO_DATA	Destinazione
	on	NuoviValori.Rete			= Destinazione.INSTID				and
		NuoviValori.Cod_Fiscale		= Destinazione.ADBKID				and
		NuoviValori.Data_Foto		= Destinazione.C_DATASALVAT_D40E3
	where	Destinazione.TYPE__STATUS_1E30E = 2
	-------------------------------------------------------------------
	-- Ritorno valori per uso ORACLE
	-------------------------------------------------------------------
	select	Staging.OID_
			,NuoviValori.Rete						as INSTID
			,NuoviValori.Cod_Fiscale				as ADBKID
			,NuoviValori.Data_Foto					as C_DATASALVAT_D40E3
			--,NuoviValori.Ctv_Totale				as 
			,NuoviValori.Ctv_Ext					as C_CTVEXT_34DCC
			,NuoviValori.Ctv_Inv					as C_CTVINV_990D8
			,NuoviValori.Ctv_Ris					as C_CTVRIS_43FEA
			,NuoviValori.Ctv_Pre					as C_CTVPRE_A0E49
			,NuoviValori.Ctv_Liq					as C_CTVLIQ_54D1B
			,NuoviValori.Ctv_Cc						as C_CTVCC_E242D
			,NuoviValori.Ctv_Na						as C_CTVNA_473EA
			,NuoviValori.ImportoPartiteViaggianti	as C_INVESTIMEN_5F936
			,NuoviValori.Var_Complessivo			as C_VAR_16494
			,NuoviValori.Var_Copertura				as C_COPVAR_5C6E5
	from
	@NuoviValori NuoviValori
	inner join 
	C6STAGINGPERIODICO.PHOTO_DATA	Staging
	on	NuoviValori.Rete			= Staging.INSTID				and
		NuoviValori.Cod_Fiscale		= Staging.ADBKID				and
		NuoviValori.Data_Foto		= Staging.C_DATASALVAT_D40E3
	where	Staging.TYPE__STATUS_1E30E = 2
	/*togliere "Developing" */
end