﻿CREATE procedure [wh].[MERGED_PROCEDURE_S178]
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @DataFineTrim VARCHAR(8)  
	SET @DataFineTrim = c6martperiodico.getTrimestre2(getDate(),0)  
	--exec [C6MartPeriodico].[PL_D2_S169RischiomercatoRischiocredito] 'F', '00158650309'
	--exec [C6MartPeriodico].[PL_D_S178IndicatoriEsitoAdeguatezza] 'F', '00158650309'
	--exec [wh].[p_PL_D_S178IndicatoriEsitoAdeguatezza] 'F', '00158650309'
	insert into [wh].[PL_D_S178IndicatoriEsitoAdeguatezza]
		select 'C6MartPeriodico.PL_D_S178IndicatoriEsitoAdeguatezza', a.i_rete, a.i_CodiceFiscale,
			a.i_rete,
			a.i_CodiceFiscale,
			-- RISCHIO MERCATO
			--var, varmax,
			case 
				when var <= varmax then '1'
				when var > varmax then '0'
				else -1
			end as RM_Adeguatezza,
			case
				when var <= varmax then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 1 and Adeguato = '1')
				when var > varmax 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 as RM_Descrizione,
			-- FINE RISCHIO MERCATO
			-- RISCHIO CREDITO
			--RISKCLASS, RISKCLASSMAX,
			case
				--20180820 CR su Rischio Credito: quando non è stato possibile calcolare il rischio credito (quindi il valore di RISKCLASS restituito dalla PL_D2_S169RischiomercatoRischiocredito è NULL)
				-- l'indicatore di adeguatezza Rischio Credito è 1 (Adeguato)
				when RISKCLASS is null then '1'
				--20180820 FINE CR su Rischio Credito
				when RISKCLASS <= convert(int,RISKCLASSMAX) then '1'
				when RISKCLASS > convert(int,RISKCLASSMAX) then '0'
				else -1
			end as RC_Adeguatezza,
			case
				--20180820 CR su Rischio Credito: quando non è stato possibile calcolare il rischio credito (quindi il valore di RISKCLASS restituito dalla PL_D2_S169RischiomercatoRischiocredito è NULL)
				-- l'indicatore di adeguatezza Rischio Credito è 1 (Adeguato)
				when  RISKCLASS is null then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 2 and Adeguato = '1')
				--20180820 FINE CR su Rischio Credito
				when RISKCLASS <= convert(int,RISKCLASSMAX) then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 2 and Adeguato = '1')
				when RISKCLASS > convert(int,RISKCLASSMAX) 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 as RC_Descrizione,
			-- FINE RISCHIO CREDITO
			-- CONCENTRAZIONE EMITTENTI
			--b.concemi,
			case
				when upper(b.concemi) = 'S' then '1'
				when upper(b.concemi) = 'N' then '0'
				else -1
			end as CE_Adeguatezza,
			case
				when upper(b.concemi) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 3 and Adeguato = '1')
				when upper(b.concemi) = '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 as CE_Descrizione,
			-- FINE CONCENTRAZIONE EMITTENTI
			-- COMPLESSITA'
			--b.flgprof, b.flagpg, b.flagnqp, b.flgprlrde, b.clcompl,
			case
				when b.flgprof = 'S' then 'prof'
				when b.flagpg = 1 and b.flgprof = 'N' and b.flagnqp = 'S' and b.flgprlrde = 'N' then '-1' --Massimiliano dice che va messo prima di tutti senza testare altri flag 17/5/2018
				when upper(b.clcompl) = 'N' and
						 (select nocompl from [C6StagingPeriodico].[WSEIAN2] where codfis = a.i_codiceFiscale and dttrim = @DataFineTrim ) = 'S' then '0'
				when upper(b.clcompl) = 'N' and b.flagpg = 0 then '0'
				when upper(b.clcompl) = 'N' and b.flagpg = 1 and b.flgprlrde = 'N' then '0'
				when upper(b.clcompl) = 'S' then '1'
			end as CM_Adeguatezza,
			case
				when b.flagpg = 1 and b.flgprof = 'N' and b.flagnqp = 'S' and b.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 = a.i_codiceFiscale and dttrim = @DataFineTrim ) = 'S'  then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '0C')
				when upper(clcompl) = 'N' and b.flagpg = 0  then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '0A')
				when upper(clcompl) = 'N' and b.flagpg = 1 and b.flgprlrde = 'N' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '0B')
				when upper(clcompl) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 4 and Adeguato = '1')
			end as CM_Descrizione,
			-- FINE COMPLESSITA'
			-- CONCENTRAZIONE PRODOTTI COMPLESSI
			--b.flgprof, b.flgconc,
			case
				when b.flgprof = 'S' then 'prof'
				when upper(b.flgconc) = 'S' then '1'
				when upper(b.flgconc) = 'N' then '0'
				else '-1'	
			end as CC_Adeguatezza,
			case
				when upper(b.flgconc) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 5 and Adeguato = '1')
				when upper(b.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 as CC_Descrizione,
			-- FINE CONCENTRAZIONE PRODOTTI COMPLESSI
			-- FREQUENZA
			--b.flgprof, b.freq,
			case
				when b.flgprof = 'S' then 'prof'
				when upper(b.freq) = 'S' then '1'
				when upper(b.freq) = 'N' then '0'
				else '-1'	
			end as FQ_Adeguatezza,
			case
				when upper(b.freq) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 6 and Adeguato = '1')
				when upper(b.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 as FQ_Descrizione,
			-- FINE FREQUENZA
			-- LIQUIDITA' / LIQUIDABILITA'
			--b.lliquid,
			case
				when upper(b.lliquid) = 'S' then '1'
				when upper(b.lliquid) = 'N' then '0'
				else '-1'	
			end as LQ_Adeguatezza,
			case
				when upper(b.lliquid) = 'S' then (select [DescrizioneEsito] from [C6MartPeriodico].[TB_S178IndicatoriEsitoAdeguatezza_Note] where ordine = 7 and Adeguato = '1')
				when upper(b.lliquid) = '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 as LQ_Descrizione
			-- FINE LIQUIDITA' / LIQUIDABILITA'
		from [wh].[PL_D2_S169RischiomercatoRischiocredito] a
			inner join C6StagingPeriodico.WSEIAN2 b
			on a.i_rete = b.rete
			and a.i_codiceFiscale =
								(case
									when isnull(b.CodMan, '') <> '' then 'FF@' + b.CodMan
									else b.CodFis
								end)
		where
			a.ordine = 1
			--and a.i_codiceFiscale in (
			----codici di test
			--'ff@10005',
			--'00072930076',     
			--'00118220524',     
			--'00123360075',     
			--'00156630063',     
			--'00158650309'     
			--)
		and b.DtTrim = @DataFineTrim
		--select top 10 * from c6stagingperiodico.wseian where isnull(codman, '') <> ''
END