PDC_REPORT_CreazioneDB/sql/Testbes/procedure/C6Mart_PL_D_S178CasiParticolari.sql
2025-06-10 15:29:40 +02:00

90 lines
3.0 KiB
Transact-SQL

-- [C6Mart].[PL_D_S178CasiParticolari] 'F','MTTSRA00H61D704A'
CREATE procedure [C6Mart].[PL_D_S178CasiParticolari]
-- Add the parameters for the stored procedure here
@Rete char(1),
@CodiceFiscale varchar(16)
AS
BEGIN
declare @Copertura decimal(10,2)
declare @SoloProdottiSenzaAdeguatezza int
declare @SoloCC int
declare @SoloProdottiSenzaAdeguatezzaOrSoloCC int
declare @IDTesto int
set @IDTesto = 0
------------------------------------------------------------------------------ CASO 1 COPERTURA = 0
select @Copertura=copertura
from C6Mart.RISCHIO_AGGREGATO
-- 'COMPLESSIVO|BF' come viene fatto nella PL_D_S157ConfrontoPiramidi per la copertura_tot, campo per l'esposizione della nota sulla coperura sotto la piramide
where cod_aggreg='COMPLESSIVO|BF'
AND COD_FISCALE = @COdiceFISCALE
and RETE= @RETE
------------------------------------------------------------------------------ FINE CASO 1
------------------------------------------------------------------------------ CASO 2 SENZA PRODOTTI IN ADEGUATEZZA
-- Controllo se nel Portafoglio c'è solo CC
select rete, cod_fiscale, id_area
into #t1
from c6mart.patrimonio_bf
where rete = @Rete and cod_fiscale = @CodiceFiscale
group by rete,cod_fiscale, id_area
select rete, cod_fiscale, count(*) as numero
into #t2
from #t1
group by rete, cod_fiscale having count(*) = 1
if exists(
select p.rete, p.cod_fiscale
from c6mart.patrimonio_bf p
inner join #t2
on p.rete = #t2.rete
and p.cod_fiscale = #t2.cod_fiscale
--where rete + cod_fiscale in (select rete + cod_fiscale from #t2)
where p.id_area = 'liq'
and p.tipo_prodotto = 'cc'
)
set @soloCC = 1
else
set @soloCC = 0
drop table #t1
drop table #t2
-- Se le count torna 0 record significa che in ptf ci sono solo prodotti senza adeguatezza
select @SoloProdottiSenzaAdeguatezza= count(*)
from c6mart.patrimonio_bf patr
left join [C6Staging].[Prodotti_Fuori_Adeguatezza] senza
on patr.cod_interno = senza.codinterno and patr.cod_sottoprodotto=senza.codsottoprodotto
where patr.rete = @rete
and patr.cod_fiscale = @codicefiscale
and senza.codinterno is null
-- Se si verifica uno dei due casi, imposto la variabile a 1
if @SoloProdottiSenzaAdeguatezza = 0 or @SoloCC = 1
set @SoloProdottiSenzaAdeguatezzaOrSoloCC = 1
else
set @SoloProdottiSenzaAdeguatezzaOrSoloCC = 0
----------------------------------------------------------------------------- FINE CASO 2
-- CASO 3 COPERTURA = 0 + e ptf con solo PRODOTTI senza ADEGUATEZZA
-- FINE CASO 3
-- RISULTATO FINALE
if(@Copertura = 0)
begin
--if(@SoloProdottiSenzaAdeguatezza=0)
if(@SoloProdottiSenzaAdeguatezzaOrSoloCC = 1)
begin
set @IDTesto = 3
end
else
begin
set @IDTesto = 1
end
end
else
--if(@SoloProdottiSenzaAdeguatezza=0)
if(@SoloProdottiSenzaAdeguatezzaOrSoloCC = 1)
begin
set @IDTesto = 2
end
select ID, Testo
from [C6Mart].[TB_S178CasiParticolari_Testi]
where ID = @IDTesto
-- ********************* PARTE FINTA
--select ID, Testo
-- from [C6Mart].[TB_S178CasiParticolari_Testi]
-- where ID = 0
end