All Downloads are FREE. Search and download functionalities are using the official Maven repository.

expsigladb.Package.CNRUTL002_BODY.sql Maven / Gradle / Ivy

There is a newer version: 6.6.11
Show newest version
--------------------------------------------------------
--  DDL for Package Body CNRUTL002
--------------------------------------------------------

  CREATE OR REPLACE PACKAGE BODY "CNRUTL002" IS

Function IM_STANZ_RES_IMPROPRIO (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                                 INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                                 INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                                 INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                                 INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                                 INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                                 INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                                 INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is
  VALORE NUMBER:=0;
   VALORE_singolo NUMBER:=0;
   recElementoVoceOld elemento_voce%rowtype;
   recElementoVoceNew elemento_voce%rowtype;
   nuovo_pdg parametri_cnr.fl_nuovo_pdg%type;
   old_nuovo_pdg parametri_cnr.fl_nuovo_pdg%type;
   INVOCE_agg VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type;
   INGEST_agg VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type;
   INAPP_agg VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type;
BEGIN

If INGEST = 'S' And INCDR != cnrctb020.getCdCdrEnte And INES > Nvl(INESRES, ines-1) And INES >= 2006 Then

  select fl_nuovo_pdg into nuovo_pdg from parametri_cnr
  where
  esercizio = INES;
  select fl_nuovo_pdg into old_nuovo_pdg from parametri_cnr
  where
  esercizio = INES-1;
  if(nuovo_pdg='Y') then
    for recElementoVoceOld in(
        Select elemento_voce.*
        From   ass_evold_evnew, elemento_voce
        Where  ass_evold_evnew.esercizio_old(+) = ELEMENTO_VOCE.ESERCIZIO
        And    ass_evold_evnew.ti_appartenenza_old(+) = ELEMENTO_VOCE.TI_APPARTENENZA
        And    ass_evold_evnew.ti_gestione_old (+)= ELEMENTO_VOCE.TI_GESTIONE
        And    ass_evold_evnew.cd_elemento_voce_old(+) = ELEMENTO_VOCE.CD_ELEMENTO_VOCE
        aND    ((ass_evold_evnew.esercizio_new = INES
        And    ass_evold_evnew.ti_appartenenza_new = INAPP
        And    ass_evold_evnew.ti_gestione_new = INGEST
        And    ass_evold_evnew.cd_elemento_voce_new = INVOCE)
        or (ELEMENTO_VOCE.ESERCIZIO         = INES
        and  ELEMENTO_VOCE.TI_APPARTENENZA  = INAPP
        and  ELEMENTO_VOCE.TI_GESTIONE      = INGEST
        and ELEMENTO_VOCE.CD_ELEMENTO_VOCE = INVOCE  and not exists
          (select 1 from ass_evold_evnew where
                 ass_evold_evnew.esercizio_new = ELEMENTO_VOCE.ESERCIZIO
          And    ass_evold_evnew.ti_appartenenza_new = ELEMENTO_VOCE.TI_APPARTENENZA
          And    ass_evold_evnew.ti_gestione_new = ELEMENTO_VOCE.TI_GESTIONE
          And    ass_evold_evnew.cd_elemento_voce_new = ELEMENTO_VOCE.CD_ELEMENTO_VOCE)))) loop

        If recElementoVoceOld.TI_APPARTENENZA is not null Then
           INAPP_agg := recElementoVoceOld.TI_APPARTENENZA;
           INGEST_agg := recElementoVoceOld.TI_GESTIONE;
           INVOCE_agg:= recElementoVoceOld.CD_ELEMENTO_VOCE;
        End If;
        if(old_nuovo_pdg='N') then
          Select Sum(TOT_IM_RESIDUI_RICOSTRUITI) +
                Sum(tot_IM_STANZ_INIZIALE_A1) + Sum(tot_VARIAZIONI_PIU) - Sum(tot_VARIAZIONI_MENO) - Sum(tot_IM_OBBL_ACC_COMP) +
                Sum(TOT_IM_STANZ_RES_IMPROPRIO) + Sum(TOT_VAR_PIU_STANZ_RES_IMP) - Sum(TOT_VAR_MENO_STANZ_RES_IMP) - Sum(TOT_IM_OBBL_RES_IMP) +
                Sum(TOT_VAR_MENO_OBBL_RES_PRO) - Sum(TOT_VAR_PIU_OBBL_RES_PRO)
          Into   VALORE_SINGOLO
          From   v_disp_res_improprie
          Where  ESERCIZIO                = ines-1 And
                 ESERCIZIO_RES            = Nvl(inesres, ESERCIZIO_RES)  And
                 CD_CENTRO_RESPONSABILITA = INCDR     And
                 CD_LINEA_ATTIVITA        = Nvl(INLA, CD_LINEA_ATTIVITA) And
                 TI_APPARTENENZA          = INAPP_agg      And
                 TI_GESTIONE              = INGEST_agg     And
                 CD_VOCE IN( Select CD_VOCE
                                 From   VOCE_F
                                 Where  ESERCIZIO        = INES-1 And
                                        TI_APPARTENENZA  = INAPP_agg And
                                        TI_GESTIONE      = INGEST_agg And
                                        CD_ELEMENTO_VOCE = INVOCE_agg);
      else
          Select Sum(TOT_IM_RESIDUI_RICOSTRUITI) +
              Sum(tot_IM_STANZ_INIZIALE_A1) + Sum(tot_VARIAZIONI_PIU) - Sum(tot_VARIAZIONI_MENO) - Sum(tot_IM_OBBL_ACC_COMP) +
              Sum(TOT_IM_STANZ_RES_IMPROPRIO) + Sum(TOT_VAR_PIU_STANZ_RES_IMP) - Sum(TOT_VAR_MENO_STANZ_RES_IMP) - Sum(TOT_IM_OBBL_RES_IMP) +
              Sum(TOT_VAR_MENO_OBBL_RES_PRO) - Sum(TOT_VAR_PIU_OBBL_RES_PRO)
        Into   VALORE
        From   v_disp_res_improprie
        Where  ESERCIZIO                = ines-1 And
               ESERCIZIO_RES            = Nvl(inesres, ESERCIZIO_RES)  And
               CD_CENTRO_RESPONSABILITA = INCDR     And
               CD_LINEA_ATTIVITA        = Nvl(INLA, CD_LINEA_ATTIVITA) And
               TI_APPARTENENZA          = INAPP      And
               TI_GESTIONE              = INGEST   And
               CD_VOCE IN( INELVOCE);
      end if;
      VALORE:=VALORE+nvl(VALORE_SINGOLO,0);
    end loop;
  else
      Select Sum(TOT_IM_RESIDUI_RICOSTRUITI) +
              Sum(tot_IM_STANZ_INIZIALE_A1) + Sum(tot_VARIAZIONI_PIU) - Sum(tot_VARIAZIONI_MENO) - Sum(tot_IM_OBBL_ACC_COMP) +
              Sum(TOT_IM_STANZ_RES_IMPROPRIO) + Sum(TOT_VAR_PIU_STANZ_RES_IMP) - Sum(TOT_VAR_MENO_STANZ_RES_IMP) - Sum(TOT_IM_OBBL_RES_IMP) +
              Sum(TOT_VAR_MENO_OBBL_RES_PRO) - Sum(TOT_VAR_PIU_OBBL_RES_PRO)
        Into   VALORE
        From   v_disp_res_improprie
        Where  ESERCIZIO                = ines-1 And
               ESERCIZIO_RES            = Nvl(inesres, ESERCIZIO_RES)  And
               CD_CENTRO_RESPONSABILITA = INCDR     And
               CD_LINEA_ATTIVITA        = Nvl(INLA, CD_LINEA_ATTIVITA) And
               TI_APPARTENENZA          = INAPP      And
               TI_GESTIONE              = INGEST     And
               CD_VOCE In (Select CD_VOCE
                           From   VOCE_F
                           Where  ESERCIZIO        = INES And
                                  TI_APPARTENENZA  = INAPP And
                                  TI_GESTIONE      = INGEST And
                                  CD_ELEMENTO_VOCE = INELVOCE);
  End If;
End If;
Return  Nvl(VALORE, 0);

END;

Function VAR_PIU_STANZ_RES_IMP  (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                               INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                               INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                               INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                               INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                               INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                               INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                               INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is
VALORE NUMBER;

BEGIN

  Select NVL(SUM(Abs(IM_VARIAZIONE)), 0)
  Into   VALORE
  From   VAR_STANZ_RES_RIGA VR, VAR_STANZ_RES VT
  Where  VR.ESERCIZIO = INES And
         VR.ESERCIZIO_RES = Nvl(INESRES, VR.ESERCIZIO_RES) And
         VR.ESERCIZIO_VOCE = INES And
         VR.CD_CDR = INCDR AND
         VR.CD_LINEA_ATTIVITA = Nvl(INLA, VR.CD_LINEA_ATTIVITA)  AND
         VR.TI_APPARTENENZA = INAPP AND
         VR.TI_GESTIONE = INGEST AND
         VR.CD_VOCE = Nvl(INVOCE, VR.CD_VOCE) And
         VR.CD_ELEMENTO_VOCE = Nvl(INELVOCE, VR.CD_ELEMENTO_VOCE) And
         VR.IM_VARIAZIONE > 0 And
         VT.ESERCIZIO     = VR.ESERCIZIO And
         VT.PG_VARIAZIONE = VR.PG_VARIAZIONE And
         VT.STATO = 'APP';

Return  Nvl(VALORE, 0);

END;

Function VAR_MENO_STANZ_RES_IMP  (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                               INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                               INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                               INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                               INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                               INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                               INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                               INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is
VALORE NUMBER;

BEGIN

  Select NVL(SUM(Abs(IM_VARIAZIONE)), 0)
  Into   VALORE
  From   VAR_STANZ_RES_RIGA VR, VAR_STANZ_RES VT
  Where  VR.ESERCIZIO = INES And
         VR.ESERCIZIO_RES = Nvl(INESRES, VR.ESERCIZIO_RES) And
         VR.ESERCIZIO_VOCE = INES And
         VR.CD_CDR = INCDR AND
         VR.CD_LINEA_ATTIVITA = Nvl(INLA, VR.CD_LINEA_ATTIVITA)  AND
         VR.TI_APPARTENENZA = INAPP AND
         VR.TI_GESTIONE = INGEST AND
         VR.CD_VOCE = Nvl(INVOCE, VR.CD_VOCE) And
         VR.CD_ELEMENTO_VOCE = Nvl(INELVOCE, VR.CD_ELEMENTO_VOCE) And
         VR.IM_VARIAZIONE < 0 And
         VT.ESERCIZIO     = VR.ESERCIZIO And
         VT.PG_VARIAZIONE = VR.PG_VARIAZIONE And
         VT.STATO = 'APP';

Return  Nvl(VALORE, 0);

END;


Function IM_STANZ_INIZIALE_A1 (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                               INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                               INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                               INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                               INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                               INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                               INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                               INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is
VALORE NUMBER;
TIPO_UO VARCHAR2(10);

Begin

If INES = INESRES Then -- COMPETENZA

Select CD_TIPO_UNITA
Into   TIPO_UO
From   UNITA_ORGANIZZATIVA
Where  CD_UNITA_ORGANIZZATIVA = Substr(INCDR, 1, 7);

If INGEST = 'E' Then

  If TIPO_UO != 'AREA' Then

   Select Sum(IM_ENTRATA)
   Into   VALORE
   From   PDG_MODULO_ENTRATE_GEST PDG, UNITA_ORGANIZZATIVA AREA
   Where  PDG.ESERCIZIO           = INES   AND
          PDG.CD_CDR_ASSEGNATARIO = INCDR  AND
          PDG.CD_LINEA_ATTIVITA   = INLA   AND
          PDG.TI_APPARTENENZA     = INAPP  AND
          PDG.TI_GESTIONE         = INGEST AND
          PDG.CD_ELEMENTO_VOCE    = INELVOCE AND
          PDG.CD_CDS_AREA = AREA.CD_UNITA_ORGANIZZATIVA AND
          AREA.CD_TIPO_UNITA != 'AREA' AND
          PDG.FL_SOLA_LETTURA = 'N' And
          (PDG.ESERCIZIO, PDG.CD_CENTRO_RESPONSABILITA) IN
    (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

  Elsif TIPO_UO = 'AREA' Then

   Select Sum(IM_ENTRATA)
   Into   VALORE
   From   PDG_MODULO_ENTRATE_GEST PDG
   Where  PDG.ESERCIZIO           = INES   AND
          PDG.CD_CDR_ASSEGNATARIO = INCDR  AND
          PDG.CD_LINEA_ATTIVITA   = INLA   AND
          PDG.TI_APPARTENENZA     = INAPP  AND
          PDG.TI_GESTIONE         = INGEST AND
          PDG.CD_ELEMENTO_VOCE    = INELVOCE AND
          (PDG.ESERCIZIO, PDG.CD_CENTRO_RESPONSABILITA) IN
    (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

  End If;

Elsif INGEST = 'S' Then

  If TIPO_UO != 'AREA' Then

-- SPESE DECENTRATE

         Select Nvl(Sum(PDG_SPE.IM_SPESE_GEST_DECENTRATA_INT) + Sum(PDG_SPE.IM_SPESE_GEST_DECENTRATA_EST), 0)
         Into   VALORE
         From   PDG_MODULO_SPESE_GEST PDG_SPE,
                UNITA_ORGANIZZATIVA AREA
         Where  PDG_SPE.ESERCIZIO           = INES    AND
                PDG_SPE.CD_CDR_ASSEGNATARIO = INCDR   AND
                PDG_SPE.CD_LINEA_ATTIVITA   = INLA    AND
                PDG_SPE.TI_APPARTENENZA     = INAPP   AND
                PDG_SPE.TI_GESTIONE         = INGEST  AND
                PDG_SPE.CD_ELEMENTO_VOCE    = INELVOCE  AND
                PDG_SPE.CD_CDS_AREA         = AREA.CD_UNITA_ORGANIZZATIVA AND
                AREA.CD_TIPO_UNITA         != 'AREA' AND
                (PDG_SPE.ESERCIZIO, PDG_SPE.CD_CENTRO_RESPONSABILITA) IN
          (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

         Select Nvl(VALORE, 0) + Nvl(Sum(PDG_SPE.IM_SPESE_GEST_ACCENTRATA_INT) + Sum(PDG_SPE.IM_SPESE_GEST_ACCENTRATA_EST), 0)
         Into   VALORE
         From   PDG_MODULO_SPESE_GEST PDG_SPE, V_CLASSIFICAZIONE_VOCI CLA,
                UNITA_ORGANIZZATIVA AREA
         Where  PDG_SPE.ESERCIZIO           = INES    AND
                PDG_SPE.CD_CDR_ASSEGNATARIO = INCDR   AND
                PDG_SPE.CD_LINEA_ATTIVITA   = INLA    AND
                PDG_SPE.TI_APPARTENENZA     = INAPP   AND
                PDG_SPE.TI_GESTIONE         = INGEST  AND
                PDG_SPE.CD_ELEMENTO_VOCE    = INELVOCE  AND
                PDG_SPE.ID_CLASSIFICAZIONE  = CLA.ID_CLASSIFICAZIONE And
                NVL(CLA.CDR_ACCENTRATORE, 'xxx') = PDG_SPE.CD_CDR_ASSEGNATARIO And
                PDG_SPE.CD_CDS_AREA         = AREA.CD_UNITA_ORGANIZZATIVA AND
                AREA.CD_TIPO_UNITA         != 'AREA' AND
                (PDG_SPE.ESERCIZIO, PDG_SPE.CD_CENTRO_RESPONSABILITA) IN
          (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

  Elsif TIPO_UO = 'AREA' Then

   Select Nvl(Sum(PDG_SPE.IM_SPESE_GEST_DECENTRATA_INT) + Sum(PDG_SPE.IM_SPESE_GEST_DECENTRATA_EST) +
              Sum(PDG_SPE.IM_SPESE_GEST_ACCENTRATA_EST) + Sum(PDG_SPE.IM_SPESE_GEST_ACCENTRATA_EST), 0)
   Into   VALORE
   From   PDG_MODULO_SPESE_GEST PDG_SPE
   Where  PDG_SPE.ESERCIZIO           = INES    AND
          PDG_SPE.CD_CDR_ASSEGNATARIO = INCDR   AND
          PDG_SPE.CD_LINEA_ATTIVITA   = INLA    AND
          PDG_SPE.TI_APPARTENENZA     = INAPP   AND
          PDG_SPE.TI_GESTIONE         = INGEST  AND
          PDG_SPE.CD_ELEMENTO_VOCE    = INELVOCE  AND
          (PDG_SPE.ESERCIZIO, PDG_SPE.CD_CENTRO_RESPONSABILITA) IN
    (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

   End If; -- TIPO UO

End If;

End If;

Return  Nvl(VALORE, 0);

End;

Function IM_STANZ_INIZIALE_CASSA (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                                  INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                                  INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                                  INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                                  INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                                  INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                                  INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                                  INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
Return NUMBER Is

VALORE NUMBER;
TIPO_UO VARCHAR2(10);

BEGIN

Select CD_TIPO_UNITA
Into   TIPO_UO
From   UNITA_ORGANIZZATIVA
Where  CD_UNITA_ORGANIZZATIVA = Substr(INCDR, 1, 7);

If INGEST = 'E' Then

  If TIPO_UO != 'AREA' Then

   Select Sum(IM_INCASSI)
   Into   VALORE
   From   PDG_MODULO_ENTRATE_GEST PDG, UNITA_ORGANIZZATIVA AREA
   Where  PDG.ESERCIZIO           = INES   AND
          PDG.CD_CDR_ASSEGNATARIO = INCDR  AND
          PDG.CD_LINEA_ATTIVITA   = INLA   AND
          PDG.TI_APPARTENENZA     = INAPP  AND
          PDG.TI_GESTIONE         = INGEST AND
          PDG.CD_ELEMENTO_VOCE    = INELVOCE AND
          PDG.CD_CDS_AREA = AREA.CD_UNITA_ORGANIZZATIVA AND
          AREA.CD_TIPO_UNITA != 'AREA' AND
          PDG.FL_SOLA_LETTURA = 'N' And
          (PDG.ESERCIZIO, PDG.CD_CENTRO_RESPONSABILITA) IN
    (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

  Elsif TIPO_UO = 'AREA' Then

   Select Sum(IM_INCASSI)
   Into   VALORE
   From   PDG_MODULO_ENTRATE_GEST PDG
   Where  PDG.ESERCIZIO           = INES   AND
          PDG.CD_CDR_ASSEGNATARIO = INCDR  AND
          PDG.CD_LINEA_ATTIVITA   = INLA   AND
          PDG.TI_APPARTENENZA     = INAPP  AND
          PDG.TI_GESTIONE         = INGEST AND
          PDG.CD_ELEMENTO_VOCE    = INELVOCE AND
          (PDG.ESERCIZIO, PDG.CD_CENTRO_RESPONSABILITA) IN
    (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

  End If;

Elsif INGEST = 'S' Then

  If TIPO_UO != 'AREA' Then

-- SPESE DECENTRATE

         Select Sum(IM_PAGAMENTI)
         Into   VALORE
         From   PDG_MODULO_SPESE_GEST PDG_SPE,
                UNITA_ORGANIZZATIVA AREA
         Where  PDG_SPE.ESERCIZIO           = INES    AND
                PDG_SPE.CD_CDR_ASSEGNATARIO = INCDR   AND
                PDG_SPE.CD_LINEA_ATTIVITA   = INLA    AND
                PDG_SPE.TI_APPARTENENZA     = INAPP   AND
                PDG_SPE.TI_GESTIONE         = INGEST  AND
                PDG_SPE.CD_ELEMENTO_VOCE    = INELVOCE  AND
                PDG_SPE.CD_CDS_AREA         = AREA.CD_UNITA_ORGANIZZATIVA AND
                AREA.CD_TIPO_UNITA         != 'AREA' AND
                (PDG_SPE.ESERCIZIO, PDG_SPE.CD_CENTRO_RESPONSABILITA) IN
                (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

         Select Nvl(VALORE, 0) + Nvl(Sum(IM_PAGAMENTI), 0)
         Into   VALORE
         From   PDG_MODULO_SPESE_GEST PDG_SPE, V_CLASSIFICAZIONE_VOCI CLA,
                UNITA_ORGANIZZATIVA AREA
         Where  PDG_SPE.ESERCIZIO           = INES    AND
                PDG_SPE.CD_CDR_ASSEGNATARIO = INCDR   AND
                PDG_SPE.CD_LINEA_ATTIVITA   = INLA    AND
                PDG_SPE.TI_APPARTENENZA     = INAPP   AND
                PDG_SPE.TI_GESTIONE         = INGEST  AND
                PDG_SPE.CD_ELEMENTO_VOCE    = INELVOCE  AND
                PDG_SPE.ID_CLASSIFICAZIONE  = CLA.ID_CLASSIFICAZIONE And
                NVL(CLA.CDR_ACCENTRATORE, 'xxx') = PDG_SPE.CD_CDR_ASSEGNATARIO And
                PDG_SPE.CD_CDS_AREA         = AREA.CD_UNITA_ORGANIZZATIVA AND
                AREA.CD_TIPO_UNITA         != 'AREA' AND
                (PDG_SPE.ESERCIZIO, PDG_SPE.CD_CENTRO_RESPONSABILITA) IN
          (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

  Elsif TIPO_UO = 'AREA' Then

   Select Sum(IM_PAGAMENTI)
   Into   VALORE
   From   PDG_MODULO_SPESE_GEST PDG_SPE
   Where  PDG_SPE.ESERCIZIO           = INES    AND
          PDG_SPE.CD_CDR_ASSEGNATARIO = INCDR   AND
          PDG_SPE.CD_LINEA_ATTIVITA   = INLA    AND
          PDG_SPE.TI_APPARTENENZA     = INAPP   AND
          PDG_SPE.TI_GESTIONE         = INGEST  AND
          PDG_SPE.CD_ELEMENTO_VOCE    = INELVOCE  AND
          (PDG_SPE.ESERCIZIO, PDG_SPE.CD_CENTRO_RESPONSABILITA) IN
    (SELECT ESERCIZIO, CD_CENTRO_RESPONSABILITA From PDG_ESERCIZIO Where STATO = 'CG');

   End If; -- TIPO UO

End If;

Return  Nvl(VALORE, 0);

End;


FUNCTION VARIAZIONI_PIU   (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                           INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                           INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                           INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                           INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                           INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                           INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                           INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is

Begin
Return  VARIAZIONI_PIU (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE, Null, Null);
End;

Function VARIAZIONI_PIU   (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                           INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                           INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                           INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                           INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                           INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                           INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                           INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type,
                           DA_DATA         DATE,
                           A_DATA          DATE)
RETURN NUMBER Is

Begin
Return  Nvl(VARIAZIONI_CON_SEGNO(INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE, '+', DA_DATA, A_DATA), 0);
End;


FUNCTION VARIAZIONI_MENO  (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                           INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                           INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                           INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                           INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                           INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                           INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                           INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is

Begin
  Return  VARIAZIONI_MENO (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE, Null, Null);
End;


FUNCTION VARIAZIONI_MENO  (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                           INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                           INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                           INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                           INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                           INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                           INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                           INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type,
                           DA_DATA         DATE,
                           A_DATA          DATE)
RETURN NUMBER Is

Begin
Return  Nvl(VARIAZIONI_CON_SEGNO(INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE, '-', DA_DATA, A_DATA), 0);
End;

Function VARIAZIONI_CON_SEGNO (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                               INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                               INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                               INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                               INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                               INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                               INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                               INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type,
                               SEGNO           CHAR,
                               DA_DATA         DATE,
                               A_DATA          DATE)
RETURN NUMBER Is

VALORE NUMBER;
TIPO_UO VARCHAR2(10);
recParametriCNR parametri_cnr%rowtype;
Begin

recParametriCNR := CNRUTL001.getRecParametriCnr(INES);

Select CD_TIPO_UNITA
Into   TIPO_UO
From   UNITA_ORGANIZZATIVA
Where  CD_UNITA_ORGANIZZATIVA = Substr(INCDR, 1, 7);


-- PER GLI ISTITUTI SI CALCOLA SOLO PER LA COMPETENZA, PER L'ENTE ANCHE PER I RESIDUI

If INCDR != cnrctb020.getCdCdrEnte Then

  If INES = Nvl(INESRES, INES-1) Then -- SOLO PER LA COMPETENZA

    If INGEST = 'S' Then

      If SEGNO = '+' Then

      Select Sum(Decode(Abs(Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0)), Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0), Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0), 0) +
                 Decode(Abs(Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0)), Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0), Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0), 0) +
                 Decode(Abs(Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0)), Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0), Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0), 0) +
                 Decode(Abs(Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0)), Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0), Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0), 0))
      Into   VALORE
      From   PDG_VARIAZIONE T, PDG_VARIAZIONE_RIGA_GEST D
      Where  D.ESERCIZIO = INES And
             D.CD_CDR_ASSEGNATARIO = INCDR And
             D.CD_LINEA_ATTIVITA = INLA And
             D.TI_APPARTENENZA = INAPP And
             D.TI_GESTIONE = INGEST And
             D.CD_ELEMENTO_VOCE = INELVOCE And
             T.ESERCIZIO         = D.ESERCIZIO        And
             T.PG_VARIAZIONE_PDG = D.PG_VARIAZIONE_PDG And
             T.STATO In ('APP', 'APF') And
             CATEGORIA_DETTAGLIO != 'SCR' And
             T.DT_APPROVAZIONE Between Nvl(DA_DATA, T.DT_APPROVAZIONE) And Nvl(A_DATA, T.DT_APPROVAZIONE);

      Elsif SEGNO = '-' Then

      Select Sum(Decode(Abs(Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0)), Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0), 0, Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0)) +
                 Decode(Abs(Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0)), Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0), 0, Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0)) +
                 Decode(Abs(Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0)), Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0), 0, Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0)) +
                 Decode(Abs(Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0)), Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0), 0, Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0)))
      Into   VALORE
      From   PDG_VARIAZIONE T, PDG_VARIAZIONE_RIGA_GEST D
      Where  D.ESERCIZIO = INES And
             D.CD_CDR_ASSEGNATARIO = INCDR And
             D.CD_LINEA_ATTIVITA = INLA And
             D.TI_APPARTENENZA = INAPP And
             D.TI_GESTIONE = INGEST And
             D.CD_ELEMENTO_VOCE = INELVOCE And
             T.ESERCIZIO         = D.ESERCIZIO        And
             T.PG_VARIAZIONE_PDG = D.PG_VARIAZIONE_PDG And
             T.STATO In ('APP', 'APF') And
             CATEGORIA_DETTAGLIO != 'SCR' And
             T.DT_APPROVAZIONE Between Nvl(DA_DATA, T.DT_APPROVAZIONE) And Nvl(A_DATA, T.DT_APPROVAZIONE);
      End If;

  Elsif INGEST = 'E' Then

      If SEGNO = '+' Then

         Select Sum(Nvl(IM_ENTRATA, 0))
         Into   VALORE
         From   PDG_VARIAZIONE T, PDG_VARIAZIONE_RIGA_GEST D
         Where  D.ESERCIZIO = INES And
                D.CD_CDR_ASSEGNATARIO = INCDR And
                D.CD_LINEA_ATTIVITA = INLA And
                D.TI_APPARTENENZA = INAPP And
                D.TI_GESTIONE = INGEST And
                D.CD_ELEMENTO_VOCE = INELVOCE And
                T.ESERCIZIO         = D.ESERCIZIO        And
                T.PG_VARIAZIONE_PDG = D.PG_VARIAZIONE_PDG And
                T.STATO In ('APP', 'APF') And
                CATEGORIA_DETTAGLIO != 'SCR' And
                T.DT_APPROVAZIONE Between Nvl(DA_DATA, T.DT_APPROVAZIONE) And Nvl(A_DATA, T.DT_APPROVAZIONE) And
                Nvl(IM_ENTRATA, 0) > 0;

       Elsif SEGNO = '-' Then

         Select Sum(Nvl(IM_ENTRATA, 0))
         Into   VALORE
         From   PDG_VARIAZIONE T, PDG_VARIAZIONE_RIGA_GEST D
         Where  D.ESERCIZIO = INES And
                D.CD_CDR_ASSEGNATARIO = INCDR And
                D.CD_LINEA_ATTIVITA = INLA And
                D.TI_APPARTENENZA = INAPP And
                D.TI_GESTIONE = INGEST And
                D.CD_ELEMENTO_VOCE = INELVOCE And
                T.ESERCIZIO         = D.ESERCIZIO        And
                T.PG_VARIAZIONE_PDG = D.PG_VARIAZIONE_PDG And
                T.STATO In ('APP', 'APF') And
                CATEGORIA_DETTAGLIO != 'SCR' And
                T.DT_APPROVAZIONE Between Nvl(DA_DATA, T.DT_APPROVAZIONE) And Nvl(A_DATA, T.DT_APPROVAZIONE) And
                Nvl(IM_ENTRATA, 0) < 0;

      End If;  -- DEL SEGNO

    End If; -- TIPO GESTIONE E/S

  End If; -- PER LA COMPETENZA

Elsif INCDR = cnrctb020.getCdCdrEnte Then
Dbms_Output.PUT_LINE ('5');
    if (recParametriCNR.fl_nuovo_pdg = 'N' ) then
              If SEGNO = '+' Then
        Dbms_Output.PUT_LINE ('10');
               Select Sum(Nvl(IM_VARIAZIONE, 0))
               Into   VALORE
               From   VAR_BILANCIO T, VAR_BILANCIO_DET D
               Where  D.CD_CDS          = CNRCTB020.getCDCDSENTE (INES) And
                      D.ESERCIZIO       = INES And
                      D.TI_APPARTENENZA = INAPP And
                      D.TI_GESTIONE     = INGEST And
                    ((D.CD_VOCE = INVOCE And INVOCE Is Not Null) Or
                     (INVOCE Is Null And
                      D.CD_VOCE In (Select CD_VOCE
                                    From   VOCE_F
                                    Where  ESERCIZIO        = INES And
                                           TI_APPARTENENZA  = INAPP And
                                           TI_GESTIONE      = INGEST And
                                           CD_ELEMENTO_VOCE = INELVOCE))) And
                      T.CD_CDS          = D.CD_CDS And
                      T.ESERCIZIO       = D.ESERCIZIO And
                      T.TI_APPARTENENZA = D.TI_APPARTENENZA And
                      T.PG_VARIAZIONE   = D.PG_VARIAZIONE And
                      T.ESERCIZIO_IMPORTI = INESRES And
                      T.STATO           = 'D' And
                      Nvl(IM_VARIAZIONE, 0) > 0;

             Elsif SEGNO = '-' Then

               Select Sum(Nvl(IM_VARIAZIONE, 0))
               Into   VALORE
               From   VAR_BILANCIO T, VAR_BILANCIO_DET D
               Where  D.CD_CDS          = CNRCTB020.getCDCDSENTE (INES) And
                      D.ESERCIZIO       = INES And
                      D.TI_APPARTENENZA = INAPP And
                      D.TI_GESTIONE     = INGEST And
                    ((D.CD_VOCE = INVOCE And INVOCE Is Not Null) Or
                     (INVOCE Is Null And
                      D.CD_VOCE In (Select CD_VOCE
                                    From   VOCE_F
                                    Where  ESERCIZIO        = INES And
                                           TI_APPARTENENZA  = INAPP And
                                           TI_GESTIONE      = INGEST And
                                           CD_ELEMENTO_VOCE = INELVOCE))) And
                      T.CD_CDS          = D.CD_CDS And
                      T.ESERCIZIO       = D.ESERCIZIO And
                      T.TI_APPARTENENZA = D.TI_APPARTENENZA And
                      T.PG_VARIAZIONE   = D.PG_VARIAZIONE And
                      T.ESERCIZIO_IMPORTI = INESRES And
                      T.STATO           = 'D' And
                      Nvl(IM_VARIAZIONE, 0) < 0;

             End If;
     else
        If INES = Nvl(INESRES, INES-1) Then -- SOLO COMPETENZA

          If INGEST = 'S' Then

                  If SEGNO = '+' Then

                  Select Sum(Decode(Abs(Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0)), Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0), Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0), 0) +
                             Decode(Abs(Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0)), Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0), Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0), 0) +
                             Decode(Abs(Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0)), Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0), Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0), 0) +
                             Decode(Abs(Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0)), Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0), Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0), 0))
                  Into   VALORE
                  From   PDG_VARIAZIONE T, PDG_VARIAZIONE_RIGA_GEST D
                  Where  D.ESERCIZIO = INES And
                         D.CD_CDR_ASSEGNATARIO = INCDR And
                         D.CD_LINEA_ATTIVITA = INLA And
                         D.TI_APPARTENENZA = INAPP And
                         D.TI_GESTIONE = INGEST And
                         D.CD_ELEMENTO_VOCE = INELVOCE And
                         T.ESERCIZIO         = D.ESERCIZIO        And
                         T.PG_VARIAZIONE_PDG = D.PG_VARIAZIONE_PDG And
                         T.STATO In ('APP', 'APF') And
                         CATEGORIA_DETTAGLIO != 'SCR' And
                         T.DT_APPROVAZIONE Between Nvl(DA_DATA, T.DT_APPROVAZIONE) And Nvl(A_DATA, T.DT_APPROVAZIONE);

                  Elsif SEGNO = '-' Then

                  Select Sum(Decode(Abs(Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0)), Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0), 0, Nvl(IM_SPESE_GEST_DECENTRATA_INT, 0)) +
                             Decode(Abs(Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0)), Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0), 0, Nvl(IM_SPESE_GEST_DECENTRATA_EST, 0)) +
                             Decode(Abs(Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0)), Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0), 0, Nvl(IM_SPESE_GEST_ACCENTRATA_INT, 0)) +
                             Decode(Abs(Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0)), Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0), 0, Nvl(IM_SPESE_GEST_ACCENTRATA_EST, 0)))
                  Into   VALORE
                  From   PDG_VARIAZIONE T, PDG_VARIAZIONE_RIGA_GEST D
                  Where  D.ESERCIZIO = INES And
                         D.CD_CDR_ASSEGNATARIO = INCDR And
                         D.CD_LINEA_ATTIVITA = INLA And
                         D.TI_APPARTENENZA = INAPP And
                         D.TI_GESTIONE = INGEST And
                         D.CD_ELEMENTO_VOCE = INELVOCE And
                         T.ESERCIZIO         = D.ESERCIZIO        And
                         T.PG_VARIAZIONE_PDG = D.PG_VARIAZIONE_PDG And
                         T.STATO In ('APP', 'APF') And
                         CATEGORIA_DETTAGLIO != 'SCR' And
                         T.DT_APPROVAZIONE Between Nvl(DA_DATA, T.DT_APPROVAZIONE) And Nvl(A_DATA, T.DT_APPROVAZIONE);
                  End If;
          end if;  -- INGEST = 'S'
        end if; -- solo competenza
     end if;  -- nuovo_pdg

  End If; -- DEL CDR != '999.000.000'

Return  Nvl(VALORE, 0);
End;

FUNCTION IM_OBBL_ACC_COMP (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                           INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                           INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                           INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                           INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                           INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                           INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                           INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is

Begin
  Return IM_OBBL_ACC_COMP (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE, Null, Null);
End;

Function IM_OBBL_ACC_COMP (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                           INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                           INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                           INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                           INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                           INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                           INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                           INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type,
                           DA_DATA         DATE,
                           A_DATA          DATE)
Return NUMBER Is
VALORE NUMBER;
PGIRO           ELEMENTO_VOCE.FL_PARTITA_GIRO%Type;
TIPOLOGIA1       VARCHAR2(200);
TIPOLOGIA2       VARCHAR2(200);
TIPOLOGIA3       VARCHAR2(200);

Begin

Begin

Select FL_PARTITA_GIRO
Into   PGIRO
From   ELEMENTO_VOCE
Where  ESERCIZIO        = INES And
       TI_APPARTENENZA  = INAPP And
       TI_GESTIONE      = INGEST And
       CD_ELEMENTO_VOCE = INELVOCE;

If INGEST = 'S' And INES = Nvl(INESRES, INES-1) Then -- OBBLIGAZIONI COMPETENZA

   If PGIRO = 'Y' Then
      TIPOLOGIA1 := 'OBB';
      TIPOLOGIA2 := 'OBB_PGIRO';
      TIPOLOGIA3 := 'IMP';
   Else
      If INCDR = cnrctb020.getCdCdrEnte Then
          TIPOLOGIA1 := 'IMP';
      Else
          TIPOLOGIA1 := 'OBB';
      End If;
   End If;

   Select Sum(IM_VOCE)
   Into   VALORE
   From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS
   Where  OSV.ESERCIZIO = INES And
          OSV.TI_APPARTENENZA = INAPP And
          OSV.TI_GESTIONE = INGEST And
          OSV.CD_VOCE = Nvl(INVOCE, OSV.CD_VOCE) And
          OSV.CD_CENTRO_RESPONSABILITA = INCDR And
          OSV.CD_LINEA_ATTIVITA = INLA And
          OSV.CD_CDS = OS.CD_CDS And
          OSV.ESERCIZIO = OS.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
          OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE And
          OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO And
          OSV.CD_CDS = O.CD_CDS And
          OSV.ESERCIZIO = O.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
          OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
         ((O.ESERCIZIO_ORIGINALE = INES And 'Y' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES)) Or
          (O.ESERCIZIO_ORI_RIPORTO Is Null And 'N' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES))) And
          O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
          O.PG_OBBLIGAZIONE > 0 And
          O.DT_REGISTRAZIONE Between Nvl(DA_DATA, O.DT_REGISTRAZIONE) And Nvl(A_DATA, O.DT_REGISTRAZIONE) And
          (O.CD_TIPO_DOCUMENTO_CONT = TIPOLOGIA1 Or
           O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA2, TIPOLOGIA1) Or
           O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA3, TIPOLOGIA1));

Elsif INGEST = 'E' And INES = Nvl(INESRES, INES-1) Then -- ACCERTAMENTI COMPETENZA

   Select Sum(IM_VOCE)
   Into   VALORE
   From   ACCERTAMENTO_SCAD_VOCE OSV, ACCERTAMENTO O, ACCERTAMENTO_SCADENZARIO OS
   Where  O.ESERCIZIO = INES And
          O.TI_APPARTENENZA = INAPP And
          O.TI_GESTIONE = INGEST And
          O.CD_VOCE = Nvl(INVOCE, O.CD_VOCE) And
          OSV.CD_CENTRO_RESPONSABILITA = INCDR And
          OSV.CD_LINEA_ATTIVITA = INLA And
          OSV.CD_CDS = OS.CD_CDS And
          OSV.ESERCIZIO = OS.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
          OSV.PG_ACCERTAMENTO = OS.PG_ACCERTAMENTO And
          OSV.PG_ACCERTAMENTO_SCADENZARIO = OS.PG_ACCERTAMENTO_SCADENZARIO And
          OSV.CD_CDS = O.CD_CDS And
          OSV.ESERCIZIO = O.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
          OSV.PG_ACCERTAMENTO = O.PG_ACCERTAMENTO And
         ((O.ESERCIZIO_ORIGINALE = INES And 'Y' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES)) Or
          (O.ESERCIZIO_ORI_RIPORTO Is Null And 'N' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES))) And
          O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
          O.PG_ACCERTAMENTO > 0 And
          O.DT_REGISTRAZIONE Between Nvl(DA_DATA, O.DT_REGISTRAZIONE) And Nvl(A_DATA, O.DT_REGISTRAZIONE) And
          O.CD_TIPO_DOCUMENTO_CONT In ('ACR', 'ACR_SIST', 'ACR_PGIRO');
End If;

Exception
 When No_Data_Found Then Null;
End;

Return  Nvl(VALORE, 0);

END;


FUNCTION IM_OBBL_RES_IMP (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                               INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                               INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                               INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                               INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                               INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                               INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                               INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is
VALORE NUMBER;
BEGIN

Select Sum(IM_VOCE)
Into   VALORE
From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS
Where  OSV.ESERCIZIO = INES And
       OSV.TI_APPARTENENZA = INAPP And
       OSV.TI_GESTIONE = INGEST And
       O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
       OSV.CD_VOCE = Nvl(INVOCE, OSV.CD_VOCE) And
       OSV.CD_CENTRO_RESPONSABILITA = INCDR And
       OSV.CD_LINEA_ATTIVITA = INLA And
       OSV.CD_CDS = OS.CD_CDS And
       OSV.ESERCIZIO = OS.ESERCIZIO And
       OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
       OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE And
       OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO And
       OSV.CD_CDS = O.CD_CDS And
       OSV.ESERCIZIO = O.ESERCIZIO And
       OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
       OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
       O.ESERCIZIO_ORIGINALE = Nvl(INESRES, O.ESERCIZIO_ORIGINALE) And
       O.PG_OBBLIGAZIONE > 0 And
       O.CD_TIPO_DOCUMENTO_CONT = 'OBB_RESIM';

Return  Nvl(VALORE, 0);
End;

FUNCTION IM_OBBL_RES_PRO (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                          INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                          INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                          INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                          INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                          INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                          INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                          INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is

VALORE NUMBER;
PGIRO           ELEMENTO_VOCE.FL_PARTITA_GIRO%Type;
TIPOLOGIA1       VARCHAR2(200);
TIPOLOGIA2       VARCHAR2(200);
TIPOLOGIA3       VARCHAR2(200);
REG_2006         CHAR(1);

Begin

Begin

Select FL_PARTITA_GIRO
Into   PGIRO
From   ELEMENTO_VOCE
Where  ESERCIZIO        = INES And
       TI_APPARTENENZA  = INAPP And
       TI_GESTIONE      = INGEST And
       CD_ELEMENTO_VOCE = INELVOCE;

If INGEST = 'S' And INES > Nvl(INESRES, INES-1) Then -- OBBLIGAZIONI/IMPEGNI RESIDUI PROPRI

   If PGIRO = 'Y' Then
      TIPOLOGIA1 := 'OBB_PGIR_R';
      TIPOLOGIA2 := 'IMP_RES';
   Else
      If INCDR = cnrctb020.getCdCdrEnte Then
          TIPOLOGIA1 := 'IMP_RES';
      Else
          TIPOLOGIA1 := 'OBB_RES';
      End If;
   End If;

   Select Sum(IM_VOCE)
   Into   VALORE
   From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS
   Where  OSV.ESERCIZIO = INES And
          OSV.TI_APPARTENENZA = INAPP And
          OSV.TI_GESTIONE = INGEST And
          OSV.CD_VOCE = Nvl(INVOCE, OSV.CD_VOCE) And
          O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
          OSV.CD_CENTRO_RESPONSABILITA = INCDR And
          OSV.CD_LINEA_ATTIVITA = INLA And
          OSV.CD_CDS = OS.CD_CDS And
          OSV.ESERCIZIO = OS.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
          OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE And
          OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO And
          OSV.CD_CDS = O.CD_CDS And
          OSV.ESERCIZIO = O.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
          O.PG_OBBLIGAZIONE > 0 And
          OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
         ((((O.ESERCIZIO_ORIGINALE = INESRES And INESRES Is Not Null) Or (O.ESERCIZIO_ORIGINALE < INES And INESRES Is Null))
           And 'Y' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES)) Or
         (((O.ESERCIZIO_ORI_RIPORTO = INESRES And INESRES Is Not Null) Or (O.ESERCIZIO_ORI_RIPORTO < INES And INESRES Is Null))
           And 'N' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES))) And
         (O.CD_TIPO_DOCUMENTO_CONT = TIPOLOGIA1 Or
          O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA2, TIPOLOGIA1) Or
          O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA3, TIPOLOGIA1));

Elsif INGEST = 'E' Then

   TIPOLOGIA1 := 'ACR_PGIR_R';
   TIPOLOGIA2 := 'ACR_RES';

   Select Nvl(FL_REGOLAMENTO_2006, 'N')
   Into   REG_2006
   From   parametri_cnr
   Where  esercizio = INES;

   If REG_2006 = 'N' Then
      TIPOLOGIA3 := 'ACR_PGIRO';
   End If;

   Select Sum(IM_VOCE)
   Into   VALORE
   From   ACCERTAMENTO_SCAD_VOCE OSV, ACCERTAMENTO O, ACCERTAMENTO_SCADENZARIO OS
   Where  O.ESERCIZIO = INES And
          O.TI_APPARTENENZA = INAPP And
          O.TI_GESTIONE = INGEST And
          O.CD_VOCE = Nvl(INVOCE, O.CD_VOCE) And
          O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
          OSV.CD_CENTRO_RESPONSABILITA = INCDR And
          OSV.CD_LINEA_ATTIVITA = INLA And
          OSV.CD_CDS = OS.CD_CDS And
          OSV.ESERCIZIO = OS.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
          OSV.PG_ACCERTAMENTO = OS.PG_ACCERTAMENTO And
          OSV.PG_ACCERTAMENTO_SCADENZARIO = OS.PG_ACCERTAMENTO_SCADENZARIO And
          OSV.CD_CDS = O.CD_CDS And
          OSV.ESERCIZIO = O.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
          OSV.PG_ACCERTAMENTO = O.PG_ACCERTAMENTO And
         ((((O.ESERCIZIO_ORIGINALE = INESRES And INESRES Is Not Null) Or (O.ESERCIZIO_ORIGINALE < INES And INESRES Is Null))
           And 'Y' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES)) Or
         (((O.ESERCIZIO_ORI_RIPORTO = INESRES And INESRES Is Not Null) Or (O.ESERCIZIO_ORI_RIPORTO < INES And INESRES Is Null))
           And 'N' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES))) And
         (O.CD_TIPO_DOCUMENTO_CONT = TIPOLOGIA1 Or
          O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA2, TIPOLOGIA1) Or
          O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA3, TIPOLOGIA1));

End If;

If INCDR != cnrctb020.getCdCdrEnte Then
  Return  Nvl(VALORE, 0) -
          VAR_PIU_OBBL_RES_PRO (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE) +
          Abs(VAR_MENO_OBBL_RES_PRO (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE));

Elsif INCDR = cnrctb020.getCdCdrEnte Then
  Return  Nvl(VALORE, 0) -
          VARIAZIONI_PIU (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE) +
          Abs(VARIAZIONI_MENO (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE));
End If;

Exception
 When No_Data_Found Then Return 0;
End;

End;


Function VAR_PIU_OBBL_RES_PRO (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                               INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                               INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                               INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                               INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                               INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                               INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                               INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
Return NUMBER Is
 VALORE NUMBER;
Begin

If INGEST = 'S' Then

   Select Sum(IM_MODIFICA)
   Into   VALORE
   From   OBBLIGAZIONE_MOD_VOCE OMV, OBBLIGAZIONE_MODIFICA OM, PARAMETRI_CNR PAR
   Where  OMV.ESERCIZIO = INES And
          OMV.TI_APPARTENENZA = INAPP And
          OMV.TI_GESTIONE = INGEST And
          OMV.CD_CDS = OM.CD_CDS And
          OMV.ESERCIZIO = OM.ESERCIZIO And
          OMV.PG_MODIFICA = OM.PG_MODIFICA And
          PAR.ESERCIZIO = OM.ESERCIZIO And
          OM.ESERCIZIO_ORIGINALE = Nvl(INESRES, ESERCIZIO_ORIGINALE) And
          ((PAR.FL_NUOVO_PDG='Y' AND OMV.CD_VOCE = INELVOCE) OR
           (PAR.FL_NUOVO_PDG='N' AND
           OMV.CD_VOCE In (Select CD_VOCE
                          From   VOCE_F
                          Where  ESERCIZIO        = INES And
                                 TI_APPARTENENZA  = INAPP And
                                 TI_GESTIONE      = INGEST And
                                 CD_ELEMENTO_VOCE = INELVOCE))) And
          OMV.CD_CENTRO_RESPONSABILITA = INCDR And
          OMV.CD_LINEA_ATTIVITA = Nvl(INLA, CD_LINEA_ATTIVITA) And
          OMV.IM_MODIFICA > 0 And
          OM.PG_MODIFICA > 0;

Elsif INGEST = 'E' Then

   Select Sum(IM_MODIFICA)
   Into   VALORE
   From   ACCERTAMENTO_MOD_VOCE OMV, ACCERTAMENTO_MODIFICA OM, PARAMETRI_CNR PAR
   Where  OMV.ESERCIZIO = INES And
          OMV.TI_APPARTENENZA = INAPP And
          OMV.TI_GESTIONE = INGEST And
          OMV.CD_CDS = OM.CD_CDS And
          OMV.ESERCIZIO = OM.ESERCIZIO And
          OMV.PG_MODIFICA = OM.PG_MODIFICA And
          PAR.ESERCIZIO = OM.ESERCIZIO And
          OM.ESERCIZIO_ORIGINALE = Nvl(INESRES, ESERCIZIO_ORIGINALE) And
          ((PAR.FL_NUOVO_PDG='Y' AND OMV.CD_VOCE = INELVOCE) OR
           (PAR.FL_NUOVO_PDG='N' AND
           OMV.CD_VOCE In (Select CD_VOCE
                      From   VOCE_F
                      Where  ESERCIZIO        = INES And
                             TI_APPARTENENZA  = INAPP And
                             TI_GESTIONE      = INGEST And
                             CD_ELEMENTO_VOCE = INELVOCE))) And
          OMV.CD_CENTRO_RESPONSABILITA = INCDR And
          OMV.CD_LINEA_ATTIVITA = INLA And
          OMV.IM_MODIFICA > 0 And
          OM.PG_MODIFICA > 0;

End If;

Return  Nvl(VALORE, 0);

End;

Function VAR_MENO_OBBL_RES_PRO (INES           VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                               INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                               INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                               INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                               INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                               INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                               INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                               INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
Return NUMBER Is
 VALORE NUMBER;
Begin

If INGEST = 'S' Then

   Select Nvl(Sum(Abs(IM_MODIFICA)), 0)
   Into   VALORE
   From   OBBLIGAZIONE_MOD_VOCE OMV, OBBLIGAZIONE_MODIFICA OM, PARAMETRI_CNR PAR
   Where  OMV.ESERCIZIO = INES And
          OMV.TI_APPARTENENZA = INAPP And
          OMV.TI_GESTIONE = INGEST And
          OMV.CD_CDS = OM.CD_CDS And
          OMV.ESERCIZIO = OM.ESERCIZIO And
          OMV.PG_MODIFICA = OM.PG_MODIFICA And
          PAR.ESERCIZIO = OM.ESERCIZIO And
          OM.ESERCIZIO_ORIGINALE = Nvl(INESRES, ESERCIZIO_ORIGINALE) And
          ((PAR.FL_NUOVO_PDG='Y' AND OMV.CD_VOCE = INELVOCE) OR
           (PAR.FL_NUOVO_PDG='N' AND
           OMV.CD_VOCE In (Select CD_VOCE
                          From   VOCE_F
                          Where  ESERCIZIO        = INES And
                                 TI_APPARTENENZA  = INAPP And
                                 TI_GESTIONE      = INGEST And
                                 CD_ELEMENTO_VOCE = INELVOCE))) And
          OMV.CD_CENTRO_RESPONSABILITA = INCDR And
          OMV.CD_LINEA_ATTIVITA = Nvl(INLA, CD_LINEA_ATTIVITA) And
          OMV.IM_MODIFICA < 0 And
          OM.PG_MODIFICA > 0;

Elsif INGEST = 'E' Then

   Select Nvl(Sum(Abs(IM_MODIFICA)), 0)
   Into   VALORE
   From   ACCERTAMENTO_MOD_VOCE OMV, ACCERTAMENTO_MODIFICA OM, PARAMETRI_CNR PAR
   Where  OMV.ESERCIZIO = INES And
          OMV.TI_APPARTENENZA = INAPP And
          OMV.TI_GESTIONE = INGEST And
          OMV.CD_CDS = OM.CD_CDS And
          OMV.ESERCIZIO = OM.ESERCIZIO And
          OMV.PG_MODIFICA = OM.PG_MODIFICA And
          PAR.ESERCIZIO = OM.ESERCIZIO And
          OM.ESERCIZIO_ORIGINALE = Nvl(INESRES, ESERCIZIO_ORIGINALE) And
          ((PAR.FL_NUOVO_PDG='Y' AND OMV.CD_VOCE = INELVOCE) OR
           (PAR.FL_NUOVO_PDG='N' AND
           OMV.CD_VOCE In (Select CD_VOCE
                      From   VOCE_F
                      Where  ESERCIZIO        = INES And
                             TI_APPARTENENZA  = INAPP And
                             TI_GESTIONE      = INGEST And
                             CD_ELEMENTO_VOCE = INELVOCE))) And
          OMV.CD_CENTRO_RESPONSABILITA = INCDR And
          OMV.CD_LINEA_ATTIVITA = INLA And
          OMV.IM_MODIFICA < 0 And
          OM.PG_MODIFICA > 0;

End If;

Return  Nvl(VALORE, 0);

End;


Function IM_MANDATI_REVERSALI_PRO (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                                   INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                                   INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                                   INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                                   INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                                   INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                                   INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                                   INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is
VALORE NUMBER;
PGIRO           ELEMENTO_VOCE.FL_PARTITA_GIRO%Type;
TIPOLOGIA1       VARCHAR2(200);
TIPOLOGIA2       VARCHAR2(200);
TIPOLOGIA3       VARCHAR2(200);
REG_2006         CHAR(1);

Begin

Begin

Select FL_PARTITA_GIRO
Into   PGIRO
From   ELEMENTO_VOCE
Where  ESERCIZIO        = INES And
       TI_APPARTENENZA  = INAPP And
       TI_GESTIONE      = INGEST And
       CD_ELEMENTO_VOCE = INELVOCE;

If INGEST = 'S' Then

  If INES = Nvl(INESRES, INES-1) Then -- MANDATI SU IMPEGNI A COMPETENZA

     If PGIRO = 'Y' Then
        TIPOLOGIA1 := 'OBB';
        TIPOLOGIA2 := 'OBB_PGIRO';
        TIPOLOGIA3 := 'IMP';
     Else
        If INCDR = cnrctb020.getCdCdrEnte Then
            TIPOLOGIA1 := 'IMP';
        Else
            TIPOLOGIA1 := 'OBB';
        End If;
     End If;

     Select to_number(to_char(SUM(DECODE(NVL(OS.IM_SCADENZA,0),0,0,(OSV.IM_VOCE/OS.IM_SCADENZA )*MR.IM_MANDATO_RIGA)),'9999999999999D99'))
     Into   VALORE
     From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS, MANDATO_RIGA MR, MANDATO M
     Where  OSV.ESERCIZIO = INES And
            OSV.TI_APPARTENENZA = INAPP And
            OSV.TI_GESTIONE = INGEST And
            OSV.CD_VOCE = Nvl(INVOCE, OSV.CD_VOCE) And
            OSV.CD_CENTRO_RESPONSABILITA = INCDR And
            OSV.CD_LINEA_ATTIVITA = INLA And
            OSV.CD_CDS = OS.CD_CDS And
            OSV.ESERCIZIO = OS.ESERCIZIO And
            OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
            OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE And
            OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO And
            OSV.CD_CDS = O.CD_CDS And
            OSV.ESERCIZIO = O.ESERCIZIO And
            OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
            OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
            O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
          ((O.ESERCIZIO_ORIGINALE = INES And 'Y' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES)) Or
           (O.ESERCIZIO_ORI_RIPORTO Is Null And 'N' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES))) And
           (O.CD_TIPO_DOCUMENTO_CONT = TIPOLOGIA1 Or
            O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA2, TIPOLOGIA1) Or
            O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA3, TIPOLOGIA1)) And
            O.PG_OBBLIGAZIONE > 0 And
            OS.CD_CDS = MR.CD_CDS AND
            OS.ESERCIZIO = MR.ESERCIZIO_OBBLIGAZIONE AND
            OS.ESERCIZIO_ORIGINALE = MR.ESERCIZIO_ORI_OBBLIGAZIONE And
            OS.PG_OBBLIGAZIONE = MR.PG_OBBLIGAZIONE And
            OS.PG_OBBLIGAZIONE_SCADENZARIO = MR.PG_OBBLIGAZIONE_SCADENZARIO And
            MR.CD_CDS     = M.CD_CDS     AND
            MR.ESERCIZIO  = M.ESERCIZIO  AND
            MR.PG_MANDATO = M.PG_MANDATO And
            M.STATO != 'A';

  Elsif INES > Nvl(INESRES, INES-1) Then -- RESIDUI PROPRI

     If PGIRO = 'Y' Then
         TIPOLOGIA1 := 'OBB_PGIR_R';
         TIPOLOGIA2 := 'IMP_RES';
     Else
         If INCDR = cnrctb020.getCdCdrEnte Then
             TIPOLOGIA1 := 'IMP_RES';
         Else
             TIPOLOGIA1 := 'OBB_RES';
         End If;
     End If;

     Select to_number(to_char(SUM(DECODE(NVL(OS.IM_SCADENZA,0),0,0,(OSV.IM_VOCE/OS.IM_SCADENZA )*MR.IM_MANDATO_RIGA)),'9999999999999D99'))
     Into   VALORE
     From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS, MANDATO_RIGA MR, MANDATO M
     Where  OSV.ESERCIZIO = INES And
            OSV.TI_APPARTENENZA = INAPP And
            OSV.TI_GESTIONE = INGEST And
            OSV.CD_VOCE = Nvl(INVOCE, OSV.CD_VOCE) And
            O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
            OSV.CD_CENTRO_RESPONSABILITA = INCDR And
            OSV.CD_LINEA_ATTIVITA = INLA And
            OSV.CD_CDS = OS.CD_CDS And
            OSV.ESERCIZIO = OS.ESERCIZIO And
            OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
            OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE And
            OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO And
            OSV.CD_CDS = O.CD_CDS And
            OSV.ESERCIZIO = O.ESERCIZIO And
            OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
            OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
         ((O.ESERCIZIO_ORIGINALE = Nvl(INESRES, O.ESERCIZIO_ORIGINALE) And 'Y' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES)) Or
          (O.ESERCIZIO_ORI_RIPORTO = Nvl(INESRES, O.ESERCIZIO_ORI_RIPORTO) And 'N' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES))) And
           (O.CD_TIPO_DOCUMENTO_CONT = TIPOLOGIA1 Or
            O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA2, TIPOLOGIA1) Or
            O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA3, TIPOLOGIA1)) And
            OS.CD_CDS = MR.CD_CDS AND
            OS.ESERCIZIO = MR.ESERCIZIO_OBBLIGAZIONE AND
            OS.ESERCIZIO_ORIGINALE = MR.ESERCIZIO_ORI_OBBLIGAZIONE And
            OS.PG_OBBLIGAZIONE = MR.PG_OBBLIGAZIONE And
            OS.PG_OBBLIGAZIONE_SCADENZARIO = MR.PG_OBBLIGAZIONE_SCADENZARIO And
            MR.CD_CDS     = M.CD_CDS     AND
            MR.ESERCIZIO  = M.ESERCIZIO  AND
            MR.PG_MANDATO = M.PG_MANDATO And
            O.PG_OBBLIGAZIONE > 0 And
            M.STATO != 'A';

  End If;

Elsif INGEST = 'E' Then

  If INES = Nvl(INESRES, INES-1) Then -- COMPETENZA

   TIPOLOGIA1 := 'ACR_PGIRO';
   TIPOLOGIA2 := 'ACR';
   TIPOLOGIA3 := 'ACR_SIST';

   Select to_number(to_char(SUM(DECODE(NVL(OS.IM_SCADENZA,0),0,0,(OSV.IM_VOCE/OS.IM_SCADENZA )*RR.IM_REVERSALE_RIGA)),'9999999999999D99'))
   Into   VALORE
   From   ACCERTAMENTO_SCAD_VOCE OSV, ACCERTAMENTO O, ACCERTAMENTO_SCADENZARIO OS, REVERSALE_RIGA RR, REVERSALE R
   Where  O.ESERCIZIO = INES And
          O.TI_APPARTENENZA = INAPP And
          O.TI_GESTIONE = INGEST And
          O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
          O.CD_VOCE = Nvl(INVOCE, O.CD_VOCE) And
          OSV.CD_CENTRO_RESPONSABILITA = INCDR And
          OSV.CD_LINEA_ATTIVITA = INLA And
          OSV.CD_CDS = OS.CD_CDS And
          OSV.ESERCIZIO = OS.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
          OSV.PG_ACCERTAMENTO = OS.PG_ACCERTAMENTO And
          OSV.PG_ACCERTAMENTO_SCADENZARIO = OS.PG_ACCERTAMENTO_SCADENZARIO And
          OSV.CD_CDS = O.CD_CDS And
          OSV.ESERCIZIO = O.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
          OSV.PG_ACCERTAMENTO = O.PG_ACCERTAMENTO And
         ((O.ESERCIZIO_ORIGINALE = INES And 'Y' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES)) Or
          (O.ESERCIZIO_ORI_RIPORTO Is Null And 'N' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES))) And
         (O.CD_TIPO_DOCUMENTO_CONT = TIPOLOGIA1 Or
          O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA2, TIPOLOGIA1) Or
          O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA3, TIPOLOGIA1)) And
          OS.CD_CDS = RR.CD_CDS And
          OS.ESERCIZIO = RR.ESERCIZIO_ACCERTAMENTO And
          OS.ESERCIZIO_ORIGINALE = RR.ESERCIZIO_ORI_ACCERTAMENTO And
          OS.PG_ACCERTAMENTO = RR.PG_ACCERTAMENTO And
          OS.PG_ACCERTAMENTO_SCADENZARIO = RR.PG_ACCERTAMENTO_SCADENZARIO And
          RR.CD_CDS     = R.CD_CDS     AND
          RR.ESERCIZIO  = R.ESERCIZIO  AND
          RR.PG_REVERSALE = R.PG_REVERSALE And
          R.STATO != 'A';

  Elsif INES > Nvl(INESRES, INES-1) Then -- RESIDUI

   TIPOLOGIA1 := 'ACR_PGIR_R';
   TIPOLOGIA2 := 'ACR_RES';

   Select Nvl(FL_REGOLAMENTO_2006, 'N')
   Into   REG_2006
   From   parametri_cnr
   Where esercizio = INES;

   If REG_2006 = 'N' Then
      TIPOLOGIA3 := 'ACR_PGIRO';
   End If;

   Select to_number(to_char(SUM(DECODE(NVL(OS.IM_SCADENZA,0),0,0,(OSV.IM_VOCE/OS.IM_SCADENZA )*RR.IM_REVERSALE_RIGA)),'9999999999999D99'))
   Into   VALORE
   From   ACCERTAMENTO_SCAD_VOCE OSV, ACCERTAMENTO O, ACCERTAMENTO_SCADENZARIO OS, REVERSALE_RIGA RR, REVERSALE R
   Where  O.ESERCIZIO = INES And
          O.TI_APPARTENENZA = INAPP And
          O.TI_GESTIONE = INGEST And
          O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
          O.CD_VOCE = Nvl(INVOCE, O.CD_VOCE) And
          OSV.CD_CENTRO_RESPONSABILITA = INCDR And
          OSV.CD_LINEA_ATTIVITA = INLA And
          OSV.CD_CDS = OS.CD_CDS And
          OSV.ESERCIZIO = OS.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
          OSV.PG_ACCERTAMENTO = OS.PG_ACCERTAMENTO And
          OSV.PG_ACCERTAMENTO_SCADENZARIO = OS.PG_ACCERTAMENTO_SCADENZARIO And
          OSV.CD_CDS = O.CD_CDS And
          OSV.ESERCIZIO = O.ESERCIZIO And
          OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
          OSV.PG_ACCERTAMENTO = O.PG_ACCERTAMENTO And
        ((((O.ESERCIZIO_ORIGINALE = INESRES And INESRES Is Not Null) Or (O.ESERCIZIO_ORIGINALE < INES And INESRES Is Null))
           And 'Y' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES)) Or
         (((O.ESERCIZIO_ORI_RIPORTO = INESRES And INESRES Is Not Null) Or (O.ESERCIZIO_ORI_RIPORTO < INES And INESRES Is Null))
           And 'N' = (Select Nvl(FL_REGOLAMENTO_2006, 'N') From parametri_cnr Where esercizio = INES))) And
         (O.CD_TIPO_DOCUMENTO_CONT = TIPOLOGIA1 Or
          O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA2, TIPOLOGIA1) Or
          O.CD_TIPO_DOCUMENTO_CONT = Nvl(TIPOLOGIA3, TIPOLOGIA1)) And
          OS.CD_CDS = RR.CD_CDS AND
          OS.ESERCIZIO = RR.ESERCIZIO_ACCERTAMENTO And
          OS.ESERCIZIO_ORIGINALE = RR.ESERCIZIO_ORI_ACCERTAMENTO And
          OS.PG_ACCERTAMENTO = RR.PG_ACCERTAMENTO AND
          OS.PG_ACCERTAMENTO_SCADENZARIO = RR.PG_ACCERTAMENTO_SCADENZARIO And
          RR.CD_CDS     = R.CD_CDS     AND
          RR.ESERCIZIO  = R.ESERCIZIO  AND
          RR.PG_REVERSALE = R.PG_REVERSALE And
          R.STATO != 'A';

  End If;

End If;

Exception
 When No_Data_Found Then Null;
End;

Return  Nvl(VALORE, 0);

END;


Function IM_MANDATI_REVERSALI_IMP (INES        VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                               INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                               INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                               INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                               INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                               INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                               INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                               INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
RETURN NUMBER Is
VALORE NUMBER;

BEGIN

If INGEST = 'S' Then

     Select to_number(to_char(SUM(DECODE(NVL(OS.IM_SCADENZA,0),0,0,(OSV.IM_VOCE/OS.IM_SCADENZA )*MR.IM_MANDATO_RIGA)),'9999999999999D99'))
     Into   VALORE
     From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS, MANDATO_RIGA MR, MANDATO M
     Where  OSV.ESERCIZIO = INES And
            OSV.TI_APPARTENENZA = INAPP And
            OSV.TI_GESTIONE = INGEST And
            OSV.CD_VOCE = Nvl(INVOCE, OSV.CD_VOCE) And
            OSV.CD_CENTRO_RESPONSABILITA = INCDR And
            OSV.CD_LINEA_ATTIVITA = INLA And
            OSV.CD_CDS = OS.CD_CDS And
            OSV.ESERCIZIO = OS.ESERCIZIO And
            OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
            OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE And
            OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO And
            OSV.CD_CDS = O.CD_CDS And
            OSV.ESERCIZIO = O.ESERCIZIO And
            OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
            OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
            O.CD_ELEMENTO_VOCE = Nvl(INELVOCE, O.CD_ELEMENTO_VOCE) And
            O.ESERCIZIO_ORIGINALE = Nvl(INESRES, O.ESERCIZIO_ORIGINALE)  And
            O.CD_TIPO_DOCUMENTO_CONT = 'OBB_RESIM' And
            OS.CD_CDS = MR.CD_CDS And
            OS.ESERCIZIO = MR.ESERCIZIO_OBBLIGAZIONE And
            OS.ESERCIZIO_ORIGINALE = MR.ESERCIZIO_ORI_OBBLIGAZIONE And
            OS.PG_OBBLIGAZIONE  = MR.PG_OBBLIGAZIONE And
            OS.PG_OBBLIGAZIONE_SCADENZARIO = MR.PG_OBBLIGAZIONE_SCADENZARIO And
            MR.CD_CDS     = M.CD_CDS     AND
            MR.ESERCIZIO  = M.ESERCIZIO  AND
            MR.PG_MANDATO = M.PG_MANDATO And
            O.PG_OBBLIGAZIONE > 0 And
            M.STATO != 'A';
End If;

Return  Nvl(VALORE, 0);

END;

FUNCTION VAR_STANZ_RES_MENO
(P_ESE       IN NUMBER,
 P_ESE_RES   IN NUMBER,
 P_CDR       IN VARCHAR2,
 P_GAE       IN VARCHAR2,
 P_APP       IN CHAR,
 P_GEST      IN CHAR,
 P_VOCE      IN VARCHAR2,
 P_TIPO      IN VARCHAR2)
RETURN NUMBER IS

VALORE NUMBER;

TIPOLOGIA1       VARCHAR2(200);
TIPOLOGIA2       VARCHAR2(200);

BEGIN

If P_TIPO = 'ECO' Then
        TIPOLOGIA1 := 'ECO';
Else
        TIPOLOGIA1 := 'STO';
        TIPOLOGIA2 := 'STO_INT';
End If;

  Select NVL(SUM(ABS(IM_VARIAZIONE)), 0)
  Into   VALORE
  From   VAR_STANZ_RES_RIGA VR, VAR_STANZ_RES VT
  Where  VR.ESERCIZIO = P_ESE AND
         VR.ESERCIZIO_RES = P_ESE_RES AND
         VR.ESERCIZIO_VOCE = P_ESE AND
         VR.CD_CDR = P_CDR  AND
         VR.CD_LINEA_ATTIVITA = P_GAE AND
         VR.TI_APPARTENENZA = P_APP AND
         VR.TI_GESTIONE = P_GEST AND
         VR.CD_VOCE = P_VOCE AND
         VR.IM_VARIAZIONE < 0 AND
         VT.ESERCIZIO     = VR.ESERCIZIO AND
         VT.PG_VARIAZIONE = VR.PG_VARIAZIONE AND
        (VT.TIPOLOGIA = TIPOLOGIA1 Or
         VT.TIPOLOGIA = Nvl(TIPOLOGIA2, TIPOLOGIA1)) And
         VT.STATO = 'APP';

RETURN VALORE;
END;

FUNCTION LIQUIDATO_PRO
(P_ESE       IN NUMBER,
 P_ESE_RES   IN NUMBER,
 P_CDR       IN VARCHAR2,
 P_GAE       IN VARCHAR2,
 P_APP       IN CHAR,
 P_GEST      IN CHAR,
 P_VOCE      IN VARCHAR2)
RETURN NUMBER IS

VALORE NUMBER;

Begin

If P_GEST = 'S' Then

  Select NVL(SUM(IM_VOCE), 0)
  Into   VALORE
  From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS
  Where  OSV.ESERCIZIO = P_ESE AND
         OSV.TI_APPARTENENZA = P_APP AND
         OSV.TI_GESTIONE = P_GEST AND
         OSV.CD_VOCE = P_VOCE AND
         OSV.CD_CENTRO_RESPONSABILITA = P_CDR AND
         OSV.CD_LINEA_ATTIVITA = P_GAE AND
         OSV.CD_CDS = OS.CD_CDS AND
         OSV.ESERCIZIO = OS.ESERCIZIO AND
         OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
         OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE AND
         OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO AND
         OSV.CD_CDS = O.CD_CDS AND
         OSV.ESERCIZIO = O.ESERCIZIO AND
         OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
         OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
         O.CD_TIPO_DOCUMENTO_CONT In ('OBB_RES', 'IMP_RES') And
         O.ESERCIZIO_ORIGINALE = P_ESE_RES And
         OS.IM_ASSOCIATO_DOC_AMM = OS.IM_SCADENZA And
         O.PG_OBBLIGAZIONE > 0;

Elsif P_GEST = 'E' Then

  Select NVL(SUM(IM_VOCE), 0)
  Into   VALORE
  From   ACCERTAMENTO_SCAD_VOCE OSV, ACCERTAMENTO O, ACCERTAMENTO_SCADENZARIO OS
  Where  O.ESERCIZIO = P_ESE AND
         O.TI_APPARTENENZA = P_APP AND
         O.TI_GESTIONE = P_GEST AND
         O.CD_VOCE = P_VOCE AND
         OSV.CD_CENTRO_RESPONSABILITA = P_CDR AND
         OSV.CD_LINEA_ATTIVITA = P_GAE AND
         OSV.CD_CDS = OS.CD_CDS AND
         OSV.ESERCIZIO = OS.ESERCIZIO AND
         OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
         OSV.PG_ACCERTAMENTO = OS.PG_ACCERTAMENTO AND
         OSV.PG_ACCERTAMENTO_SCADENZARIO = OS.PG_ACCERTAMENTO_SCADENZARIO AND
         OSV.CD_CDS = O.CD_CDS AND
         OSV.ESERCIZIO = O.ESERCIZIO AND
         OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
         OSV.PG_ACCERTAMENTO = O.PG_ACCERTAMENTO And
         O.CD_TIPO_DOCUMENTO_CONT In ('ACR_RES') And
         O.ESERCIZIO_ORIGINALE = P_ESE_RES And
         OS.IM_ASSOCIATO_DOC_AMM = OS.IM_SCADENZA;

End If;

Return Valore;
End;

Function RESIDUI_IMPROPRI
(P_ESE       IN NUMBER,
 P_ESE_RES   IN NUMBER,
 P_CDR       IN VARCHAR2,
 P_GAE       IN VARCHAR2,
 P_APP       IN CHAR,
 P_GEST      IN CHAR,
 P_VOCE      IN VARCHAR2,
 P_RIB       IN CHAR)
RETURN NUMBER Is

VALORE NUMBER;

Begin
  Select NVL(SUM(IM_VOCE), 0)
  Into   VALORE
  From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS
  Where  OSV.ESERCIZIO = P_ESE AND
         OSV.TI_APPARTENENZA = P_APP AND
         OSV.TI_GESTIONE = P_GEST AND
         OSV.CD_VOCE = P_VOCE AND
         OSV.CD_CENTRO_RESPONSABILITA = P_CDR AND
         OSV.CD_LINEA_ATTIVITA = P_GAE AND
         OSV.CD_CDS = OS.CD_CDS AND
         OSV.ESERCIZIO = OS.ESERCIZIO AND
         OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
         OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE AND
         OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO AND
         OSV.CD_CDS = O.CD_CDS AND
         OSV.ESERCIZIO = O.ESERCIZIO AND
         OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
         OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
         O.CD_TIPO_DOCUMENTO_CONT In ('OBB_RESIM') And
         O.PG_OBBLIGAZIONE > 0 And
         P_ESE_RES = O.ESERCIZIO_ORIGINALE AND
       ((P_RIB = 'Y' And O.PG_OBBLIGAZIONE_ORI_RIPORTO Is Not Null) Or
        (P_RIB = 'N' And O.PG_OBBLIGAZIONE_ORI_RIPORTO Is Null));

Return VALORE;
End;


Function RESIDUI_IMPROPRI_LIQ
(P_ESE       IN NUMBER,
 P_ESE_RES   IN NUMBER,
 P_CDR       IN VARCHAR2,
 P_GAE       IN VARCHAR2,
 P_APP       IN CHAR,
 P_GEST      IN CHAR,
 P_VOCE      IN VARCHAR2,
 P_RIB       IN CHAR)
RETURN NUMBER Is

VALORE NUMBER;

Begin
  Select NVL(SUM(IM_VOCE), 0)
  Into   VALORE
  From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS
  Where  OSV.ESERCIZIO = P_ESE AND
         OSV.TI_APPARTENENZA = P_APP AND
         OSV.TI_GESTIONE = P_GEST AND
         OSV.CD_VOCE = P_VOCE AND
         OSV.CD_CENTRO_RESPONSABILITA = P_CDR AND
         OSV.CD_LINEA_ATTIVITA = P_GAE AND
         OSV.CD_CDS = OS.CD_CDS AND
         OSV.ESERCIZIO = OS.ESERCIZIO AND
         OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
         OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE AND
         OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO AND
         OSV.CD_CDS = O.CD_CDS AND
         OSV.ESERCIZIO = O.ESERCIZIO AND
         OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
         OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
         O.CD_TIPO_DOCUMENTO_CONT = 'OBB_RESIM' And
         O.PG_OBBLIGAZIONE > 0 And
         P_ESE_RES = O.ESERCIZIO_ORIGINALE AND
       ((P_RIB = 'Y' And O.PG_OBBLIGAZIONE_ORI_RIPORTO Is Not Null) Or
        (P_RIB = 'N' And O.PG_OBBLIGAZIONE_ORI_RIPORTO Is Null)) And
         OS.IM_ASSOCIATO_DOC_AMM = OS.IM_SCADENZA;

Return VALORE;
End;

Function RESIDUI_IMPROPRI_PAG -- PRENDERE DA MARTELLO
(P_ESE       IN NUMBER,
 P_ESE_RES   IN NUMBER,
 P_CDR       IN VARCHAR2,
 P_GAE       IN VARCHAR2,
 P_APP       IN CHAR,
 P_GEST      IN CHAR,
 P_VOCE      IN VARCHAR2,
 P_RIB       IN CHAR)
RETURN NUMBER Is

VALORE NUMBER;

Begin
  Select to_number(to_char(Nvl(SUM(DECODE(NVL(OS.IM_SCADENZA,0),0,0,(OSV.IM_VOCE/OS.IM_SCADENZA )*MR.IM_MANDATO_RIGA)), 0),'9999999999999D99'))
  Into   VALORE
  From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE O, OBBLIGAZIONE_SCADENZARIO OS, MANDATO_RIGA MR, MANDATO M
  Where  OSV.ESERCIZIO = P_ESE And
         OSV.TI_APPARTENENZA = P_APP And
         OSV.TI_GESTIONE = P_GEST And
         OSV.CD_VOCE = P_VOCE And
         OSV.CD_CENTRO_RESPONSABILITA = P_CDR And
         OSV.CD_LINEA_ATTIVITA = P_GAE And
         OSV.CD_CDS = OS.CD_CDS And
         OSV.ESERCIZIO = OS.ESERCIZIO And
         OSV.ESERCIZIO_ORIGINALE = OS.ESERCIZIO_ORIGINALE And
         OSV.PG_OBBLIGAZIONE = OS.PG_OBBLIGAZIONE And
         OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO And
         OSV.CD_CDS = O.CD_CDS And
         OSV.ESERCIZIO = O.ESERCIZIO And
         OSV.ESERCIZIO_ORIGINALE = O.ESERCIZIO_ORIGINALE And
         OSV.PG_OBBLIGAZIONE = O.PG_OBBLIGAZIONE And
         O.ESERCIZIO_ORIGINALE = P_ESE_RES And
         O.CD_TIPO_DOCUMENTO_CONT = 'OBB_RESIM' And
         OS.CD_CDS = MR.CD_CDS And
         OS.ESERCIZIO = MR.ESERCIZIO_OBBLIGAZIONE And
         OS.ESERCIZIO_ORIGINALE = MR.ESERCIZIO_ORI_OBBLIGAZIONE And
         OS.PG_OBBLIGAZIONE  = MR.PG_OBBLIGAZIONE And
         OS.PG_OBBLIGAZIONE_SCADENZARIO = MR.PG_OBBLIGAZIONE_SCADENZARIO And
       ((P_RIB = 'Y' And O.PG_OBBLIGAZIONE_ORI_RIPORTO Is Not Null) Or
        (P_RIB = 'N' And O.PG_OBBLIGAZIONE_ORI_RIPORTO Is Null)) And
         MR.CD_CDS     = M.CD_CDS     AND
         MR.ESERCIZIO  = M.ESERCIZIO  AND
         MR.PG_MANDATO = M.PG_MANDATO And
         O.PG_OBBLIGAZIONE > 0 And
         M.STATO != 'A';
Return VALORE;

End;


Function RF_IM_OBBL_ACC_COMP (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                          INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                          INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                          INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                          INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                          INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                          INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                          INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
Return NUMBER Is

REG_2006  CHAR(1);
VALORE    NUMBER;

Begin

   Select Nvl(FL_REGOLAMENTO_2006, 'N')
   Into   REG_2006
   From parametri_cnr
   Where esercizio = INES;

   If REG_2006 = 'Y' Then

     Select Sum(IM_OBBL_ACC_COMP)
     Into   VALORE
     From   VOCE_F_SALDI_CDR_LINEA
     Where  ESERCIZIO                 =  INES    And
            ESERCIZIO_RES             =  INES    And
            CD_CENTRO_RESPONSABILITA  =  INCDR   And
            CD_LINEA_ATTIVITA         =  INLA    And
            TI_APPARTENENZA           =  INAPP   And
            TI_GESTIONE               =  INGEST  And
            CD_VOCE                   =  Nvl(INVOCE, CD_VOCE)  And
            CD_ELEMENTO_VOCE          =  INELVOCE;

   Elsif REG_2006 = 'N' Then

     VALORE := IM_OBBL_ACC_COMP (INES, INES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE);

   End If;

Return Nvl(VALORE, 0);

End;

Function RF_IM_OBBL_RES_PRO  (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                              INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                              INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                              INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                              INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                              INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                              INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                              INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
Return NUMBER Is

REG_2006  CHAR(1);
VALORE    NUMBER;

Begin

   Select Nvl(FL_REGOLAMENTO_2006, 'N')
   Into   REG_2006
   From parametri_cnr
   Where esercizio = INES;

   If REG_2006 = 'Y' Then

     Select Sum(IM_OBBL_RES_PRO)
     Into   VALORE
     From   VOCE_F_SALDI_CDR_LINEA
     Where  ESERCIZIO                 = INES    And
            ESERCIZIO_RES             < INES    And --  tutti gli anni residui
            CD_CENTRO_RESPONSABILITA  = INCDR   And
            CD_LINEA_ATTIVITA         = Nvl(INLA, CD_LINEA_ATTIVITA) And
            TI_APPARTENENZA           = INAPP   And
            TI_GESTIONE               = INGEST  And
            CD_VOCE                   = Nvl(INVOCE, CD_VOCE)  And
            CD_ELEMENTO_VOCE          = INELVOCE;

   Elsif REG_2006 = 'N' Then

     VALORE := IM_OBBL_RES_PRO (INES, Null, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE);

   End If;

Return Nvl(VALORE, 0);

End;

Function RF_IM_MANDATI_REVERSALI_PRO  (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                                       INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                                       INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                                       INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                                       INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                                       INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                                       INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                                       INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
Return NUMBER Is

REG_2006  CHAR(1);
VALORE    NUMBER;

Begin

   Select Nvl(FL_REGOLAMENTO_2006, 'N')
   Into   REG_2006
   From parametri_cnr
   Where esercizio = INES;

   If REG_2006 = 'Y' Then

     Select Sum(IM_MANDATI_REVERSALI_PRO)-- + Sum(IM_MANDATI_REVERSALI_IMP)
     Into   VALORE
     From   VOCE_F_SALDI_CDR_LINEA
     Where  ESERCIZIO                 = INES    And
          ((ESERCIZIO_RES = INESRES And INESRES Is Not Null) Or (ESERCIZIO_RES < INES And INESRES Is Null)) And
            CD_CENTRO_RESPONSABILITA  = INCDR   And
            CD_LINEA_ATTIVITA         = INLA    And
            TI_APPARTENENZA           = INAPP   And
            TI_GESTIONE               = INGEST  And
            CD_VOCE                   = Nvl(INVOCE, CD_VOCE)  And
            CD_ELEMENTO_VOCE          = INELVOCE;

   Elsif REG_2006 = 'N' Then

     VALORE := IM_MANDATI_REVERSALI_PRO (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE);

   End If;

Return Nvl(VALORE, 0);

End;

Function RF_IM_STANZ_INIZIALE_A1 (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                                  INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                                  INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                                  INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                                  INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                                  INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                                  INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                                  INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)

Return NUMBER Is

REG_2006  CHAR(1);
VALORE    NUMBER;

Begin

   Select Nvl(FL_REGOLAMENTO_2006, 'N')
   Into   REG_2006
   From parametri_cnr
   Where esercizio = INES;

   If REG_2006 = 'Y' Then

     VALORE := IM_STANZ_INIZIALE_A1 (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE);

   Elsif REG_2006 = 'N' Then

     Select Sum(INI)
     Into   VALORE
     From   V_CONS_PDG_ETR_ASSESTATO
     Where  ESERCIZIO                 = INES    And
            CDR                       = INCDR   And
            CD_LINEA_ATTIVITA         = INLA    And
            CD_ELEMENTO_VOCE          = INELVOCE;

   End If;

Return Nvl(VALORE, 0);

End;

Function RF_VARIAZIONI_PIU (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                            INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                            INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                            INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                            INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                            INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                            INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                            INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)

Return NUMBER Is

REG_2006  CHAR(1);
VALORE    NUMBER;

Begin

   Select Nvl(FL_REGOLAMENTO_2006, 'N')
   Into   REG_2006
   From parametri_cnr
   Where esercizio = INES;

   If REG_2006 = 'Y' Then

     VALORE := VARIAZIONI_PIU (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE);

   Elsif REG_2006 = 'N' Then

     Select Sum(VAR_PIU)
     Into   VALORE
     From   V_CONS_PDG_ETR_ASSESTATO
     Where  ESERCIZIO                 = INES    And
            CDR                       = INCDR   And
            CD_LINEA_ATTIVITA         = INLA    And
            CD_ELEMENTO_VOCE          = INELVOCE;

   End If;

Return Nvl(VALORE, 0);

End;

Function RF_VARIAZIONI_MENO (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                             INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                             INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                             INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                             INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                             INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                             INVOCE          VOCE_F_SALDI_CDR_LINEA.CD_VOCE%Type,
                             INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)

Return NUMBER Is

REG_2006  CHAR(1);
VALORE    NUMBER;

Begin

   Select Nvl(FL_REGOLAMENTO_2006, 'N')
   Into   REG_2006
   From parametri_cnr
   Where esercizio = INES;

   If REG_2006 = 'Y' Then

     VALORE := VARIAZIONI_MENO (INES, INESRES, INCDR, INLA, INAPP, INGEST, INVOCE, INELVOCE);

   Elsif REG_2006 = 'N' Then

     Select Sum(VAR_MENO)
     Into   VALORE
     From   V_CONS_PDG_ETR_ASSESTATO
     Where  ESERCIZIO                 = INES    And
            CDR                       = INCDR   And
            CD_LINEA_ATTIVITA         = INLA    And
            CD_ELEMENTO_VOCE          = INELVOCE;

   End If;

Return Nvl(VALORE, 0);

End;

Function RF_PREV_DEF_CASSA       (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                                  INDIP           DIPARTIMENTO.CD_DIPARTIMENTO%Type,
                                  INCDS           UNITA_ORGANIZZATIVA.CD_UNITA_ORGANIZZATIVA%Type,
                                  INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                                  INLIV1          CLASSIFICAZIONE_VOCI.CD_LIVELLO1%Type,
                                  INLIV2          CLASSIFICAZIONE_VOCI.CD_LIVELLO2%Type,
                                  INLIV3          CLASSIFICAZIONE_VOCI.CD_LIVELLO3%Type,
                                  INLIV4          CLASSIFICAZIONE_VOCI.CD_LIVELLO4%Type,
                                  INLIV5          CLASSIFICAZIONE_VOCI.CD_LIVELLO5%Type,
                                  INLIV6          CLASSIFICAZIONE_VOCI.CD_LIVELLO6%Type,
                                  INLIV7          CLASSIFICAZIONE_VOCI.CD_LIVELLO7%Type) Return NUMBER Is

VALORE    NUMBER;

Begin
 Null;
End;

Function RF_FULL_COST_AC (INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                          INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                          INDIP           DIPARTIMENTO.CD_DIPARTIMENTO%Type,
                          INLIV1          CLASSIFICAZIONE_VOCI.CD_LIVELLO1%Type,
                          INLIV2          CLASSIFICAZIONE_VOCI.CD_LIVELLO1%Type) Return NUMBER Is

VALORE    NUMBER;

Begin
 Begin

 Select Nvl(FULL_COSTING, 0)
 Into   VALORE
 From   PARAMETRI_REND_PREV_DEC
 Where  ESERCIZIO = INES And
        TI_GESTIONE = INGEST And
        CD_DIPARTIMENTO = INDIP And
        CD_LIVELLO1 = INLIV1 And
        CD_LIVELLO2 = INLIV2;

 Exception
  When No_Data_Found Then Null;
 End;

Return Nvl(VALORE, 0);

End;

Function IM_MANDATI_PER_IMPEGNO (INCDS           UNITA_ORGANIZZATIVA.CD_UNITA_ORGANIZZATIVA%Type,
                                 INES            OBBLIGAZIONE.ESERCIZIO%Type,
                                 INESRES         OBBLIGAZIONE.ESERCIZIO_ORIGINALE%Type,
                                 INPGOBB         OBBLIGAZIONE.PG_OBBLIGAZIONE%Type,
                                 INPGOBBSCAD     OBBLIGAZIONE_SCADENZARIO.PG_OBBLIGAZIONE_SCADENZARIO%Type) Return NUMBER Is

VALORE    NUMBER;

Begin

  Begin
     Select to_number(to_char(SUM(DECODE(NVL(OS.IM_SCADENZA,0),0,0,(OSV.IM_VOCE/OS.IM_SCADENZA )*MR.IM_MANDATO_RIGA)),'9999999999999D99'))
     Into   VALORE
     From   OBBLIGAZIONE_SCAD_VOCE OSV, OBBLIGAZIONE_SCADENZARIO OS, MANDATO_RIGA MR, MANDATO M
     Where  OSV.CD_CDS                      = OS.CD_CDS And
            OSV.ESERCIZIO                   = OS.ESERCIZIO And
            OSV.ESERCIZIO_ORIGINALE         = OS.ESERCIZIO_ORIGINALE And
            OSV.PG_OBBLIGAZIONE             = OS.PG_OBBLIGAZIONE And
            OSV.PG_OBBLIGAZIONE_SCADENZARIO = OS.PG_OBBLIGAZIONE_SCADENZARIO And
            OSV.CD_CDS                      = INCDS And
            OSV.ESERCIZIO                   = INES And
            OSV.ESERCIZIO_ORIGINALE         = INESRES And
            OSV.PG_OBBLIGAZIONE             = INPGOBB And
            OSV.PG_OBBLIGAZIONE_SCADENZARIO = Nvl(INPGOBBSCAD, OSV.PG_OBBLIGAZIONE_SCADENZARIO) And
            OS.CD_CDS                       = MR.CD_CDS AND
            OS.ESERCIZIO                    = MR.ESERCIZIO_OBBLIGAZIONE AND
            OS.ESERCIZIO_ORIGINALE          = MR.ESERCIZIO_ORI_OBBLIGAZIONE And
            OS.PG_OBBLIGAZIONE              = MR.PG_OBBLIGAZIONE And
            OS.PG_OBBLIGAZIONE_SCADENZARIO  = MR.PG_OBBLIGAZIONE_SCADENZARIO And
            MR.CD_CDS                       = M.CD_CDS     AND
            MR.ESERCIZIO                    = M.ESERCIZIO  AND
            MR.PG_MANDATO                   = M.PG_MANDATO And
            M.STATO                        != 'A';
  Exception
    When No_Data_Found Then Null;
  End;

Return Nvl(VALORE, 0);

End;

Function IM_VINCOLI(INES            VOCE_F_SALDI_CDR_LINEA.ESERCIZIO%Type,
                    INESRES         VOCE_F_SALDI_CDR_LINEA.ESERCIZIO_RES%Type,
                    INCDR           VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA%Type,
                    INLA            VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA%Type,
                    INAPP           VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA%Type,
                    INGEST          VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE%Type,
                    INELVOCE        VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE%Type)
Return NUMBER Is
  VALORE    NUMBER;
Begin
  SELECT NVL (SUM (x.im_vincolo), 0)
  Into   VALORE
  FROM pdg_vincolo x
  WHERE x.esercizio <= INES
  AND x.esercizio_res = INESRES
  AND x.cd_centro_responsabilita = INCDR
  AND x.cd_linea_attivita = INLA
  AND x.ti_appartenenza = INAPP
  AND x.ti_gestione = INGEST
  AND x.cd_elemento_voce = INELVOCE
  AND x.fl_attivo = 'Y';

  Return Nvl(VALORE, 0);
End;
End CNRUTL002;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy