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

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

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

  CREATE OR REPLACE PACKAGE BODY "CNRCTB040" is

 procedure creaAccertamentoPgiroInt(
  isControlloBloccante boolean,
  isTrunc boolean,
  aAcc IN OUT accertamento%rowtype,
  aAccScad IN OUT accertamento_scadenzario%rowtype,
  aObb OUT obbligazione%rowtype,
  aObbScad OUT obbligazione_scadenzario%rowtype,
  aDtScadenza date
 ) is
  aNumeratore number;
  aDettScadC accertamento_scad_voce%rowtype;
  aDettScadCList CNRCTB035.scadVoceListE;
  aDettScadenza obbligazione_scad_voce%rowtype;
  aDettScadenzaList CNRCTB035.scadVoceListS;
  aEV elemento_voce%rowtype;
  aEVContr elemento_voce%rowtype;
  aAssPGiro ass_partita_giro%rowtype;
  aCdCdr varchar2(30);
  aCdLa varchar2(10);
  aVoceF voce_f%rowtype;
  aVoceFContr voce_f%rowtype;
  aCdTerzoContropartita number(10);
  aCDS unita_organizzativa%rowtype;
  aCDSOrigine unita_organizzativa%rowtype;
  aAssDocPGiro ass_obb_acr_pgiro%rowtype;
  aTipoDocContr varchar2(10);
  aSaldoCdrLineaAcc voce_f_saldi_cdr_linea%Rowtype;
  aGAE_dedicata_CDS  linea_attivita%Rowtype;
  parametriCnr parametri_cnr%rowtype;
 begin
  if aAcc.fl_pgiro is null or aAcc.fl_pgiro <> 'Y' then
   IBMERR001.RAISE_ERR_GENERICO('Documento non su partita di giro');
  end if;
  if aAcc.cd_tipo_documento_cont is null or aAcc.cd_tipo_documento_cont not in (CNRCTB018.TI_DOC_ACC_PGIRO, CNRCTB018.TI_DOC_ACC,
                                                                                CNRCTB018.TI_DOC_ACC_PGIRO_RES,CNRCTB018.TI_DOC_ACC_RES) then
   IBMERR001.RAISE_ERR_GENERICO('L''accertamento che si sta tentando di generare ('||aAcc.cd_cds||'/'||aAcc.esercizio||'/'||aAcc.esercizio_originale||'/'||aAcc.pg_accertamento||
') ha una tipologia ('||aAcc.cd_tipo_documento_cont||') non compatibile.');
  end if;
  begin
   select * into aEV from elemento_voce where
        esercizio = aAcc.esercizio
	and ti_gestione = aAcc.ti_gestione
	and ti_appartenenza = aAcc.ti_appartenenza
    and cd_elemento_voce = aAcc.cd_elemento_voce
    and fl_partita_giro = 'Y';
  exception when NO_DATA_FOUND then
   IBMERR001.RAISE_ERR_GENERICO('Voce del piano partita di giro di entrata non trovata');
  end;
 	aCDS:=CNRCTB020.GETCDSVALIDO(aAcc.esercizio, aAcc.cd_cds);
  aCDSOrigine:=CNRCTB020.GETCDSVALIDO(aAcc.esercizio, aAcc.cd_cds_origine);

  if(parametriCnr.fl_nuovo_pdg ='N' ) then
		  begin
		   select * into aVoceF from voce_f where
		        esercizio = aEV.esercizio
			and ti_gestione = aEV.ti_gestione
			and ti_appartenenza = aEV.ti_appartenenza
			and cd_voce = aAcc.cd_voce
			and fl_mastrino='Y';
		  exception when NO_DATA_FOUND then
		   IBMERR001.RAISE_ERR_GENERICO('Conto finanziario partita di giro di entrata non trovato');
		  end;
	  if aCDS.cd_tipo_unita = CNRCTB020.TIPO_ENTE and aEV.ti_appartenenza = CNRCTB001.APPARTENENZA_CDS then
	   IBMERR001.RAISE_ERR_GENERICO('La voce del piano specificata non è una voce del piano dell''ENTE');
	  end if;

	  if aCDS.cd_tipo_unita <> CNRCTB020.TIPO_ENTE and aEV.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR then
	   IBMERR001.RAISE_ERR_GENERICO('La voce del piano specificata non è una voce del piano di CDS');
	  end if;
 end if;
  if aAcc.esercizio != aAcc.esercizio_competenza then
   IBMERR001.RAISE_ERR_GENERICO('Generazione automatica di accertamento in esercizi futuri non supportata!');
  end if;
  If aObb.cd_tipo_documento_cont != CNRCTB018.TI_DOC_ACC_PGIRO_RES or aAcc.PG_accertamento is null Then
    aNumeratore    := CNRCTB018.getNextNumDocCont(aAcc.cd_tipo_documento_cont, aAcc.esercizio, aAcc.cd_cds, aAcc.utcr);
  else
    aNumeratore    := aAcc.PG_accertamento;
  end if;
  --Se l'esercizio originale non è valorizzato lo inizializzo con quello dell'esercizio
  If (aAcc.esercizio_originale Is Null) Then
     aAcc.esercizio_originale:=aAcc.esercizio;
  End If;

  aAcc.PG_accertamento:=aNumeratore;
  aAcc.dt_registrazione:=trunc(aAcc.dt_registrazione);
  aAcc.duva:=aAcc.dacr;
  aAcc.utuv:=aAcc.utcr;
  aAcc.pg_ver_rec:=1;
  CNRCTB035.INS_ACCERTAMENTO(aAcc);
  CNRCTB035.aggiornaSaldoDettScad(aAcc,aAcc.im_accertamento,false,aAcc.utcr,aAcc.dacr);

  aAccScad.cd_cds := aAcc.cd_cds;
  aAccScad.esercizio := aAcc.esercizio;
  aAccScad.esercizio_originale := aAcc.esercizio_originale;
  aAccScad.pg_accertamento:=aAcc.pg_accertamento;
  aAccScad.pg_accertamento_scadenzario:=1;
  aAccScad.dt_scadenza_emissione_fattura := TRUNC(nvl(aDtScadenza,aAcc.dt_registrazione));
  aAccScad.dt_scadenza_incasso := TRUNC(nvl(aDtScadenza,aAcc.dt_registrazione));
  aAccScad.ds_scadenza := aAcc.ds_accertamento;
  aAccScad.im_scadenza := aAcc.im_accertamento;
  aAccScad.im_associato_doc_amm := 0;
  aAccScad.im_associato_doc_contabile := 0;
  aAccScad.dacr:=aAcc.dacr;
  aAccScad.utcr:=aAcc.utcr;
  aAccScad.duva:=aAcc.dacr;
  aAccScad.utuv:=aAcc.utcr;
  aAccScad.pg_ver_rec:=1;

  If CNRCTB015.UtilizzaGAEdedicataPgiroCDS (aAcc.esercizio, aAcc.CD_CDS_ORIGINE, CNRCTB001.GESTIONE_ENTRATE) Then
    aGAE_dedicata_CDS := CNRCTB015.get_LINEA_PGIRO_cds(aAcc.esercizio, aAcc.CD_CDS_ORIGINE, CNRCTB001.GESTIONE_ENTRATE);
    aCdCdr := aGAE_dedicata_CDS.CD_CENTRO_RESPONSABILITA;
    aCdLa  := aGAE_dedicata_CDS.CD_LINEA_ATTIVITA;
  Else
    aCdCdr:=CNRCTB015.GETVAL01PERCHIAVE(CNRCTB035.LA_SPECIALE,CNRCTB035.LA_ENTRATA_ENTE);
    aCdLa:=CNRCTB015.GETVAL02PERCHIAVE(CNRCTB035.LA_SPECIALE,CNRCTB035.LA_ENTRATA_ENTE);
  End If;

  aDettScadC.cd_cds := aAcc.cd_cds;
  aDettScadC.esercizio := aAcc.esercizio;
  aDettScadC.esercizio_originale := aAcc.esercizio_originale;
  aDettScadC.pg_accertamento:=aAcc.pg_accertamento;
  aDettScadC.pg_accertamento_scadenzario:=1;
  aDettScadC.cd_centro_responsabilita := aCdCdr;
  aDettScadC.cd_linea_attivita := aCdLa;
  aDettScadC.im_voce := aAcc.im_accertamento;
  aDettScadC.dacr:=aAcc.dacr;
  aDettScadC.utcr:=aAcc.utcr;
  aDettScadC.duva:=aAcc.dacr;
  aDettScadC.utuv:=aAcc.utcr;
  aDettScadC.pg_ver_rec:=1;
  aDettScadCList(1):=aDettScadC;
  -- L'aggiornamento viene eseguito all'interno della procedura VOCE_F_SALDI_CDR_LINEA M.S. 19/12/2005
  CNRCTB035.creaScadAccertamento(aAcc,aAccScad,1,aDettScadCList);

  -- gestione contropartita

  aCdTerzoContropartita:=CNRCTB015.GETIM01PERCHIAVE(CNRCTB035.TERZO_SPECIALE,CNRCTB035.CODICE_DIVERSI_PGIRO);

  begin
   select * into aAssPgiro from ass_partita_giro where
        esercizio = aAcc.esercizio
    and ti_appartenenza = aAcc.ti_appartenenza
    and ti_gestione = aAcc.ti_gestione
    and cd_voce = aAcc.cd_elemento_voce;
  exception when NO_DATA_FOUND then
   IBMERR001.RAISE_ERR_GENERICO('Conto di partita di giro associato non trovato');
  end;
  begin
   select * into aEVContr from elemento_voce where
        esercizio = aAssPgiro.esercizio
	and ti_gestione = aAssPgiro.ti_gestione_clg
	and ti_appartenenza = aAssPgiro.ti_appartenenza_clg
    and cd_elemento_voce = aAssPgiro.cd_voce_clg
    and fl_partita_giro = 'Y';
  exception when NO_DATA_FOUND then
   IBMERR001.RAISE_ERR_GENERICO('Voce del piano partita di giro di controparte spesa non trovato');
  end;
	if(parametriCnr.fl_nuovo_pdg ='N' ) then
		  begin
		   select * into aVoceFContr from voce_f where
		        esercizio = aEVContr.esercizio
			and ti_gestione = aEvContr.ti_gestione
			and ti_appartenenza = aEVContr.ti_appartenenza
			and cd_titolo_capitolo = aEVContr.cd_elemento_voce
			and fl_mastrino='Y';
		  exception when NO_DATA_FOUND then
		   IBMERR001.RAISE_ERR_GENERICO('Conto finanziario partita di giro di controparte spesa non trovato');
		  end;
	end if;
  If aCDS.cd_tipo_unita = CNRCTB020.TIPO_ENTE Then

   aObb.cd_cds_origine := aAcc.cd_cds;
   aObb.cd_uo_origine := aAcc.cd_unita_organizzativa;

   If aAcc.esercizio = aAcc.esercizio_originale Then
     aTipoDocContr := CNRCTB018.TI_DOC_IMP;
   Elsif aAcc.esercizio > aAcc.esercizio_originale Then
     aTipoDocContr := CNRCTB018.TI_DOC_IMP_RES;
   End If;
  Else

   aObb.cd_cds_origine := aAcc.cd_cds_origine;
   aObb.cd_uo_origine := aAcc.cd_uo_origine;

   If aAcc.esercizio = aAcc.esercizio_originale Then
     aTipoDocContr := CNRCTB018.TI_DOC_OBB_PGIRO;
     aNumeratore:=CNRCTB018.getNextNumDocCont(aTipoDocContr, aAcc.esercizio, aAcc.cd_cds, aAcc.utcr);
   Elsif aAcc.esercizio > aAcc.esercizio_originale Then
     aTipoDocContr := CNRCTB018.TI_DOC_OBB_PGIRO_RES;
     aNumeratore:=CNRCTB018.getNextNumDocCont(aTipoDocContr, aAcc.esercizio_originale, aAcc.cd_cds, aAcc.utcr);
   End If;

  End if;


  aObb.cd_cds := aAcc.cd_cds;
  aObb.esercizio := aAcc.esercizio;
  aObb.esercizio_competenza := aAcc.esercizio_competenza;
  aObb.cd_tipo_documento_cont:=aTipoDocContr;
  aObb.cd_unita_organizzativa := aAcc.cd_unita_organizzativa;
  aObb.esercizio_originale := aAcc.esercizio_originale;
  aObb.PG_OBBLIGAZIONE:=aNumeratore;
  aObb.dt_registrazione := aAcc.dt_registrazione;
  aObb.ds_obbligazione := aAcc.ds_accertamento;
  aObb.cd_terzo := aCdTerzoContropartita;
  aObb.ti_gestione:=aEVContr.ti_gestione;
  aObb.ti_appartenenza:=aEVContr.ti_appartenenza;
  aObb.cd_elemento_voce:=aEVContr.cd_elemento_voce;
  if isTrunc then
   aObb.im_obbligazione:=0;
   aObb.stato_obbligazione:=CNRCTB035.STATO_STORNATO;
   aObb.dt_cancellazione:=trunc(aAcc.dacr);
  else
   aObb.im_obbligazione:=aAcc.im_accertamento;
   aObb.stato_obbligazione:=CNRCTB035.STATO_DEFINITIVO;
  end if;
  aObb.im_costi_anticipati:=0;
  aObb.fl_calcolo_automatico:='N';
  aObb.fl_spese_costi_altrui:='N';
  aObb.fl_pgiro:='Y';
  aObb.riportato:='N';
  aObb.dacr:=aAcc.dacr;
  aObb.utcr:=aAcc.utcr;
  aObb.duva:=aAcc.dacr;
  aObb.utuv:=aAcc.utcr;
  aObb.pg_ver_rec:=1;

  CNRCTB035.INS_OBBLIGAZIONE(aObb);

  aObbScad.cd_cds := aObb.cd_cds;
  aObbScad.esercizio := aObb.esercizio;
  aObbScad.dt_scadenza := aAccScad.dt_scadenza_emissione_fattura;
  aObbScad.ds_scadenza := aObb.ds_obbligazione;
  aObbScad.im_scadenza := aObb.im_obbligazione;
  aObbScad.im_associato_doc_amm := 0;
  aObbScad.im_associato_doc_contabile := 0;
  aObbScad.dacr:=aObb.dacr;
  aObbScad.utcr:=aObb.utcr;
  aObbScad.duva:=aObb.dacr;
  aObbScad.utuv:=aObb.utcr;
  aObbScad.pg_ver_rec:=1;

  If CNRCTB015.UtilizzaGAEdedicataPgiroCDS (aObb.esercizio, aObb.CD_CDS_ORIGINE, CNRCTB001.GESTIONE_SPESE) Then
    aGAE_dedicata_CDS := CNRCTB015.get_LINEA_PGIRO_cds(aObb.esercizio, aObb.CD_CDS_ORIGINE, CNRCTB001.GESTIONE_SPESE);
    aCdCdr := aGAE_dedicata_CDS.CD_CENTRO_RESPONSABILITA;
    aCdLa  := aGAE_dedicata_CDS.CD_LINEA_ATTIVITA;
  Else
    aCdCdr := CNRCTB015.GETVAL01PERCHIAVE(CNRCTB035.LA_SPECIALE,CNRCTB035.LA_SPESA_ENTE);
    aCdLa  := CNRCTB015.GETVAL02PERCHIAVE(CNRCTB035.LA_SPECIALE,CNRCTB035.LA_SPESA_ENTE);
  End If;



  aDettScadenza.cd_cds := aObb.cd_cds;
  aDettScadenza.esercizio := aObb.esercizio;
  aDettScadenza.ti_appartenenza := aObb.ti_appartenenza;
  aDettScadenza.ti_gestione := aObb.ti_gestione;
  if(parametriCnr.fl_nuovo_pdg ='N' ) then
  	aDettScadenza.cd_voce := aVoceFContr.cd_voce;
  else
  	aDettScadenza.cd_voce := aEVContr.cd_elemento_voce;
  end if;
  aDettScadenza.cd_centro_responsabilita := aCdCdr;
  aDettScadenza.cd_linea_attivita := aCdLa;
  aDettScadenza.im_voce := aObb.im_obbligazione;
  aDettScadenza.dacr:=aObb.dacr;
  aDettScadenza.utcr:=aObb.utcr;
  aDettScadenza.duva:=aObb.dacr;
  aDettScadenza.utuv:=aObb.utcr;
  aDettScadenza.pg_ver_rec:=1;
  aDettScadenzaList(1):=aDettScadenza;
  CNRCTB035.creaScadObbligazione(aObb,aObbScad,1,aDettScadenzaList,false);

  aAssDocPGiro.cd_cds:=aObb.cd_cds;
  aAssDocPGiro.esercizio:=aObb.esercizio;
  aAssDocPGiro.esercizio_ori_obbligazione:=aObb.esercizio_originale;
  aAssDocPGiro.pg_obbligazione:=aObb.pg_obbligazione;
  aAssDocPGiro.esercizio_ori_accertamento:=aAcc.esercizio_originale;
  aAssDocPGiro.pg_accertamento:=aAcc.pg_accertamento;
  aAssDocPGiro.ti_origine:=CNRCTB001.GESTIONE_ENTRATE;
  aAssDocPGiro.dacr:=aObb.dacr;
  aAssDocPGiro.utcr:=aObb.utcr;
  aAssDocPGiro.duva:=aObb.dacr;
  aAssDocPGiro.utuv:=aObb.utcr;
  aAssDocPGiro.pg_ver_rec:=1;
  CNRCTB035.INS_ASS_OBB_ACR_PGIRO(aAssDocPGiro);
 end;

 procedure creaAccertamentoPgiro(
  isControlloBloccante boolean,
  aAcc IN OUT accertamento%rowtype,
  aAccScad IN OUT accertamento_scadenzario%rowtype,
  aObb OUT obbligazione%rowtype,
  aObbScad OUT obbligazione_scadenzario%rowtype,
  aDtScadenza date
 ) is
 begin
  creaAccertamentoPgiroInt(
   isControlloBloccante,
   false, -- no trunc controparte
   aAcc,
   aAccScad,
   aObb,
   aObbScad,
   aDtScadenza);
 end;

 procedure creaAccertamentoPgiroTronc(
  isControlloBloccante boolean,
  aAcc IN OUT accertamento%rowtype,
  aAccScad IN OUT accertamento_scadenzario%rowtype,
  aObb OUT obbligazione%rowtype,
  aObbScad OUT obbligazione_scadenzario%rowtype,
  aDtScadenza date
 ) is
 begin
  creaAccertamentoPgiroInt(
   isControlloBloccante,
   true, -- trunc controparte
   aAcc,
   aAccScad,
   aObb,
   aObbScad,
   aDtScadenza);
 end;



 procedure creaAccertamento(
  isControlloBloccante boolean,
  aAcc IN OUT accertamento%rowtype,
  aScadenza1 in out accertamento_scadenzario%rowtype,
  aDettScadenza1 in out CNRCTB035.scadVoceListE
 ) is
  aFakeAccScad accertamento_scadenzario%rowtype;
 begin
  creaAccertamento(
   isControlloBloccante,
   aAcc,
   aScadenza1,
   aDettScadenza1,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E,
   aFakeAccScad,
   CNRCTB035.LISTA_SCAD_VOCE_VUOTA_E
 );
 end;

 -- Prepara un dettaglio di scadenza di accertamento CNR per CDS arricchito nel caso siano specificate linee di attività comuni

 procedure preparaDettaglioScadenza(aDettScadenza in out CNRCTB035.scadVoceListE, aEV elemento_voce%rowtype) is
  aLA linea_attivita%rowtype;
  aTipoLa tipo_linea_attivita%rowtype;
  aNewScadVoce accertamento_scad_voce%rowtype;
 begin
  for i in 1..aDettScadenza.count loop
   begin
    Select *
    Into   aLA
    From   linea_attivita a
    Where  cd_centro_responsabilita = aDettScadenza(i).cd_centro_responsabilita And
           cd_linea_attivita        = aDettScadenza(i).cd_linea_attivita And
           esercizio_inizio        <= Nvl(aDettScadenza(i).ESERCIZIO_ORIGINALE, aDettScadenza(i).ESERCIZIO) And
           esercizio_fine          >= Nvl(aDettScadenza(i).ESERCIZIO_ORIGINALE, aDettScadenza(i).ESERCIZIO) And
           exists (Select 1
	           From   ass_ev_ev
	           Where  esercizio = aDettScadenza(i).esercizio And
	                  ti_gestione = aEV.ti_gestione And
	                  ti_appartenenza = aEV.ti_appartenenza And
                          cd_elemento_voce = aEV.cd_elemento_voce And
                          cd_natura = a.cd_natura);
   exception when NO_DATA_FOUND then
    IBMERR001.RAISE_ERR_GENERICO('Linea di attività: '||aDettScadenza(i).cd_linea_attivita||' non valida o con natura non compatibile con la voce del piano: '||aEV.cd_elemento_voce||' per l''esercizio '||aDettScadenza(i).ESERCIZIO_ORIGINALE);
   end;
   select * into aTipoLa from tipo_linea_attivita where
       cd_tipo_linea_attivita = aLA.cd_tipo_linea_attivita;

   -- Estrae tutte le linee di attività comuni finalizzate ai cdr
   if aTipoLa.ti_tipo_la = CNRCTB010.TI_TIPO_LA_COMUNE then
    for aLACom in (select * from linea_attivita where
	     cd_centro_responsabilita != aDettScadenza(i).cd_centro_responsabilita
	 and cd_tipo_linea_attivita = aLA.cd_tipo_linea_attivita
	 and esercizio_inizio <= aDettScadenza(i).esercizio_originale
	 and esercizio_fine >= aDettScadenza(i).esercizio_originale) loop
         aNewScadVoce:=aDettScadenza(i);
	 aNewScadVoce.im_voce:=0;
	 aNewScadVoce.cd_centro_responsabilita:=aLACom.cd_centro_responsabilita;
	 aDettScadenza(aDettScadenza.count+1):=aNewScadVoce;
	end loop;
   end if;
  end loop;
 end;


 procedure creaAccertamento(
  isControlloBloccante boolean,
  aAcc IN OUT accertamento%rowtype,
  aScadenza1 in out accertamento_scadenzario%rowtype,
  aDettScadenza1 in out CNRCTB035.scadVoceListE,
  aScadenza2 in out accertamento_scadenzario%rowtype,
  aDettScadenza2 in out CNRCTB035.scadVoceListE,
  aScadenza3 in out accertamento_scadenzario%rowtype,
  aDettScadenza3 in out CNRCTB035.scadVoceListE,
  aScadenza4 in out accertamento_scadenzario%rowtype,
  aDettScadenza4 in out CNRCTB035.scadVoceListE,
  aScadenza5 in out accertamento_scadenzario%rowtype,
  aDettScadenza5 in out CNRCTB035.scadVoceListE,
  aScadenza6 in out accertamento_scadenzario%rowtype,
  aDettScadenza6 in out CNRCTB035.scadVoceListE,
  aScadenza7 in out accertamento_scadenzario%rowtype,
  aDettScadenza7 in out CNRCTB035.scadVoceListE,
  aScadenza8 in out accertamento_scadenzario%rowtype,
  aDettScadenza8 in out CNRCTB035.scadVoceListE,
  aScadenza9 in out accertamento_scadenzario%rowtype,
  aDettScadenza9 in out CNRCTB035.scadVoceListE,
  aScadenza10 in out accertamento_scadenzario%rowtype,
  aDettScadenza10 in out CNRCTB035.scadVoceListE
 ) is
  aNumeratore number;
  aEV elemento_voce%rowtype;
  aCDSSAC unita_organizzativa%rowtype;
  aUOENTE unita_organizzativa%rowtype;
 Begin
  if aAcc.cd_tipo_documento_cont not in (CNRCTB018.TI_DOC_ACC) then
   IBMERR001.RAISE_ERR_GENERICO('L''accertamento che si sta tentando di generare ('||aAcc.cd_cds||'/'||aAcc.esercizio||'/'||aAcc.esercizio_originale||'/'||aAcc.pg_accertamento||
') ha una tipologia ('||aAcc.cd_tipo_documento_cont||') non compatibile.');
  end if;
  if aAcc.fl_pgiro is null or aAcc.fl_pgiro = 'Y' then
   IBMERR001.RAISE_ERR_GENERICO('L''accertamento che si sta tentando di generare ('||aAcc.cd_cds||'/'||aAcc.esercizio||'/'||aAcc.esercizio_originale||'/'||aAcc.pg_accertamento||
') è una partita di giro e quindi non è non compatibile.');
  end if;

  if aAcc.esercizio != aAcc.esercizio_competenza then
   IBMERR001.RAISE_ERR_GENERICO('Generazione automatica di accertamenti in esercizi futuri non supportata');
  end if;

  aUOENTE:=CNRCTB020.GETUOENTE(aAcc.esercizio);

  if
       aAcc.cd_cds is null
	or aAcc.cd_cds_origine is null
	or aAcc.cd_unita_organizzativa is null
	or aAcc.cd_uo_origine is null
	or aAcc.cd_cds <> aUOENTE.cd_unita_padre
	or aAcc.cd_unita_organizzativa <> aUOENTE.cd_unita_organizzativa
	or aAcc.cd_uo_origine = aAcc.cd_unita_organizzativa
	or aAcc.cd_cds_origine = aAcc.cd_cds
	or aAcc.ti_gestione <> CNRCTB001.GESTIONE_ENTRATE
	or aAcc.ti_appartenenza <> CNRCTB001.APPARTENENZA_CNR
  then
   IBMERR001.RAISE_ERR_GENERICO('Documento non compatibile (d)');
  end if;

  if aAcc.esercizio != aAcc.esercizio_competenza then
   IBMERR001.RAISE_ERR_GENERICO('Generazione automatica di accertamento in esercizi futuri non supportata');
  end if;

  aCDSSAC:=CNRCTB020.GETCDSSACVALIDO(aAcc.esercizio);

  -- Estrazione della voce del piano

  begin
   select * into aEV from elemento_voce where
        esercizio = aAcc.esercizio
	and ti_gestione = aAcc.ti_gestione
	and ti_appartenenza = aAcc.ti_appartenenza
    and cd_elemento_voce = aAcc.cd_elemento_voce
    and fl_partita_giro = 'N'
	and (
	    fl_voce_sac = 'N'
	 or fl_voce_sac = 'Y' and (aCDSSAC.cd_unita_organizzativa = aAcc.cd_cds_origine)
	);
  exception when NO_DATA_FOUND then
   IBMERR001.RAISE_ERR_GENERICO('Conto di partita di giro non trovato');
  end;

  -- Check di compatibilità tra natura linea di attività ed elemento voce

  preparaDettaglioScadenza(aDettScadenza1,aEV);
  preparaDettaglioScadenza(aDettScadenza2,aEV);
  preparaDettaglioScadenza(aDettScadenza3,aEV);
  preparaDettaglioScadenza(aDettScadenza4,aEV);
  preparaDettaglioScadenza(aDettScadenza5,aEV);
  preparaDettaglioScadenza(aDettScadenza6,aEV);
  preparaDettaglioScadenza(aDettScadenza7,aEV);
  preparaDettaglioScadenza(aDettScadenza8,aEV);
  preparaDettaglioScadenza(aDettScadenza9,aEV);
  preparaDettaglioScadenza(aDettScadenza10,aEV);

  aNumeratore:=CNRCTB018.getNextNumDocCont(aAcc.cd_tipo_documento_cont, aAcc.esercizio, aAcc.cd_cds, aAcc.utcr);

  --Se l'esercizio originale non è valorizzato lo inizializzo con quello dell'esercizio
  If (aAcc.esercizio_originale Is Null) Then
     aAcc.esercizio_originale:=aAcc.esercizio;
  End If;

  aAcc.PG_accertamento:=aNumeratore;
  aAcc.dt_registrazione:=trunc(aAcc.dt_registrazione);
  aAcc.duva:=aAcc.dacr;
  aAcc.utuv:=aAcc.utcr;
  aAcc.pg_ver_rec:=1;
  CNRCTB035.INS_accertamento(aAcc);
  CNRCTB035.aggiornaSaldoDettScad(aAcc,aAcc.im_accertamento,isControlloBloccante,aAcc.utcr,aAcc.dacr);
  -- L'aggiornamento viene eseguito all'interno della procedura VOCE_F_SALDI_CDR_LINEA M.S. 19/12/2005
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza1,1,aDettScadenza1);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza2,2,aDettScadenza2);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza3,3,aDettScadenza3);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza4,4,aDettScadenza4);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza5,5,aDettScadenza5);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza6,6,aDettScadenza6);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza7,7,aDettScadenza7);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza8,8,aDettScadenza8);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza9,9,aDettScadenza9);
  CNRCTB035.creaScadAccertamento(aAcc,aScadenza10,10,aDettScadenza10);
 end;
end;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy