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

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

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

  CREATE OR REPLACE PACKAGE BODY "CNRCTB010" is

 function getNextCodice(tipologia char,aLA linea_attivita%rowtype) return varchar2 is
  cdLA varchar2(10);
  aLaTemp linea_attivita%rowtype;
  aLC lunghezza_chiavi%rowtype;
 begin
  select max(cd_linea_attivita) into cdLA from linea_attivita where
            CD_CENTRO_RESPONSABILITA=aLA.cd_centro_responsabilita
		and cd_linea_attivita like tipologia||'%'
		and (
		  (tipologia=TI_TIPO_LA_PROPRIA) and (IBMUTL001.isNumeric(substr(cd_linea_attivita,2,length(cd_linea_attivita)-1)) = 'Y')
		 or
          (tipologia=TI_TIPO_LA_SISTEMA)
		);
  if cdLA is null then
   -- Calcola la lunghezza della parte numerica del codice della linea di attivita
   -- per generare la linea 0
   select * into aLC from lunghezza_chiavi
   where
        esercizio = 0
    and tabella = 'LINEA_ATTIVITA'
	and attributo = 'CD_LINEA_ATTIVITA'
	and livello = 1;
    cdLA:=tipologia||(LPAD('1',aLC.lunghezza - 1,'0'));
	return cdLA;
  end if;

  select * into aLaTemp from linea_attivita where
            CD_CENTRO_RESPONSABILITA=aLA.cd_centro_responsabilita
		and cd_linea_attivita = cdLA
	for update nowait;

  cdLA:=tipologia||LPAD(TO_CHAR(TO_NUMBER(substr(cdLa,2,LENGTH(cdLA)-1)) + 1),LENGTH(cdLA)-1,'0');
  return cdLA;
 end;

 procedure copiaRisultati(aLADestinazione linea_attivita%rowtype, aLAOrigine linea_attivita%rowtype) is
 begin
  insert into risultato (
     CD_CENTRO_RESPONSABILITA
    ,CD_LINEA_ATTIVITA
    ,PG_RISULTATO
    ,CD_TIPO_RISULTATO
    ,DS_RISULTATO
    ,QUANTITA
    ,DACR
    ,UTCR
    ,DUVA
    ,UTUV
    ,PG_VER_REC
  ) select
     aLADestinazione.CD_CENTRO_RESPONSABILITA
    ,aLADestinazione.CD_LINEA_ATTIVITA
    ,PG_RISULTATO
    ,CD_TIPO_RISULTATO
    ,DS_RISULTATO
    ,QUANTITA
    ,DACR
    ,UTCR
    ,DUVA
    ,UTUV
    ,PG_VER_REC
   from risultato where
       cd_centro_responsabilita = aLAOrigine.cd_centro_responsabilita
   and cd_linea_attivita = aLAOrigine.cd_linea_attivita;
 end;

 procedure aggiornaAssTipoLaCdrOnCreaCdr(aCdr cdr%rowtype) is
  aAss ass_tipo_la_Cdr%rowtype;
 begin
  -- Se si tratta di CDR del UO di tipo ENTE nessun aggiornamento e necessario
  if CNRCTB020.isCDRENTE(aCdr) then
   return;
  end if;

  for aTipo in (
   select * from
	tipo_linea_attivita
   where
	    ti_tipo_la = TI_TIPO_LA_PROPRIA
	 or ti_tipo_la = TI_TIPO_LA_SISTEMA
  ) loop
   aAss.cd_tipo_linea_attivita:=aTipo.cd_tipo_linea_attivita;
   aAss.cd_centro_responsabilita:=aCdr.cd_centro_responsabilita;
   aAss.dacr:=aCdr.dacr;
   aAss.utcr:=aCdr.utcr;
   aAss.duva:=aCdr.dacr;
   aAss.utuv:=aCdr.utcr;
   aAss.pg_ver_rec:=1;
   ins_ASS_TIPO_LA_CDR(aAss);
  end loop;
 end;

 function creaLASAUOP(aEs number, aCdCdr varchar2, aUser varchar2) return linea_attivita%rowtype is
  aLASAUOP linea_attivita%rowtype;
  aTSNow date;
 begin
  aTSNow:=sysdate;
  aLASAUOP.esercizio_inizio:=aEs;
  aLASAUOP.esercizio_fine:=CNRCTB008.ESERCIZIO_INFINITO;
  aLASAUOP.cd_centro_responsabilita:=aCdCdr;
  aLASAUOP.cd_tipo_linea_attivita:=TI_LA_SAUOP;
  aLASAUOP.cd_funzione:='01';
  aLASAUOP.cd_natura:='1';
  aLASAUOP.ds_linea_attivita:='Spese per costi altrui';
  aLASAUOP.ti_gestione:=TI_GESTIONE_SPESE;
  aLASAUOP.DACR:=aTSNow;
  aLASAUOP.UTCR:=aUser;
  aLASAUOP.DUVA:=aTSNow;
  aLASAUOP.UTUV:=aUser;
  aLASAUOP.PG_VER_REC:=1;
  aLASAUOP.cd_linea_attivita:=getNextCodice(TI_TIPO_LA_SISTEMA,aLASAUOP);
  INS_LINEA_ATTIVITA(aLASAUOP);
  return aLASAUOP;
 end;

 function creaInsiemeScrArea(aEs number, aCdCdrArea varchar2, aUser varchar2) return insieme_la%rowtype is
  aInsieme insieme_la%rowtype;
  aTempInsieme insieme_la%rowtype;
  aTSNow date;
  aNewCod number;
 begin
  aTSNow:=sysdate;
  select nvl(max(to_number(cd_insieme_la)),0) into aNewCod from insieme_la -- la numerazione degli insiemi e comune all'ente
   where cd_centro_responsabilita = aCdCdrArea; -- Richiesta CNR 129E Numerazione per cdr
  begin -- lettura lockante dell'ultimo insieme inserito
   select * into aTempInsieme from insieme_la where
        cd_insieme_la = aNewCod
    and cd_centro_responsabilita = aCdCdrArea -- Richiesta CNR 129E Numerazione per cdr
   for update nowait;
  exception when NO_DATA_FOUND then
   null;
  end;
  aInsieme.CD_INSIEME_LA:=lpad(to_char(aNewCod+1),LUNGHEZZA_COD_INSIEME_LA,'0');
  aInsieme.DS_INSIEME_LA:=DESC_INS_SCR_N5_AREA;
  aInsieme.CD_CENTRO_RESPONSABILITA:=aCdCdrArea;
  aInsieme.DACR:=aTSNow;
  aInsieme.UTCR:=aUser;
  aInsieme.DUVA:=aTSNow;
  aInsieme.UTUV:=aUser;
  aInsieme.PG_VER_REC:=1;
  ins_INSIEME_LA(aInsieme);
  return aInsieme;
 end;

 function getInsiemeScrArea(aEs number, aCdCdrArea varchar2) return insieme_la%rowtype is
  aInsieme insieme_la%rowtype;
 begin
  begin
   select * into aInsieme from insieme_la a where cd_centro_responsabilita = aCdCdrArea and exists (
    select 1 from linea_attivita
	 where
    	  cd_centro_responsabilita = a.cd_centro_responsabilita
	  and cd_tipo_linea_attivita = TI_LA_CSSAC
	  and cd_natura = '5'
	  and cd_insieme_la = a.cd_insieme_la
   );
  exception when NO_DATA_FOUND then
   IBMERR001.RAISE_ERR_GENERICO('Insieme per collegamento con linea di entrata CSSAC nat. 5 - scarico verso AREA, non trovata');
  end;
  return aInsieme;
 end;

 function getLASAUOP(aEs number, aCdCdr varchar2) return linea_attivita%rowtype is
  aLA linea_attivita%rowtype;
 begin
  select * into aLA from linea_attivita where
       cd_centro_responsabilita = aCdCdr
   and cd_tipo_linea_attivita = TI_LA_SAUOP;
  return aLA;
 end;

procedure ins_LINEA_ATTIVITA (aDest LINEA_ATTIVITA%rowtype) is
  begin
   insert into LINEA_ATTIVITA (
     CD_INSIEME_LA
    ,TI_GESTIONE
    ,CD_CENTRO_RESPONSABILITA
    ,CD_LINEA_ATTIVITA
    ,CD_TIPO_LINEA_ATTIVITA
    ,DENOMINAZIONE
    ,CD_GRUPPO_LINEA_ATTIVITA
    ,CD_FUNZIONE
    ,CD_NATURA
    ,DS_LINEA_ATTIVITA
    ,DACR
    ,UTCR
    ,DUVA
    ,UTUV
    ,PG_VER_REC
    ,CD_CDR_COLLEGATO
    ,CD_LA_COLLEGATO
    ,ESERCIZIO_FINE
    ,ESERCIZIO_INIZIO
    ,PG_PROGETTO
    ,FL_LIMITE_ASS_OBBLIG
    ,cd_cofog
    ,cd_programma
    ,cd_missione
   ) values (
     aDest.CD_INSIEME_LA
    ,aDest.TI_GESTIONE
    ,aDest.CD_CENTRO_RESPONSABILITA
    ,aDest.CD_LINEA_ATTIVITA
    ,aDest.CD_TIPO_LINEA_ATTIVITA
    ,aDest.DENOMINAZIONE
    ,aDest.CD_GRUPPO_LINEA_ATTIVITA
    ,aDest.CD_FUNZIONE
    ,aDest.CD_NATURA
    ,aDest.DS_LINEA_ATTIVITA
    ,aDest.DACR
    ,aDest.UTCR
    ,aDest.DUVA
    ,aDest.UTUV
    ,aDest.PG_VER_REC
    ,aDest.CD_CDR_COLLEGATO
    ,aDest.CD_LA_COLLEGATO
    ,aDest.ESERCIZIO_FINE
    ,aDest.ESERCIZIO_INIZIO
    ,aDest.PG_PROGETTO
    ,Nvl(aDest.FL_LIMITE_ASS_OBBLIG, 'N')
    ,aDest.cd_cofog
    ,aDest.cd_programma
    ,aDest.cd_missione
    );
 end;

procedure ins_ASS_LINEA_ATTIVITA_ESER (aDest ASS_LINEA_ATTIVITA_ESERCIZIO%rowtype) is
  begin
   insert into ASS_LINEA_ATTIVITA_ESERCIZIO (
     ESERCIZIO
    ,CD_CENTRO_RESPONSABILITA
    ,CD_LINEA_ATTIVITA
    ,PG_PROGETTO
    ,ESERCIZIO_FINE
    ,DACR
    ,UTCR
    ,DUVA
    ,UTUV
    ,PG_VER_REC
   ) values (
     aDest.ESERCIZIO
    ,aDest.CD_CENTRO_RESPONSABILITA
    ,aDest.CD_LINEA_ATTIVITA
    ,aDest.PG_PROGETTO
    ,aDest.ESERCIZIO_FINE
    ,aDest.DACR
    ,aDest.UTCR
    ,aDest.DUVA
    ,aDest.UTUV
    ,aDest.PG_VER_REC);
 end;

procedure ins_ASS_LA_CLASS_VOCI (aDest ASS_LA_CLASS_VOCI%rowtype) Is
Begin
Insert Into ASS_LA_CLASS_VOCI
(CD_CENTRO_RESPONSABILITA,
CD_LINEA_ATTIVITA,
CD_CDR_ORIGINE,
CD_NATURA_ORIGINE,
ID_CLASS_ORIGINE,
DS_ASSOCIAZIONE,
UTCR,
DACR,
UTUV,
DUVA,
PG_VER_REC,
cd_cofog)
Values
(aDest.CD_CENTRO_RESPONSABILITA,
aDest.CD_LINEA_ATTIVITA,
aDest.CD_CDR_ORIGINE,
aDest.CD_NATURA_ORIGINE,
aDest.ID_CLASS_ORIGINE,
aDest.DS_ASSOCIAZIONE,
aDest.UTCR,
aDest.DACR,
aDest.UTUV,
aDest.DUVA,
aDest.PG_VER_REC,
aDest.cd_cofog);
End;

 procedure ins_TIPO_LINEA_ATTIVITA (aDest TIPO_LINEA_ATTIVITA%rowtype) is
  begin
   insert into TIPO_LINEA_ATTIVITA (
     CD_TIPO_LINEA_ATTIVITA
    ,DACR
    ,UTCR
    ,DUVA
    ,UTUV
    ,PG_VER_REC
    ,DS_TIPO_LINEA_ATTIVITA
    ,TI_TIPO_LA
    ,CD_NATURA
    ,CD_FUNZIONE
    ,TI_GESTIONE
   ) values (
     aDest.CD_TIPO_LINEA_ATTIVITA
    ,aDest.DACR
    ,aDest.UTCR
    ,aDest.DUVA
    ,aDest.UTUV
    ,aDest.PG_VER_REC
    ,aDest.DS_TIPO_LINEA_ATTIVITA
    ,aDest.TI_TIPO_LA
    ,aDest.CD_NATURA
    ,aDest.CD_FUNZIONE
    ,aDest.TI_GESTIONE
    );
 end;

 procedure ins_ASS_TIPO_LA_CDR (aDest ASS_TIPO_LA_CDR%rowtype) is
 begin
   insert into ASS_TIPO_LA_CDR (
     CD_TIPO_LINEA_ATTIVITA
    ,CD_CENTRO_RESPONSABILITA
    ,DACR
    ,UTCR
    ,DUVA
    ,UTUV
    ,PG_VER_REC
   ) values (
     aDest.CD_TIPO_LINEA_ATTIVITA
    ,aDest.CD_CENTRO_RESPONSABILITA
    ,aDest.DACR
    ,aDest.UTCR
    ,aDest.DUVA
    ,aDest.UTUV
    ,aDest.PG_VER_REC
 );
 end;

 procedure ins_INSIEME_LA (aDest INSIEME_LA%rowtype) is
  begin
   insert into INSIEME_LA (
     CD_INSIEME_LA
    ,DACR
    ,UTCR
    ,DUVA
    ,UTUV
    ,PG_VER_REC
    ,DS_INSIEME_LA
    ,CD_CENTRO_RESPONSABILITA
   ) values (
     aDest.CD_INSIEME_LA
    ,aDest.DACR
    ,aDest.UTCR
    ,aDest.DUVA
    ,aDest.UTUV
    ,aDest.PG_VER_REC
    ,aDest.DS_INSIEME_LA
    ,aDest.CD_CENTRO_RESPONSABILITA
    );
 end;
end;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy