--[C6MartPeriodico].[PL_D_S178IndicatoriEsitoAdeguatezza] 's', 'LMZGNN35M47F205W'
CREATE procedure [C6MartPeriodico].[PL_D_S178IndicatoriEsitoAdeguatezza_preMUA]
	-- Add the parameters for the stored procedure here
	@Rete char(1), 
	@CodiceFiscale varchar(16)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
DECLARE @DataFineTrim VARCHAR(8)  
SET @DataFineTrim = c6martperiodico.getTrimestre2(getDate(),0)
--***************************************************************************  SOLO per test
--drop table @appo,#wseian,@TABELLAINDICATORI
--declare @Rete char(1),@CodiceFiscale varchar(16)
--set @Rete = 'f'
--set	@CodiceFiscale = 'BTTFST43C42B300A'--'LNGLGU49D23F587Z'--'BRSDRN64E24D749H'--'00703420968'--
--set @DataFineTrim = 20180430
--***************************************************************************
DECLARE @adeguato [varchar](5)
DECLARE @descrizione [varchar](1000)
-- **************************  creo la tabella iniziale con tutti gli indicatori
declare @TABELLAINDICATORI table
(
   TI_Ordine  [smallint] null,
   TI_Indicatore [varchar](80) null,
   TI_Adeguato [varchar](5) null,
   TI_Descrizione [varchar](1000) null
)
insert into @TABELLAINDICATORI values (1,'Rischio','-1','Non applicabile')
insert into @TABELLAINDICATORI values (2,'Riserva','-1','Non applicabile')
insert into @TABELLAINDICATORI values (3,'Investimento di Lungo Periodo','-1','Non applicabile')
insert into @TABELLAINDICATORI values (4,'Complessità','-1','Non applicabile')
insert into @TABELLAINDICATORI values (5,'Concentrazione in prodotti complessi','-1','Non applicabile')
insert into @TABELLAINDICATORI values (6,'Frequenza delle operazioni','-1','Non applicabile')
insert into @TABELLAINDICATORI values (7,'Concentrazione emittenti','-1','Non applicabile')
insert into @TABELLAINDICATORI values (8,'Concentrazione valutaria','-1','Non applicabile')
-- *****************************************************************************
declare @appo table
(
  RETE [varchar](1) null,
   COD_FISCALE [varchar](16) null,
   PATRIMONIO [varchar](255) NOT NULL,
   CTV_AGGREG [decimal](12, 2) null,
   profiloCode [smallint] null,
   var_profilo [decimal](5, 2) null,
   [VAR] [decimal](12, 3) NULL,
   varString [varchar](16) null,--[decimal](12, 3) NULL,
   CREDITRISK  [int] NULL,
   RISKCLASSSTRING [varchar](10) null,
   coperturaString [varchar](16) null,--[decimal](12, 3) NULL,
   COVERAGESTRING [varchar](10) null,
   RISKCLASSMAX [varchar](50) null,
   [PERCENTAGE] [decimal](12, 6) null,
   Ordine  [smallint] null,
   ULLY_PERC [decimal](10, 2) NULL
)
--creo le tabelle di appoggio
insert into @appo exec [C6MartPeriodico].[PL_D2_S169RischiomercatoRischiocredito] @Rete,@CodiceFiscale
declare @WSEIAN_S170 table
(
		[DTTRIM] [decimal](9, 0) NOT NULL,
	[RETE] [varchar](1) NOT NULL,
	[CODFIS] [varchar](16) NOT NULL,
	[NOME] [varchar](25) NULL,
	[COGNOME] [varchar](25) NULL,
	[DTNASCI] [decimal](9, 0) NULL,
	[INDIRIZZO] [varchar](44) NULL,
	[CAP] [varchar](5) NULL,
	[CITTA] [varchar](35) NULL,
	[PROVINCIA] [varchar](2) NULL,
	[NAZIONE] [varchar](35) NULL,
	[CODPROF] [smallint] NULL,
	[DTINVAL] [decimal](9, 0) NOT NULL,
	[CODMAN] [varchar](6) NULL,
	[CLASSERC] [decimal](5, 0) NULL,
	[COD_PROFEC] [decimal](5, 0) NULL,
	[FLAGPG] [decimal](1, 0) NULL,
	[CLCOMPL] [char](1) NOT NULL,
	[FLGCONC] [char](1) NOT NULL,
	[FLAGNQP] [char](1) NULL,
	[FLGPRLRDE] [char](1) NULL,
	[FLGPROF] [char](1) NULL,
	[DTFINVAL] [decimal](9, 0) NULL,
	[CONCEMI] [char](1) NULL,
	[FREQ] [char](1) NULL,
	[LLIQUID] [char](1) NULL,
	[PREFSOST] [char](1) NULL,
	[FLAGAMB] [char](1) NULL,
	[FLAGSOC] [char](1) NULL,
	[FLAGGOV] [char](1) NULL,
	[ADEGCONC_VALUT] [char](1) NULL,
	[SOGLIAESG] [decimal](5, 2) NULL,
	[COERENZA] [char](1) NULL,
	[RISERVA] [char](1) NULL,
	[INVL_PERIOD] [char](1) NULL,
	[MAXCOMPL] [decimal](5, 0) NULL,
	[NOCOMPL] [char](1) NULL,
	[SPESA_FORZATA] [decimal](13, 2) NULL,
	[PERC_ILP] [decimal](5, 2) NULL,
	[IMP_RISERVA] [decimal](13, 2) NULL
)
if @CodiceFiscale like '%FF@%'  
					INSERT INTO @WSEIAN_S170
					--se viene passata una fiduciaria devo filtrare per codice mandato
					select [DTTRIM]
						  ,[RETE]
						 , 
						 case
						 when(isnull(ltrim(rtrim(codman)),'') <> '') 
								then 'FF@'+codman
						 when (isnull(codfis,'') <> '')
								then codfis
						 else
								codfis
						 end as Codfis
						,[NOME]
      ,[COGNOME]
      ,[DTNASCI]
      ,[INDIRIZZO]
      ,[CAP]
      ,[CITTA]
      ,[PROVINCIA]
      ,[NAZIONE]
      ,[CODPROF]
      ,[DTINVAL]
      ,[CODMAN]
      ,[CLASSERC]
      ,[COD_PROFEC]
      ,[FLAGPG]
      ,[CLCOMPL]
      ,[FLGCONC]
      ,[FLAGNQP]
      ,[FLGPRLRDE]
      ,[FLGPROF]
      ,[DTFINVAL]
      ,[CONCEMI]
      ,[FREQ]
      ,[LLIQUID]
      ,[PREFSOST]
      ,[FLAGAMB]
      ,[FLAGSOC]
      ,[FLAGGOV]
      ,[ADEGCONC_VALUT]
      ,[SOGLIAESG]
      ,[COERENZA]
      ,[RISERVA]
      ,[INVL_PERIOD]
      ,[MAXCOMPL]
      ,[NOCOMPL]
      ,[SPESA_FORZATA]
      ,[PERC_ILP]
      ,[IMP_RISERVA]
					from [C6StagingPeriodico].[WSEIAN2] 
					where 1=1 
					and rete = @Rete
					and codman = substring(@CodiceFiscale, 4,len(@CodiceFiscale)-3)
					and dttrim = @DataFineTrim;
else
				 INSERT INTO @WSEIAN_S170
					select [DTTRIM]
						  ,[RETE]
						 , 
						 case
						 when(isnull(ltrim(rtrim(codman)),'') <> '') 
								then 'FF@'+codman
						 when (isnull(codfis,'') <> '')
								then codfis
						 else
								codfis
						 end as Codfis
						,[NOME]
      ,[COGNOME]
      ,[DTNASCI]
      ,[INDIRIZZO]
      ,[CAP]
      ,[CITTA]
      ,[PROVINCIA]
      ,[NAZIONE]
      ,[CODPROF]
      ,[DTINVAL]
      ,[CODMAN]
      ,[CLASSERC]
      ,[COD_PROFEC]
      ,[FLAGPG]
      ,[CLCOMPL]
      ,[FLGCONC]
      ,[FLAGNQP]
      ,[FLGPRLRDE]
      ,[FLGPROF]
      ,[DTFINVAL]
      ,[CONCEMI]
      ,[FREQ]
      ,[LLIQUID]
      ,[PREFSOST]
      ,[FLAGAMB]
      ,[FLAGSOC]
      ,[FLAGGOV]
      ,[ADEGCONC_VALUT]
      ,[SOGLIAESG]
      ,[COERENZA]
      ,[RISERVA]
      ,[INVL_PERIOD]
      ,[MAXCOMPL]
      ,[NOCOMPL]
      ,[SPESA_FORZATA]
      ,[PERC_ILP]
      ,[IMP_RISERVA]
					from [C6StagingPeriodico].[WSEIAN2] 
					where 1=1 
					and rete = @Rete
					and codfis= @CodiceFiscale
					and dttrim = @DataFineTrim;
--***************************************************************************  INDICATORE DI VALUTAZIONE: RISCHIO
select @adeguato = 
case 
	when var <= var_profilo then '1'
	when var > var_profilo then '0'
	else -1
end,
@descrizione = case
	when var <= var_profilo then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 1 and Adeguato = '1')
	when var > var_profilo then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 1 and Adeguato = '0')
	else (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 1 and Adeguato = '-1')
end 
from @appo where ordine = 1 --patrimonio fideuram
if isnull(ltrim(rtrim(@adeguato)),'') <> ''
		update  a 
		set  TI_Adeguato = @adeguato, TI_Descrizione = @descrizione
		from @TABELLAINDICATORI a 
		where TI_Ordine = 1;
--***************************************************************************  INDICATORE DI VALUTAZIONE: RISERVA
set @adeguato = ''	
set @descrizione = ''
select 
@adeguato = 
case
	when upper(riserva) = 'S' then '1'
	when upper(riserva) = 'N' then '0'
	else -1
end ,
@descrizione =  case
	when upper(riserva) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 2 and Adeguato = '1')
	when upper(riserva) = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 2 and Adeguato = '0')
	else (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 2 and Adeguato = '-1')
end 
from @WSEIAN_S170
where 1=1
--20180830 aggiunto AC
and rete = @Rete
and codfis = @CodiceFiscale
--20180830
and dttrim = @DataFineTrim
if isnull(ltrim(rtrim(@adeguato)),'') <> ''
		update  a 
		set  TI_Adeguato = @adeguato, TI_Descrizione = @descrizione
		from @TABELLAINDICATORI a 
		where TI_Ordine = 2;
--***************************************************************************  INDICATORE DI VALUTAZIONE: INVESTIMENTO LUNGO PERIODO
set @adeguato = ''	
set @descrizione = ''
select 
@adeguato = 
case
	when upper(invl_period) = 'S' then '1'
	when upper(invl_period) = 'N' then '0'
	else -1
end ,
@descrizione =  case
	when upper(invl_period) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 3 and Adeguato = '1')
	when upper(invl_period) = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 3 and Adeguato = '0')
	else (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 3 and Adeguato = '-1')
end 
from @WSEIAN_S170
where 1=1
--20180830 aggiunto AC
and rete = @Rete
and codfis = @CodiceFiscale
--20180830
and dttrim = @DataFineTrim
if isnull(ltrim(rtrim(@adeguato)),'') <> ''
		update  a 
		set  TI_Adeguato = @adeguato, TI_Descrizione = @descrizione
		from @TABELLAINDICATORI a 
		where TI_Ordine = 3;
--***************************************************************************  INDICATORE DI VALUTAZIONE: Complessità (NON RITORNATO PER I PROFESSIONALI)
set @adeguato = ''	
set @descrizione = ''
select 
@adeguato = 
case
	when flgprof = 'S' then 'prof'
	when flagpg = 1 and flgprof = 'N' and  flagnqp = 'S' and flgprlrde = 'N' then '-1' --Massimiliano dice che va messo prima di tutti senza testare altri flag 17/5/2018
	when upper(clcompl) = 'N' and
			 (select nocompl from [C6StagingPeriodico].[WSEIAN2] where codfis = @CodiceFiscale and dttrim = @DataFineTrim ) = 'S' then '0'
	when upper(clcompl) = 'N' and flagpg = 0 then '0'
	--fix del 18/7/2019
	      --when upper(clcompl) = 'N' and flagpg = 1 and flgprlrde = 'N' then '0'
		  when upper(clcompl) = 'N' and flagpg = 1 and flgprlrde = 'S' then '0'
	--fine fix del 18/7/2019
	when upper(clcompl) = 'S' then '1'
end,
@descrizione =  case
	when flagpg = 1 and flgprof = 'N' and  flagnqp = 'S' and flgprlrde = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '-1')
	when upper(clcompl) = 'N' and
			 (select nocompl from [C6StagingPeriodico].[WSEIAN2] where codfis = @CodiceFiscale and dttrim = @DataFineTrim ) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '0C')
	when upper(clcompl) = 'N' and flagpg = 0  then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '0A')
	--fix del 18/7/2019
	      --when upper(clcompl) = 'N' and flagpg = 1 and flgprlrde = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '0B')
	      when upper(clcompl) = 'N' and flagpg = 1 and flgprlrde = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '0B')
	--fine fix del 18/7/2019
	when upper(clcompl) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '1')
end 
from @WSEIAN_S170
where 1=1
--20180830 aggiunto AC
and rete = @Rete
and codfis = @CodiceFiscale
--20180830
and dttrim = @DataFineTrim
--and flgprof <> 'S'
if isnull(ltrim(rtrim(@adeguato)),'') <> ''
-- se valorizzato (0,1,-1,prof) faccio qualcosa altrimenti lascio come -1 (non disponibile)
begin
	if @adeguato = 'prof'
	begin
		delete from @TABELLAINDICATORI where TI_Ordine = 4;
	end
    else
	begin
		update  a 
		set  TI_Adeguato = @adeguato, TI_Descrizione = @descrizione
		from @TABELLAINDICATORI a 
		where TI_Ordine = 4;
	end
end
--***************************************************************************  INDICATORE DI VALUTAZIONE: Concentrazione in prodotti complessi  (NON RITORNATO PER I PROFESSIONALI)
set @adeguato = ''	
set @descrizione = ''
select 
@adeguato = 
case
    when flgprof = 'S' then 'prof'
	when upper(flgconc) = 'S' then '1'
	when upper(flgconc) = 'N' then '0'
	else '-1'	
end,
@descrizione = case
	when upper(flgconc) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 5 and Adeguato = '1')
	when upper(flgconc) = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 5 and Adeguato = '0')
	else (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 5 and Adeguato = '-1')
end
from @WSEIAN_S170
where 1=1
and rete = @Rete
and codfis = @CodiceFiscale 
and dttrim = @DataFineTrim
--and flgprof <> 'S'
if isnull(ltrim(rtrim(@adeguato)),'') <> ''
-- se valorizzato (0,1,-1,prof) faccio qualcosa altrimenti lascio come -1 (non disponibile)
begin
	if @adeguato = 'prof'
	begin
		delete from @TABELLAINDICATORI where TI_Ordine = 5;
	end
    else
	begin
		update  a 
		set  TI_Adeguato = @adeguato, TI_Descrizione = @descrizione
		from @TABELLAINDICATORI a 
		where TI_Ordine = 5;
	end
end
--***************************************************************************  INDICATORE DI VALUTAZIONE: Frequenza delle operazioni (NON RITORNATO PER I PROFESSIONALI)
set @adeguato = ''	
set @descrizione = ''
select 
@adeguato = 
case
    when flgprof = 'S' then 'prof'
	when upper(freq) = 'S' then '1'
	when upper(freq) = 'N' then '0'
	else '-1'	
end,
@descrizione = case
	when upper(freq) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 6 and Adeguato = '1')
	when upper(freq) = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 6 and Adeguato = '0')
	else (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 6 and Adeguato = '-1')
end
from @WSEIAN_S170
where 1=1
and rete = @Rete
and codfis = @CodiceFiscale 
and dttrim = @DataFineTrim
--and flgprof <> 'S'
if isnull(ltrim(rtrim(@adeguato)),'') <> ''
-- se valorizzato (0,1,-1,prof) faccio qualcosa altrimenti lascio come -1 (non disponibile)
begin
	if @adeguato = 'prof'
	begin
		delete from @TABELLAINDICATORI where TI_Ordine = 6;
	end
    else
	begin
		update  a 
		set  TI_Adeguato = @adeguato, TI_Descrizione = @descrizione
		from @TABELLAINDICATORI a 
		where TI_Ordine = 6;
	end
end
--***************************************************************************  INDICATORE DI VALUTAZIONE: Concentrazione emittenti
set @adeguato = ''	
set @descrizione = ''
select 
@adeguato = 
case
	when upper(concemi) = 'S' then '1'
	when upper(concemi) = 'N' then '0'
	else -1
end ,
@descrizione =  case
	when upper(concemi) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 7 and Adeguato = '1')
	when upper(concemi) = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 7 and Adeguato = '0')
	else (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 7 and Adeguato = '-1')
end 
from @WSEIAN_S170
where 1=1
--20180830 aggiunto AC
and rete = @Rete
and codfis = @CodiceFiscale
--20180830
and dttrim = @DataFineTrim
if isnull(ltrim(rtrim(@adeguato)),'') <> ''
		update  a 
		set  TI_Adeguato = @adeguato, TI_Descrizione = @descrizione
		from @TABELLAINDICATORI a 
		where TI_Ordine = 7;
--*************************************************************************** INDICATORE DI VALUTAZIONE: Concentrazione Valutaria
set @adeguato = ''	
set @descrizione = ''
select 
@adeguato = 
case
	when upper(ADEGCONC_VALUT) = 'S' then '1'
	when upper(ADEGCONC_VALUT) = 'N' then '0'
	else '-1'	
end,
@descrizione = case
	when upper(ADEGCONC_VALUT) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 8 and Adeguato = '1')
	when upper(ADEGCONC_VALUT) = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 8 and Adeguato = '0')
	else (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 8 and Adeguato = '-1')
end
from @WSEIAN_S170
where 1=1
and rete = @Rete
and codfis = @CodiceFiscale 
and dttrim = @DataFineTrim
if isnull(ltrim(rtrim(@adeguato)),'') <> ''
		update  a 
		set  TI_Adeguato = @adeguato, TI_Descrizione = @descrizione
		from @TABELLAINDICATORI a 
		where TI_Ordine = 8;
--*******************************************************************************************************************************************
select 
ti_ordine as Ordine,
ti_indicatore as Indicatore,
ti_adeguato as Adeguato,
ti_descrizione as DescrizioneEsito
from  @TABELLAINDICATORI
END