expsigladb.Procedure.prc_load_situazione_progetti.prc Maven / Gradle / Ivy
CREATE OR REPLACE Procedure PRC_LOAD_SITUAZIONE_PROGETTI
(P_ESERCIZIO IN ESERCIZIO.ESERCIZIO%TYPE,
P_PROGETTO IN PROGETTO_SIP.PG_PROGETTO%TYPE,
P_UO IN UNITA_ORGANIZZATIVA.CD_UNITA_ORGANIZZATIVA%TYPE,
P_GAE IN LINEA_ATTIVITA.CD_LINEA_ATTIVITA%TYPE,
P_ROTTURA_ANNO IN VARCHAR2 DEFAULT 'N',
P_ROTTURA_GAE IN VARCHAR2 DEFAULT 'N',
P_ROTTURA_VOCE IN VARCHAR2 DEFAULT 'N',
P_ROTTURA_PIANO IN VARCHAR2 DEFAULT 'N',
P_SOLO_GAE_ATTIVE IN VARCHAR2 DEFAULT 'N',
P_PRINT_MOVIMENTAZIONE IN VARCHAR2 DEFAULT 'N',
P_RESPONSABILE_GAE IN LINEA_ATTIVITA.CD_RESPONSABILE_TERZO%TYPE DEFAULT NULL
) Is
P_CENTRO_RESPONSABILITA LINEA_ATTIVITA.CD_CENTRO_RESPONSABILITA%TYPE;
P_PG_PROGLIV2 PROGETTO_SIP.PG_PROGETTO%TYPE;
P_ROTTURA_ANNO_LOCAL VARCHAR2(1) := 'N';
P_CONTA_INSERT NUMBER := 0;
P_REC_PRINCIPALE VARCHAR2(6) := 'PRINC';
P_REC_DETAIL_MOVIMENTI VARCHAR2(6) := 'DETMOV';
P_REC_DETAIL_VARIAZIONI VARCHAR2(6) := 'DETVAR';
Begin
if P_ROTTURA_PIANO = 'S' then
P_ROTTURA_ANNO_LOCAL := 'S';
else
P_ROTTURA_ANNO_LOCAL := P_ROTTURA_ANNO;
end if;
For rec in (SELECT distinct A.CD_CENTRO_RESPONSABILITA, A.PG_PROGETTO
FROM V_LINEA_ATTIVITA_VALIDA A
WHERE A.ESERCIZIO = P_ESERCIZIO
AND (P_UO IS NULL OR A.CD_CENTRO_RESPONSABILITA LIKE P_UO||'%' OR
A.CD_CENTRO_RESPONSABILITA IN (SELECT C.CD_CENTRO_RESPONSABILITA
FROM PROGETTO B, V_STRUTTURA_ORGANIZZATIVA C
WHERE B.ESERCIZIO_PROGETTO_PADRE = A.ESERCIZIO
AND B.PG_PROGETTO_PADRE = A.PG_PROGETTO
AND B.TIPO_FASE_PROGETTO_PADRE = 'X'
AND B.LIVELLO=3
AND B.CD_UNITA_ORGANIZZATIVA = C.CD_UNITA_ORGANIZZATIVA
AND C.CD_TIPO_LIVELLO = 'CDR'))
AND (P_PROGETTO IS NULL OR A.PG_PROGETTO = P_PROGETTO)
AND (P_GAE IS NULL OR P_GAE = '*' OR A.CD_LINEA_ATTIVITA = P_GAE)
AND (P_RESPONSABILE_GAE IS NULL OR A.CD_RESPONSABILE_TERZO = P_RESPONSABILE_GAE)
AND A.ESERCIZIO >= 2016) Loop
P_CENTRO_RESPONSABILITA := rec.CD_CENTRO_RESPONSABILITA;
P_PG_PROGLIV2 := rec.PG_PROGETTO;
INSERT INTO TMP_STAMPA_SITUAZIONE_PROGETTI
(ESERCIZIO, ESERCIZIO_RES, TI_GESTIONE,
CD_CENTRO_RESPONSABILITA, PG_PROGETTO,
CD_UNITA_PIANO, CD_VOCE_PIANO, DS_VOCE_PIANO,
CD_LINEA_ATTIVITA, DS_LINEA_ATTIVITA,
CD_ELEMENTO_VOCE, DS_ELEMENTO_VOCE, TIPO_RECORD,
STANZIAMENTO_ACC, VARIAZIONI_ACC, STANZIAMENTO_DEC, VARIAZIONI_DEC, TOT_VINCOLI,
TOT_IMPACC, TOT_MANREV, TOT_NUMMOV, TOT_NUMMOV_OBBACC, TOT_NUMMOV_VARIAZIONI)
(SELECT P_ESERCIZIO, p.esercizio_res, p.tipo,
P_CENTRO_RESPONSABILITA, P_PG_PROGLIV2,
p.cd_unita_piano,
p.cd_voce_piano,
CASE WHEN P_ROTTURA_PIANO='S'
THEN NVL((SELECT ds_voce_piano from VOCE_PIANO_ECONOMICO_PRG q
WHERE q.CD_UNITA_ORGANIZZATIVA = p.cd_unita_piano
AND q.CD_VOCE_PIANO = p.cd_voce_piano), 'PIANONULLO')
ELSE 'DS_VOCE_PIANO_UNICO'
END ds_voce_piano,
p.cd_linea_attivita,
CASE WHEN P_ROTTURA_GAE='S'
THEN (SELECT nvl(q.ds_linea_attivita,q.denominazione) from linea_attivita q
WHERE q.cd_centro_responsabilita = P_CENTRO_RESPONSABILITA
AND q.cd_linea_attivita = p.cd_linea_attivita)
ELSE 'DS_GAE_UNICA'
END ds_linea_attivita,
p.cd_elemento_voce,
CASE WHEN P_ROTTURA_VOCE='S'
THEN (SELECT b.ds_elemento_voce FROM ELEMENTO_VOCE B
WHERE B.TI_GESTIONE = P.TIPO
AND B.CD_ELEMENTO_VOCE = P.CD_ELEMENTO_VOCE
and ROWNUM<2)
ELSE 'DS_VOCE_UNICA'
END ds_elemento_voce,
P_REC_PRINCIPALE,
p.stanziamento_acc, p.variazioni_acc,
p.stanziamento, p.variazioni, p.vincoli,
p.impacc, p.pagris, p.nummov, 0, 0
FROM (SELECT a.tipo, a.esercizio_res, a.cd_unita_piano, a.cd_voce_piano,
a.cd_linea_attivita, a.cd_elemento_voce,
sum(a.stanziamento_acc) stanziamento_acc,
sum(a.variazioni_acc) variazioni_acc,
sum(a.stanziamento) stanziamento,
sum(a.variazioni) variazioni,
sum(a.vincoli) vincoli,
sum(CASE WHEN a.esercizio=P_ESERCIZIO
THEN a.impacc
ELSE (CASE WHEN a.impacc
© 2015 - 2024 Weber Informatics LLC | Privacy Policy