PDC_REPORT_CreazioneDB/sql/storedProduzione/C6MartPeriodico_PL_S80BisEvoluzioneRischio_BkUpParall.sql
2025-06-06 19:02:52 +02:00

196 lines
5.6 KiB
Transact-SQL

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
--[C6MartPeriodico].[PL_S80BisEvoluzioneRischio]'F','02392500605S'
--DROP PROCEDURE [C6MartPeriodico].[PL_S80EvoluzioneControvalore]
CREATE procedure [C6MartPeriodico].[PL_S80BisEvoluzioneRischio_BkUpParall]
-- 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;
-- Recupero data congelamento SEI
DECLARE @MONIT_INIT INT
DECLARE @DataCongelamento DATETIME
DECLARE @MONIT_ATTIV INT
--V VAriabile usata per verificare la presenza di righe nella rischio_aggregato, se non ho righe non
--faccio uscire la sezione
DECLARE @AGGR INT
SET @DataCongelamento = C6MartPeriodico.getDataCongelamento()
SET @MONIT_ATTIV=0
SET @MONIT_INIT = 0
declare @contaCC as int
select @contaCC = count(*)
from c6martperiodico.patrimonio_Bf
where tipo_prodotto = 'CC' and cod_fiscale = @codiceFiscale and rete = @rete
declare @contaPOS as int
select @contaPOS = count(*)
from c6martperiodico.patrimonio_Bf
where cod_fiscale = @codiceFiscale and rete = @rete
-- INSERIMENTO BLOCCO PER MONITORAGGIO CHIUSO O NON ESISTENTE
SELECT @MONIT_INIT = COUNT(*)
FROM
C6MARTPERIODICO.MONITORAGGIO_INIZIALE
WHERE
RETE = @Rete AND
COD_FISCALE = @CodiceFiscale
SELECT @MONIT_ATTIV=COUNT(*)
FROM
C6MARTPERIODICO.MONITORAGGIO_ATTUALE
WHERE
RETE = @Rete AND
COD_FISCALE = @CodiceFiscale
SELECT @AGGR=COUNT(*)
FROM
C6MARTPERIODICO.RISCHIO_AGGREGATO
WHERE
RETE = @Rete AND
COD_FISCALE = @CodiceFiscale
IF (@MONIT_ATTIV > 0 AND @AGGR > 0 AND @MONIT_INIT > 0)
BEGIN
-- Attivazione monitoraggio
-- nuova versione da testare
SELECT
1 AS Fase,
INI.DATA_FOTO AS DataFase,
INI.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
--V
CASE
WHEN INI.VAR_COMPLESSIVO IS NULL THEN INI.VAR_COMPLESSIVO
ELSE ROUND(INI.VAR_COMPLESSIVO,2)
END AS VarComplessivo,
INI.VAR_COPERTURA AS Copertura,
INI.RISKCLASS,
INI.RISKCLASSMAX,
case
when INI.RISKCLASS is null then 'n.d.'
when INI.RISKCLASS = 0 then 'n.a.'
else null
end as RiskClassString,
case
when INI.RISKCLASSMAX is null then 'n.d.'
when INI.RISKCLASSMAX = 0 then 'n.a.'
else null
end as RiskClassMaxString
FROM
C6MartPeriodico.MONITORAGGIO_INIZIALE INI
LEFT OUTER join
C6MartPeriodico.MONITORAGGIO_REPORT rep
on
REP.RETE=INI.RETE
AND
REP.COD_FISCALE=INI.COD_FISCALE
WHERE
INI.RETE = @Rete AND
INI.COD_FISCALE = @CodiceFiscale
-- SELECT
-- 1 AS Fase,
-- INI.DATA_FOTO AS DataFase,
-- INI.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
-- --V
-- CASE
-- WHEN INI.VAR_COMPLESSIVO IS NULL THEN INI.VAR_COMPLESSIVO
-- ELSE ROUND(INI.VAR_COMPLESSIVO,2)
-- END AS VarComplessivo,
-- INI.VAR_COPERTURA AS Copertura
-- FROM
-- C6MartPeriodico.MONITORAGGIO_INIZIALE INI
--
-- WHERE
-- INI.RETE = @Rete AND
-- INI.COD_FISCALE = @CodiceFiscale
UNION ALL
-- Precedente invio report
SELECT
2 AS Fase,
rep.DATA_INVIO AS DataFase,
rep.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
--V
CASE
WHEN rep.VAR_COMPLESSIVO IS NULL THEN rep.VAR_COMPLESSIVO
ELSE ROUND(rep.VAR_COMPLESSIVO,2)
END AS VarComplessivo,
rep.VAR_COPERTURA AS Copertura,
rep.RISKCLASS,
rep.RISKCLASSMAX,
case when rep.RISKCLASS is null then 'n.a.'
else null
end as RiskClassString,
case when rep.RISKCLASSMAX is null then 'n.a.'
else null
end as RiskClassMaxString
FROM
C6MartPeriodico.MONITORAGGIO_INIZIALE INI
left outer join
C6MartPeriodico.MONITORAGGIO_REPORT rep
on
REP.RETE=INI.RETE
AND
REP.COD_FISCALE=INI.COD_FISCALE
WHERE
rep.RETE = @Rete AND
rep.COD_FISCALE = @CodiceFiscale
AND INI.DATA_FOTO < ISNULL(REP.DATA_INVIO,cast('29991231' as datetime))
and ISNULL(DATA_INVIO,cast('29991231' as datetime))<@datacongelamento
UNION ALL
-- Situazione corrente
SELECT
3,
CASE
WHEN @DataCongelamento IS NULL THEN GETDATE()
ELSE @DataCongelamento
END AS DataFase,
CR.MAX_VAR AS VarMassimoProfiloFinanziario,
--V
CASE WHEN RA.VAR_PERC_PTF IS NULL THEN 0.00
ELSE ROUND(RA.VAR_PERC_PTF,2)
END AS VarComplessivo,
CASE
WHEN (@contaPOS - @contaCC = 0 ) THEN 100
ELSE isnull(RA.COPERTURA,0)
END AS Copertura,
-- TRINGALI MODIFICARE
ra.creditrisk as RISKCLASS,
mifid.riskclass as RISKCLASSMAX,
case when ra.creditrisk is null then 'n.a.'
else null end as RiskClassString,
case when mifid.riskclass is null then 'n.a.'
else null end as RiskClassMaxString
FROM
C6MartPeriodico.vPatrimonioBFAggregato AS BF
INNER JOIN C6MartPeriodico.MIFID AS MIFID
ON BF.RETE = MIFID.RETE
AND BF.COD_FISCALE = MIFID.COD_FISCALE
INNER JOIN C6MartPeriodico.CODIFICA_RISCHIO AS CR
ON MIFID.PROFILO_ASS = CR.PROFILO
LEFT OUTER JOIN C6MartPeriodico.RISCHIO_AGGREGATO AS RA
ON RA.RETE = BF.RETE
AND RA.COD_FISCALE = BF.COD_FISCALE
AND RA.COD_AGGREG = 'COMPLESSIVO|BF'
WHERE
BF.RETE = @Rete AND
BF.COD_FISCALE = @CodiceFiscale
END
ELSE
BEGIN
SELECT
2 AS Fase,
DATA_INVIO AS DataFase,
VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
--V
CASE
WHEN VAR_COMPLESSIVO IS NULL THEN VAR_COMPLESSIVO
ELSE ROUND(VAR_COMPLESSIVO,2)
END AS VarComplessivo,
VAR_COPERTURA AS Copertura
FROM
C6MartPeriodico.MONITORAGGIO_REPORT
WHERE
1=2
END
END