PDC_REPORT_CreazioneDB/sql/storedTestbes/C6MartPeriodico_PL_AreeMonitorate.sql
2025-06-06 19:02:52 +02:00

293 lines
9.2 KiB
Transact-SQL

-- Stored procedure
-- =============================================
-- Author: ALESSANDRO TRINGALI
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- Aggiunta GESTIONE EligoTitoli L192 (FCianfa, 26/11/2014)
-- =============================================
--[C6MartPeriodico].[PL_AreeMonitorate] 'S','SCLDNC71P13H224R'
CREATE procedure [C6MartPeriodico].[PL_AreeMonitorate] --'F','BCCMLS56L57F257O'
-- Add the parameters for the stored procedure here
-- Add the parameters for the stored procedure here
@Rete char(1),
@CodiceFiscale varchar(16)
AS
BEGIN
declare @tip_contratto int
select @tip_contratto=tip_contratto from wh.Maledetti where rete=@Rete and CodiceFiscale=@CodiceFiscale
--set @tip_contratto=3 --forzatura per FD
if(@tip_contratto=3)
begin
SELECT
NEED_AREA,
NEED_ESTESA,
--NOME_PROGETTO,
CASE
WHEN ROW_NUMBER() OVER (PARTITION BY NOME_PROGETTO ORDER BY MAX(ORDINE), ORDINAMENTO_PROGETTO) > 1
THEN NOME_PROGETTO + ' (' + CAST(ROW_NUMBER() OVER (PARTITION BY NOME_PROGETTO ORDER BY MAX(ORDINE), ORDINAMENTO_PROGETTO) - 1 AS NVARCHAR(10)) + ')'
ELSE NOME_PROGETTO
END AS Nome_Progetto,
--CONTROLLO NOME PROGETTO DUPLICATO, TOLTO IL MAX, AGGIUNTO NEL GROUP BY
ORDINAMENTO_PROGETTO,
--MAX(ORDINAMENTO_PROGETTO) AS ORDINAMENTO_PROGETTO,
MAX(ORDINE) AS ORDINE,
--rimettere il min e commentare il ctv=0
max(AREAPROGETTOSOTTOMONITORAGGIO) AS AREAPROGETTOSOTTOMONITORAGGIO
into #temp
FROM
(
--1.1 liq sotto monit
SELECT
'Inv' AS Need_Area,
'Investimento' AS Need_Estesa,
CASE WHEN PIRMOD.NOME_PROGETTO is null and pirmod.id_area='Inv' THEN 'Prodotti non associati a progetti'
ELSE LTRIM(RTRIM(PIRMOD.NOME_PROGETTO))
END AS Nome_Progetto,
PIRMOD.ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
CASE PIRMOD.ID_AREA
WHEN 'Liq' THEN 1
WHEN 'Ris' THEN 2
WHEN 'Pre' THEN 3
WHEN 'Inv' THEN 4
WHEN 'Ext' THEN 5
WHEN 'Na' THEN 6
END AS ORDINE,
CASE WHEN MONIT.COD_FISCALE IS NULL THEN 0 ELSE 1 END AS AREAPROGETTOSOTTOMONITORAGGIO
FROM
(SELECT
RETE,
COD_FISCALE,
case when ID_AREA in ('Pre','Pre1','Pre2') then 'Pre' else id_area end as Id_area,
NOME_PROGETTO,
TIPO_PROGETTO,
PERC_AREA,
CTV_PROGETTO,
CTV_AREA,
ORIZZ_TEMP_NUM,
ORIZZ_TEMP,
CTV_TOTALE,
STATO_CONSULENZA,
DATA_STATO_CONS,
DATA_MIGR_CONS,
DATA_PIANIF,
ID_CONTRATTO, ---LEVARE???
ORDINAMENTO_PROGETTO
FROM
C6MartPeriodico.CONS_ATTIVAGGIORNATA
WHERE
COD_FISCALE=@CodiceFiscale
and rete= @Rete
) PIRMOD
INNER JOIN C6MartPeriodico.AREA_BISOGNO AS AREA ON
PIRMOD.ID_AREA = AREA.ID_AREA
LEFT OUTER JOIN C6MARTPERIODICO.MONITORAGGIO_ATTUALE MONIT
ON MONIT.COD_FISCALE=PIRMOD.COD_FISCALE
AND MONIT.RETE=PIRMOD.RETE
AND MONIT.ID_AREA= PIRMOD.ID_AREA
AND MONIT.NOME_PROGETTO= ISNULL(PIRMOD.NOME_PROGETTO,'XXX')
AND MONIT.ORDINAMENTO_PROGETTO=PIRMOD.ORDINAMENTO_PROGETTO
--inner join C6StagingPeriodico.RP_Progetto_Robo rob ON rob.chiaveProgetto=monit.ORDINAMENTO_PROGETTO
WHERE
PIRMOD.RETE= @Rete
AND PIRMOD.COD_FISCALE = @CodiceFiscale
AND PIRMOD.CTV_PROGETTO > 0
------------------------ MIFID2 - MAGGIO 2018
--AND PIRMOD.ID_AREA NOT IN ('Pre1', 'Pre2', 'Cc')
AND PIRMOD.ID_AREA NOT IN ('Pre1', 'Pre2', 'Cc', 'LIGHT')
-- and pirmod.Id_area in ('Inv','Liq') --aggiunta per fideuram Direct
------------------------- FINE MIFID2 - MAGGIO 2018
) A
GROUP BY
NEED_AREA,
NEED_ESTESA,
NOME_PROGETTO,
ORDINAMENTO_PROGETTO
ORDER BY
MAX(ORDINE),
ORDINAMENTO_PROGETTO
update #temp
set ORDINE=4
where Need_Area='Inv'
select * from #temp
end
else
begin
SELECT
NEED_AREA,
NEED_ESTESA,
NOME_PROGETTO,
--CONTROLLO NOME PROGETTO DUPLICATO, TOLTO IL MAX, AGGIUNTO NEL GROUP BY
ORDINAMENTO_PROGETTO,
--MAX(ORDINAMENTO_PROGETTO) AS ORDINAMENTO_PROGETTO,
MAX(ORDINE) AS ORDINE,
--rimettere il min e commentare il ctv=0
max(AREAPROGETTOSOTTOMONITORAGGIO) AS AREAPROGETTOSOTTOMONITORAGGIO
FROM
(
--1.1 liq sotto monit
SELECT
PIRMOD.ID_AREA AS Need_Area,
AREA.NOME_AREA AS Need_Estesa,
CASE WHEN PIRMOD.NOME_PROGETTO is null and pirmod.id_area='Inv' THEN 'Prodotti non associati a progetti'
ELSE LTRIM(RTRIM(PIRMOD.NOME_PROGETTO))
END AS Nome_Progetto,
PIRMOD.ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
CASE PIRMOD.ID_AREA
WHEN 'Liq' THEN 1
WHEN 'Ris' THEN 2
WHEN 'Pre' THEN 3
WHEN 'Inv' THEN 4
WHEN 'Ext' THEN 5
WHEN 'Na' THEN 6
END AS ORDINE,
CASE WHEN MONIT.COD_FISCALE IS NULL THEN 0 ELSE 1 END AS AREAPROGETTOSOTTOMONITORAGGIO
FROM
(SELECT
RETE,
COD_FISCALE,
case when ID_AREA in ('Pre','Pre1','Pre2') then 'Pre' else id_area end as Id_area,
NOME_PROGETTO,
TIPO_PROGETTO,
PERC_AREA,
CTV_PROGETTO,
CTV_AREA,
ORIZZ_TEMP_NUM,
ORIZZ_TEMP,
CTV_TOTALE,
STATO_CONSULENZA,
DATA_STATO_CONS,
DATA_MIGR_CONS,
DATA_PIANIF,
ID_CONTRATTO, ---LEVARE???
ORDINAMENTO_PROGETTO
FROM
C6MartPeriodico.CONS_ATTIVAGGIORNATA
WHERE
COD_FISCALE=@CodiceFiscale
and rete= @Rete
) PIRMOD
INNER JOIN C6MartPeriodico.AREA_BISOGNO AS AREA ON
PIRMOD.ID_AREA = AREA.ID_AREA
LEFT OUTER JOIN C6MARTPERIODICO.MONITORAGGIO_ATTUALE MONIT
ON MONIT.COD_FISCALE=PIRMOD.COD_FISCALE
AND MONIT.RETE=PIRMOD.RETE
AND MONIT.ID_AREA= PIRMOD.ID_AREA
AND MONIT.NOME_PROGETTO= ISNULL(PIRMOD.NOME_PROGETTO,'XXX')
AND MONIT.ORDINAMENTO_PROGETTO=PIRMOD.ORDINAMENTO_PROGETTO
WHERE
PIRMOD.RETE= @Rete
AND PIRMOD.COD_FISCALE = @CodiceFiscale
AND PIRMOD.CTV_PROGETTO > 0
------------------------ MIFID2 - MAGGIO 2018
--AND PIRMOD.ID_AREA NOT IN ('Pre1', 'Pre2', 'Cc')
AND PIRMOD.ID_AREA NOT IN ('Pre1', 'Pre2', 'Cc', 'LIGHT')
------------------------- FINE MIFID2 - MAGGIO 2018
--V ordine cambiato da 5 a 6 inquanto 5 è lo stesso di ext, na è passato a 7
--Bido Added for 'SN' Saldo Negativo
UNION
SELECT DISTINCT
'Cc' AS Need_Area,
'Conti correnti a saldo negativo'AS Need_Estesa,
NULL AS Nome_Progetto,
--999999 as ORDINAMENTO_PROGETTO,
ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
6 AS ORDINE,
0 as AREAPROGETTOSOTTOMONITORAGGIO
FROM
C6MARTPERIODICO.PATRIMONIO_BF PATRBF
WHERE
PATRBF.RETE= @Rete
AND PATRBF.COD_FISCALE = @CodiceFiscale
AND PATRBF.CTV < 0 and id_area = 'CC'
-- End Of Bido Added for 'SN' Saldo Negativo
UNION
SELECT DISTINCT
'Self' AS Need_Area,
-- 20181205 AC
--'Liquidità negativa "Linee GP Eligo"' AS Need_Estesa,
case
when cod_interno = 'XY' then 'Liquidità negativa "Linea GP Eligo"'
when cod_interno = 'FO' then 'Liquidità negativa "Il Mio Foglio"'
end AS Need_Estesa,
-- /20181205 AC
-- 20181205 AC
--NULL AS Nome_Progetto,
rtrim(cod_interno) AS Nome_Progetto,
-- /20181205 AC
--999999 as ORDINAMENTO_PROGETTO,
-- 20181205 AC
ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
--'' as ORDINAMENTO_PROGETTO,
-- /20181205 AC
7 AS ORDINE,
0 as AREAPROGETTOSOTTOMONITORAGGIO
FROM
C6MARTPERIODICO.PATRIMONIO_BF PATRBF
WHERE
PATRBF.RETE= @Rete
AND PATRBF.COD_FISCALE = @CodiceFiscale
AND PATRBF.CTV < 0 and id_area = 'SELF'
-- End Of Bido Added for 'SN' Saldo Negativo
UNION
SELECT DISTINCT
'Na' AS Need_Area,
'Non allocato'AS Need_Estesa,
NULL AS Nome_Progetto,
--999999 as ORDINAMENTO_PROGETTO,
ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
8 AS ORDINE,
0 as AREAPROGETTOSOTTOMONITORAGGIO
FROM
C6MARTPERIODICO.PATRIMONIO_BF PATRBF
WHERE
PATRBF.RETE= @Rete
AND PATRBF.COD_FISCALE = @CodiceFiscale
AND PATRBF.CTV > 0
AND PATRBF.ID_AREA IN ('Na')
UNION
SELECT DISTINCT
case when PATRBF.ID_AREA in ('Pre','Pre1','Pre2') then 'Pre' else PATRBF.ID_AREA end AS Need_Area,
case when PATRBF.ID_AREA in ('Pre','Pre1','Pre2') then 'Previdenza' else AREA.NOME_AREA end as NEED_ESTESA ,
CASE WHEN PATRBF.NOME_PROGETTO is null and PATRBF.id_area='Inv' THEN 'Prodotti non associati a progetti'
ELSE PATRBF.NOME_PROGETTO end AS Nome_Progetto,
--case when PATRBF.ID_AREA in ('Pre','Pre1','Pre2') then 1 else PATRBF.ORDINAMENTO_PROGETTO end as ORDINAMENTO_PROGETTO,
PATRBF.ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
CASE PATRBF.ID_AREA
WHEN 'Liq' THEN 1
WHEN 'Ris' THEN 2
WHEN 'Pre' THEN 3
WHEN 'Pre1' THEN 3
WHEN 'Pre2' THEN 3
WHEN 'Inv' THEN 4
WHEN 'Ext' THEN 5
WHEN 'Na' THEN 7
END AS ORDINE,
CASE WHEN MONIT.COD_FISCALE IS NULL THEN 0 ELSE 1 END AS AREAPROGETTOSOTTOMONITORAGGIO
FROM
C6MARTPERIODICO.PATRIMONIO_BF PATRBF
INNER JOIN C6MartPeriodico.AREA_BISOGNO AS AREA ON
PATRBF.ID_AREA = AREA.ID_AREA
LEFT OUTER JOIN C6MARTPERIODICO.MONITORAGGIO_ATTUALE MONIT
ON MONIT.COD_FISCALE=PATRBF.COD_FISCALE
AND MONIT.RETE=PATRBF.RETE
AND MONIT.ID_AREA= PATRBF.ID_AREA
AND MONIT.NOME_PROGETTO= ISNULL(PATRBF.NOME_PROGETTO,'XXX')
AND MONIT.ORDINAMENTO_PROGETTO=PATRBF.ORDINAMENTO_PROGETTO
WHERE
1=1
AND PATRBF.RETE= @Rete
AND PATRBF.COD_FISCALE = @CodiceFiscale
AND PATRBF.CTV > 0
AND PATRBF.EXTRANAC=1
AND PATRBF.ID_AREA NOT IN ('Na', 'Cc')
) A
GROUP BY
NEED_AREA,
NEED_ESTESA,
NOME_PROGETTO,
ORDINAMENTO_PROGETTO
ORDER BY
ORDINE,
ORDINAMENTO_PROGETTO
end
END