-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE   PROCEDURE [C6MartPeriodico].[Popolamento_RP_W6CLIREP]
AS
BEGIN
	SET NOCOUNT ON;
	--dichiaro variabile data di trimestrale
	DECLARE @dttrim int
	--valorizzo la data di trimestrale al giorno del congelamento
	set @dttrim  = CAST(CONVERT(varchar, CAST(C6MartPeriodico.getDataCongelamento() as DATETIME),112) as int)
	--print @dttrim
	--Tronchiamo la tabella RP_vTuttiIPortafogli_Aladdin_tab e la ripopoliamo
	--a partire dalla vista RP_vTuttiIPortafogli_Aladdin
	Truncate table C6StampeCentralizzate.C6MartPeriodico.w6clirep
	--
	insert into C6StampeCentralizzate.C6MartPeriodico.w6clirep
		select 
		'6' as FLGCLI ,
		'M' as FLGBL ,
		'A' as TIPOELA,
		@dttrim as DTTRIM,
		rete,
		codfis,
		piva,
		codman,
		'' as CODFID,
		'' as CODAGE,
		CASE  
			WHEN cod_interno not in ('SINT3MEUR','SINT6MEUR','09560690') and famprodt = 'DT' THEN isnull(cod_interno,'')   --aggiunta SINT6MEUR 10/03/2023 
			ELSE '' 
		END  as CODABI, 
		ISNULL(termid,00000000), 
		cast(annos as int) as anno ,
		case when famprodt='GE' then 00000000 --aggiunta con else sotto
		else cast(progs as int) end as prog ,
		0 as quote,
		cast(ctvreale as float) as CTV,
		codconf, --17
		rubr,
		custgar,
		ISNULL(cod_interno,''),
		'' as codana,
		CASE  
			WHEN    cast(annos as int) <> 0 and cast(progs as int) <> 0 then 'S' 
			ELSE 'N' 
		END as FLAGPCT,
		--CASE  
		--	WHEN famprodt <> 'DT' and famprodt <> 'CC' THEN isnull(cod_interno,'')
		--	ELSE ''   
		--END 
		'' as codprod,
		ISNULL(cod_sottoprodotto,''),
		ISNULL(cod_isin,''),
		'' as codlinea,
		tipoptf,
		area,
		progetto,
		codprj,
		ISNULL(chiave_prodotto_terzi,''),
		ISNULL(assetterzi,''),
		ISNULL(famprodt,''),
		ISNULL(intermediario,''),
		ISNULL(codiceadeguatezza,''),
		ISNULL(cod_maf,''),
		conto,
		numpolizza,
		position_id,
		--aggiunta 08/06/2022
		'' as PREFSOST,
		'' as FLAGAMB,
		'' as FLAGSOC,
		'' as FLAGGOV,
		Prodotto_id
		from [C6StampeCentralizzate].[C6MartPeriodico].[RP_vTuttiIPortafogli_Aladdin]
	--aggiunta informazioni codabi per i prodotti PCT
SELECT [DTTRIM]
      ,[DTRIFE]
      ,ltrim(rtrim([RETE])) as rete
      ,ltrim(rtrim([CODFIS])) as codfis
      ,ltrim(rtrim([CODCONF])) as codconf
      ,[NUMPOL]
      ,ltrim(rtrim([CONTO])) as conto
      ,[RUBR]
      ,[CUSTGAR]
      ,ltrim(rtrim([TIPPROD])) as tipprod
      ,ltrim(rtrim([CODINT])) as codint
      ,[CODPROD]
      ,[SUBPROD]
      ,[MAF]
      ,[CODABI]
      ,[PCTKEY]
      ,[DESTIT]
      ,[CTV]
      ,[PARTVIA]
      ,[PARTVIAAL]
      ,[DTSOTTOS]
      ,[RENDINIZ]
      ,[RENDANNO]
      ,[VALORE]
      ,[SUBSET]
      ,[CVN]
      ,[QUOTE]
      ,ltrim(rtrim([CODMAN])) as codman
      ,[SALRISC]
      ,[ATTIVO]
  into #PCT --selezioniamo dalla wseics i soli clienti possessori di un pct in portafoglio
  FROM [C6StampeCentralizzate].[C6StagingPeriodico].[wseics] WHERE CODABI <> '' 
  and pctKey <> ''
  and dttrim = (Select Max(dttrim) from [C6StampeCentralizzate].[C6StagingPeriodico].[wseics]) 
  UPDATE [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep]
		set codabi = pct.codabi
		--select w6.rete,pct.rete,w6.codfis,w6.piva,pct.codfis,w6.codman,pct.codman,w6.conto,pct.conto,w6.codconf,pct.codconf,pct.codabi
		--, pct.tipprod,w6.famprodt 
		from #PCT pct
		left join [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] as w6
		on w6.rete=pct.rete and w6.codfis+w6.piva+w6.codman = ltrim(rtrim(pct.codfis))+ltrim(rtrim(pct.codman))
		 and w6.codconf=ltrim(rtrim(pct.codconf)) and w6.conto=ltrim(rtrim(pct.conto)) and w6.famprodt = ltrim(rtrim(pct.tipprod)) 
		where w6.flagpct = 'S'
	-- Aggiungiamo le informazioni mancanti per il codman piva_fiduciaria
	select b.cod_mandato,b.rete,b.piva_fiduciaria into 
		#tab
		FROM 
			[C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] a
			inner join (select distinct rete,cod_mandato,piva_fiduciaria from [C6StampeCentralizzate].[C6StagingPeriodico].[APPO_CONTRATTI_V] where cod_mandato<>'') b
			on a.rete= b.rete and isnull(a.codman,'')=isnull(b.cod_mandato,'')
	UPDATE [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep]
		set piva = piva_fiduciaria
		from #tab tab
		inner join [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] as a 
		on a.rete= tab.rete and isnull(a.codman,'')=isnull(tab.cod_mandato,'')
	--1 update per CF
	update [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] 
		set codage = appo.cod_agente
		from c6stagingperiodico.appo_contratti appo
		left join [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] w
		on w.rete= appo.rete and isnull(w.codfis,'') = isnull(appo.cod_fiscale,'')
	--2 update per Piva
	update [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] 
		set codage = appo.cod_agente
		from c6stagingperiodico.appo_contratti appo
		left join [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] w
		on w.rete= appo.rete and isnull(w.piva,'') = isnull(appo.cod_fiscale,'')
		where w.piva <> ''
	--3 update per Fiduciaria
	update [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] 
		set codage = appo.cod_agente
		from c6stagingperiodico.appo_contratti appo
		left join [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] w
		on w.rete= appo.rete and 'FF@'+(isnull(w.codman,'')) = isnull(appo.cod_fiscale,'')
		where w.codman <> ''
	--update per inserire le informazioni del codana del cliente
	update [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] 
	set codana = wp.codana
	FROM [C6StagingPeriodico].[WANVIPS] wp
	left join [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] w
	on w.rete = wp.rete and w.codfis+w.piva+w.codman = ltrim(rtrim(wp.codfis))+ltrim(rtrim(wp.codman))
		update [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] 
	set cod_isin=''
	where cod_interno in ('KB', 'KC', 'KG', 'KJ', 'KI', 'KD', 'KF', 'KL', 'KN', 'KO', 'KE', 'KS') and  len(cod_isin)<12
	--eliminazione righe duplicate per API ma le teniamo in una tb di Recupero per eventuali analisi
	truncate table [C6MartPeriodico].[W6CLI_REK]
	insert into [C6MartPeriodico].[W6CLI_REK]
	select  * 
	from [C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] where tipoptf = 'TIPOPRODTERZI|TERZI'
	delete from 
	[C6StampeCentralizzate].[C6MartPeriodico].[w6clirep] where tipoptf = 'TIPOPRODTERZI|TERZI'
	update C6MartPeriodico.W6CLIREP
	set PREFSOST= case when an.prefsost='S' then 1 else 0 end,FLAGAMB=case when an.flagamb='S' then 'Y' else 'N' end ,
	FLAGSOC=case when an.flagsoc='S' then 'Y' else 'N' end, FLAGGOV=case when an.flaggov='S' then 'Y' else 'N' end
	from C6stagingPeriodico.wseian2 an left join C6MartPeriodico.W6CLIREP w 
	on w.rete = an.rete and w.codfis+w.piva+w.codman = ltrim(rtrim(an.codfis))+ltrim(rtrim(an.codman))
	where an.DTTRIM=@dttrim
	update C6MartPeriodico.W6CLIREP
	set cod_interno=cod_isin
	where termid in ('BDR20000','TDV20000')
	update C6MartPeriodico.W6CLIREP
	set PRODOTTO_ID='$'
	where Prodotto_ID='PRODOTTO NON IN CATALOGO'
END