expsigladb.Package.CNRCTB000_BODY.sql Maven / Gradle / Ivy
--------------------------------------------------------
-- DDL for Package Body CNRCTB000
--------------------------------------------------------
CREATE OR REPLACE PACKAGE BODY "CNRCTB000" is
procedure checkEliminAssEvEv(aAss ass_ev_ev%rowtype) is
aNum number;
aEsercizio esercizio%rowtype;
aCds unita_organizzativa%rowtype;
begin
aNum:=0;
if -- Associzione n.1 Titolo di spesa CNR - > Titolo di spesa CDS
aAss.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
and aAss.ti_gestione = CNRCTB001.GESTIONE_SPESE
and aAss.ti_elemento_voce = CNRCTB001.TITOLO
and aAss.ti_appartenenza_coll = CNRCTB001.APPARTENENZA_CDS
and aAss.ti_gestione_coll = CNRCTB001.GESTIONE_SPESE
and aAss.ti_elemento_voce_coll = CNRCTB001.TITOLO then
select count(*) into aNum
from voce_f_saldi_cdr_linea
Where esercizio = aAss.esercizio And
ti_appartenenza = aAss.ti_appartenenza And
ti_gestione = aAss.ti_gestione And
cd_voce like aAss.cd_elemento_voce||'.%';
if aNum > 0 then
IBMERR001.RAISE_ERR_GENERICO('Associazione non eliminabile perchè utilizzata!');
end if;
end if;
aNum:=0;
if -- Associazione n.2 Capitolo di Entrata CNR -> Natura
aAss.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
and aAss.ti_gestione = CNRCTB001.GESTIONE_ENTRATE
and aAss.ti_elemento_voce = CNRCTB001.CAPITOLO
and aAss.cd_natura != '*'
then
select count(*) into aNum from pdg_preventivo_etr_det a, linea_attivita b where
a.esercizio=aAss.esercizio
and a.ti_appartenenza=aAss.ti_appartenenza
and a.ti_gestione=aAss.ti_gestione
and a.cd_elemento_voce = aAss.cd_elemento_voce
and a.cd_linea_attivita = b.cd_linea_attivita
and a.cd_centro_responsabilita = b.cd_centro_responsabilita
and b.cd_natura = aAss.cd_natura;
if aNum > 0 then
IBMERR001.RAISE_ERR_GENERICO('Associazione non eliminabile perchè utilizzata!');
end if;
end if;
aNum:=0;
begin
aCds:=CNRCTB020.GETCDSSACVALIDO(aAss.esercizio);
select * into aEsercizio from esercizio where
cd_cds = aCds.cd_unita_organizzativa
and esercizio = aAss.esercizio
and st_apertura_chiusura <> 'I';
if -- Associzione n.3 Capitolo di spesa CDS - > Capitolo di spesa CNR categoria 2
aAss.ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
and aAss.ti_gestione = CNRCTB001.GESTIONE_SPESE
and aAss.ti_elemento_voce = CNRCTB001.CAPITOLO
and aAss.ti_appartenenza_coll = CNRCTB001.APPARTENENZA_CNR
and aAss.ti_gestione_coll = CNRCTB001.GESTIONE_SPESE
and aAss.ti_elemento_voce_coll = CNRCTB001.CAPITOLO Then
select count(*) into aNum
from voce_f_saldi_cdr_linea a, voce_f b
where a.esercizio = aAss.esercizio And
b.esercizio = aAss.esercizio And
a.ti_appartenenza = aAss.ti_appartenenza_coll And
a.ti_gestione = aAss.ti_gestione_coll And
b.ti_appartenenza = aAss.ti_appartenenza_coll And
b.ti_gestione = aAss.ti_gestione_coll And
b.cd_titolo_capitolo = aAss.cd_elemento_voce_coll And
b.cd_voce = a.cd_voce And
b.cd_parte = CNRCTB001.PARTE1 And
b.cd_categoria = CNRCTB001.CATEGORIA2_SPESE_CNR;
if aNum > 0 then
IBMERR001.RAISE_ERR_GENERICO('Associazione non eliminabile perchè utilizzata!');
end if;
end if;
exception when NO_DATA_FOUND then
null;
end;
aNum:=0;
if -- Associazione n.4 Titolo spesa cds + Tipo di CDS + Natura -> Capitolo di entrata CDS
aAss.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
and aAss.ti_gestione = CNRCTB001.GESTIONE_SPESE
and aAss.ti_elemento_voce = CNRCTB001.TITOLO
and aAss.cd_natura != '*'
and aAss.cd_cds != '*'
and aAss.ti_appartenenza_coll = CNRCTB001.APPARTENENZA_CDS
and aAss.ti_gestione_coll = CNRCTB001.GESTIONE_ENTRATE
and aAss.ti_elemento_voce_coll = CNRCTB001.CAPITOLO then
Select count(*) into aNum
From voce_f_saldi_cdr_linea a, voce_f b, unita_organizzativa c
Where a.esercizio = aAss.esercizio And
b.esercizio = aAss.esercizio And
a.ti_appartenenza = aAss.ti_appartenenza_coll And
a.ti_gestione = aAss.ti_gestione_coll And
b.ti_appartenenza = aAss.ti_appartenenza_coll And
b.ti_gestione = aAss.ti_gestione_coll And
c.cd_unita_organizzativa = b.cd_cds And
c.cd_tipo_unita = aAss.cd_cds And -- in aAss c'è il tipo di cds
b.cd_natura = aAss.cd_natura And
b.cd_voce = a.cd_voce And
b.cd_parte = CNRCTB001.PARTE1 And
b.cd_categoria = CNRCTB001.CATEGORIA1_SPESE_CNR;
if aNum > 0 then
IBMERR001.RAISE_ERR_GENERICO('Associazione non eliminabile perchè utilizzata!');
end if;
end if;
end;
function getVoceRicFigAltroCDR(aEsercizio number) return elemento_voce%rowtype is
aEV elemento_voce%rowtype;
begin
select * into aEV from elemento_voce where
esercizio = aEsercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
and ti_gestione = CNRCTB001.GESTIONE_ENTRATE
and cd_elemento_voce = CNRCTB015.getVal01PerChiave(aEsercizio, 'ELEMENTO_VOCE_SPECIALE','RICAVO_FIGURATIVO_ALTRO_CDR');
return aEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto ricavo figurativo altro CDR non specificato in configurazione CNR per l''esercizio '||aEsercizio);
end;
function getVoceTFR(aEsercizio number) return elemento_voce%rowtype is
aEV elemento_voce%rowtype;
begin
select * into aEV from elemento_voce where
esercizio = aEsercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
and ti_gestione = CNRCTB001.GESTIONE_SPESE
and cd_elemento_voce = CNRCTB015.getVal01PerChiave(aEsercizio, 'ELEMENTO_VOCE_SPECIALE','TFR');
return aEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto Trattamento Fine Rapporto non specificato in configurazione CNR per l''esercizio '||aEsercizio);
end;
function getVoceTFRTEMPODET(aEsercizio number) return elemento_voce%rowtype is
aEV elemento_voce%rowtype;
begin
select * into aEV from elemento_voce where
esercizio = aEsercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
and ti_gestione = CNRCTB001.GESTIONE_SPESE
and cd_elemento_voce = CNRCTB015.getVal01PerChiave(aEsercizio, 'ELEMENTO_VOCE_SPECIALE','TFR_TEMPO_DET');
return aEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto Trattamento Fine Rapporto per personale a tempo determinato non specificato in configurazione CNR per l''esercizio '||aEsercizio);
end;
function getVoceONERICNR(aEsercizio number) return elemento_voce%rowtype is
aEV elemento_voce%rowtype;
begin
select * into aEV from elemento_voce where
esercizio = aEsercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
and ti_gestione = CNRCTB001.GESTIONE_SPESE
and cd_elemento_voce = CNRCTB015.getVal01PerChiave(aEsercizio, 'ELEMENTO_VOCE_SPECIALE','ONERI_CNR');
return aEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto Oneri Cnr non specificato in configurazione CNR per l''esercizio '||aEsercizio);
end;
function getVoceONERICNRTEMPODET(aEsercizio number) return elemento_voce%rowtype is
aEV elemento_voce%rowtype;
begin
select * into aEV from elemento_voce where
esercizio = aEsercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
and ti_gestione = CNRCTB001.GESTIONE_SPESE
and cd_elemento_voce = CNRCTB015.getVal01PerChiave(aEsercizio, 'ELEMENTO_VOCE_SPECIALE','ONERI_CNR_TEMPO_DET');
return aEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto Oneri Cnr per personale a tempo determinato non specificato in configurazione CNR per l''esercizio '||aEsercizio);
end;
Function TIPO_VAR_PDG (aEsercizio NUMBER, aNumVar NUMBER) Return VARCHAR2 Is
Tipo VARCHAR2(20);
conta_prel NUMBER;
CDS_PROP unita_organizzativa.cd_unita_organizzativa%Type;
CDR_PROP CDR%Rowtype;
CDS_DETTAGLI unita_organizzativa.cd_unita_organizzativa%Type;
STORNO_SPESA NUMBER;
STORNO_ENTRATA NUMBER;
CONTA_STO_SPE_CDR NUMBER;
CONTA_STO_SPE NUMBER;
CONTA_STO_ETR_CDR NUMBER;
CONTA_STO_ETR NUMBER;
CONTA_VAR_CDR NUMBER;
CONTA_VAR_TOT NUMBER;
CONTA_ERRORE NUMBER;
Begin
-- RECUPERO IL CDR PROPONENTE
Select CDR.*
Into CDR_PROP
From CDR, PDG_VARIAZIONE
Where PDG_VARIAZIONE.ESERCIZIO = aESERCIZIO And
PDG_VARIAZIONE.PG_VARIAZIONE_PDG = aNumVar And
PDG_VARIAZIONE.CD_CENTRO_RESPONSABILITA = CDR.CD_CENTRO_RESPONSABILITA;
-- RECUPERO IL CDS DEL CDR PROPONENTE
CDS_PROP := CNRUTL001.GETCDSFROMCDR(CDR_PROP.cd_centro_responsabilita);
-- IMPOSSIBILE STABILIRE VARIAZIONE NON DEF E NON APP
Select Count(*)
Into CONTA_ERRORE
From PDG_VARIAZIONE
WHERE ESERCIZIO = aESERCIZIO And
PG_VARIAZIONE_PDG = aNumVar And
STATO Not In ('PRD', 'APP');
If conta_ERRORE > 0 Then
tipo := 'NO TIPO';
Return TIPO;
End If;
-- PRELIEVO DAL FONDO
Select Count(*)
Into conta_prel
From PDG_VARIAZIONE
WHERE ESERCIZIO = aESERCIZIO And
PG_VARIAZIONE_PDG = aNumVar And
STATO In ('PRD', 'APP') And Exists
(Select ESERCIZIO, PG_VARIAZIONE_PDG
From ASS_PDG_VARIAZIONE_CDR
Where ESERCIZIO = aESERCIZIO And
PG_VARIAZIONE_PDG = aNumvar
Group By ESERCIZIO, PG_VARIAZIONE_PDG
Having Sum(IM_ENTRATA) != Sum(IM_SPESA));
If conta_prel > 0 Then
tipo := 'PREL_FON';
Return TIPO;
End If;
-- STORNI DI SPESA
Select Count(*)
Into STORNO_SPESA
From PDG_VARIAZIONE
WHERE ESERCIZIO = aESERCIZIO And
PG_VARIAZIONE_PDG = aNumVar And
STATO In ('PRD', 'APP') And Exists
(Select ESERCIZIO, PG_VARIAZIONE_PDG
From ASS_PDG_VARIAZIONE_CDR
Where ESERCIZIO = aESERCIZIO And
PG_VARIAZIONE_PDG = aNumvar
Group By ESERCIZIO, PG_VARIAZIONE_PDG
Having Sum(IM_ENTRATA) = Sum(IM_SPESA)) And Not Exists
(Select 1 FROM PDG_PREVENTIVO_ETR_DET
WHERE ESERCIZIO_PDG_VARIAZIONE = PDG_VARIAZIONE.ESERCIZIO
AND PG_VARIAZIONE_PDG = PDG_VARIAZIONE.PG_VARIAZIONE_PDG) And Exists
(Select 1 FROM PDG_PREVENTIVO_SPE_DET
WHERE ESERCIZIO_PDG_VARIAZIONE = PDG_VARIAZIONE.ESERCIZIO
AND PG_VARIAZIONE_PDG = PDG_VARIAZIONE.PG_VARIAZIONE_PDG);
If STORNO_SPESA > 0 Then
Begin
Select Distinct CNRUTL001.GETCDSFROMCDR(cd_centro_responsabilita)
Into CDS_DETTAGLI
From PDG_PREVENTIVO_SPE_DET
WHERE ESERCIZIO_PDG_VARIAZIONE = aESERCIZIO
AND PG_VARIAZIONE_PDG = aNumvar;
If CDS_DETTAGLI = CDS_PROP Then
CONTA_STO_SPE_CDR := 1;
Else
CONTA_STO_SPE := 1;
End If;
Exception
When Too_Many_Rows Then
CONTA_STO_SPE := 1;
End;
End If;
If CONTA_STO_SPE_CDR > 0 Then
tipo := 'STO_S_CDS';
Return TIPO;
Elsif CONTA_STO_SPE > 0 Then
tipo := 'STO_S_TOT';
Return TIPO;
End If;
-- STORNI DI ENTRATA
Select Count(*)
Into STORNO_ENTRATA
From PDG_VARIAZIONE
WHERE ESERCIZIO = aESERCIZIO And
PG_VARIAZIONE_PDG = aNumVar And
STATO In ('PRD', 'APP') And Exists
(Select ESERCIZIO, PG_VARIAZIONE_PDG
From ASS_PDG_VARIAZIONE_CDR
Where ESERCIZIO = aESERCIZIO And
PG_VARIAZIONE_PDG = aNumvar
Group By ESERCIZIO, PG_VARIAZIONE_PDG
Having Sum(IM_ENTRATA) = Sum(IM_SPESA)) And Not Exists
(Select 1 FROM PDG_PREVENTIVO_SPE_DET
WHERE ESERCIZIO_PDG_VARIAZIONE = PDG_VARIAZIONE.ESERCIZIO
AND PG_VARIAZIONE_PDG = PDG_VARIAZIONE.PG_VARIAZIONE_PDG) And Exists
(Select 1 FROM PDG_PREVENTIVO_ETR_DET
WHERE ESERCIZIO_PDG_VARIAZIONE = PDG_VARIAZIONE.ESERCIZIO
AND PG_VARIAZIONE_PDG = PDG_VARIAZIONE.PG_VARIAZIONE_PDG);
If STORNO_ENTRATA > 0 Then
Begin
Select Distinct CNRUTL001.GETCDSFROMCDR(cd_centro_responsabilita)
Into CDS_DETTAGLI
From PDG_PREVENTIVO_ETR_DET
WHERE ESERCIZIO_PDG_VARIAZIONE = aESERCIZIO
AND PG_VARIAZIONE_PDG = aNumvar;
If CDS_DETTAGLI = CDS_PROP Then
CONTA_STO_ETR_CDR := 1;
Else
CONTA_STO_ETR := 1;
End If;
Exception
When Too_Many_Rows Then
CONTA_STO_ETR := 1;
End;
End If;
If CONTA_STO_ETR_CDR > 0 Then
tipo := 'STO_E_CDS';
Return TIPO;
Elsif CONTA_STO_ETR > 0 Then
tipo := 'STO_E_TOT';
Return TIPO;
End If;
-- VARIAZIONI STESSO CDS E A CAVALLO
/* -- */
Begin
Begin
Select Distinct CNRUTL001.GETCDSFROMCDR(cd_centro_responsabilita)
Into CDS_DETTAGLI
From PDG_PREVENTIVO_ETR_DET
WHERE ESERCIZIO_PDG_VARIAZIONE = aESERCIZIO
And PG_VARIAZIONE_PDG = aNumvar;
Exception
When No_Data_Found Then
CDS_DETTAGLI := 1;
End;
If CDS_DETTAGLI = CDS_PROP Then
Select Distinct CNRUTL001.GETCDSFROMCDR(cd_centro_responsabilita)
Into CDS_DETTAGLI
From PDG_PREVENTIVO_SPE_DET
WHERE ESERCIZIO_PDG_VARIAZIONE = aESERCIZIO
And PG_VARIAZIONE_PDG = aNumvar;
If CDS_DETTAGLI = CDS_PROP Then
CONTA_VAR_CDR := 1;
Else
CONTA_VAR_TOT := 1;
End If;
Else
CONTA_VAR_TOT := 1;
End If;
Exception
When Too_Many_Rows Then
CONTA_VAR_TOT := 1;
End;
If CONTA_VAR_CDR > 0 Then
tipo := 'VAR_CDS';
Return TIPO;
Elsif CONTA_VAR_TOT > 0 Then
tipo := 'VAR_TOT';
Return TIPO;
End If;
/* -- */
tipo := 'VARIAZIONE';
Return TIPO;
End;
-- dato esercizio/numero della variazione PDG restituisce il tipo
Function DESCR_TIPO_VAR_PDG (Tipo VARCHAR) Return VARCHAR2 Is
Begin
If Tipo = 'STO_S_CDS' Then
RETURN DESCR_STO_S_CDS;
Elsif Tipo = 'STO_E_CDS' THEN
RETURN DESCR_STO_E_CDS;
Elsif Tipo = 'STO_S_TOT' THEN
RETURN DESCR_STO_S_TOT;
Elsif Tipo = 'STO_E_TOT' THEN
RETURN DESCR_STO_E_TOT;
Elsif Tipo = 'PREL_FON' THEN
Return DESCR_PREL_FON;
Elsif Tipo = 'VAR_CDS' THEN
RETURN DESCR_VAR_CDS;
Elsif Tipo = 'VAR_TOT' THEN
Return DESCR_VAR_TOT;
Elsif Tipo = 'NO TIPO' THEN
Return null;
End If;
End;
Procedure ins_ELEMENTO_VOCE (aDest ELEMENTO_VOCE%rowtype) is
begin
insert into ELEMENTO_VOCE (
FL_VOCE_SAC
,FL_VOCE_NON_SOGG_IMP_AUT
,FL_VOCE_PERSONALE
,FL_PARTITA_GIRO
,CD_CAPOCONTO_FIN
,ESERCIZIO
,CD_ELEMENTO_VOCE
,TI_APPARTENENZA
,TI_GESTIONE
,TI_ELEMENTO_VOCE
,CD_PARTE
,CD_PROPRIO_ELEMENTO
,DS_ELEMENTO_VOCE
,DUVA
,CD_ELEMENTO_PADRE
,UTUV
,DACR
,UTCR
,PG_VER_REC
,FL_LIMITE_ASS_OBBLIG
) values (
aDest.FL_VOCE_SAC
,aDest.FL_VOCE_NON_SOGG_IMP_AUT
,aDest.FL_VOCE_PERSONALE
,aDest.FL_PARTITA_GIRO
,aDest.CD_CAPOCONTO_FIN
,aDest.ESERCIZIO
,aDest.CD_ELEMENTO_VOCE
,aDest.TI_APPARTENENZA
,aDest.TI_GESTIONE
,aDest.TI_ELEMENTO_VOCE
,aDest.CD_PARTE
,aDest.CD_PROPRIO_ELEMENTO
,aDest.DS_ELEMENTO_VOCE
,aDest.DUVA
,aDest.CD_ELEMENTO_PADRE
,aDest.UTUV
,aDest.DACR
,aDest.UTCR
,aDest.PG_VER_REC
,aDest.FL_LIMITE_ASS_OBBLIG
);
end;
procedure ins_ASS_EV_FUNZ_TIPOCDS (aDest ASS_EV_FUNZ_TIPOCDS%rowtype) is
begin
insert into ASS_EV_FUNZ_TIPOCDS (
ESERCIZIO
,CD_CONTO
,CD_FUNZIONE
,CD_TIPO_UNITA
,DUVA
,UTUV
,DACR
,UTCR
,PG_VER_REC
) values (
aDest.ESERCIZIO
,aDest.CD_CONTO
,aDest.CD_FUNZIONE
,aDest.CD_TIPO_UNITA
,aDest.DUVA
,aDest.UTUV
,aDest.DACR
,aDest.UTCR
,aDest.PG_VER_REC
);
end;
procedure coie_ELEMENTO_VOCE (aEsDest esercizio%rowtype) is
begin
insert into ELEMENTO_VOCE (
ESERCIZIO
,TI_APPARTENENZA
,TI_GESTIONE
,CD_ELEMENTO_VOCE
,CD_PROPRIO_ELEMENTO
,TI_ELEMENTO_VOCE
,FL_LIMITE_ASS_OBBLIG
,FL_VOCE_PERSONALE
,FL_PARTITA_GIRO
,CD_CAPOCONTO_FIN
,FL_VOCE_SAC
,FL_VOCE_NON_SOGG_IMP_AUT
,CD_PARTE
,DS_ELEMENTO_VOCE
,DACR
,UTUV
,UTCR
,DUVA
,PG_VER_REC
,CD_ELEMENTO_PADRE
)
select * from (
select
aEsDest.esercizio ESERCIZIO
,TI_APPARTENENZA
,TI_GESTIONE
,CD_ELEMENTO_VOCE
,CD_PROPRIO_ELEMENTO
,TI_ELEMENTO_VOCE
,FL_LIMITE_ASS_OBBLIG
,FL_VOCE_PERSONALE
,FL_PARTITA_GIRO
,CD_CAPOCONTO_FIN
,FL_VOCE_SAC
,FL_VOCE_NON_SOGG_IMP_AUT
,CD_PARTE
,DS_ELEMENTO_VOCE
,aEsDest.dacr
,aEsDest.utuv
,aEsDest.utcr
,aEsDest.duva
,PG_VER_REC
,CD_ELEMENTO_PADRE
from ELEMENTO_VOCE
where esercizio = 0
order by esercizio, ti_appartenenza, ti_gestione, cd_elemento_voce
);
end;
Function TIPO_MANDATO (aCD_CDS VARCHAR2, aESERCIZIO NUMBER, aPG_MANDATO NUMBER, aESERCIZIO_OBBLIGAZIONE NUMBER,
aPG_OBBLIGAZIONE NUMBER, aPG_OBBLIGAZIONE_SCADENZARIO NUMBER, aCD_CDS_DOC_AMM VARCHAR2,
aCD_UO_DOC_AMM VARCHAR2, aESERCIZIO_DOC_AMM NUMBER, aCD_TIPO_DOCUMENTO_AMM VARCHAR2,
aPG_DOC_AMM NUMBER, aESERCIZIO_ORI_OBBLIGAZIONE NUMBER) Return VARCHAR2 Is
riga_intera mandato_riga%Rowtype;
Begin
Select *
Into riga_intera
From mandato_riga
Where CD_CDS = aCD_CDS and
ESERCIZIO = aESERCIZIO and
PG_MANDATO = aPG_MANDATO and
ESERCIZIO_OBBLIGAZIONE = aESERCIZIO_OBBLIGAZIONE and
PG_OBBLIGAZIONE = aPG_OBBLIGAZIONE and
PG_OBBLIGAZIONE_SCADENZARIO = aPG_OBBLIGAZIONE_SCADENZARIO and
CD_CDS_DOC_AMM = aCD_CDS_DOC_AMM and
CD_UO_DOC_AMM = aCD_UO_DOC_AMM and
ESERCIZIO_DOC_AMM = aESERCIZIO_DOC_AMM and
CD_TIPO_DOCUMENTO_AMM = aCD_TIPO_DOCUMENTO_AMM and
PG_DOC_AMM = aPG_DOC_AMM and
ESERCIZIO_ORI_OBBLIGAZIONE = aESERCIZIO_ORI_OBBLIGAZIONE;
Return tipo_mandato(riga_intera);
End;
Function TIPO_MANDATO (aMandatoRiga mandato_riga%Rowtype) Return VARCHAR2 Is
-- Restituisce la tipologia di mandato. I tipi contemplati sono:
-- Apertura Fondo economale
-- Incrementi Fondo economale
-- Reintegri Fondo economale
-- Versamenti CORI Istituti
-- Versamenti IVA Istituti Commerciale
-- Versamenti IVA Istituti Intra
-- Versamenti CORI Ente
-- Versamenti IVA Ente
-- Pagamento Doc. Amministrativo
conta NUMBER;
Begin
-- Apertura Fondo economale
Select count(0)
Into conta
From fondo_economale
Where CD_CDS = aMandatoRiga.cd_cds And
ESERCIZIO = aMandatoRiga.esercizio And
PG_MANDATO = aMandatoRiga.PG_MANDATO;
If conta > 0 Then
Return 'Apertura Fondo Economale';
End If;
-- Incrementi Fondo Economale
Select count(0)
Into conta
From ass_fondo_eco_mandato
Where CD_CDS_MANDATO = aMandatoRiga.cd_cds And
ESERCIZIO_MANDATO = aMandatoRiga.esercizio And
PG_MANDATO = aMandatoRiga.PG_MANDATO;
If conta > 0 Then
Return 'Incrementi Fondo Economale';
End If;
-- Reintegri Fondo economale
Declare
TIPO_man mandato.TI_mandato%Type;
Begin
Select Distinct MANDATO.TI_MANDATO
Into TIPO_MAN
From fondo_spesa, mandato
Where fondo_spesa.CD_CDS_MANDATO = aMandatoRiga.cd_cds And
fondo_spesa.ESERCIZIO_MANDATO = aMandatoRiga.esercizio And
fondo_spesa.PG_MANDATO = aMandatoRiga.PG_MANDATO And
fondo_spesa.CD_CDS_MANDATO = mandato.cd_cds And
fondo_spesa.ESERCIZIO_MANDATO = mandato.esercizio And
fondo_spesa.PG_MANDATO = mandato.PG_MANDATO;
If TIPO_MAN = 'R' Then
Return 'Regolarizzazione per chiusura Fondo Economale';
Else
Return 'Reintegri Fondo Economale';
End If;
Exception
When No_Data_Found Then Null;
End;
-- Regolarizzazione Contabile che genera Variazione al bilancio di servizio
Select count(0)
Into conta
From var_bilancio
Where CD_CDS_MANDATO = aMandatoRiga.cd_cds And
ESERCIZIO_MANDATO = aMandatoRiga.esercizio And
PG_MANDATO = aMandatoRiga.PG_MANDATO;
If conta > 0 Then
Return 'Mandato di Regolarizzazione contabile che ha generato Variazione al Bilancio di servizio';
End If;
/*
-- Liquidazione iva centro
Select count(0)
Into conta
From LIQUIDAZIONE_IVA_CENTRO
Where CD_CDS_OBB_ACCENTR = aMandatoRiga.CD_CDS And
ESERCIZIO_OBB_ACCENTR = aMandatoRiga.ESERCIZIO_OBBLIGAZIONE And
PG_OBB_ACCENTR = aMandatoRiga.PG_OBBLIGAZIONE And
ESERCIZIO_ORI_OBB_ACCENTR = aMandatoRiga.ESERCIZIO_ORI_OBBLIGAZIONE;
If conta > 0 Then
Return 'Mandato di Liquidazione IVA al centro';
End If;
*/
-- Liquidazione iva
Declare
CDS_LIQ LIQUIDAZIONE_IVA.CD_CDS%Type;
TIPO_LIQ LIQUIDAZIONE_IVA.TIPO_LIQUIDAZIONE%Type;
Begin
Select CD_CDS, TIPO_LIQUIDAZIONE
Into CDS_LIQ, TIPO_LIQ
From LIQUIDAZIONE_IVA
Where --CD_CDS_OBB_ACCENTR = aMandatoRiga.CD_CDS And
--ESERCIZIO_OBB_ACCENTR = aMandatoRiga.ESERCIZIO_OBBLIGAZIONE And
--PG_OBB_ACCENTR = aMandatoRiga.PG_OBBLIGAZIONE And
--ESERCIZIO_ORI_OBB_ACCENTR = aMandatoRiga.ESERCIZIO_ORI_OBBLIGAZIONE And
ESERCIZIO_DOC_AMM = aMandatoRiga.ESERCIZIO_DOC_AMM And
CD_TIPO_DOCUMENTO = aMandatoRiga.CD_TIPO_DOCUMENTO_AMM And
CD_CDS_DOC_AMM = aMandatoRiga.CD_CDS_DOC_AMM And
CD_UO_DOC_AMM = aMandatoRiga.CD_UO_DOC_AMM And
PG_DOC_AMM = aMandatoRiga.PG_DOC_AMM And
STATO = 'D';
If TIPO_LIQ = 'C' Then
If CDS_LIQ = CNRCTB020.GETCDCDSENTE (aMandatoRiga.esercizio) Then
Return 'Mandato di Versamento Definitivo IVA Commerciale';
Else
Return 'Mandato di Trasferimento IVA Commerciale';
End If;
Elsif TIPO_LIQ = 'I' Then
If CDS_LIQ = CNRCTB020.GETCDCDSENTE (aMandatoRiga.esercizio) Then
Return 'Mandato di Versamento Definitivo IVA Istituzionale Intra UE';
Else
Return 'Mandato di Trasferimento IVA Istituzionale Intra UE';
End If;
Elsif TIPO_LIQ = 'S' Then
If CDS_LIQ = CNRCTB020.GETCDCDSENTE (aMandatoRiga.esercizio) Then
Return 'Mandato di Versamento Definitivo IVA Istituzionale San Marino senza IVA';
Else
Return 'Mandato di Trasferimento IVA Istituzionale San Marino senza IVA';
End If;
End If;
Exception
When No_Data_Found Then Null;
End;
-- LIQUID_GRUPPO_CENTRO
Declare
DA_ES_PREC CHAR(1);
Begin
Select DA_ESERCIZIO_PRECEDENTE
Into DA_ES_PREC
From LIQUID_GRUPPO_CENTRO
Where CD_CDS_OBB_ACCENTR = aMandatoRiga.CD_CDS And
ESERCIZIO_OBB_ACCENTR = aMandatoRiga.ESERCIZIO_OBBLIGAZIONE And
ESERCIZIO_ORI_OBB_ACCENTR = aMandatoRiga.ESERCIZIO_ORI_OBBLIGAZIONE And
PG_OBB_ACCENTR = aMandatoRiga.PG_OBBLIGAZIONE;
If DA_ES_PREC = 'N' Then
Return 'Mandato di Versamento Definitivo Contributi e Ritenute';
Elsif DA_ES_PREC = 'Y' Then
Return 'Mandato di Versamento Definitivo Contributi e Ritenute da esercizio precedente';
End If;
Exception
When No_Data_Found Then Null;
End;
-- LIQUID_GRUPPO_CORI
Select count(0)
Into conta
From LIQUID_GRUPPO_CORI
Where CD_CDS_DOC = aMandatoRiga.CD_CDS And
ESERCIZIO_DOC = aMandatoRiga.ESERCIZIO And
PG_DOC = aMandatoRiga.PG_MANDATO; /* And
CD_CDS_OBB_ACCENTR = aMandatoRiga.CD_CDS And
ESERCIZIO_OBB_ACCENTR = aMandatoRiga.ESERCIZIO_OBBLIGAZIONE And
PG_OBB_ACCENTR = aMandatoRiga.PG_OBBLIGAZIONE And
ESERCIZIO_ORI_OBB_ACCENTR = aMandatoRiga.ESERCIZIO_ORI_OBBLIGAZIONE;*/
If conta > 0 Then
Return 'Mandato di Trasferimento Contributi e Ritenute';
End If;
-- Mandato Principale Stipendi
Select count(0)
Into conta
From STIPENDI_COFI
Where CD_CDS_MANDATO = aMandatoRiga.cd_cds And
ESERCIZIO_MANDATO = aMandatoRiga.esercizio And
PG_MANDATO = aMandatoRiga.PG_MANDATO;
If conta > 0 Then
Return 'Mandato Principale Stipendi';
End If;
-- STIPENDI_COFI_OBB
Select count(0)
Into conta
From STIPENDI_COFI_OBB
Where CD_CDS_OBBLIGAZIONE = aMandatoRiga.CD_CDS And
ESERCIZIO_OBBLIGAZIONE = aMandatoRiga.ESERCIZIO_OBBLIGAZIONE And
ESERCIZIO_ORI_OBBLIGAZIONE = aMandatoRiga.ESERCIZIO_ORI_OBBLIGAZIONE And
PG_OBBLIGAZIONE = aMandatoRiga.PG_OBBLIGAZIONE;
If conta > 0 Then
Return 'Mandato Stipendi';
End If;
-- Compensi per Conguagli
Select Count(0)
Into conta
From CONGUAGLIO C , CONTRIBUTO_RITENUTA CR
Where CR.CD_CDS_OBBLIGAZIONE = aMandatoRiga.CD_CDS And
CR.ESERCIZIO_OBBLIGAZIONE = aMandatoRiga.ESERCIZIO_OBBLIGAZIONE And
CR.ESERCIZIO_ORI_OBBLIGAZIONE = aMandatoRiga.ESERCIZIO_ORI_OBBLIGAZIONE And
CR.PG_OBBLIGAZIONE = aMandatoRiga.PG_OBBLIGAZIONE And
CR.CD_CDS = C.CD_CDS_COMPENSO And
CR.CD_UNITA_ORGANIZZATIVA = C.CD_UO_COMPENSO And
CR.ESERCIZIO = C.ESERCIZIO_COMPENSO And
CR.PG_COMPENSO = C.PG_COMPENSO;
If conta > 0 Then
Return 'Mandato Conguaglio Fiscale';
End If;
-- MANDATI DI TRASFERIMENTO
Select Count(0)
Into conta
From MANDATO
Where CD_CDS = aMandatoRiga.CD_CDS And
ESERCIZIO = aMandatoRiga.ESERCIZIO And
PG_MANDATO = aMandatoRiga.PG_MANDATO And
TI_MANDATO = CNRCTB038.TI_MAN_ACCRED;
If CONTA > 0 Then
Return 'Mandato di Accreditamento';
End If;
-- aperture fondi non ufficiali
If aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = cnrctb100.TI_GEN_APERTURA_FONDO Then
Select Count(0)
Into conta
From fondo_economale
Where CD_CDS = aMandatoRiga.cd_cds And
ESERCIZIO = aMandatoRiga.esercizio And
PG_MANDATO = aMandatoRiga.PG_MANDATO;
If conta = 0 Then
Return 'Apertura Fondo Economale senza Fondo associato';
End If;
End If;
-- MANDATI DI RESTITUZIONE
Select Count(0)
Into CONTA
From LIQUID_GRUPPO_CENTRO_COMP
Where (CD_CDS_ACC_ACCENTR, ESERCIZIO_ACC_ACCENTR, ESERCIZIO_ORI_ACC_ACCENTR, PG_ACC_ACCENTR) In
(Select CD_CDS, ESERCIZIO, ESERCIZIO_ORI_ACCERTAMENTO, PG_ACCERTAMENTO
From ASS_OBB_ACR_PGIRO
Where CD_CDS = aMandatoRiga.CD_CDS And
ESERCIZIO = aMandatoRiga.ESERCIZIO_OBBLIGAZIONE And
ESERCIZIO_ORI_OBBLIGAZIONE = aMandatoRiga.ESERCIZIO_ORI_OBBLIGAZIONE And
PG_OBBLIGAZIONE = aMandatoRiga.PG_OBBLIGAZIONE);
If CONTA > 0 Then
Return 'Mandato di restituzione crediti Versamento CORI';
End If;
-- mandati su GEN_CORA_S su pertite di giro (compensi senza calcoli)
If aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_GEN_CORI_ACC_SPESA Then
Select Count(0)
Into CONTA
From ASS_OBB_ACR_PGIRO
Where CD_CDS = aMandatoRiga.CD_CDS And
ESERCIZIO = aMandatoRiga.ESERCIZIO_OBBLIGAZIONE And
ESERCIZIO_ORI_OBBLIGAZIONE = aMandatoRiga.ESERCIZIO_ORI_OBBLIGAZIONE And
PG_OBBLIGAZIONE = aMandatoRiga.PG_OBBLIGAZIONE;
If CONTA > 0 Then
Return 'Mandato su Compensi senza calcoli su Partite di Giro';
Else
Return 'Mandato su Compensi senza calcoli NON su Partite di Giro';
End If;
End If;
/************************************************************************************************************/
/**** ATTENZIONE !!!!!!!!!!!! QUESTA "RETURN" VA SEMPRE PER ULTIMA !!!!!!!!!!!! *******/
/************************************************************************************************************/
If aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_FATTURA_PASSIVA Then
Return 'Mandato di pagamento di Fattura Passiva';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_FATTURA_ATTIVA Then
Return 'Mandato di pagamento di Fattura Attiva';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_GENERICO_ENTRATA Then
Return 'Mandato di pagamento di Generico di Entrata';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_GENERICO_SPESA Then
Return 'Mandato di pagamento di Generico di Spesa';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_GENERICO_TRASF_E Then
Return 'Mandato di pagamento di Trasferimento di Entrata';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_GENERICO_TRASF_S Then
Return 'Mandato di pagamento di Trasferimento di Spesa';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_COMPENSO Then
Return 'Mandato di pagamento di Compenso';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_MISSIONE Then
Return 'Mandato di pagamento di Missione';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_ANTICIPO Then
Return 'Mandato di pagamento di Anticipo';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_RIMBORSO Then
Return 'Mandato di pagamento di Rimborso';
Elsif aMandatoRiga.CD_TIPO_DOCUMENTO_AMM = CNRCTB100.TI_AUTOFATTURA Then
Return 'Mandato di pagamento di Autofattura';
Else
Return 'Mandato di pagamento di '||aMandatoRiga.CD_TIPO_DOCUMENTO_AMM;
End If;
End;
End;
© 2015 - 2024 Weber Informatics LLC | Privacy Policy