expsigladb.Package.CNRCTB061_LELLO_BODY.sql Maven / Gradle / Ivy
--------------------------------------------------------
-- DDL for Package Body CNRCTB061_LELLO
--------------------------------------------------------
CREATE OR REPLACE PACKAGE BODY "CNRCTB061_LELLO" is
Type typeModuloSpeseGest Is Table Of pdg_modulo_spese_gest%Rowtype Index By BINARY_INTEGER;
-- Imposta gli importi sul dettaglio di PDG da creare
Procedure setImporto(aASSCDPLA V_CDP_SPACCATO_CDR_LA_VOCE%rowtype,
aDestS in out pdg_modulo_spese_gest%rowtype) is
aCDRPersonale cdr%Rowtype;
aLATmp linea_attivita%rowtype;
Begin
-- Leggo il CDR del personale e lock del PDG
aCDRPersonale:=CNRCTB020.GETCDRPERSONALE;
-- Leggo la linea di attivita per aggiornare gli importi del PDGP in base alla natura
Select * into aLATmp from linea_attivita
Where cd_linea_attivita = aASSCDPLA.cd_linea_attivita
And cd_centro_responsabilita = aASSCDPLA.cd_cdr;
If aDestS.cd_centro_responsabilita=aCDRPersonale.cd_centro_responsabilita Then
If aLATmp.cd_natura = '2' Or aLATmp.cd_natura = '3' Then
aDestS.IM_SPESE_GEST_DECENTRATA_EST:=Nvl(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0) +
Nvl(aASSCDPLA.im_a1, 0);
Else
aDestS.IM_SPESE_GEST_DECENTRATA_INT:=Nvl(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0) +
Nvl(aASSCDPLA.im_a1, 0);
End If;
Else
If aLATmp.cd_natura = '2' Or aLATmp.cd_natura = '3' Then
aDestS.IM_SPESE_GEST_ACCENTRATA_EST:=Nvl(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0) +
Nvl(aASSCDPLA.im_a1, 0);
Else
aDestS.IM_SPESE_GEST_ACCENTRATA_INT:=Nvl(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0) +
Nvl(aASSCDPLA.im_a1, 0);
End If;
End If;
--Serve per evitare che alcuni importi abbiano valore null
aDestS.IM_SPESE_GEST_DECENTRATA_EST:=Nvl(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0);
aDestS.IM_SPESE_GEST_DECENTRATA_INT:=Nvl(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0);
aDestS.IM_SPESE_GEST_ACCENTRATA_EST:=Nvl(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0);
aDestS.IM_SPESE_GEST_ACCENTRATA_INT:=Nvl(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0);
End;
-- Imposta gli importi sul dettaglio di PDG da creare
Procedure setImporto(aASSCDPLA V_CDP_SPACCATO_CDR_LA_VOCE%rowtype,
aTabModulo in out typeModuloSpeseGest,
i NUMBER) is
aCDRPersonale cdr%Rowtype;
aLATmp linea_attivita%rowtype;
Begin
-- Leggo il CDR del personale e lock del PDG
aCDRPersonale:=CNRCTB020.GETCDRPERSONALE;
-- Leggo la linea di attivita per aggiornare gli importi del PDGP in base alla natura
Select * into aLATmp from linea_attivita
Where cd_linea_attivita = aASSCDPLA.cd_linea_attivita
And cd_centro_responsabilita = aASSCDPLA.cd_cdr;
If aTabModulo(i).cd_centro_responsabilita=aCDRPersonale.cd_centro_responsabilita Then
If aLATmp.cd_natura = '2' Or aLATmp.cd_natura = '3' Then
aTabModulo(i).IM_SPESE_GEST_DECENTRATA_EST:=Nvl(aTabModulo(i).IM_SPESE_GEST_DECENTRATA_EST, 0) +
Nvl(aASSCDPLA.im_a1, 0);
Else
aTabModulo(i).IM_SPESE_GEST_DECENTRATA_INT:=Nvl(aTabModulo(i).IM_SPESE_GEST_DECENTRATA_INT, 0) +
Nvl(aASSCDPLA.im_a1, 0);
End If;
Else
If aLATmp.cd_natura = '2' Or aLATmp.cd_natura = '3' Then
aTabModulo(i).IM_SPESE_GEST_ACCENTRATA_EST:=Nvl(aTabModulo(i).IM_SPESE_GEST_ACCENTRATA_EST, 0) +
Nvl(aASSCDPLA.im_a1, 0);
Else
aTabModulo(i).IM_SPESE_GEST_ACCENTRATA_INT:=Nvl(aTabModulo(i).IM_SPESE_GEST_ACCENTRATA_INT, 0) +
Nvl(aASSCDPLA.im_a1, 0);
End If;
End If;
--Serve per evitare che alcuni importi abbiano valore null
aTabModulo(i).IM_SPESE_GEST_DECENTRATA_EST:=Nvl(aTabModulo(i).IM_SPESE_GEST_DECENTRATA_EST, 0);
aTabModulo(i).IM_SPESE_GEST_DECENTRATA_INT:=Nvl(aTabModulo(i).IM_SPESE_GEST_DECENTRATA_INT, 0);
aTabModulo(i).IM_SPESE_GEST_ACCENTRATA_EST:=Nvl(aTabModulo(i).IM_SPESE_GEST_ACCENTRATA_EST, 0);
aTabModulo(i).IM_SPESE_GEST_ACCENTRATA_INT:=Nvl(aTabModulo(i).IM_SPESE_GEST_ACCENTRATA_INT, 0);
End;
Procedure scaricaCDPSuPdgLello(aEsercizio number, aCdCdr varchar2, aUser varchar2) is
aCDRRUO cdr%Rowtype;
aUO unita_organizzativa%Rowtype;
aAssSpese ass_cdp_pdgp%Rowtype;
tabModuloSpeseGest typeModuloSpeseGest;
trovatoModuloSpeseGest Boolean := False;
aDestS pdg_modulo_spese_gest%Rowtype;
aTSNow DATE;
aDescrizione pdg_modulo_spese_gest.descrizione%Type := 'Inserimento automatico proveniente dallo scarico dei costi del personale.';
aModuloTmp progetto%Rowtype;
aNum NUMBER(8);
aVoce elemento_voce%Rowtype;
aVoceTFR elemento_voce%Rowtype;
aVoceTFRTEMPODET elemento_voce%Rowtype;
aVoceONERICNR elemento_voce%Rowtype;
aVoceONERICNRTEMPODET elemento_voce%Rowtype;
aParCNR parametri_cnr%Rowtype;
aCdClassificazione v_classificazione_voci_all.cd_classificazione%Type;
aAllVociClassificazione v_classificazione_voci_all%Rowtype;
aAllVociClassificazioneDef v_classificazione_voci_all%Rowtype;
isTempoDeterminato Boolean;
aLATmp linea_attivita%Rowtype;
aModulo progetto%Rowtype;
isDettRedistrRottiFound Boolean;
isProcessato Boolean;
isVoceTFR Boolean;
aCDRPersonale cdr%Rowtype;
esci exception;
Begin
aTSNow:=sysdate;
-- Leggo il CDR
aCDRRUO:=CNRCTB020.GETCDRVALIDO(aEsercizio, aCdCdr);
-- Leggo la UO del CDR
aUO := CNRCTB020.getUO(aCDRRUO);
if to_number(aCDRRUO.cd_proprio_cdr) != 0 then
IBMERR001.RAISE_ERR_GENERICO('Operazione permessa solo su cdr di tipo RUO!');
end if;
-- Leggo il CDR del personale
aCDRPersonale:=CNRCTB020.GETCDRPERSONALE;
Select count(*) into aNum
From ass_cdp_pdgp
Where esercizio = aEsercizio
And ti_costi_spese = CNRCTB061_lello.TAB_COSTI
And cd_centro_responsabilita in (Select cd_centro_responsabilita
From V_PDGP_CDR_RUO_NRUO
Where esercizio = aEsercizio
And cd_cdr_root = aCdCdr
And (aUO.cd_tipo_unita != CNRCTB020.TIPO_SAC Or
cd_unita_organizzativa = aUO.cd_unita_organizzativa));
If aNum = 0 then
Select count(*) into aNum
From V_CDP_SPACCATO_CDR_LA_VOCE
Where esercizio = aEsercizio
And mese = 0
And cd_cdr_root In (Select cd_centro_responsabilita from V_PDGP_CDR_RUO_NRUO
Where esercizio = aEsercizio
And cd_cdr_root = aCdCdr
And (aUO.cd_tipo_unita != CNRCTB020.TIPO_SAC Or
cd_unita_organizzativa = aUO.cd_unita_organizzativa));
If aNum = 0 then
--vuol dire che non ci sono costi da ripartire
Raise esci;
End If;
IBMERR001.RAISE_ERR_GENERICO('Operazione di scarico sul PDGP non effettuata su cdr '||aCdCdr);
End if;
-- Carico la voce del piano TFR e ONERICNR per il personale a tempo indeterminato
aVoceTFR:=CNRCTB000.GETVOCETFR(aEsercizio);
aVoceONERICNR:=CNRCTB000.GETVOCEONERICNR(aEsercizio);
-- Carico la voce del piano TFR e ONERICNR per il personale a tempo determinato
aVoceTFRTEMPODET:=CNRCTB000.GETVOCETFRTEMPODET(aEsercizio);
aVoceONERICNRTEMPODET:=CNRCTB000.GETVOCEONERICNRTEMPODET(aEsercizio);
-- Leggo i parametri per conoscere il livello classificazione di inserimento
Begin
Select * into aParCNR from parametri_cnr
Where esercizio = aEsercizio;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('Mancano i parametri CNR per l''esercizio '||aEsercizio||
'necessari per la determinazione del livello classificazione da utilizzare per '||
'il caricamento del Pdg. Impossibile lo scarico.');
End;
-- Start dello scarico su PDG dei costi del personale
For aASSCDPLA In (
Select * From V_CDP_SPACC_CDR_LA_VOCE_LELLO Where
esercizio = aEsercizio
And mese = 0
And cd_cdr_root In (Select cd_centro_responsabilita from V_PDGP_CDR_RUO_NRUO
Where esercizio = aEsercizio
And cd_cdr_root = aCdCdr
And (aUO.cd_tipo_unita != CNRCTB020.TIPO_SAC Or
cd_unita_organizzativa = aUO.cd_unita_organizzativa))
Order by cd_cdr) loop -- Cicla sulle configurazioni di scarico
contaaASSCDPLA := contaaASSCDPLA + 1;
-- Determina il tipo di rapporto dalla tabella COSTO_DEL_DIPENDENTE
isTempoDeterminato:=false;
If aASSCDPLA.ti_rapporto = CDP_TI_RAPP_DETERMINATO Then
isTempoDeterminato:=true;
End if;
-- Leggo la linea di attivita per aggiornare il dettaglio del PDG con funzione e natura
Begin
Select * into aLATmp from linea_attivita
Where cd_linea_attivita = aASSCDPLA.cd_linea_attivita
And cd_centro_responsabilita = aASSCDPLA.cd_cdr;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('E'' stato imputato, nella ripartizione dei costi del personale, un codice G.A.E. '||
aASSCDPLA.cd_linea_attivita||' per il cdr '||aASSCDPLA.cd_cdr||' inesistente. Impossibile lo scarico.');
End;
If aLaTmp.cd_natura = '5' then
IBMERR001.RAISE_ERR_GENERICO('Esiste una ripartizione dei CDP su G.A.E. di natura 5. Impossibile lo scarico.');
End if;
-- Leggo la voce per recuperare la classificazione
Begin
Select * into aVoce from elemento_voce
Where esercizio = aASSCDPLA.esercizio
And ti_appartenenza = aASSCDPLA.ti_appartenenza
And ti_gestione = aASSCDPLA.ti_gestione
And cd_elemento_voce = aASSCDPLA.cd_elemento_voce;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('E'' stata indicata, nei costi del personale, un codice elemento voce '||
aASSCDPLA.cd_elemento_voce||' inesistente. Impossibile lo scarico.');
End;
If aVoce.id_classificazione Is Null then
IBMERR001.RAISE_ERR_GENERICO('Manca la classificazione sulla voce '||aVoce.cd_elemento_voce||' dell''esercizio '||aVoce.esercizio||'. Impossibile lo scarico.');
End if;
-- Leggo tutta la classificazione per reperire i suoi livelli precedenti
Begin
Select * into aAllVociClassificazione from v_classificazione_voci_all
Where id_classificazione = aVoce.id_classificazione;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('E'' stata indicata, nei costi del personale, un codice elemento voce '||
aASSCDPLA.cd_elemento_voce||' con classificazione ('||aVoce.id_classificazione||
') non presente nella tabella corrispondente. Impossibile lo scarico.');
End;
aCdClassificazione := Null;
-- Individuo la classificazione da utilizzare
If aParCNR.LIVELLO_PDG_DECIS_SPE = 1 Then
aCdClassificazione := aAllVociClassificazione.cd_liv1;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 2 Then
aCdClassificazione := aAllVociClassificazione.cd_liv2;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 3 Then
aCdClassificazione := aAllVociClassificazione.cd_liv3;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 4 Then
aCdClassificazione := aAllVociClassificazione.cd_liv4;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 5 Then
aCdClassificazione := aAllVociClassificazione.cd_liv5;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 6 Then
aCdClassificazione := aAllVociClassificazione.cd_liv6;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 7 Then
aCdClassificazione := aAllVociClassificazione.cd_liv7;
End If;
If aCdClassificazione Is Null Then
IBMERR001.RAISE_ERR_GENERICO('E'' stata indicata, nei costi del personale, un codice elemento voce '||
aASSCDPLA.cd_elemento_voce||' con classificazione ('||aVoce.id_classificazione||
') che ha generato anomalia nella ricerca del codice livello necessario per il '||
'caricamento del Pdg. Impossibile lo scarico.'||aParCNR.LIVELLO_PDG_DECIS_SPE);
End If;
-- Leggo la classificazione finale da inserire in PDG_MODULO_SPESE
Begin
Select * into aAllVociClassificazioneDef from v_classificazione_voci_all
Where esercizio = aASSCDPLA.esercizio
And ti_gestione = aASSCDPLA.ti_gestione
And cd_classificazione = aCdClassificazione;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('E'' stata indicata, nei costi del personale, un codice elemento voce '||
aASSCDPLA.cd_elemento_voce||' con classificazione ('||aVoce.id_classificazione||
') che ha generato anomalia nella ricerca del livello necessario per il '||
'caricamento del PdgP. Impossibile lo scarico.');
End;
isVoceTFR:=False;
If aASSCDPLA.cd_elemento_voce = aVoceTFR.cd_elemento_voce Or
aASSCDPLA.cd_elemento_voce = aVoceTFRTEMPODET.cd_elemento_voce Then
isVoceTFR:=True;
End If;
If Not (isVoceTFR) Then
trovatoModuloSpeseGest := False;
For i In 1..tabModuloSpeseGest.count Loop
If tabModuloSpeseGest(i).ESERCIZIO = aEsercizio And
tabModuloSpeseGest(i).CD_CENTRO_RESPONSABILITA = aCDRRUO.cd_centro_responsabilita And
tabModuloSpeseGest(i).PG_PROGETTO = aLATmp.pg_progetto And
tabModuloSpeseGest(i).ID_CLASSIFICAZIONE = aAllVociClassificazioneDef.id_classificazione And
tabModuloSpeseGest(i).CD_CDS_AREA = aUO.cd_unita_padre And
tabModuloSpeseGest(i).CD_CDR_ASSEGNATARIO = aASSCDPLA.cd_cdr And
tabModuloSpeseGest(i).CD_LINEA_ATTIVITA = aASSCDPLA.cd_linea_attivita And
tabModuloSpeseGest(i).TI_APPARTENENZA = aASSCDPLA.ti_appartenenza And
tabModuloSpeseGest(i).TI_GESTIONE = aASSCDPLA.ti_gestione And
tabModuloSpeseGest(i).CD_ELEMENTO_VOCE = aASSCDPLA.cd_elemento_voce Then
Setimporto(aASSCDPLA, tabModuloSpeseGest, i);
/*
tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST := Nvl(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0) +
Nvl(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0);
tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT := Nvl(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0) +
Nvl(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0);
tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST := Nvl(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0) +
Nvl(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0);
tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT := Nvl(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0) +
Nvl(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0);
*/
trovatoModuloSpeseGest := True;
Exit;
End If;
End Loop;
If Not trovatoModuloSpeseGest Then
aDestS:=null;
aDestS.ESERCIZIO:=aEsercizio;
aDestS.CD_CENTRO_RESPONSABILITA:=aCDRRUO.cd_centro_responsabilita;
aDestS.PG_PROGETTO:=aLATmp.pg_progetto;
aDestS.ID_CLASSIFICAZIONE:=aAllVociClassificazioneDef.id_classificazione;
aDestS.CD_CDS_AREA:=aUO.cd_unita_padre;
aDestS.CD_CDR_ASSEGNATARIO := aASSCDPLA.cd_cdr;
aDestS.CD_LINEA_ATTIVITA := aASSCDPLA.cd_linea_attivita;
aDestS.TI_APPARTENENZA := aASSCDPLA.ti_appartenenza;
aDestS.TI_GESTIONE := aASSCDPLA.ti_gestione;
aDestS.CD_ELEMENTO_VOCE := aASSCDPLA.cd_elemento_voce;
aDestS.DT_REGISTRAZIONE := aTSNow;
aDestS.DESCRIZIONE := aDescrizione;
aDestS.ORIGINE := CNRCTB061_lello.ORIGINE_PREVISIONE;
aDestS.CATEGORIA_DETTAGLIO := CNRCTB061_lello.CATEGORIA_STIPENDI;
aDestS.FL_SOLA_LETTURA := 'Y';
CNRCTB051.resetCampiImporto(aDestS);
Setimporto(aASSCDPLA, aDestS);
aDestS.DACR:=aTSNow;
aDestS.UTCR:=aUser;
aDestS.DUVA:=aTSNow;
aDestS.UTUV:=aUser;
aDestS.PG_VER_REC:=1;
tabModuloSpeseGest(tabModuloSpeseGest.count+1):=aDestS;
End If;
End If;
End Loop;
-- Distribuzione dei rotti su dettagli creati
For aAssCdpPdgPRnd In (Select * From ass_cdp_pdgp_round
Where esercizio = aEsercizio
And cd_cdr_root = aCDRRUO.cd_centro_responsabilita
And pg_progetto_spese Is Not Null) loop -- Cicla sulle configurazioni dei ROTTI
isDettRedistrRottiFound:=false;
-- Leggo la voce per recuperare la classificazione
Begin
Select * into aVoce from elemento_voce
Where esercizio = aAssCdpPdgPRnd.esercizio
And ti_appartenenza = aAssCdpPdgPRnd.ti_appartenenza
And ti_gestione = aAssCdpPdgPRnd.ti_gestione
And cd_elemento_voce = aAssCdpPdgPRnd.cd_elemento_voce;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('E'' stata indicata, nei costi del personale, un codice elemento voce '||
aAssCdpPdgPRnd.cd_elemento_voce||' inesistente. Impossibile lo scarico.');
End;
If aVoce.id_classificazione Is Null then
IBMERR001.RAISE_ERR_GENERICO('Manca la classificazione sulla voce '||aVoce.cd_elemento_voce||' dell''esercizio '||aVoce.esercizio||'. Impossibile lo scarico.');
End if;
-- Leggo tutta la classificazione per reperire i suoi livelli precedenti
Begin
Select * into aAllVociClassificazione from v_classificazione_voci_all
Where id_classificazione = aVoce.id_classificazione;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('E'' stata indicata, nei costi del personale, un codice elemento voce '||
aAssCdpPdgPRnd.cd_elemento_voce||' con classificazione ('||aVoce.id_classificazione||
') non presente nella tabella corrispondente. Impossibile lo scarico.');
End;
aCdClassificazione := Null;
-- Individuo la classificazione da utilizzare
If aParCNR.LIVELLO_PDG_DECIS_SPE = 1 Then
aCdClassificazione := aAllVociClassificazione.cd_liv1;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 2 Then
aCdClassificazione := aAllVociClassificazione.cd_liv2;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 3 Then
aCdClassificazione := aAllVociClassificazione.cd_liv3;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 4 Then
aCdClassificazione := aAllVociClassificazione.cd_liv4;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 5 Then
aCdClassificazione := aAllVociClassificazione.cd_liv5;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 6 Then
aCdClassificazione := aAllVociClassificazione.cd_liv6;
ElsIf aParCNR.LIVELLO_PDG_DECIS_SPE = 7 Then
aCdClassificazione := aAllVociClassificazione.cd_liv7;
End If;
If aCdClassificazione Is Null Then
IBMERR001.RAISE_ERR_GENERICO('E'' stata indicata, nei costi del personale, un codice elemento voce '||
aAssCdpPdgPRnd.cd_elemento_voce||' con classificazione ('||aVoce.id_classificazione||
') che ha generato anomalia nella ricerca del codice livello necessario per il '||
'caricamento del Pdg. Impossibile lo scarico.'||aParCNR.LIVELLO_PDG_DECIS_SPE);
End If;
-- Leggo la classificazione finale da utilizzare per cercare in PDG_MODULO_SPESE_GEST
Begin
Select * into aAllVociClassificazioneDef from v_classificazione_voci_all
Where esercizio = aAssCdpPdgPRnd.esercizio
And ti_gestione = aAssCdpPdgPRnd.ti_gestione
And cd_classificazione = aCdClassificazione;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('E'' stata indicata, nei costi del personale, un codice elemento voce '||
aAssCdpPdgPRnd.cd_elemento_voce||' con classificazione ('||aVoce.id_classificazione||
') che ha generato anomalia nella ricerca del livello necessario per il '||
'caricamento del Pdg. Impossibile lo scarico.');
End;
isVoceTFR:=False;
If aAssCdpPdgPRnd.cd_elemento_voce = aVoceTFR.cd_elemento_voce Or
aAssCdpPdgPRnd.cd_elemento_voce = aVoceTFRTEMPODET.cd_elemento_voce Then
isVoceTFR:=True;
End If;
-- Leggo la linea di attivita per recuperare il modulo
Begin
Select * into aLATmp from linea_attivita
Where cd_linea_attivita = aAssCdpPdgPRnd.cd_linea_attivita
And cd_centro_responsabilita = aAssCdpPdgPRnd.cd_centro_responsabilita;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('E'' stato imputato, nella ripartizione dei costi del personale, un codice G.A.E. '||
aAssCdpPdgPRnd.cd_linea_attivita||' per il cdr '||aAssCdpPdgPRnd.cd_centro_responsabilita||' inesistente. Impossibile lo scarico.');
End;
If Not isVoceTFR Then
For aModSpeDet In (Select p.* From pdg_modulo_spese_gest p
Where esercizio = aAssCdpPdgPRnd.esercizio
And cd_centro_responsabilita = aAssCdpPdgPRnd.cd_cdr_root
And pg_progetto = aAssCdpPdgPRnd.pg_progetto_spese
And id_classificazione = aAssCdpPdgPRnd.id_classificazione
And cd_cds_area = aAssCdpPdgPRnd.cd_cds_area
And cd_cdr_assegnatario = aAssCdpPdgPRnd.cd_centro_responsabilita
And cd_linea_attivita = aAssCdpPdgPRnd.cd_linea_attivita
And ti_appartenenza = aAssCdpPdgPRnd.ti_appartenenza
And ti_gestione = aAssCdpPdgPRnd.ti_gestione
And cd_elemento_voce = aAssCdpPdgPRnd.cd_elemento_voce) Loop
isProcessato:=False;
If Not isProcessato And
aModSpeDet.cd_centro_responsabilita=aCDRPersonale.cd_centro_responsabilita And
(aLATmp.cd_natura = '2' Or aLATmp.cd_natura = '3') Then
If (aModSpeDet.IM_SPESE_GEST_DECENTRATA_EST=0 and aAssCdpPdgPRnd.im_arr_a1 <> 0) Or
aModSpeDet.IM_SPESE_GEST_DECENTRATA_EST+aAssCdpPdgPRnd.im_arr_a1 < 0 Then
Null;
Else
For i In 1..tabModuloSpeseGest.count Loop
if aAssCdpPdgPRnd.esercizio = tabModuloSpeseGest(i).esercizio and
aAssCdpPdgPRnd.cd_cdr_root = tabModuloSpeseGest(i).cd_centro_responsabilita and
aAssCdpPdgPRnd.pg_progetto_spese = tabModuloSpeseGest(i).pg_progetto and
aAssCdpPdgPRnd.id_classificazione = tabModuloSpeseGest(i).id_classificazione and
aAssCdpPdgPRnd.cd_cds_area = tabModuloSpeseGest(i).cd_cds_area and
aAssCdpPdgPRnd.cd_centro_responsabilita = tabModuloSpeseGest(i).cd_cdr_assegnatario and
aAssCdpPdgPRnd.cd_linea_attivita = tabModuloSpeseGest(i).cd_linea_attivita and
aAssCdpPdgPRnd.ti_appartenenza = tabModuloSpeseGest(i).ti_appartenenza and
aAssCdpPdgPRnd.ti_gestione = tabModuloSpeseGest(i).ti_gestione and
aAssCdpPdgPRnd.cd_elemento_voce = tabModuloSpeseGest(i).cd_elemento_voce Then
tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST:=tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST+aAssCdpPdgPRnd.im_arr_a1;
End If;
End Loop;
isProcessato:=True;
End If;
End If;
If Not isProcessato And
aModSpeDet.cd_centro_responsabilita=aCDRPersonale.cd_centro_responsabilita And
Not (aLATmp.cd_natura = '2' Or aLATmp.cd_natura = '3') Then
If (aModSpeDet.IM_SPESE_GEST_DECENTRATA_INT=0 and aAssCdpPdgPRnd.im_arr_a1 <> 0) Or
aModSpeDet.IM_SPESE_GEST_DECENTRATA_INT+aAssCdpPdgPRnd.im_arr_a1 < 0 Then
Null;
Else
For i In 1..tabModuloSpeseGest.count Loop
if aAssCdpPdgPRnd.esercizio = tabModuloSpeseGest(i).esercizio and
aAssCdpPdgPRnd.cd_cdr_root = tabModuloSpeseGest(i).cd_centro_responsabilita and
aAssCdpPdgPRnd.pg_progetto_spese = tabModuloSpeseGest(i).pg_progetto and
aAssCdpPdgPRnd.id_classificazione = tabModuloSpeseGest(i).id_classificazione and
aAssCdpPdgPRnd.cd_cds_area = tabModuloSpeseGest(i).cd_cds_area and
aAssCdpPdgPRnd.cd_centro_responsabilita = tabModuloSpeseGest(i).cd_cdr_assegnatario and
aAssCdpPdgPRnd.cd_linea_attivita = tabModuloSpeseGest(i).cd_linea_attivita and
aAssCdpPdgPRnd.ti_appartenenza = tabModuloSpeseGest(i).ti_appartenenza and
aAssCdpPdgPRnd.ti_gestione = tabModuloSpeseGest(i).ti_gestione and
aAssCdpPdgPRnd.cd_elemento_voce = tabModuloSpeseGest(i).cd_elemento_voce Then
tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT:=tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT+aAssCdpPdgPRnd.im_arr_a1;
End If;
End Loop;
isProcessato:=True;
End If;
End If;
If Not isProcessato And
Not aModSpeDet.cd_centro_responsabilita=aCDRPersonale.cd_centro_responsabilita And
(aLATmp.cd_natura = '2' Or aLATmp.cd_natura = '3') Then
If (aModSpeDet.IM_SPESE_GEST_ACCENTRATA_EST=0 and aAssCdpPdgPRnd.im_arr_a1 <> 0) Or
aModSpeDet.IM_SPESE_GEST_ACCENTRATA_EST+aAssCdpPdgPRnd.im_arr_a1 < 0 Then
Null;
Else
For i In 1..tabModuloSpeseGest.count Loop
if aAssCdpPdgPRnd.esercizio = tabModuloSpeseGest(i).esercizio and
aAssCdpPdgPRnd.cd_cdr_root = tabModuloSpeseGest(i).cd_centro_responsabilita and
aAssCdpPdgPRnd.pg_progetto_spese = tabModuloSpeseGest(i).pg_progetto and
aAssCdpPdgPRnd.id_classificazione = tabModuloSpeseGest(i).id_classificazione and
aAssCdpPdgPRnd.cd_cds_area = tabModuloSpeseGest(i).cd_cds_area and
aAssCdpPdgPRnd.cd_centro_responsabilita = tabModuloSpeseGest(i).cd_cdr_assegnatario and
aAssCdpPdgPRnd.cd_linea_attivita = tabModuloSpeseGest(i).cd_linea_attivita and
aAssCdpPdgPRnd.ti_appartenenza = tabModuloSpeseGest(i).ti_appartenenza and
aAssCdpPdgPRnd.ti_gestione = tabModuloSpeseGest(i).ti_gestione and
aAssCdpPdgPRnd.cd_elemento_voce = tabModuloSpeseGest(i).cd_elemento_voce Then
tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST:=tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST+aAssCdpPdgPRnd.im_arr_a1;
End If;
End Loop;
isProcessato:=True;
End If;
End If;
If Not isProcessato And
Not aModSpeDet.cd_centro_responsabilita=aCDRPersonale.cd_centro_responsabilita And
Not (aLATmp.cd_natura = '2' Or aLATmp.cd_natura = '3') Then
If (aModSpeDet.IM_SPESE_GEST_ACCENTRATA_INT=0 and aAssCdpPdgPRnd.im_arr_a1 <> 0) Or
aModSpeDet.IM_SPESE_GEST_ACCENTRATA_INT+aAssCdpPdgPRnd.im_arr_a1 < 0 Then
Null;
Else
For i In 1..tabModuloSpeseGest.count Loop
if aAssCdpPdgPRnd.esercizio = tabModuloSpeseGest(i).esercizio and
aAssCdpPdgPRnd.cd_cdr_root = tabModuloSpeseGest(i).cd_centro_responsabilita and
aAssCdpPdgPRnd.pg_progetto_spese = tabModuloSpeseGest(i).pg_progetto and
aAssCdpPdgPRnd.id_classificazione = tabModuloSpeseGest(i).id_classificazione and
aAssCdpPdgPRnd.cd_cds_area = tabModuloSpeseGest(i).cd_cds_area and
aAssCdpPdgPRnd.cd_centro_responsabilita = tabModuloSpeseGest(i).cd_cdr_assegnatario and
aAssCdpPdgPRnd.cd_linea_attivita = tabModuloSpeseGest(i).cd_linea_attivita and
aAssCdpPdgPRnd.ti_appartenenza = tabModuloSpeseGest(i).ti_appartenenza and
aAssCdpPdgPRnd.ti_gestione = tabModuloSpeseGest(i).ti_gestione and
aAssCdpPdgPRnd.cd_elemento_voce = tabModuloSpeseGest(i).cd_elemento_voce Then
tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT:=tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT+aAssCdpPdgPRnd.im_arr_a1;
End If;
End Loop;
isProcessato:=True;
End If;
End If;
If isProcessato Then
isDettRedistrRottiFound:=True;
End If;
End Loop;
If not isDettRedistrRottiFound Then
IBMERR001.RAISE_ERR_GENERICO('Impossibile redistribuire i rotti per cdr RUO: '||aAssCdpPdgPRnd.cd_cdr_root||' es: '||aAssCdpPdgPRnd.esercizio||' voce del piano: '||aAssCdpPdgPRnd.cd_elemento_voce||' tipo rapporto: '||aAssCdpPdgPRnd.id_matricola);
End if;
End If;
End loop;
--Carico la tabella PDG_MODULO_SPESE_GEST con i valori conservati nella PLSQLTABLE
For i In 1..tabModuloSpeseGest.count Loop
/*
Insert Into pdg_modulo_spese_gest_lello(ESERCIZIO, CD_CENTRO_RESPONSABILITA, PG_PROGETTO, ID_CLASSIFICAZIONE,
CD_CDS_AREA, CD_CDR_ASSEGNATARIO, CD_LINEA_ATTIVITA, TI_APPARTENENZA,
TI_GESTIONE, CD_ELEMENTO_VOCE,
IM_SPESE_GEST_DECENTRATA_INT,
IM_SPESE_GEST_DECENTRATA_EST,
IM_SPESE_GEST_ACCENTRATA_INT,
IM_SPESE_GEST_ACCENTRATA_EST,
UTCR)
Values(tabModuloSpeseGest(i).esercizio, tabModuloSpeseGest(i).cd_centro_responsabilita,
tabModuloSpeseGest(i).pg_progetto, tabModuloSpeseGest(i).id_classificazione,
tabModuloSpeseGest(i).cd_cds_area, tabModuloSpeseGest(i).cd_cdr_assegnatario,
tabModuloSpeseGest(i).cd_linea_attivita, tabModuloSpeseGest(i).ti_appartenenza,
tabModuloSpeseGest(i).ti_gestione, tabModuloSpeseGest(i).cd_elemento_voce,
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0),
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0),
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0),
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0),
'LELLO');
*/
contatabModuloSpeseGest := contatabModuloSpeseGest + 1;
Begin
-- Leggo il modulo_spese per inserire il dettaglio....se lo trovo sollevo una eccezione
Select * into aDestS from pdg_modulo_spese_gest
Where esercizio = tabModuloSpeseGest(i).esercizio
And cd_centro_responsabilita = tabModuloSpeseGest(i).cd_centro_responsabilita
And pg_progetto = tabModuloSpeseGest(i).pg_progetto
And id_classificazione = tabModuloSpeseGest(i).id_classificazione
And cd_cds_area = tabModuloSpeseGest(i).cd_cds_area
And cd_cdr_assegnatario = tabModuloSpeseGest(i).cd_cdr_assegnatario
And cd_linea_attivita = tabModuloSpeseGest(i).cd_linea_attivita
And ti_appartenenza = tabModuloSpeseGest(i).ti_appartenenza
And ti_gestione = tabModuloSpeseGest(i).ti_gestione
And cd_elemento_voce = tabModuloSpeseGest(i).cd_elemento_voce;
If NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0) != NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0) or
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0) != NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0) or
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0) != NVL(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0) or
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0) != NVL(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0) Then
Dbms_Output.put_line('IMPORTI DIFFERENTI');
Dbms_Output.put_line(tabModuloSpeseGest(i).esercizio);
Dbms_Output.put_line('1: '||tabModuloSpeseGest(i).cd_centro_responsabilita);
Dbms_Output.put_line('2: '||tabModuloSpeseGest(i).pg_progetto);
Dbms_Output.put_line('3: '||tabModuloSpeseGest(i).id_classificazione);
Dbms_Output.put_line('4: '||tabModuloSpeseGest(i).cd_cds_area);
Dbms_Output.put_line('5: '||tabModuloSpeseGest(i).cd_cdr_assegnatario);
Dbms_Output.put_line('6: '||tabModuloSpeseGest(i).cd_linea_attivita);
Dbms_Output.put_line('7: '||tabModuloSpeseGest(i).ti_appartenenza);
Dbms_Output.put_line('8: '||tabModuloSpeseGest(i).ti_gestione);
Dbms_Output.put_line('9: '||tabModuloSpeseGest(i).cd_elemento_voce);
Dbms_Output.put_line('10: '||to_char(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('10TAB: '||to_char(NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('11: '||to_char(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('11TAB: '||to_char(NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('12: '||to_char(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('12TAB: '||to_char(NVL(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('13: '||to_char(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('13TAB: '||to_char(NVL(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0), '999g999g999g999g990d00'));
diff := diff + (NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0) +
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0) +
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0) +
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0))
- (NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0) +
NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0) +
NVL(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0) +
NVL(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0));
Dbms_Output.put_line('DIFFTEMP: '||to_char(diff, '999g999g999g999g990d00'));
Update pdg_modulo_spese_gest
Set IM_SPESE_GEST_ACCENTRATA_INT = NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0),
IM_SPESE_GEST_ACCENTRATA_EST = NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0),
IM_SPESE_GEST_DECENTRATA_INT = NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0),
IM_SPESE_GEST_DECENTRATA_EST = NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0),
utuv = 'SISTEMI',
duva = Trunc(Sysdate)
Where esercizio = tabModuloSpeseGest(i).esercizio
And cd_centro_responsabilita = tabModuloSpeseGest(i).cd_centro_responsabilita
And pg_progetto = tabModuloSpeseGest(i).pg_progetto
And id_classificazione = tabModuloSpeseGest(i).id_classificazione
And cd_cds_area = tabModuloSpeseGest(i).cd_cds_area
And cd_cdr_assegnatario = tabModuloSpeseGest(i).cd_cdr_assegnatario
And cd_linea_attivita = tabModuloSpeseGest(i).cd_linea_attivita
And ti_appartenenza = tabModuloSpeseGest(i).ti_appartenenza
And ti_gestione = tabModuloSpeseGest(i).ti_gestione
And cd_elemento_voce = tabModuloSpeseGest(i).cd_elemento_voce;
If Sql%Rowcount != 1 Then
IBMERR001.RAISE_ERR_GENERICO('Update 1 non logica');
End If;
Update pdg_modulo_spese_gest
Set IM_SPESE_GEST_ACCENTRATA_INT = IM_SPESE_GEST_ACCENTRATA_INT +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0) -
NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0)),
IM_SPESE_GEST_ACCENTRATA_EST = IM_SPESE_GEST_ACCENTRATA_EST +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0) -
NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0)),
IM_SPESE_GEST_DECENTRATA_INT = IM_SPESE_GEST_DECENTRATA_INT +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0) -
NVL(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0)),
IM_SPESE_GEST_DECENTRATA_EST = IM_SPESE_GEST_DECENTRATA_EST +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0) -
NVL(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0)),
utuv = 'SISTEMI',
duva = Trunc(Sysdate)
Where esercizio = tabModuloSpeseGest(i).esercizio
And cd_centro_responsabilita = tabModuloSpeseGest(i).cd_centro_responsabilita
And pg_progetto = tabModuloSpeseGest(i).pg_progetto
And id_classificazione = tabModuloSpeseGest(i).id_classificazione
And cd_cds_area = tabModuloSpeseGest(i).cd_cds_area
And cd_cdr_assegnatario = '000.403.000'
And cd_linea_attivita = 'P0000007'
And ti_appartenenza = tabModuloSpeseGest(i).ti_appartenenza
And ti_gestione = tabModuloSpeseGest(i).ti_gestione
And cd_elemento_voce = tabModuloSpeseGest(i).cd_elemento_voce;
If Sql%Rowcount != 1 Then
IBMERR001.RAISE_ERR_GENERICO('Update 2 non logica');
End If;
Update voce_f_saldi_cdr_linea
Set IM_STANZ_INIZIALE_A1 = IM_STANZ_INIZIALE_A1 +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0) -
NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0)) +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0) -
NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0)) +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0) -
NVL(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0)) +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0) -
NVL(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0)),
utuv = 'SISTEMI',
duva = Trunc(Sysdate)
Where esercizio = tabModuloSpeseGest(i).esercizio
And esercizio_res = tabModuloSpeseGest(i).esercizio
And cd_centro_responsabilita = '000.403.000'
And cd_linea_attivita = 'P0000007'
And ti_appartenenza = 'D'
And ti_gestione = tabModuloSpeseGest(i).ti_gestione
And cd_elemento_voce = tabModuloSpeseGest(i).cd_elemento_voce;
If Sql%Rowcount != 1 Then
IBMERR001.RAISE_ERR_GENERICO('Update 3 non logica');
End If;
/*
Update voce_f_saldi_cdr_linea
Set IM_STANZ_INIZIALE_A1 = IM_STANZ_INIZIALE_A1 +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0) -
NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_INT, 0)) +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0) -
NVL(aDestS.IM_SPESE_GEST_DECENTRATA_INT, 0)),
utuv = 'SISTEMI,
duva = Trunc(Sysdate)
Where esercizio = tabModuloSpeseGest(i).esercizio
And esercizio_res = tabModuloSpeseGest(i).esercizio
And cd_centro_responsabilita = '999.000.000'
And cd_linea_attivita = 'P0000002'
And ti_appartenenza = 'D'
And ti_gestione = 'C'
And cd_voce = '1.01.2.01.001.1.000';
If Sql%Rowcount != 1 Then
IBMERR001.RAISE_ERR_GENERICO('Update 4 non logica');
End If;
Update voce_f_saldi_cdr_linea
Set IM_STANZ_INIZIALE_A1 = IM_STANZ_INIZIALE_A1 +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0) -
NVL(aDestS.IM_SPESE_GEST_ACCENTRATA_EST, 0)) +
(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0) -
NVL(aDestS.IM_SPESE_GEST_DECENTRATA_EST, 0)),
utuv = 'SISTEMI,
duva = Trunc(Sysdate)
Where esercizio = tabModuloSpeseGest(i).esercizio
And esercizio_res = tabModuloSpeseGest(i).esercizio
And cd_centro_responsabilita = '999.000.000'
And cd_linea_attivita = 'P0000002'
And ti_appartenenza = 'D'
And ti_gestione = 'C'
And cd_voce = '1.01.2.01.001.1.000';
If Sql%Rowcount != 1 Then
IBMERR001.RAISE_ERR_GENERICO('Update 5 non logica');
End If;
*/
Else
Dbms_Output.put_line('OK');
End If;
Exception
When No_Data_Found Then
Dbms_Output.put_line('NON CARICATO');
Dbms_Output.put_line(tabModuloSpeseGest(i).esercizio);
Dbms_Output.put_line('1: '||tabModuloSpeseGest(i).cd_centro_responsabilita);
Dbms_Output.put_line('2: '||tabModuloSpeseGest(i).pg_progetto);
Dbms_Output.put_line('3: '||tabModuloSpeseGest(i).id_classificazione);
Dbms_Output.put_line('4: '||tabModuloSpeseGest(i).cd_cds_area);
Dbms_Output.put_line('5: '||tabModuloSpeseGest(i).cd_cdr_assegnatario);
Dbms_Output.put_line('6: '||tabModuloSpeseGest(i).cd_linea_attivita);
Dbms_Output.put_line('7: '||tabModuloSpeseGest(i).ti_appartenenza);
Dbms_Output.put_line('8: '||tabModuloSpeseGest(i).ti_gestione);
Dbms_Output.put_line('9: '||tabModuloSpeseGest(i).cd_elemento_voce);
Dbms_Output.put_line('10: '||to_char(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('11: '||to_char(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('12: '||to_char(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('13: '||to_char(NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0), '999g999g999g999g990d00'));
diff := diff + (NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_INT, 0) +
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_ACCENTRATA_EST, 0) +
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_INT, 0) +
NVL(tabModuloSpeseGest(i).IM_SPESE_GEST_DECENTRATA_EST, 0));
IBMERR001.RAISE_ERR_GENERICO('STOP');
End;
End Loop;
For I In (Select * From pdg_modulo_spese_gest
Where esercizio = aEsercizio
And cd_centro_responsabilita = aCdCdr
And cd_cdr_assegnatario = aCdCdr
And categoria_dettaglio = 'STI') Loop
trovato := False;
For y In 1..tabModuloSpeseGest.count Loop
contatabModuloSpeseGest := contatabModuloSpeseGest + 1;
If i.esercizio = tabModuloSpeseGest(Y).esercizio And
i.cd_centro_responsabilita = tabModuloSpeseGest(Y).cd_centro_responsabilita And
i.pg_progetto = tabModuloSpeseGest(Y).pg_progetto And
i.id_classificazione = tabModuloSpeseGest(Y).id_classificazione And
i.cd_cds_area = tabModuloSpeseGest(Y).cd_cds_area And
i.cd_cdr_assegnatario = tabModuloSpeseGest(Y).cd_cdr_assegnatario And
i.cd_linea_attivita = tabModuloSpeseGest(Y).cd_linea_attivita And
i.ti_appartenenza = tabModuloSpeseGest(Y).ti_appartenenza And
i.ti_gestione = tabModuloSpeseGest(Y).ti_gestione And
i.cd_elemento_voce = tabModuloSpeseGest(Y).cd_elemento_voce Then
trovato := True;
Exit;
End If;
End Loop;
If Not (trovato) Then
Dbms_Output.put_line('DA ELIMINARE');
Dbms_Output.put_line(i.esercizio);
Dbms_Output.put_line('1: '||i.cd_centro_responsabilita);
Dbms_Output.put_line('2: '||i.pg_progetto);
Dbms_Output.put_line('3: '||i.id_classificazione);
Dbms_Output.put_line('4: '||i.cd_cds_area);
Dbms_Output.put_line('5: '||i.cd_cdr_assegnatario);
Dbms_Output.put_line('6: '||i.cd_linea_attivita);
Dbms_Output.put_line('7: '||i.ti_appartenenza);
Dbms_Output.put_line('8: '||i.ti_gestione);
Dbms_Output.put_line('9: '||i.cd_elemento_voce);
Dbms_Output.put_line('10: '||to_char(NVL(i.IM_SPESE_GEST_ACCENTRATA_INT, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('11: '||to_char(NVL(i.IM_SPESE_GEST_ACCENTRATA_EST, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('12: '||to_char(NVL(i.IM_SPESE_GEST_DECENTRATA_INT, 0), '999g999g999g999g990d00'));
Dbms_Output.put_line('13: '||to_char(NVL(i.IM_SPESE_GEST_DECENTRATA_EST, 0), '999g999g999g999g990d00'));
diff := diff - (NVL(i.IM_SPESE_GEST_ACCENTRATA_INT, 0) +
NVL(i.IM_SPESE_GEST_ACCENTRATA_EST, 0) +
NVL(i.IM_SPESE_GEST_DECENTRATA_INT, 0) +
NVL(i.IM_SPESE_GEST_DECENTRATA_EST, 0));
End If;
End Loop;
Select count(*) into aNum
From ass_cdp_la
Where esercizio = aEsercizio
And mese = 0
And cd_centro_responsabilita in (Select cd_centro_responsabilita
From V_PDGP_CDR_RUO_NRUO
Where esercizio = aEsercizio
And cd_cdr_root = aCdCdr
And (aUO.cd_tipo_unita != CNRCTB020.TIPO_SAC Or
cd_unita_organizzativa = aUO.cd_unita_organizzativa))
And Stato != STATO_CDP_SCARICATO;
If aNum != 0 then
IBMERR001.RAISE_ERR_GENERICO('Operazione non effettuata. Esistono dettagli (ASS_CDP_LA) che non sono stati scarictai al termine del processo');
End if;
Dbms_Output.put_line('contaaASSCDPLA: '||contaaASSCDPLA);
Dbms_Output.put_line('contatabModuloSpeseGest: '||contatabModuloSpeseGest);
Dbms_Output.put_line('Differenza: '||To_Char(diff, '999g999g999g999g990d00'));
Exception
When esci then null;
End;
End;
© 2015 - 2024 Weber Informatics LLC | Privacy Policy