expsigladb.Package.CNRCTB270_BODY.sql Maven / Gradle / Ivy
--------------------------------------------------------
-- DDL for Package Body CNRCTB270
--------------------------------------------------------
CREATE OR REPLACE PACKAGE BODY "CNRCTB270" AS
FUNCTION getDescLiquidazione
(aLiquidIva LIQUIDAZIONE_IVA%ROWTYPE)
RETURN VARCHAR2 IS
aDescrizione VARCHAR2(500);
aTipologia VARCHAR2(100);
BEGIN
aDescrizione:='LIQUIDAZIONE IVA ';
IF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC THEN
aTipologia:='ATTIVITA''COMMERCIALI ';
ELSIF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTINTR THEN
aTipologia:='ATTIVITA'' ISTITUZIONALI BENI INTRA_UE ';
ELSIF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTSMSI THEN
aTipologia:='ATTIVITA'' ISTITUZIONALI SAN MARINO SENZA IVA ';
ELSIF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTSNR Then
aTipologia:='ATTIVITA'' ISTITUZIONALI SERVIZI NON RESIDENTI ';
ELSIF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTSPLIT Then
aTipologia:='ATTIVITA'' ISTITUZIONALI SPLIT PAYMENT ';
END IF;
aDescrizione:=aDescrizione || aTipologia ||
'CDS: ' || aLiquidIva.cd_cds || ' UO: ' || aLiquidIva.cd_unita_organizzativa || ' ' ||
'PERIODO: '||to_char(aLiquidIva.dt_inizio,'DD/MM/YYYY') || ' A ' ||
to_char(aLiquidIva.dt_fine,'DD/MM/YYYY');
RETURN aDescrizione;
END getDescLiquidazione;
Function getCDRUOVERSIVA(aEs INTEGER)
Return v_cdr_valido%Rowtype
Is
aUOVERSIVA unita_organizzativa%Rowtype;
aCDRUOVERSIVA v_cdr_valido%Rowtype;
Begin
-- Estrazione dell'UO di versamento IVA
aUOVERSIVA:=CNRCTB020.getUOVersIVA(aEs);
If aUOVERSIVA.cd_unita_organizzativa Is Null Then
IBMERR001.RAISE_ERR_GENERICO('Uo Versamento Iva non presente nella tabella di configurazione CNR.');
End If;
Select * Into aCDRUOVERSIVA
From v_cdr_valido
Where esercizio = aEs
And cd_unita_organizzativa = aUOVERSIVA.cd_unita_organizzativa
And To_Number(cd_proprio_cdr)=0;
Return aCDRUOVERSIVA;
Exception
When NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('CDR di responsabile dell''UO '||aUOVERSIVA.cd_unita_organizzativa||' non trovato');
End getCDRUOVERSIVA;
Function getLASPECVERSIVA(aEs INTEGER, aCDRUO cdr%Rowtype)
Return v_linea_attivita_valida%Rowtype
Is
codLASpecVersIva linea_attivita.cd_linea_attivita%Type;
aLASpecVersIva v_linea_attivita_valida%Rowtype;
Begin
-- Estrazione della linea di attività comune da utilizzare per la creazione della variazione
codLASpecVersIva := CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA);
If codLASpecVersIva Is Null Then
IBMERR001.RAISE_ERR_GENERICO('Codice Gae Versamento Iva non presente nella tabella di configurazione CNR.');
End If;
Select a.* Into aLASpecVersIva
From v_linea_attivita_valida a
Where a.esercizio = aEs
And a.cd_centro_responsabilita = aCDRUO.cd_centro_responsabilita
And a.cd_linea_attivita = codLASpecVersIva
And a.ti_gestione = CNRCTB001.GESTIONE_SPESE
And Exists (Select 1 From tipo_linea_attivita b
Where b.cd_tipo_linea_attivita = a.cd_tipo_linea_attivita
And b.ti_tipo_la = CNRCTB010.TI_TIPO_LA_COMUNE);
Return aLASpecVersIva;
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Linea di attività comune per '||cnrutil.getLabelObbligazioneMin()||' versamento IVA non trovata ('||
aCDRUO.cd_centro_responsabilita||'/'||codLASpecVersIva||') per l''esercizio '||to_char(aEs));
End getLASPECVERSIVA;
Function getLASPECVERSIVASAC(aEs INTEGER, aCDRUOVERSIVA v_cdr_valido%Rowtype)
Return v_linea_attivita_valida%Rowtype
Is
codLASpecVersIvaSAC linea_attivita.cd_linea_attivita%Type;
aLASpecVersIvaSac v_linea_attivita_valida%Rowtype;
Begin
-- Estrazione della linea di attività comune da utilizzare per la creazione della variazione
codLASpecVersIvaSAC := CNRCTB015.GETVAL01PERCHIAVE(aEs,LINEA_ATTIVITA_SPECIALE,LA_VER_IVA_SAC);
If codLASpecVersIvaSAC Is Null Then
IBMERR001.RAISE_ERR_GENERICO('Codice Gae Versamento Iva per SAC non presente nella tabella di configurazione CNR.');
End If;
Select a.* into aLASpecVersIvaSac
From v_linea_attivita_valida a
Where a.esercizio = aEs
And a.cd_centro_responsabilita = aCDRUOVERSIVA.cd_centro_responsabilita
And a.cd_linea_attivita = codLASpecVersIvaSAC
And a.ti_gestione = CNRCTB001.GESTIONE_SPESE;
Return aLASpecVersIvaSac;
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Linea di attività per '||cnrutil.getLabelObbligazioneMin()||' versamento IVA non trovata ('||
aCDRUOVERSIVA.cd_centro_responsabilita||'/'||codLASpecVersIvaSAC||') per l''esercizio '||to_char(aEs));
End getLASPECVERSIVASAC;
Function getVoceIvaCommerciale(aEs INTEGER)
Return elemento_voce%Rowtype
Is
aEV elemento_voce%Rowtype;
Begin
Select * into aEV
From elemento_voce
Where esercizio = aEs
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_gestione = CNRCTB001.GESTIONE_SPESE
And ti_elemento_voce = CNRCTB001.CAPITOLO
And cd_elemento_voce = CNRCTB015.GETVAL01PERCHIAVE(aEs,ELEMENTO_VOCE_SPECIALE,VOCE_VERSAMENTO_IVA);
Return aEV;
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Voce del piano da utilizzare per il versamento dell''IVA non trovata');
End getVoceIvaCommerciale;
Function getVoceIvaIstituzionale(aEs INTEGER, nuovoPdg VARCHAR2, tipo_liquid VARCHAR2)
Return elemento_voce%Rowtype
Is
aAssPgiro ass_partita_giro%Rowtype;
aEV elemento_voce%Rowtype;
Begin
Begin
Select * into aAssPgiro
From ass_partita_giro
Where esercizio = aEs
And ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And ((nuovoPdg = 'N' And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS) Or
(nuovoPdg = 'Y' And ti_appartenenza = CNRCTB001.APPARTENENZA_CNR))
And ((cd_voce = CNRCTB015.GETVAL01PERCHIAVE(aEs,ELEMENTO_VOCE_SPECIALE,VOCE_IVA_FATTURA_ESTERA) and
tipo_liquid !=CNRCTB250.TI_LIQ_IVA_ISTSPLIT ) or
(cd_voce = CNRCTB015.GETVAL02PERCHIAVE(aEs,ELEMENTO_VOCE_SPECIALE,VOCE_IVA_FATTURA_ESTERA) and
tipo_liquid = CNRCTB250.TI_LIQ_IVA_ISTSPLIT));
Exception
When NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario di spesa di partita di giro per versamento IVA locale non trovato');
End;
Begin
Select * into aEV
From elemento_voce
Where esercizio = aEs
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_gestione = CNRCTB001.GESTIONE_SPESE
And ti_elemento_voce = CNRCTB001.CAPITOLO
And cd_elemento_voce = aAssPgiro.cd_voce_clg;
Exception
When NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Voce del piano da utilizzare per il versamento dell''IVA non trovata');
End;
Return aEV;
End getVoceIvaIstituzionale;
Function getVoceIvaIstituzionaleEnte(aEs INTEGER, aCdCoriIva VARCHAR2, nuovoPdg VARCHAR2)
Return elemento_voce%Rowtype
Is
aAssCoriFin ass_tipo_cori_ev%Rowtype;
aAssPgiro ass_partita_giro%Rowtype;
aEV elemento_voce%Rowtype;
Begin
Begin
Select * into aAssCoriFin
From ass_tipo_cori_ev
Where cd_contributo_ritenuta = aCdCoriIva
And esercizio = aEs
And ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And ((nuovoPdg = 'N' And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS) Or
(nuovoPdg = 'Y' And ti_appartenenza = CNRCTB001.APPARTENENZA_CNR))
And ti_ente_percepiente = 'E';
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario di partita di giro per versamento IVA non trovato');
End;
Begin
Select * Into aAssPgiro
From ass_partita_giro
Where esercizio = aAssCoriFin.esercizio
And ti_gestione = aAssCoriFin.ti_gestione
And ti_appartenenza = aAssCoriFin.ti_appartenenza
And cd_voce = aAssCoriFin.cd_elemento_voce;
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario di spesa di partita di giro per versamento IVA centro non trovato');
End;
Begin
Select * into aEV
From elemento_voce
Where esercizio = aEs
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_gestione = CNRCTB001.GESTIONE_SPESE
And ti_elemento_voce = CNRCTB001.CAPITOLO
And cd_elemento_voce = aAssPgiro.cd_voce_clg;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Voce del piano da utilizzare per il versamento dell''IVA non trovata');
End;
Return aEV;
End getVoceIvaIstituzionaleEnte;
Procedure generaVariazioneBilancio
(aCdCds VARCHAR2,
aEs NUMBER,
aCdUo VARCHAR2,
aEV elemento_voce%Rowtype,
aLiquidIva LIQUIDAZIONE_IVA%ROWTYPE,
aTSNow date,
aUser VARCHAR2) Is
aCDRUO cdr%rowtype;
aCDRUOVERSIVA v_cdr_valido%rowtype;
aLASpecVersIva v_linea_attivita_valida%Rowtype;
aLASpecVersIvaSac v_linea_attivita_valida%Rowtype;
aIvaResiduaDaVersare number :=0;
pRigaLiquidVariazione number := 0;
aEsDefault number;
Function getSaldi(aEs NUMBER, aEsRes NUMBER, aCdCdr VARCHAR2, aCdGae VARCHAR2, aTiApp VARCHAR2, aTiGes VARCHAR2, aCdVoce VARCHAR2)
Return Voce_f_saldi_cdr_linea%Rowtype
Is
recSaldi voce_f_saldi_cdr_linea%Rowtype;
Begin
Begin
Select * Into recSaldi
From voce_f_saldi_cdr_linea
Where esercizio = aEs
And esercizio_res = aEsRes
And cd_centro_responsabilita = aCdCdr
And cd_linea_attivita = aCdGae
And ti_appartenenza = aTiApp
And ti_gestione = aTiGes
And cd_elemento_voce = aCdVoce
And cd_voce = aCdVoce
for update nowait;
Exception
When No_Data_Found Then
null;
End;
Return recSaldi;
End;
Function getDisp(aEs NUMBER, aEsRes NUMBER, aCdCdr VARCHAR2, aCdGae VARCHAR2, aTiApp VARCHAR2, aTiGes VARCHAR2, aCdVoce VARCHAR2) Return Number
Is
p_impdisp voce_f_saldi_cdr_linea.IM_STANZ_INIZIALE_A1%type := 0;
Begin
Begin
Select importo_disponibile Into p_impdisp
From v_assestato
Where esercizio = aEs
And esercizio_res = aEsRes
And cd_centro_responsabilita = aCdCdr
And cd_linea_attivita = aCdGae
And ti_appartenenza = aTiApp
And ti_gestione = aTiGes
And cd_elemento_voce = aCdVoce
And cd_voce = aCdVoce;
Exception
When No_Data_Found Then
p_impdisp := 0;
End;
Return p_impdisp;
End;
Function getOrCreateSaldi(aEs NUMBER, aEsRes NUMBER, aCdCdr VARCHAR2, aCdGae VARCHAR2, aTiApp VARCHAR2, aTiGes VARCHAR2, aCdVoce VARCHAR2)
Return Voce_f_saldi_cdr_linea%Rowtype
Is
recSaldi voce_f_saldi_cdr_linea%Rowtype;
Begin
recSaldi := getSaldi(aEs, aEsRes, aCdCdr, aCdGae, aTiApp, aTiGes, aCdVoce);
if recSaldi.esercizio is null Then
recSaldi.esercizio := aEs;
recSaldi.esercizio_res := aEsRes;
recSaldi.cd_centro_responsabilita := aCdCdr;
recSaldi.cd_linea_attivita := aCdGae;
recSaldi.ti_appartenenza := aTiApp;
recSaldi.ti_gestione := aTiGes;
recSaldi.cd_elemento_voce := aCdVoce;
recSaldi.cd_voce := aCdVoce;
recSaldi.IM_STANZ_INIZIALE_A1 := 0;
recSaldi.IM_STANZ_INIZIALE_A2 := 0;
recSaldi.IM_STANZ_INIZIALE_A3 := 0;
recSaldi.VARIAZIONI_PIU := 0;
recSaldi.VARIAZIONI_MENO := 0;
recSaldi.IM_STANZ_INIZIALE_CASSA := 0;
recSaldi.VARIAZIONI_PIU_CASSA := 0;
recSaldi.VARIAZIONI_MENO_CASSA := 0;
recSaldi.IM_OBBL_ACC_COMP := 0;
recSaldi.IM_STANZ_RES_IMPROPRIO := 0;
recSaldi.VAR_PIU_STANZ_RES_IMP := 0;
recSaldi.VAR_MENO_STANZ_RES_IMP := 0;
recSaldi.IM_OBBL_RES_IMP := 0;
recSaldi.VAR_PIU_OBBL_RES_IMP := 0;
recSaldi.VAR_MENO_OBBL_RES_IMP := 0;
recSaldi.IM_OBBL_RES_PRO := 0;
recSaldi.VAR_PIU_OBBL_RES_PRO := 0;
recSaldi.VAR_MENO_OBBL_RES_PRO := 0;
recSaldi.IM_MANDATI_REVERSALI_PRO := 0;
recSaldi.IM_MANDATI_REVERSALI_IMP := 0;
recSaldi.IM_PAGAMENTI_INCASSI := 0;
recSaldi.DACR := aTSNow;
recSaldi.UTCR := aUser;
recSaldi.DUVA := aTSNow;
recSaldi.UTUV := aUser;
recSaldi.PG_VER_REC := 1;
CNRCTB054.ins_VOCE_F_SALDI_CDR_LINEA(recSaldi);
End If;
Return recSaldi;
End;
Begin
Dbms_Output.put_line('generaVariazioneBilancio');
aEsDefault := to_char(aLiquidIva.dt_inizio, 'YYYY');
-- Estrazione del CDR della UO di versamento iva
aCDRUO := CNRCTB020.getCDRResponsabileUO(aCdUo);
-- Estrazione della linea di attività comune da utilizzare per la creazione della variazione
aLASpecVersIva := getLASPECVERSIVA(aEs, aCDRUO);
-- Estrazione del CDR SAC di versamento iva
--Viene recuperato sempre la UO dell'anno di liquidazione
aCDRUOVERSIVA := getCDRUOVERSIVA(aEsDefault);
-- Estrazione della linea di attività SAC da utilizzare per la creazione della variazione
aLASpecVersIvaSac := getLASPECVERSIVASAC(aEs, aCDRUOVERSIVA);
aIvaResiduaDaVersare := abs(aLiquidIva.iva_da_versare);
Dbms_Output.put_line('1. aIvaResiduaDaVersare: '||aIvaResiduaDaVersare);
For recEsVariazione in (select a.esercizio_variazione, nvl(sum(a.im_variazione), 0) im_variazione
from (select esercizio_variazione, nvl(im_variazione, 0) im_variazione
from liquidazione_iva_ripart_fin
Where cd_cds = aLiquidIva.cd_cds
and esercizio = aLiquidIva.esercizio
and cd_unita_organizzativa = aLiquidIva.cd_unita_organizzativa
and dt_inizio = aLiquidIva.dt_inizio
and dt_fine = aLiquidIva.dt_fine
and im_variazione>0
union all
select aEsDefault, abs(aLiquidIva.iva_da_versare)-nvl(sum(im_variazione), 0) im_variazione
from liquidazione_iva_ripart_fin
Where cd_cds = aLiquidIva.cd_cds
and esercizio = aLiquidIva.esercizio
and cd_unita_organizzativa = aLiquidIva.cd_unita_organizzativa
and dt_inizio = aLiquidIva.dt_inizio
and dt_fine = aLiquidIva.dt_fine
and im_variazione>0) a
group by a.esercizio_variazione
having nvl(sum(a.im_variazione), 0)>0
order by a.esercizio_variazione) Loop
Declare
lPgVariazione numerazione_base.cd_corrente%type;
pRigaVariazione number := 0;
aIvaDaVersareEsercizio number:=0;
aIvaResiduaDaVersareEsercizio number:=0;
isVariazioneCompetenza boolean := false;
aPdgVariazione pdg_variazione%rowtype;
aVarStanzRes var_stanz_res%rowtype;
Begin
Dbms_Output.put_line('Es: '||recEsVariazione.esercizio_variazione||' - Imp: '||recEsVariazione.im_variazione);
If aEs = recEsVariazione.esercizio_variazione Then
isVariazioneCompetenza := true;
End If;
aIvaDaVersareEsercizio := recEsVariazione.im_variazione;
If aIvaDaVersareEsercizio > aIvaResiduaDaVersare Then
aIvaDaVersareEsercizio := aIvaResiduaDaVersare;
End If;
Dbms_Output.put_line('2. aIvaDaVersareEsercizio: '||aIvaDaVersareEsercizio);
--creo la testata variazione per esercizio
If isVariazioneCompetenza Then -- VARIAZIONE DI COMPETENZA
Begin
Select cd_corrente + 1
Into lPgVariazione
From numerazione_base
Where esercizio = aEs
And tabella = 'PDG_VARIAZIONE'
And colonna = 'PG_VARIAZIONE_PDG'
For update nowait;
Exception when no_data_found then
ibmerr001.RAISE_ERR_GENERICO('Manca la configurazione dei numeratori per la tabella PDG_VARIAZIONE.');
End;
aPdgVariazione.ESERCIZIO:=aEs;
aPdgVariazione.PG_VARIAZIONE_PDG := lPgVariazione;
aPdgVariazione.CD_CENTRO_RESPONSABILITA:=aCDRUO.cd_centro_responsabilita;
aPdgVariazione.DT_APERTURA:=trunc(aTSNow);
aPdgVariazione.DS_VARIAZIONE:=getDescLiquidazione(aLiquidIva);
aPdgVariazione.RIFERIMENTI:=getDescLiquidazione(aLiquidIva);
aPdgVariazione.DS_DELIBERA:='.';
aPdgVariazione.STATO:='APP';
aPdgVariazione.DT_APERTURA:=Trunc(Sysdate);
aPdgVariazione.DT_CHIUSURA:=Trunc(Sysdate);
aPdgVariazione.DT_APPROVAZIONE:=Trunc(Sysdate);
aPdgVariazione.TIPOLOGIA:='STO_S_TOT';
aPdgVariazione.TIPOLOGIA_FIN:='FES';
aPdgVariazione.TI_MOTIVAZIONE_VARIAZIONE:='RAG';
aPdgVariazione.FL_VISTO_DIP_VARIAZIONI:='N';
aPdgVariazione.DACR:=aTSNow;
aPdgVariazione.UTCR:=aUser;
aPdgVariazione.DUVA:=aTSNow;
aPdgVariazione.UTUV:=aUser;
aPdgVariazione.PG_VER_REC:=1;
CNRCTB051.ins_PDG_VARIAZIONE(aPdgVariazione);
--Aggiorno il numeratore
Update numerazione_base
Set cd_corrente = lPgVariazione
Where esercizio = aEs
And tabella = 'PDG_VARIAZIONE'
And colonna = 'PG_VARIAZIONE_PDG';
Else
Begin
Select cd_corrente + 1
Into lPgVariazione
From numerazione_base
Where esercizio = aEs
And tabella = 'VAR_STANZ_RES'
And colonna = 'PG_VARIAZIONE'
For Update nowait;
Exception
When No_Data_Found Then
ibmerr001.RAISE_ERR_GENERICO('Manca la configurazione dei numeratori per la tabella VAR_STANZ_RES.');
End;
aVarStanzRes.ESERCIZIO:=aEs;
aVarStanzRes.PG_VARIAZIONE := lPgVariazione;
aVarStanzRes.CD_CDS:=aCdCds;
aVarStanzRes.CD_CENTRO_RESPONSABILITA:=aCDRUO.cd_centro_responsabilita;
aVarStanzRes.ESERCIZIO_RES:=recEsVariazione.esercizio_variazione;
aVarStanzRes.DT_APERTURA:=trunc(aTSNow);
aVarStanzRes.DT_CHIUSURA:=Trunc(Sysdate);
aVarStanzRes.DT_APPROVAZIONE:=Trunc(Sysdate);
aVarStanzRes.DS_VARIAZIONE:=getDescLiquidazione(aLiquidIva);
aVarStanzRes.DS_DELIBERA:='.';
aVarStanzRes.STATO:='APP';
aVarStanzRes.TIPOLOGIA:='STO';
aVarStanzRes.TIPOLOGIA_FIN:='FES';
aVarStanzRes.TI_MOTIVAZIONE_VARIAZIONE:='RAG';
aVarStanzRes.DACR:=aTSNow;
aVarStanzRes.UTCR:=aUser;
aVarStanzRes.DUVA:=aTSNow;
aVarStanzRes.UTUV:=aUser;
aVarStanzRes.PG_VER_REC:=1;
CNRCTB051.ins_VAR_STANZ_RES(aVarStanzRes);
Update numerazione_base
Set cd_corrente = lPgVariazione
Where esercizio = aEs
And tabella = 'VAR_STANZ_RES'
And colonna = 'PG_VARIAZIONE';
End If;
aIvaResiduaDaVersareEsercizio := aIvaDaVersareEsercizio;
--creo i dettagli variazione da sottrarre
For recCDR in (select a.cd_cdr, nvl(sum(a.im_variazione), 0) im_variazione
from (select cd_cdr, nvl(im_variazione, 0) im_variazione
from liquidazione_iva_ripart_fin
Where cd_cds = aLiquidIva.cd_cds
and esercizio = aLiquidIva.esercizio
and cd_unita_organizzativa = aLiquidIva.cd_unita_organizzativa
and dt_inizio = aLiquidIva.dt_inizio
and dt_fine = aLiquidIva.dt_fine
and im_variazione>0
and esercizio_variazione = recEsVariazione.esercizio_variazione
union all
select null,
case
when recEsVariazione.esercizio_variazione = aEsDefault
then abs(aLiquidIva.iva_da_versare)-nvl(sum(im_variazione), 0)
else 0
end
from liquidazione_iva_ripart_fin
Where cd_cds = aLiquidIva.cd_cds
and esercizio = aLiquidIva.esercizio
and cd_unita_organizzativa = aLiquidIva.cd_unita_organizzativa
and dt_inizio = aLiquidIva.dt_inizio
and dt_fine = aLiquidIva.dt_fine
and im_variazione>0
and recEsVariazione.esercizio_variazione = aEsDefault) a
group by a.cd_cdr
having nvl(sum(a.im_variazione), 0)>0
order by a.cd_cdr) LOOP
Declare
aAssPdgVariazioneCdr ass_pdg_variazione_cdr%rowtype;
aAssVarStanzResCdr ass_var_stanz_res_cdr%rowtype;
currentCDR linea_attivita.cd_centro_responsabilita%type;
aIvaDaVersareCDR number:=0;
aIvaResiduaDaVersareCDR number:=0;
Begin
Dbms_Output.put_line('Es: '||recEsVariazione.esercizio_variazione||
' - Cdr: '||recCDR.cd_cdr||
' - Imp: '||recCDR.im_variazione);
aIvaDaVersareCDR := recCDR.im_variazione;
If aIvaDaVersareCDR > aIvaResiduaDaVersareEsercizio Then
aIvaDaVersareCDR := aIvaResiduaDaVersareEsercizio;
End If;
Dbms_Output.put_line('3. aIvaDaVersareCDR: '||aIvaDaVersareCDR);
If recCDR.cd_cdr is not null Then
currentCDR := recCDR.cd_cdr;
Else
currentCDR := aCDRUO.cd_centro_responsabilita;
End If;
If isVariazioneCompetenza Then -- VARIAZIONE DI COMPETENZA
--Riga del CDR da cui togliere
aAssPdgVariazioneCdr.ESERCIZIO:=aEs;
aAssPdgVariazioneCdr.PG_VARIAZIONE_PDG := lPgVariazione;
aAssPdgVariazioneCdr.CD_CENTRO_RESPONSABILITA:=currentCDR;
aAssPdgVariazioneCdr.IM_ENTRATA := 0;
aAssPdgVariazioneCdr.IM_SPESA := -abs(aIvaDaVersareCDR);
aAssPdgVariazioneCdr.DACR:=aTSNow;
aAssPdgVariazioneCdr.UTCR:=aUser;
aAssPdgVariazioneCdr.DUVA:=aTSNow;
aAssPdgVariazioneCdr.UTUV:=aUser;
aAssPdgVariazioneCdr.PG_VER_REC:=1;
CNRCTB050.ins_ASS_PDG_VARIAZIONE_CDR(aAssPdgVariazioneCdr);
Else
--Riga del CDR da cui togliere
aAssVarStanzResCdr.ESERCIZIO:=aEs;
aAssVarStanzResCdr.PG_VARIAZIONE := lPgVariazione;
aAssVarStanzResCdr.CD_CENTRO_RESPONSABILITA:=currentCDR;
aAssVarStanzResCdr.IM_SPESA := -abs(aIvaDaVersareCDR);
aAssVarStanzResCdr.DACR:=aTSNow;
aAssVarStanzResCdr.UTCR:=aUser;
aAssVarStanzResCdr.DUVA:=aTSNow;
aAssVarStanzResCdr.UTUV:=aUser;
aAssVarStanzResCdr.PG_VER_REC:=1;
CNRCTB051.ins_ASS_VAR_STANZ_RES_CDR(aAssVarStanzResCdr);
End If;
aIvaResiduaDaVersareCDR := aIvaDaVersareCDR;
--Righe del CDR da cui togliere
For recGAE in (select a.cd_linea_attivita, nvl(sum(a.im_variazione), 0) im_variazione
from (select cd_linea_attivita, nvl(im_variazione, 0) im_variazione
from liquidazione_iva_ripart_fin
Where cd_cds = aLiquidIva.cd_cds
and esercizio = aLiquidIva.esercizio
and cd_unita_organizzativa = aLiquidIva.cd_unita_organizzativa
and dt_inizio = aLiquidIva.dt_inizio
and dt_fine = aLiquidIva.dt_fine
and im_variazione>0
and esercizio_variazione = recEsVariazione.esercizio_variazione
and nvl(cd_cdr,'Z') = nvl(recCDR.cd_cdr, 'Z')
union all
select null,
case
when recEsVariazione.esercizio_variazione = aEsDefault
then abs(aLiquidIva.iva_da_versare)-nvl(sum(im_variazione), 0)
else 0
end
from liquidazione_iva_ripart_fin
Where cd_cds = aLiquidIva.cd_cds
and esercizio = aLiquidIva.esercizio
and cd_unita_organizzativa = aLiquidIva.cd_unita_organizzativa
and dt_inizio = aLiquidIva.dt_inizio
and dt_fine = aLiquidIva.dt_fine
and im_variazione>0
and recEsVariazione.esercizio_variazione = aEsDefault) a
group by a.cd_linea_attivita
having nvl(sum(a.im_variazione), 0)>0
order by a.cd_linea_attivita) LOOP
Declare
aPdgVariazioneRiga pdg_variazione_riga_gest%rowtype;
aVarStanzResRiga var_stanz_res_riga%rowtype;
recSaldiLinea voce_f_saldi_cdr_linea%Rowtype;
pImpDisp voce_f_saldi_cdr_linea.IM_STANZ_INIZIALE_A1%type := 0;
currentGAE linea_attivita.cd_linea_attivita%type;
aIvaDaVersareGAE number:=0;
Begin
Dbms_Output.put_line('Es: '||recEsVariazione.esercizio_variazione||
' - Cdr: '||recCDR.cd_cdr||
' - GAE: '||recGAE.cd_linea_attivita||
' - Imp: '||recGAE.im_variazione);
aIvaDaVersareGAE := recGAE.im_variazione;
If aIvaDaVersareGAE > aIvaResiduaDaVersareCDR Then
aIvaDaVersareGAE := aIvaResiduaDaVersareCDR;
End If;
Dbms_Output.put_line('4. aIvaDaVersareGAE: '||aIvaDaVersareGAE);
If recGAE.cd_linea_attivita is not null Then
currentGAE := recGAE.CD_LINEA_ATTIVITA;
Else
currentGAE := aLASpecVersIva.cd_linea_attivita;
End If;
--Effettuo il lock della tabella saldi
recSaldiLinea := getOrCreateSaldi(aEs, recEsVariazione.esercizio_variazione, currentCDR, currentGAE, aEV.TI_APPARTENENZA, aEV.TI_GESTIONE, aEV.CD_ELEMENTO_VOCE);
--Effettuo il controllo disponibilità per le GAE diverse dalla C0000020
If currentGAE != aLASpecVersIva.cd_linea_attivita Then
--Leggo la disponibilità residua
pImpDisp := getDisp(aEs, recEsVariazione.esercizio_variazione, currentCDR, currentGAE, aEV.TI_APPARTENENZA, aEV.TI_GESTIONE, aEV.CD_ELEMENTO_VOCE);
If aIvaDaVersareGAE > pImpDisp Then
IBMERR001.RAISE_ERR_GENERICO('Disponibilita'' residua della GAE '||currentCDR||'/'||currentGAE||' per l''esercizio '||recEsVariazione.esercizio_variazione||' e per la voce '||
aEV.TI_GESTIONE||'/'||aEV.CD_ELEMENTO_VOCE||
' ('||to_char(pImpDisp,'FM999G999G999G999G990D00')||
') insufficiente a coprire l''importo indicato ('||
to_char(aIvaDaVersareGAE,'FM999G999G999G999G990D00')||').');
End if;
End If;
pRigaVariazione := pRigaVariazione + 1;
If isVariazioneCompetenza Then -- VARIAZIONE DI COMPETENZA
aPdgVariazioneRiga.ESERCIZIO := aEs;
aPdgVariazioneRiga.PG_VARIAZIONE_PDG := lPgVariazione;
aPdgVariazioneRiga.PG_RIGA := pRigaVariazione;
aPdgVariazioneRiga.CD_CDR_ASSEGNATARIO := currentCDR;
aPdgVariazioneRiga.CD_LINEA_ATTIVITA := currentGAE;
aPdgVariazioneRiga.CD_CDS_AREA := CNRUTL001.GETCDSFROMCDR(aAssPdgVariazioneCdr.CD_CENTRO_RESPONSABILITA);
aPdgVariazioneRiga.TI_APPARTENENZA := aEV.TI_APPARTENENZA;
aPdgVariazioneRiga.TI_GESTIONE := aEV.TI_GESTIONE;
aPdgVariazioneRiga.CD_ELEMENTO_VOCE := aEV.CD_ELEMENTO_VOCE;
aPdgVariazioneRiga.DT_REGISTRAZIONE := trunc(aTSNow);
aPdgVariazioneRiga.CATEGORIA_DETTAGLIO := 'DIR';
aPdgVariazioneRiga.IM_SPESE_GEST_DECENTRATA_INT := 0;
aPdgVariazioneRiga.IM_SPESE_GEST_DECENTRATA_EST := -abs(aIvaDaVersareGAE);
aPdgVariazioneRiga.IM_SPESE_GEST_ACCENTRATA_INT := 0;
aPdgVariazioneRiga.IM_SPESE_GEST_ACCENTRATA_EST := 0;
aPdgVariazioneRiga.IM_ENTRATA := 0;
aPdgVariazioneRiga.FL_VISTO_DIP_VARIAZIONI := 'N';
aPdgVariazioneRiga.DACR:=aTSNow;
aPdgVariazioneRiga.UTCR:=aUser;
aPdgVariazioneRiga.DUVA:=aTSNow;
aPdgVariazioneRiga.UTUV:=aUser;
aPdgVariazioneRiga.PG_VER_REC:=1;
CNRCTB051.ins_PDG_VARIAZIONE_RIGA_GEST(aPdgVariazioneRiga);
Update voce_f_saldi_cdr_linea
Set VARIAZIONI_MENO = VARIAZIONI_MENO + Abs(aPdgVariazioneRiga.IM_SPESE_GEST_DECENTRATA_EST)
Where esercizio = recSaldiLinea.esercizio
And esercizio_res = recSaldiLinea.esercizio_res
And cd_centro_responsabilita = recSaldiLinea.CD_CENTRO_RESPONSABILITA
And cd_linea_attivita = recSaldiLinea.CD_LINEA_ATTIVITA
And ti_appartenenza = recSaldiLinea.TI_APPARTENENZA
And ti_gestione = recSaldiLinea.TI_GESTIONE
And cd_elemento_voce = recSaldiLinea.CD_ELEMENTO_VOCE
And cd_voce = recSaldiLinea.CD_VOCE;
Else
-- VARIAZIONE DI RESIDUO
aVarStanzResRiga.ESERCIZIO := aEs;
aVarStanzResRiga.PG_VARIAZIONE := lPgVariazione;
aVarStanzResRiga.PG_RIGA := pRigaVariazione;
aVarStanzResRiga.ESERCIZIO_VOCE := aEV.ESERCIZIO;
aVarStanzResRiga.ESERCIZIO_RES := aVarStanzRes.ESERCIZIO_RES;
aVarStanzResRiga.CD_CDR := currentCDR;
aVarStanzResRiga.CD_LINEA_ATTIVITA := currentGAE;
aVarStanzResRiga.TI_APPARTENENZA := aEV.TI_APPARTENENZA;
aVarStanzResRiga.TI_GESTIONE := aEV.TI_GESTIONE;
aVarStanzResRiga.CD_VOCE := aEV.CD_ELEMENTO_VOCE;
aVarStanzResRiga.CD_ELEMENTO_VOCE := aEV.CD_ELEMENTO_VOCE;
aVarStanzResRiga.IM_VARIAZIONE := -abs(aIvaDaVersareGAE);
aVarStanzResRiga.DACR:=aTSNow;
aVarStanzResRiga.UTCR:=aUser;
aVarStanzResRiga.DUVA:=aTSNow;
aVarStanzResRiga.UTUV:=aUser;
aVarStanzResRiga.PG_VER_REC:=1;
CNRCTB051.ins_VAR_STANZ_RES_RIGA(aVarStanzResRiga);
Update voce_f_saldi_cdr_linea
Set VAR_MENO_STANZ_RES_IMP = VAR_MENO_STANZ_RES_IMP + Abs(aVarStanzResRiga.IM_VARIAZIONE)
Where esercizio = recSaldiLinea.esercizio
And esercizio_res = recSaldiLinea.esercizio_res
And cd_centro_responsabilita = recSaldiLinea.CD_CENTRO_RESPONSABILITA
And cd_linea_attivita = recSaldiLinea.CD_LINEA_ATTIVITA
And ti_appartenenza = recSaldiLinea.TI_APPARTENENZA
And ti_gestione = recSaldiLinea.TI_GESTIONE
And cd_elemento_voce = recSaldiLinea.CD_ELEMENTO_VOCE
And cd_voce = recSaldiLinea.CD_VOCE;
End If;
aIvaResiduaDaVersareCDR := aIvaResiduaDaVersareCDR - aIvaDaVersareGAE;
Dbms_Output.put_line('1 OUT. aIvaResiduaDaVersareCDR: '||aIvaResiduaDaVersareCDR);
If aIvaResiduaDaVersareCDR<=0 Then
exit;
End if;
End;
End Loop; --recGAE
aIvaResiduaDaVersareEsercizio := aIvaResiduaDaVersareEsercizio - aIvaDaVersareCDR;
Dbms_Output.put_line('2 OUT. aIvaResiduaDaVersareEsercizio: '||aIvaResiduaDaVersareEsercizio);
If aIvaResiduaDaVersareEsercizio<=0 Then
exit;
End if;
End;
End Loop; --recCDR
--Costruisco la riga cui dare gli importi
Declare
aAssPdgVariazioneCdr ass_pdg_variazione_cdr%rowtype;
aPdgVariazioneRiga pdg_variazione_riga_gest%rowtype;
aVarStanzResRiga var_stanz_res_riga%rowtype;
aAssVarStanzResCdr ass_var_stanz_res_cdr%rowtype;
recSaldiLinea voce_f_saldi_cdr_linea%Rowtype;
Begin
recSaldiLinea := getOrCreateSaldi(aEs, recEsVariazione.esercizio_variazione, aCDRUOVERSIVA.CD_CENTRO_RESPONSABILITA, aLASpecVersIvaSac.CD_LINEA_ATTIVITA, aEV.TI_APPARTENENZA, aEV.TI_GESTIONE, aEV.CD_ELEMENTO_VOCE);
--Riga del CDR a cui dare
pRigaVariazione := pRigaVariazione + 1;
If isVariazioneCompetenza Then -- VARIAZIONE DI COMPETENZA
aAssPdgVariazioneCdr.ESERCIZIO:=aEs;
aAssPdgVariazioneCdr.PG_VARIAZIONE_PDG := lPgVariazione;
aAssPdgVariazioneCdr.CD_CENTRO_RESPONSABILITA:=aCDRUOVERSIVA.CD_CENTRO_RESPONSABILITA;
aAssPdgVariazioneCdr.IM_ENTRATA := 0;
aAssPdgVariazioneCdr.IM_SPESA := abs(aIvaDaVersareEsercizio);
aAssPdgVariazioneCdr.DACR:=aTSNow;
aAssPdgVariazioneCdr.UTCR:=aUser;
aAssPdgVariazioneCdr.DUVA:=aTSNow;
aAssPdgVariazioneCdr.UTUV:=aUser;
aAssPdgVariazioneCdr.PG_VER_REC:=1;
CNRCTB050.ins_ASS_PDG_VARIAZIONE_CDR(aAssPdgVariazioneCdr);
aPdgVariazioneRiga.ESERCIZIO := aEs;
aPdgVariazioneRiga.PG_VARIAZIONE_PDG := lPgVariazione;
aPdgVariazioneRiga.PG_RIGA := pRigaVariazione;
aPdgVariazioneRiga.CD_CDR_ASSEGNATARIO := aAssPdgVariazioneCdr.CD_CENTRO_RESPONSABILITA;
aPdgVariazioneRiga.CD_LINEA_ATTIVITA := aLASpecVersIvaSac.CD_LINEA_ATTIVITA;
aPdgVariazioneRiga.CD_CDS_AREA := CNRUTL001.GETCDSFROMCDR(aAssPdgVariazioneCdr.CD_CENTRO_RESPONSABILITA);
aPdgVariazioneRiga.TI_APPARTENENZA := aEV.TI_APPARTENENZA;
aPdgVariazioneRiga.TI_GESTIONE := aEV.TI_GESTIONE;
aPdgVariazioneRiga.CD_ELEMENTO_VOCE := aEV.CD_ELEMENTO_VOCE;
aPdgVariazioneRiga.DT_REGISTRAZIONE := trunc(aTSNow);
aPdgVariazioneRiga.CATEGORIA_DETTAGLIO := 'DIR';
aPdgVariazioneRiga.IM_SPESE_GEST_DECENTRATA_INT := 0;
aPdgVariazioneRiga.IM_SPESE_GEST_DECENTRATA_EST := abs(aIvaDaVersareEsercizio);
aPdgVariazioneRiga.IM_SPESE_GEST_ACCENTRATA_INT := 0;
aPdgVariazioneRiga.IM_SPESE_GEST_ACCENTRATA_EST := 0;
aPdgVariazioneRiga.IM_ENTRATA := 0;
aPdgVariazioneRiga.FL_VISTO_DIP_VARIAZIONI := 'N';
aPdgVariazioneRiga.DACR:=aTSNow;
aPdgVariazioneRiga.UTCR:=aUser;
aPdgVariazioneRiga.DUVA:=aTSNow;
aPdgVariazioneRiga.UTUV:=aUser;
aPdgVariazioneRiga.PG_VER_REC:=1;
CNRCTB051.ins_PDG_VARIAZIONE_RIGA_GEST(aPdgVariazioneRiga);
Update voce_f_saldi_cdr_linea
Set VARIAZIONI_PIU = VARIAZIONI_PIU + Abs(aPdgVariazioneRiga.IM_SPESE_GEST_DECENTRATA_EST)
Where esercizio = recSaldiLinea.esercizio
And esercizio_res = recSaldiLinea.esercizio_res
And cd_centro_responsabilita = recSaldiLinea.CD_CENTRO_RESPONSABILITA
And cd_linea_attivita = recSaldiLinea.CD_LINEA_ATTIVITA
And ti_appartenenza = recSaldiLinea.TI_APPARTENENZA
And ti_gestione = recSaldiLinea.TI_GESTIONE
And cd_elemento_voce = recSaldiLinea.CD_ELEMENTO_VOCE
And cd_voce = recSaldiLinea.CD_VOCE;
Else
--Riga del CDR a cui dare
aAssVarStanzResCdr.ESERCIZIO:=aEs;
aAssVarStanzResCdr.PG_VARIAZIONE := lPgVariazione;
aAssVarStanzResCdr.CD_CENTRO_RESPONSABILITA:=aCDRUOVERSIVA.CD_CENTRO_RESPONSABILITA;
aAssVarStanzResCdr.IM_SPESA := abs(aIvaDaVersareEsercizio);
aAssVarStanzResCdr.DACR:=aTSNow;
aAssVarStanzResCdr.UTCR:=aUser;
aAssVarStanzResCdr.DUVA:=aTSNow;
aAssVarStanzResCdr.UTUV:=aUser;
aAssVarStanzResCdr.PG_VER_REC:=1;
CNRCTB051.ins_ASS_VAR_STANZ_RES_CDR(aAssVarStanzResCdr);
aVarStanzResRiga.ESERCIZIO := aEs;
aVarStanzResRiga.PG_VARIAZIONE := lPgVariazione;
aVarStanzResRiga.PG_RIGA := pRigaVariazione;
aVarStanzResRiga.ESERCIZIO_VOCE := aEV.ESERCIZIO;
aVarStanzResRiga.ESERCIZIO_RES := aVarStanzRes.ESERCIZIO_RES;
aVarStanzResRiga.CD_CDR := aAssVarStanzResCdr.CD_CENTRO_RESPONSABILITA;
aVarStanzResRiga.CD_LINEA_ATTIVITA := aLASpecVersIvaSac.CD_LINEA_ATTIVITA;
aVarStanzResRiga.TI_APPARTENENZA := aEV.TI_APPARTENENZA;
aVarStanzResRiga.TI_GESTIONE := aEV.TI_GESTIONE;
aVarStanzResRiga.CD_VOCE := aEV.CD_ELEMENTO_VOCE;
aVarStanzResRiga.CD_ELEMENTO_VOCE := aEV.CD_ELEMENTO_VOCE;
aVarStanzResRiga.IM_VARIAZIONE := abs(aIvaDaVersareEsercizio);
aVarStanzResRiga.DACR:=aTSNow;
aVarStanzResRiga.UTCR:=aUser;
aVarStanzResRiga.DUVA:=aTSNow;
aVarStanzResRiga.UTUV:=aUser;
aVarStanzResRiga.PG_VER_REC:=1;
CNRCTB051.ins_VAR_STANZ_RES_RIGA(aVarStanzResRiga);
Update voce_f_saldi_cdr_linea
Set VAR_PIU_STANZ_RES_IMP = VAR_PIU_STANZ_RES_IMP + Abs(aVarStanzResRiga.IM_VARIAZIONE)
Where esercizio = recSaldiLinea.esercizio
And esercizio_res = recSaldiLinea.esercizio_res
And cd_centro_responsabilita = recSaldiLinea.CD_CENTRO_RESPONSABILITA
And cd_linea_attivita = recSaldiLinea.CD_LINEA_ATTIVITA
And ti_appartenenza = recSaldiLinea.TI_APPARTENENZA
And ti_gestione = recSaldiLinea.TI_GESTIONE
And cd_elemento_voce = recSaldiLinea.CD_ELEMENTO_VOCE
And cd_voce = recSaldiLinea.CD_VOCE;
End If;
End;
-- Aggiorno i riferimento alle variazioni di versamento create
pRigaLiquidVariazione := pRigaLiquidVariazione + 1;
If isVariazioneCompetenza Then -- VARIAZIONE DI COMPETENZA
Insert into LIQUIDAZIONE_IVA_VARIAZIONI
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA,
TIPO_LIQUIDAZIONE, DT_INIZIO, DT_FINE,
REPORT_ID, PG_DETTAGLIO, ESERCIZIO_VARIAZIONE_COMP, PG_VARIAZIONE_COMP,
ESERCIZIO_VARIAZIONE_RES, PG_VARIAZIONE_RES, DACR, UTCR, DUVA, UTUV, PG_VER_REC)
Values
(aLiquidIva.cd_cds, aLiquidIva.esercizio, aLiquidIva.cd_unita_organizzativa,
aLiquidIva.tipo_liquidazione, aLiquidIva.dt_inizio, aLiquidIva.dt_fine,
0, pRigaLiquidVariazione, aPdgVariazione.ESERCIZIO, aPdgVariazione.PG_VARIAZIONE_PDG,
null, null, aTSNow, aUser, aTSNow, aUser, 1);
Else
Insert into LIQUIDAZIONE_IVA_VARIAZIONI
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA,
TIPO_LIQUIDAZIONE, DT_INIZIO, DT_FINE,
REPORT_ID, PG_DETTAGLIO, ESERCIZIO_VARIAZIONE_COMP, PG_VARIAZIONE_COMP,
ESERCIZIO_VARIAZIONE_RES, PG_VARIAZIONE_RES, DACR, UTCR, DUVA, UTUV, PG_VER_REC)
Values
(aLiquidIva.cd_cds, aLiquidIva.esercizio, aLiquidIva.cd_unita_organizzativa,
aLiquidIva.tipo_liquidazione, aLiquidIva.dt_inizio, aLiquidIva.dt_fine,
0, pRigaLiquidVariazione, null, null,
aVarStanzRes.ESERCIZIO, aVarStanzRes.PG_VARIAZIONE, aTSNow, aUser, aTSNow, aUser, 1);
End If;
aIvaResiduaDaVersare := aIvaResiduaDaVersare - aIvaDaVersareEsercizio;
Dbms_Output.put_line('3 OUT. aIvaResiduaDaVersare: '||aIvaResiduaDaVersare);
Dbms_Output.put_line('Es: '||recEsVariazione.esercizio_variazione||
' - aIvaResiduaDaVersare: '||aIvaResiduaDaVersare);
If aIvaResiduaDaVersare<=0 Then
exit;
End if;
End;
End Loop; --recEsVariazione
End generaVariazioneBilancio;
FUNCTION getDescPraticaFinCentro
(aLiquidIva LIQUIDAZIONE_IVA%ROWTYPE)
RETURN VARCHAR2 IS
aDescrizione VARCHAR2(500);
aTipologia VARCHAR2(100);
BEGIN
aDescrizione:='LIQUIDAZIONE IVA ';
IF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC THEN
aTipologia:='ATTIVITA''COMMERCIALI ';
ELSIF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTINTR THEN
aTipologia:='ATTIVITA'' ISTITUZIONALI INTRA_UE ';
ELSIF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTSMSI THEN
aTipologia:='ATTIVITA'' ISTITUZIONALI SAN MARINO SENZA IVA ';
ELSIF aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTSNR Then
aTipologia:='ATTIVITA'' ISTITUZIONALI SERVIZI NON RESIDENTI ';
END IF;
aDescrizione:=aDescrizione || aTipologia ||
'PERIODO: '||to_char(aLiquidIva.dt_inizio,'DD/MM/YYYY') || ' A ' ||
to_char(aLiquidIva.dt_fine,'DD/MM/YYYY');
RETURN aDescrizione;
END;
function getLiqIvaCentro(aLiq liquidazione_iva%rowtype) return liquidazione_iva_centro%rowtype is
aLiqC liquidazione_iva_centro%rowtype;
begin
select * into aLiqC from liquidazione_iva_centro where
esercizio = aLiq.esercizio
and dt_inizio = aLiq.dt_inizio
and dt_fine = aLiq.dt_fine
and tipo_liquidazione = aLiq.tipo_liquidazione
for update nowait;
return aLiqC;
end;
function creaLiqIvaCentro(aLiq liquidazione_iva%rowtype,aObb obbligazione%rowtype,aTSNow date, aUser varchar2) return liquidazione_iva_centro%rowtype is
aLIC liquidazione_iva_centro%rowtype;
aPgGruppoCentro number(10);
begin
aLIC.ESERCIZIO:=aLiq.esercizio;
aLIC.DT_INIZIO:=aLiq.DT_INIZIO;
aLIC.DT_FINE:=aLiq.DT_FINE;
aLIC.TIPO_LIQUIDAZIONE:=aLiq.TIPO_LIQUIDAZIONE;
aLIC.STATO:=STATO_LIQUID_CENTRO_INIZIALE;
aLIC.CD_CDS_OBB_ACCENTR:=aObb.cd_cds;
aLIC.ESERCIZIO_OBB_ACCENTR:=aObb.esercizio;
aLIC.ESERCIZIO_ORI_OBB_ACCENTR:=aObb.esercizio_originale;
aLIC.PG_OBB_ACCENTR:=aObb.pg_obbligazione;
aLIC.CD_CDS_LI:=null;
aLIC.CD_UO_LI:=null;
aLIC.REPORT_ID_LI:=null;
aLIC.DACR:=aTSNow;
aLIC.UTCR:=aUser;
aLIC.DUVA:=aTSNow;
aLIC.UTUV:=aUser;
aLIC.PG_VER_REC:=1;
begin
INS_LIQUIDAZIONE_IVA_CENTRO(aLIC);
exception when DUP_VAL_ON_INDEX then
-- L'inserimento può dare un errore di chiave duplicata se due sessioni tentano di inserire
-- il primo record per lo stesso gruppo di versamento: la prima inserisce, la seconda deve essere bloccata
-- e restituire l'errore di risorsa occupata
IBMERR001.RAISE_ERR_GENERICO('Risorsa occupata riprovare più tardi');
end;
return aLIC;
end;
procedure aggiornaPraticaGruppoCentro(aLiq liquidazione_iva%rowtype, aUOVERSIVA unita_organizzativa%rowtype,aTesoreriaUnica VARCHAR2,aTSNow date,aUser varchar2) is
aObbPG obbligazione%rowtype;
aObbPGScad obbligazione_scadenzario%rowtype;
aAcc accertamento%rowtype;
aAccScad accertamento_scadenzario%rowtype;
aVoceF voce_f%rowtype;
aLIC liquidazione_iva_centro%rowtype;
aCdTerzoAcc number(8);
aCdModPagAcc varchar2(10);
aPgBancaAcc number(10);
aGen documento_generico%rowtype;
aGenRiga documento_generico_riga%rowtype;
aListGenRighe CNRCTB100.docGenRigaList;
aRev reversale%rowtype;
aRevRiga reversale_riga%rowtype;
aAnagTst anagrafico%rowtype;
aAssCoriFin ass_tipo_cori_ev%rowtype;
aCdCoriIva varchar(100);
Begin
aLIC:=null;
Begin
-- Cerca di recuperare la pratica al centro di accantonamento dei versamenti locali (riferimento in LIQUID_GRUPPO_CENTRO)
aLIC := getLiqIvaCentro(aliq);
-- Se lo stato di liquidazione del centro è già chiuso solleva eccezione
If aLIC.stato = STATO_LIQUID_CENTRO_CHIUSO then
IBMERR001.RAISE_ERR_GENERICO('Liquidazione finanziaria al centro già effettuata. '||getDescLiquidazione(aliq));
End if;
If aTesoreriaUnica = 'N' Then
-- Modifica la pratica di accantonamento al centro dell'importo della liquidazione locale
CNRCTB043.modificaPraticaObb(aLIC.esercizio_obb_accentr,aLIC.cd_cds_obb_accentr,aLIC.esercizio_ori_obb_accentr,aLIC.pg_obb_accentr,abs(aLiq.iva_da_versare),aTSNow,aUser);
End If;
Exception when NO_DATA_FOUND then
aObbPG:=null;
aObbPGScad:=null;
-- La pratica al centro non esiste ancora, devo definirla solo se non è attiva la tesoreria unica
If aTesoreriaUnica='N' Then
-- Estraggo il terzo UO relativo all'UO SAC che accentra i versamenti
CNRCTB080.GETTERZOPERUO(aUOVERSIVA.cd_unita_organizzativa,aCdTerzoAcc, aCdModPagAcc, aPgBancaAcc, aLiq.esercizio);
-- Estrazione del codice CORI per l'IVA
If (aLiq.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC ) Then
aCdCoriIva:=CNRCTB015.GETVAL01PERCHIAVE(CNRCTB575.TI_CORI_SPECIALE,CNRCTB575.TI_CORI_IVA);
elsif (aLiq.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTSPLIT ) Then
aCdCoriIva:=CNRCTB015.GETVAL03PERCHIAVE(CNRCTB575.TI_CORI_SPECIALE,CNRCTB575.TI_CORI_IVA);
Else
aCdCoriIva:=CNRCTB015.GETVAL02PERCHIAVE(CNRCTB575.TI_CORI_SPECIALE,CNRCTB575.TI_CORI_IVA);
End if;
-- Estrazione del conto finanziario da utilizzare
Begin
Select * into aAssCoriFin
From ass_tipo_cori_ev
Where cd_contributo_ritenuta = aCdCoriIva
And esercizio = aLiq.esercizio
And ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_ente_percepiente = 'E';
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario di partita di giro per versamento IVA non trovato');
End;
Begin
Select * into aVoceF
From voce_f
Where esercizio = aLiq.esercizio
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And cd_titolo_capitolo = aAssCoriFin.cd_elemento_voce
And ti_voce = CNRCTB001.CAPITOLO;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario di partita di giro per versamento IVA non trovato');
End;
-- Creazione dell'accertamento al centro di accantonamento versamenti locali
aAcc:=null;
aAccScad:=null;
aAcc.CD_CDS:=aUOVERSIVA.cd_unita_padre;
aAcc.ESERCIZIO:=aLiq.esercizio;
aAcc.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC_PGIRO;
aAcc.CD_UNITA_ORGANIZZATIVA:=aUOVERSIVA.cd_unita_organizzativa;
aAcc.CD_CDS_ORIGINE:=aUOVERSIVA.cd_unita_padre;
aAcc.CD_UO_ORIGINE:=aUOVERSIVA.cd_unita_organizzativa;
aAcc.TI_APPARTENENZA:=CNRCTB001.APPARTENENZA_CDS;
aAcc.TI_GESTIONE:=CNRCTB001.GESTIONE_ENTRATE;
-- Utilizzo come conto il primo conto che trovo di un CORI appartenente al gruppo
aAcc.CD_ELEMENTO_VOCE:=aAssCoriFin.cd_elemento_voce;
aAcc.CD_VOCE:=aVoceF.cd_voce;
aAcc.DT_REGISTRAZIONE:=TRUNC(aTSNow);
aAcc.DS_ACCERTAMENTO:=getDescPraticaFinCentro(aLiq);
aAcc.NOTE_ACCERTAMENTO:='';
aAcc.CD_TERZO:=aCdTerzoAcc;
aAcc.IM_ACCERTAMENTO:=abs(aLiq.iva_da_versare);
aAcc.FL_PGIRO:='Y';
aAcc.RIPORTATO:='N';
aAcc.DACR:=aTSNow;
aAcc.UTCR:=aUser;
aAcc.DUVA:=aTSNow;
aAcc.UTUV:=aUser;
aAcc.PG_VER_REC:=1;
aAcc.ESERCIZIO_COMPETENZA:=aLiq.esercizio;
-- Creo la partita di giro tronca di accantonamento versamenti locali
CNRCTB040.CREAACCERTAMENTOPGIROTRONC(false,aAcc,aAccScad,aObbPG,aObbPGScad,trunc(aTSNow));
-- Crea generico e reversale provvisoria per completare la pratica di accantonamento di versamento iva centro
aAnagTst:=CNRCTB080.GETANAG(aCdTerzoAcc);
aGen:=null;
aGenRiga:=null;
aGen.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_ACC_ENTRATA;
aGen.CD_CDS:=aAcc.cd_cds;
aGen.CD_UNITA_ORGANIZZATIVA:=aAcc.cd_unita_organizzativa;
aGen.ESERCIZIO:=aAcc.esercizio;
aGen.CD_CDS_ORIGINE:=aAcc.cd_cds;
aGen.CD_UO_ORIGINE:=aAcc.cd_unita_organizzativa;
aGen.IM_TOTALE:=aAcc.im_accertamento;
aGen.DATA_REGISTRAZIONE:=TRUNC(aTSNow);
-- La competenza economica è il periodo della liquidazione
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aLiq.dt_inizio);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aLiq.dt_fine);
aGen.DS_DOCUMENTO_GENERICO:=getDescPraticaFinCentro(aLiq);
If aLiq.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC Then
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_COMMERCIALE;
Else
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
End If;
aGen.STATO_COFI:=CNRCTB100.STATO_GEN_COFI_TOT_MR;
aGen.STATO_COGE:=CNRCTB100.STATO_COEP_EXC;
aGen.STATO_COAN:=CNRCTB100.STATO_COEP_EXC;
aGen.CD_DIVISA:='EURO';
aGen.CAMBIO:=1;
aGen.DACR:=aTSNow;
aGen.UTCR:=aUser;
aGen.DUVA:=aTSNow;
aGen.UTUV:=aUser;
aGen.PG_VER_REC:=1;
aGen.DT_SCADENZA:=TRUNC(aTSNow);
aGen.STATO_PAGAMENTO_FONDO_ECO:=CNRCTB100.STATO_NO_PFONDOECO;
aGen.TI_ASSOCIATO_MANREV:=CNRCTB100.TI_ASSOC_TOT_MAN_REV ;
aGenRiga.CD_CDS:=aGen.CD_CDS;
aGenRiga.CD_UNITA_ORGANIZZATIVA:=aGen.CD_UNITA_ORGANIZZATIVA;
aGenRiga.ESERCIZIO:=aGen.ESERCIZIO;
aGenRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.CD_TIPO_DOCUMENTO_AMM;
aGenRiga.DS_RIGA:=aGen.DS_DOCUMENTO_GENERICO;
aGenRiga.IM_RIGA_DIVISA:=aGen.IM_TOTALE;
aGenRiga.IM_RIGA:=aGen.IM_TOTALE;
aGenRiga.RAGIONE_SOCIALE:=aAnagTst.ragione_sociale;
aGenRiga.NOME:=aAnagTst.nome;
aGenRiga.COGNOME:=aAnagTst.cognome;
aGenRiga.CODICE_FISCALE:=aAnagTst.codice_fiscale;
aGenRiga.PARTITA_IVA:=aAnagTst.partita_iva;
aGenRiga.DT_DA_COMPETENZA_COGE:=aGen.DT_DA_COMPETENZA_COGE;
aGenRiga.DT_A_COMPETENZA_COGE:=aGen.DT_A_COMPETENZA_COGE;
aGenRiga.STATO_COFI:=aGen.STATO_COFI;
aGenRiga.CD_TERZO:=aAcc.cd_terzo;
aGenRiga.CD_CDS_ACCERTAMENTO:=aAcc.CD_CDS;
aGenRiga.ESERCIZIO_ACCERTAMENTO:=aAcc.ESERCIZIO;
aGenRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aAcc.ESERCIZIO_ORIGINALE;
aGenRiga.PG_ACCERTAMENTO:=aAcc.PG_ACCERTAMENTO;
aGenRiga.PG_ACCERTAMENTO_SCADENZARIO:=1;
aGenRiga.CD_TERZO_UO_CDS:=aCdTerzoAcc;
aGenRiga.PG_BANCA_UO_CDS:=aPgBancaAcc;
aGenRiga.CD_MODALITA_PAG_UO_CDS:=aCdModPagAcc;
aGenRiga.DACR:=aGen.DACR;
aGenRiga.UTCR:=aGen.UTCR;
aGenRiga.UTUV:=aGen.UTUV;
aGenRiga.DUVA:=aGen.DUVA;
aGenRiga.PG_VER_REC:=aGen.PG_VER_REC;
aGenRiga.TI_ASSOCIATO_MANREV:=aGen.TI_ASSOCIATO_MANREV;
aListGenRighe(1):=aGenRiga;
CNRCTB110.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
aRev:=null;
aRevRiga:=null;
aRev.CD_CDS:=aAcc.cd_cds;
aRev.ESERCIZIO:=aAcc.esercizio;
aRev.CD_UNITA_ORGANIZZATIVA:=aAcc.cd_unita_organizzativa;
aRev.CD_CDS_ORIGINE:=aAcc.cd_cds;
aRev.CD_UO_ORIGINE:=aAcc.cd_unita_organizzativa;
aRev.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_REV_PROVV;
aRev.TI_REVERSALE:=CNRCTB038.TI_REV_SOS;
aRev.TI_COMPETENZA_RESIDUO:=CNRCTB038.TI_MAN_COMP;
aRev.DS_REVERSALE:=getDescPraticaFinCentro(aLiq);
aRev.STATO:=CNRCTB038.STATO_REV_EME;
-- Modifica del 26/02/2004
-- La reversale di accantonamento IVA va in economica sul conto di patrimonio C/Erario IVA
aRev.STATO_COGE:=CNRCTB100.STATO_COEP_INI;
--
aRev.DT_EMISSIONE:=TRUNC(aTSNow);
aRev.IM_REVERSALE:=aAcc.im_accertamento;
aRev.IM_INCASSATO:=0;
aRev.DACR:=aTSNow;
aRev.UTCR:=aUser;
aRev.DUVA:=aTSNow;
aRev.UTUV:=aUser;
aRev.PG_VER_REC:=1;
aRev.STATO_TRASMISSIONE:=CNRCTB038.STATO_REV_TRASCAS_NODIST;
aRevRiga.CD_CDS:=aRev.cd_cds;
aRevRiga.ESERCIZIO:=aRev.esercizio;
aRevRiga.ESERCIZIO_ACCERTAMENTO:=aAcc.esercizio;
aRevRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aAcc.esercizio_originale;
aRevRiga.PG_ACCERTAMENTO:=aAcc.pg_accertamento;
aRevRiga.PG_ACCERTAMENTO_SCADENZARIO:=aAccScad.pg_accertamento_scadenzario;
aRevRiga.CD_CDS_DOC_AMM:=aGen.cd_cds;
aRevRiga.CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aRevRiga.ESERCIZIO_DOC_AMM:=aGen.esercizio;
aRevRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aRevRiga.PG_DOC_AMM:=aGen.pg_documento_generico;
aRevRiga.DS_REVERSALE_RIGA:=aRev.ds_reversale;
aRevRiga.STATO:=aRev.STATO;
aRevRiga.CD_TERZO:=aGenRiga.cd_terzo;
aRevRiga.CD_TERZO_UO:=aGenRiga.cd_terzo_uo_cds;
aRevRiga.PG_BANCA:=aGenRiga.pg_banca_uo_cds;
aRevRiga.CD_MODALITA_PAG:=aGenRiga.cd_modalita_pag_uo_cds;
aRevRiga.IM_REVERSALE_RIGA:=aRev.im_reversale;
aRevRiga.FL_PGIRO:='Y';
aRevRiga.UTCR:=aUser;
aRevRiga.DACR:=aTSNow;
aRevRiga.UTUV:=aUser;
aRevRiga.DUVA:=aTSNow;
aRevRiga.PG_VER_REC:=1;
CNRCTB037.generaRevProvvPgiro(aRev, aRevRiga, aTSNow, aUser);
End If; --Fine "If aTesoreriaUnica='N' Then"
-- Crea il record in LIQUID_IVA_CENTRO che referenzia la pratica di accantonamento al centro dei versamenti IVA locali
aLIC:=creaLiqIvaCentro(aLiq,aObbPG,aTSNow,aUser);
End;
-- Aggiorna la liquidazione IVA locale con le informazioni relative all'obbligazione pgiro su UO che versa
Update liquidazione_iva
Set cd_cds_obb_accentr = aLIC.cd_cds_obb_accentr,
esercizio_obb_accentr = aLIC.esercizio_obb_accentr,
esercizio_ori_obb_accentr = aLIC.esercizio_ori_obb_accentr,
pg_obb_accentr = aLIC.pg_obb_accentr
Where cd_cds = aLiq.cd_cds And
esercizio = aLiq.esercizio And
cd_unita_organizzativa = aLiq.cd_unita_organizzativa And
tipo_liquidazione = aLiq.tipo_liquidazione And
dt_inizio = aLiq.dt_inizio And
dt_fine = aLiq.dt_fine And
report_id = aLiq.report_id;
End;
procedure annullaLiquidIVA(aL liquidazione_iva%rowtype, aUtente varchar2) is
aTSNow date;
aLIC liquidazione_iva_centro%rowtype;
begin
aTSNow:=sysdate;
IBMERR001.RAISE_ERR_GENERICO('Operazione non permessa');
aLIC:=null;
begin
aLIC:=getLiqIvaCentro(aL);
-- Decrementa l'importo della pratica di accantonamento della quota da versare della liquidazione annullata
CNRCTB043.modificaPraticaObb(aLIC.esercizio_obb_accentr,aLIC.cd_cds_obb_accentr,aLIC.esercizio_ori_obb_accentr,aLIC.pg_obb_accentr,0-abs(aL.iva_da_versare),aTSNow,aUtente);
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Riferimento al centro per liquidazione locale non trovato. '||getDescLiquidazione(aL));
end;
-- Aggiorna la liquidazione IVA togliendo i riferimenti a doc generico di versamento (trasferimento al centro)
update liquidazione_iva
set
cd_tipo_documento = null
,esercizio_doc_amm = null
,cd_cds_doc_amm = null
,cd_uo_doc_amm = null
,pg_doc_amm =null
,duva = aTSNow
,utuv = aUtente
,pg_ver_rec = pg_ver_rec + 1
where
cd_cds = aL.cd_cds
and esercizio = aL.esercizio
and cd_unita_organizzativa = aL.cd_unita_organizzativa
and dt_inizio = aL.dt_inizio
and dt_fine = aL.dt_fine
and tipo_liquidazione = aL.tipo_liquidazione
and report_id = aL.report_id;
end;
Procedure contabilLiquidIVA(
aCdCds VARCHAR2,
aEs NUMBER,
aCdUo VARCHAR2,
aDtDa DATE,
aDtA DATE,
aUser VARCHAR2,
aTipoLiquidazione VARCHAR2,
inTipoImpegno VARCHAR2 Default Null)
Is
aUOVERSIVA unita_organizzativa%rowtype;
aUOENTE unita_organizzativa%rowtype;
aDivisaEuro varchar2(30);
aCdTerzo number(8);
aCdModPag varchar2(10);
aPgBanca number(10);
aObb obbligazione%rowtype;
aObbScad obbligazione_scadenzario%rowtype;
aObbScadVoce obbligazione_scad_voce%rowtype;
aDettObbScad CNRCTB035.scadVoceListS;
aGen documento_generico%rowtype;
aGenRiga documento_generico_riga%rowtype;
aListGenRighe CNRCTB100.docGenRigaList;
aManP mandato%rowtype;
aManPRiga mandato_riga%rowtype;
aListRigheManP CNRCTB038.righeMandatoList;
aEV elemento_voce%rowtype;
aVoceF voce_f%rowtype;
aTotMandato number(15,2);
aAcc accertamento%rowtype;
aAccScad accertamento_scadenzario%rowtype;
aAccOrig accertamento%rowtype;
aAccPG accertamento%rowtype;
aAccPGScad accertamento_scadenzario%rowtype;
aAssCoriFin ass_tipo_cori_ev%rowtype;
aTSNow date;
aAnagTst anagrafico%rowtype;
aCdCoriIva varchar2(10);
aGruppoCoriDet gruppo_cr_det%rowtype;
aLiquidIva liquidazione_iva%rowtype;
aCDRUO v_cdr_valido%rowtype;
aLASpecIva v_linea_attivita_valida%rowtype;
aAssPgiro ass_partita_giro%rowtype;
isIvaInterfaccia boolean;
recParametriCNR PARAMETRI_CNR%Rowtype;
aEsDefault number;
Procedure createObbligazioneEnte(aEs INTEGER, aLiquidIva liquidazione_iva%Rowtype,
aEsRes INTEGER, importoObb NUMBER,
aUOVERSIVA unita_organizzativa%Rowtype,
aEv elemento_voce%Rowtype, aGruppoCoriDet gruppo_cr_det%Rowtype, aLAIvaObb v_linea_attivita_valida%Rowtype,
nuovoPdg VARCHAR2, tipodoc VARCHAR2, aUser VARCHAR2,
aObb In Out obbligazione%Rowtype, aObbScad In Out obbligazione_scadenzario%Rowtype,
aObbScadVoce In Out obbligazione_scad_voce%rowtype)
Is
Begin
aObb.ESERCIZIO:=aEs;
aObb.CD_CDS:=aUOVERSIVA.cd_unita_padre;
aObb.CD_TIPO_DOCUMENTO_CONT:=tipodoc;
aObb.ESERCIZIO_ORIGINALE:=aEsRes;
aObb.CD_UNITA_ORGANIZZATIVA:=aUOVERSIVA.cd_unita_organizzativa;
aObb.CD_CDS_ORIGINE:=aUOVERSIVA.cd_unita_padre;
aObb.CD_UO_ORIGINE:=aUOVERSIVA.cd_unita_organizzativa;
aObb.CD_TIPO_OBBLIGAZIONE:=NULL;
aObb.TI_APPARTENENZA:=CNRCTB001.APPARTENENZA_CDS;
aObb.TI_GESTIONE:=CNRCTB001.GESTIONE_SPESE;
aObb.CD_ELEMENTO_VOCE:=aEv.cd_elemento_voce;
aObb.DT_REGISTRAZIONE:=trunc(Sysdate);
aObb.DS_OBBLIGAZIONE:=getDescLiquidazione(aLiquidIva);
aObb.NOTE_OBBLIGAZIONE:=NULL;
aObb.CD_TERZO:=aGruppoCoriDet.cd_terzo_versamento;
aObb.IM_OBBLIGAZIONE:=abs(importoObb);
aObb.IM_COSTI_ANTICIPATI:=0;
aObb.ESERCIZIO_COMPETENZA:=aEs;
aObb.STATO_OBBLIGAZIONE:=CNRCTB035.STATO_DEFINITIVO;
aObb.DT_CANCELLAZIONE:=NULL;
aObb.CD_RIFERIMENTO_CONTRATTO:=NULL;
aObb.DT_SCADENZA_CONTRATTO:=NULL;
aObb.FL_CALCOLO_AUTOMATICO:='Y';
aObb.CD_FONDO_RICERCA:=NULL;
aObb.FL_SPESE_COSTI_ALTRUI:='N';
If tipodoc In (CNRCTB018.TI_DOC_OBB_PGIRO, CNRCTB018.TI_DOC_OBB_PGIRO_RES) Then
aObb.FL_PGIRO:='Y';
Else
aObb.FL_PGIRO:='N';
End If;
aObb.DACR:=Sysdate;
aObb.UTCR:=aUser;
aObb.DUVA:=Sysdate;
aObb.UTUV:=aUser;
aObb.RIPORTATO:='N';
aObb.PG_VER_REC:=1;
aObbScad.ESERCIZIO:=aObb.esercizio;
aObbScad.ESERCIZIO_ORIGINALE:=aObb.esercizio_originale;
aObbScad.CD_CDS:=aObb.cd_cds;
aObbScad.DT_SCADENZA:=aObb.dt_registrazione;
aObbScad.DS_SCADENZA:=aObb.ds_obbligazione;
aObbScad.IM_SCADENZA:=aObb.IM_OBBLIGAZIONE;
If tipodoc In (CNRCTB018.TI_DOC_OBB_PGIRO, CNRCTB018.TI_DOC_OBB_PGIRO_RES) Then
aObbScad.IM_ASSOCIATO_DOC_AMM:=aObb.IM_OBBLIGAZIONE;
Else
aObbScad.IM_ASSOCIATO_DOC_AMM:=0;
End If;
aObbScad.IM_ASSOCIATO_DOC_CONTABILE:=0;
aObbScad.DACR:=Sysdate;
aObbScad.UTCR:=aUser;
aObbScad.DUVA:=Sysdate;
aObbScad.UTUV:=aUser;
aObbScad.PG_VER_REC:=1;
aObbScadVoce.ESERCIZIO:=aObb.esercizio;
aObbScadVoce.ESERCIZIO_ORIGINALE:=aObb.esercizio_originale;
aObbScadVoce.CD_CDS:=aObb.cd_cds;
aVoceF := Null;
If nuovoPdg = 'N' Then
Begin
Select * Into aVoceF
From voce_f
Where esercizio = aLiquidIva.esercizio
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_gestione = CNRCTB001.GESTIONE_SPESE
And cd_titolo_capitolo = aEv.cd_elemento_voce
And ti_voce = CNRCTB001.CAPITOLO;
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario di spesa su partita di giro per versamento IVA centro non trovato');
End;
aObbScadVoce.TI_APPARTENENZA:=aVoceF.ti_appartenenza;
aObbScadVoce.TI_GESTIONE:=aVoceF.ti_gestione;
aObbScadVoce.CD_VOCE:=aVoceF.cd_voce;
Else
aObbScadVoce.TI_APPARTENENZA:=CNRCTB001.APPARTENENZA_CDS;
aObbScadVoce.TI_GESTIONE:=CNRCTB001.GESTIONE_SPESE;
aObbScadVoce.CD_VOCE:=aEv.cd_elemento_voce;
End If;
aObbScadVoce.CD_CENTRO_RESPONSABILITA:=aLAIvaObb.cd_centro_responsabilita;
aObbScadVoce.CD_LINEA_ATTIVITA:=aLAIvaObb.cd_linea_attivita;
aObbScadVoce.IM_VOCE:=aObb.IM_OBBLIGAZIONE;
aObbScadVoce.CD_FONDO_RICERCA:=NULL;
aObbScadVoce.DACR:=Sysdate;
aObbScadVoce.UTCR:=aUser;
aObbScadVoce.DUVA:=Sysdate;
aObbScadVoce.UTUV:=aUser;
aObbScadVoce.PG_VER_REC:=1;
End createObbligazioneEnte;
Begin
recParametriCNR := CNRUTL001.getRecParametriCnr(aEs);
If recParametriCNR.esercizio is null Then
ibmerr001.RAISE_ERR_GENERICO('Contabilizzazione Liquidazione Iva fallita, manca la configurazione per esercizio '||to_char(aEs));
End If;
aTSNow:=sysdate;
If aEs is Null Or aCdCds is Null Or aCdUo is Null Or aDtDa is Null Or aDtA is Null Or aTipoLiquidazione Is Null then
IBMERR001.RAISE_ERR_GENERICO('Alcuni parametri di ingresso non sono stati valorizzati');
End if;
Begin
Select * into aLiquidIva
From liquidazione_iva
Where cd_cds = aCdCds
And esercizio = aEs
And cd_unita_organizzativa = aCdUo
And tipo_liquidazione = aTipoLiquidazione
And dt_inizio = trunc(aDtDa)
And dt_fine = trunc(aDta)
And report_id = 0
For update nowait;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Dati per liquidazione IVA dell''UO:'||aCdUo||' non trovati');
End;
If aLiquidIva.iva_da_versare is null then
IBMERR001.RAISE_ERR_GENERICO('Importo IVA da versare non specificato');
End if;
-- Check se si tratta di UO liquidata via interfaccia
isIvaInterfaccia:=false;
Declare
aTempNum number;
Begin
Select distinct 1 into aTempNum
From liquid_iva_interf_cds
Where esercizio = aEs
And cd_cds = aCdCds;
isIvaInterfaccia:=true;
Exception
When NO_DATA_FOUND then
null;
End;
aEsDefault := to_char(aLiquidIva.dt_inizio, 'YYYY');
-- Estrazione dell'UO di versamento IVA
aUOVERSIVA:=CNRCTB020.getUOVersIVA(aEsDefault);
-- Estrazione dell'UO ente
aUOENTE:=CNRCTB020.GETUOENTE(aEs);
-- Se si tratta di versamento accentrato, aggiorno il riferimento alla pratica di accantonamento al centro delle
-- liquidazioni locali
If aUOENTE.cd_unita_organizzativa = aCdUo Then
Declare
aLIC liquidazione_iva_centro%Rowtype;
Begin
aLIC:=getLiqIvaCentro(aLiquidIva);
Update liquidazione_iva_centro
Set stato = STATO_LIQUID_CENTRO_CHIUSO,
cd_cds_li = aLiquidIva.cd_cds,
cd_uo_li = aLiquidIva.cd_unita_organizzativa,
report_id_li = aLiquidIva.report_id,
utuv=aUser,
duva=aTSNow,
pg_ver_rec=pg_ver_rec+1
Where esercizio = aLiquidIva.esercizio
And dt_inizio = aLiquidIva.dt_inizio
And dt_fine = aLiquidIva.dt_fine
And tipo_liquidazione = aLiquidIva.tipo_liquidazione;
Exception
When NO_DATA_FOUND Then
-- LIQUIDAZIONE_IVA_CENTRO pu?² essere vuota (nessuna UO a debito d'iva nel periodo)
Null;
End;
End If;
-- Se l'importo da versare di IVA ?¨ minore o uguale a 0, non devo effettuare alcun versamento
If aLiquidIva.iva_da_versare >= 0 Then
Return;
End if;
-- Estrazione del codice CORI per l'IVA
If (aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC ) Then
aCdCoriIva:=CNRCTB015.GETVAL01PERCHIAVE(CNRCTB575.TI_CORI_SPECIALE,CNRCTB575.TI_CORI_IVA);
elsif (aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTSPLIT ) Then
aCdCoriIva:=CNRCTB015.GETVAL03PERCHIAVE(CNRCTB575.TI_CORI_SPECIALE,CNRCTB575.TI_CORI_IVA);
Else
-- Estrazione del codice CORI per l'IVA (Istituzionale)
aCdCoriIva:=CNRCTB015.GETVAL02PERCHIAVE(CNRCTB575.TI_CORI_SPECIALE,CNRCTB575.TI_CORI_IVA);
End If;
-- Estraggo il CDR da utilizzare per estrarre la linea di attività per obbligazione di versamento (centro e periferia)
-- PER TUTTE LE UO TRANNE QUELLE LIQUIDATE VIA INTERFCACCIA
If not isIvaInterfaccia then
Begin
Select * into aCDRUO
From v_cdr_valido
Where esercizio = aEs
And cd_unita_organizzativa = decode(aCdUo,aUOENTE.cd_unita_organizzativa,aUOVERSIVA.cd_unita_organizzativa,aCdUo)
And to_number(cd_proprio_cdr)=0;
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('CDR di responsabile dell''UO '||aCdUo||' non trovato');
End;
-- Estrazione della linea di attività comune da utilizzare per la creazione dell'obbligazione di versamento
Begin
Select a.* into aLASpecIva
From v_linea_attivita_valida a
Where a.esercizio = aEs
And a.cd_centro_responsabilita = aCDRUO.cd_centro_responsabilita
And a.cd_linea_attivita = CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA)
And a.ti_gestione = CNRCTB001.GESTIONE_SPESE
And Exists (Select 1 From tipo_linea_attivita b
Where b.cd_tipo_linea_attivita = a.cd_tipo_linea_attivita
And b.ti_tipo_la = CNRCTB010.TI_TIPO_LA_COMUNE);
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Linea di attività comune per '||cnrutil.getLabelObbligazioneMin()||' versamento IVA non trovata ('||
aCDRUO.cd_centro_responsabilita||'/'||CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA)||') per l''esercizio '||to_char(aEs));
End;
End If;
Dbms_Output.put_line('aLASpecIva: '||aLASpecIva.cd_linea_attivita);
aDivisaEuro:=CNRCTB015.GETVAL01PERCHIAVE(CNRCTB100.CCNR_DIVISA,CNRCTB100.CCNR_EURO);
-- Se si tratta di liquidazione di UO <> da UO di versamento:
--
-- 1. creo una obbligazione su partite normali+generico (tipo gens accantonamento) e relativo mandato per il trasferimento all'UO di versamento
-- 2. apro una partita di giro (E-S) sull'UO di versamento
--
If aUOENTE.cd_unita_organizzativa <> aCdUo Then
-- Se la liquidazione ?¨ fatta via interfaccia, non devo gestire pratiche finanziarie all'interno del CDS versante
If not isIvaInterfaccia Then -- non interfaccia
CNRCTB080.GETTERZOPERUO(aUOVERSIVA.cd_unita_organizzativa,aCdTerzo, aCdModPag, aPgBanca, aEs);
aAnagTst:=CNRCTB080.GETANAG(aCdTerzo);
-- ===================================
-- IVA COMMERCIALE (PARTITE NORMALI)
-- ===================================
If aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC Then
-- Estrazione della voce del piano da utilizzare per il versamento dell'IVA
aEV := getVoceIvaCommerciale(aEs);
--Se non attiva la tesoreria unica effettuo il giro classico di creazione obbligazione
--Se attiva invece devo creare una variazione di bilancio
If nvl(recParametriCNR.fl_tesoreria_unica,'N') = 'N' Then
-- Estrazione del capitolo di versamento IVA
-- Se l'UO ?¨ del SAC -> Articolo corrispondente all'UO (CDR = CDR RUO), funzione = quella LA speciale IVA
-- Se l'UO non ?¨ del SAC -> Capitolo corrispondente all'UO, funzione = quella LA speciale IVA
Begin
Select * into aVoceF
From voce_f
Where esercizio = aEV.esercizio
And ti_appartenenza = aEV.ti_appartenenza
And ti_gestione = aEV.ti_gestione
And cd_titolo_capitolo = aEV.cd_elemento_voce
And ((cd_centro_responsabilita = aCDRUO.cd_centro_responsabilita And
TI_VOCE = CNRCTB001.ARTICOLO)
Or
(cd_centro_responsabilita is Null And
cd_unita_organizzativa = aCdUo And
TI_VOCE = CNRCTB001.CAPITOLO)
)
And cd_funzione = aLASpecIva.cd_funzione
And fl_mastrino = 'Y';
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Conto di spesa CDS da utilizzare per il versamento dell''IVA non trovato');
End;
If inTipoImpegno Is Null Then
IBMERR001.RAISE_ERR_GENERICO('Tipologia Impegno per il versamento dell''IVA non trovata');
End If;
aObb.ESERCIZIO:=aEs;
aObb.CD_CDS:=aCdCds;
If inTipoImpegno = 'R' Then
aObb.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB_RES_IMPRO;
Else
aObb.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB;
End If;
aObb.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aObb.CD_CDS_ORIGINE:=aCdCds;
aObb.CD_UO_ORIGINE:=aCdUo;
aObb.CD_TIPO_OBBLIGAZIONE:=NULL;
aObb.TI_APPARTENENZA:=CNRCTB001.APPARTENENZA_CDS;
aObb.TI_GESTIONE:=CNRCTB001.GESTIONE_SPESE;
aObb.CD_ELEMENTO_VOCE:=aEV.cd_elemento_voce;
aObb.DT_REGISTRAZIONE:=trunc(aTSNow);
aObb.DS_OBBLIGAZIONE:=getDescLiquidazione(aLiquidIva);
aObb.NOTE_OBBLIGAZIONE:=NULL;
aObb.CD_TERZO:=aCdTerzo;
aObb.IM_OBBLIGAZIONE:=abs(aLiquidIva.iva_da_versare);
aObb.IM_COSTI_ANTICIPATI:=0;
aObb.ESERCIZIO_COMPETENZA:=aEs;
aObb.STATO_OBBLIGAZIONE:=CNRCTB035.STATO_DEFINITIVO;
aObb.DT_CANCELLAZIONE:=NULL;
aObb.CD_RIFERIMENTO_CONTRATTO:=NULL;
aObb.DT_SCADENZA_CONTRATTO:=NULL;
aObb.FL_CALCOLO_AUTOMATICO:='Y';
aObb.CD_FONDO_RICERCA:=NULL;
aObb.FL_SPESE_COSTI_ALTRUI:='N';
aObb.FL_PGIRO:='N';
aObb.DACR:=aTSNow;
aObb.UTCR:=aUser;
aObb.DUVA:=aTSNow;
aObb.UTUV:=aUser;
aObb.RIPORTATO:='N';
aObb.PG_VER_REC:=1;
If inTipoImpegno = 'R' Then
aObb.ESERCIZIO_ORIGINALE:=aEs-1;
Else
aObb.ESERCIZIO_ORIGINALE:=aEs;
End If;
aObbScad.ESERCIZIO:=aObb.esercizio;
aObbScad.CD_CDS:=aObb.cd_cds;
aObbScad.DT_SCADENZA:=aObb.dt_registrazione;
aObbScad.DS_SCADENZA:=aObb.ds_obbligazione;
aObbScad.IM_SCADENZA:=aObb.IM_OBBLIGAZIONE;
aObbScad.IM_ASSOCIATO_DOC_AMM:=aObb.IM_OBBLIGAZIONE;
aObbScad.IM_ASSOCIATO_DOC_CONTABILE:=0;
aObbScad.DACR:=aTSNow;
aObbScad.UTCR:=aUser;
aObbScad.DUVA:=aTSNow;
aObbScad.UTUV:=aUser;
aObbScad.PG_VER_REC:=1;
aObbScad.ESERCIZIO_ORIGINALE:=aObb.esercizio_originale;
aObbScadVoce.ESERCIZIO:=aObb.esercizio;
aObbScadVoce.CD_CDS:=aObb.cd_cds;
aObbScadVoce.TI_APPARTENENZA:=aVoceF.ti_appartenenza;
aObbScadVoce.TI_GESTIONE:=aVoceF.ti_gestione;
aObbScadVoce.CD_VOCE:=aVoceF.cd_voce;
aObbScadVoce.CD_CENTRO_RESPONSABILITA:=aLASpecIva.cd_centro_responsabilita;
aObbScadVoce.CD_LINEA_ATTIVITA:=aLASpecIva.cd_linea_attivita;
aObbScadVoce.IM_VOCE:=aObb.IM_OBBLIGAZIONE;
aObbScadVoce.CD_FONDO_RICERCA:=NULL;
aObbScadVoce.DACR:=aTSNow;
aObbScadVoce.UTCR:=aUser;
aObbScadVoce.DUVA:=aTSNow;
aObbScadVoce.UTUV:=aUser;
aObbScadVoce.PG_VER_REC:=1;
aObbScadVoce.ESERCIZIO_ORIGINALE:=aObb.esercizio_originale;
aDettObbScad(1):=aObbScadVoce;
--modificato il primo parametro (che indica se effettuare i controlli bloccanti di disponibilità ) a false
--poiché i controlli sono stati spostati
If inTipoImpegno = 'R' Then
CNRCTB030.creaObbligazioneResidua(False,aObb,aObbScad,aDettObbScad);
Else
CNRCTB030.creaObbligazione(False,aObb,aObbScad,aDettObbScad);
End If;
aGen := null;
aGenRiga := null;
-- Creo il documento generico di spesa su partita normale collegato all'obbligazione
aGen.CD_CDS:=aObb.cd_cds;
aGen.CD_UNITA_ORGANIZZATIVA:=aObb.cd_unita_organizzativa;
aGen.ESERCIZIO:=aObb.esercizio;
aGen.CD_CDS_ORIGINE:=aObb.cd_cds;
aGen.CD_UO_ORIGINE:=aObb.cd_unita_organizzativa;
aGen.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GENERICO_TRASF_S;
aGen.DATA_REGISTRAZIONE:=TRUNC(aTSNow);
aGen.DS_DOCUMENTO_GENERICO:=aObb.ds_obbligazione;
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_COMMERCIALE;
aGen.IM_TOTALE:=aObb.im_obbligazione;
aGen.STATO_COFI:=CNRCTB100.STATO_GEN_COFI_TOT_MR;
aGen.STATO_COGE:=CNRCTB100.STATO_COEP_EXC;
aGen.STATO_COAN:=CNRCTB100.STATO_COEP_EXC;
aGen.CD_DIVISA:=aDivisaEuro;
aGen.CAMBIO:=1;
-- aGen.ESERCIZIO_LETTERA:=0;
-- aGen.PG_LETTERA:=0;
aGen.DACR:=aTSNow;
aGen.UTCR:=aUser;
aGen.DUVA:=aTSNow;
aGen.UTUV:=aUser;
aGen.PG_VER_REC:=1;
aGen.DT_SCADENZA:=TRUNC(aTSNow);
aGen.STATO_PAGAMENTO_FONDO_ECO:=CNRCTB100.STATO_NO_PFONDOECO;
aGen.TI_ASSOCIATO_MANREV:=CNRCTB100.TI_ASSOC_TOT_MAN_REV ;
aGenRiga.CD_CDS:=aGen.CD_CDS;
aGenRiga.CD_UNITA_ORGANIZZATIVA:=aGen.CD_UNITA_ORGANIZZATIVA;
aGenRiga.ESERCIZIO:=aGen.ESERCIZIO;
aGenRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.CD_TIPO_DOCUMENTO_AMM;
aGenRiga.DS_RIGA:=aGen.DS_DOCUMENTO_GENERICO;
aGenRiga.IM_RIGA_DIVISA:=aGen.IM_TOTALE;
aGenRiga.IM_RIGA:=aGen.IM_TOTALE;
aGenRiga.CD_TERZO:=aCdTerzo;
aGenRiga.RAGIONE_SOCIALE:=aAnagTst.RAGIONE_SOCIALE;
aGenRiga.NOME:=aAnagTst.NOME;
aGenRiga.COGNOME:=aAnagTst.COGNOME;
aGenRiga.CODICE_FISCALE:=aAnagTst.CODICE_FISCALE;
aGenRiga.PARTITA_IVA:=aAnagTst.PARTITA_IVA;
aGenRiga.CD_MODALITA_PAG:=aCdModPag;
aGenRiga.PG_BANCA:=aPgBanca;
-- aGenRiga.CD_TERMINI_PAG:=aCompenso.CD_TERMINI_PAG;
-- aGenRiga.CD_TERMINI_PAG_UO_CDS:=aCompenso.CD_TERMINI_PAG_UO_CDS;
-- aGenRiga.PG_BANCA_UO_CDS:=aGen.PG_BANCA_UO_CDS;
-- aGenRiga.CD_MODALITA_PAG_UO_CDS:=aGen.CD_MODALITA_PAG_UO_CDS;
-- aGenRiga.NOTE:=aGen.NOTE;
aGenRiga.DT_DA_COMPETENZA_COGE:=TRUNC(aTSNow);
aGenRiga.DT_A_COMPETENZA_COGE:=TRUNC(aTSNow);
aGenRiga.STATO_COFI:=aGen.STATO_COFI;
-- aGenRiga.DT_CANCELLAZIONE:=aGen.DT_CANCELLAZIONE;
-- aGenRiga.CD_CDS_OBBLIGAZIONE:=aGen.CD_CDS_OBBLIGAZIONE;
-- aGenRiga.ESERCIZIO_OBBLIGAZIONE:=aGen.ESERCIZIO_OBBLIGAZIONE;
-- aGenRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aGen.ESERCIZIO_ORI_OBBLIGAZIONE;
-- aGenRiga.PG_OBBLIGAZIONE:=aGen.PG_OBBLIGAZIONE;
-- aGenRiga.PG_OBBLIGAZIONE_SCADENZARIO:=aGen.PG_OBBLIGAZIONE_SCADENZARIO;
aGenRiga.CD_CDS_OBBLIGAZIONE:=aObb.CD_CDS;
aGenRiga.ESERCIZIO_OBBLIGAZIONE:=aObb.ESERCIZIO;
aGenRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aObb.ESERCIZIO_ORIGINALE;
aGenRiga.PG_OBBLIGAZIONE:=aObb.PG_OBBLIGAZIONE;
aGenRiga.PG_OBBLIGAZIONE_SCADENZARIO:=1;
aGenRiga.DACR:=aGen.DACR;
aGenRiga.UTCR:=aGen.UTCR;
aGenRiga.UTUV:=aGen.UTUV;
aGenRiga.DUVA:=aGen.DUVA;
aGenRiga.PG_VER_REC:=aGen.PG_VER_REC;
aGenRiga.TI_ASSOCIATO_MANREV:=aGen.TI_ASSOCIATO_MANREV;
aListGenRighe(1):=aGenRiga;
CNRCTB110.CREAGENERICO(aGen,aListGenRighe);
aManP.CD_CDS:=aObb.cd_cds;
aManP.ESERCIZIO:=aObb.esercizio;
aManP.CD_UNITA_ORGANIZZATIVA:=aObb.cd_unita_organizzativa;
aManP.CD_CDS_ORIGINE:=aObb.cd_cds;
aManP.CD_UO_ORIGINE:=aObb.cd_unita_organizzativa;
aManP.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_MAN;
aManP.TI_MANDATO:=CNRCTB038.TI_MAN_PAG;
aManP.TI_COMPETENZA_RESIDUO:=CNRCTB038.TI_MAN_COMP;
aManP.DS_MANDATO:=aObb.ds_obbligazione;
aManP.STATO:=CNRCTB038.STATO_MAN_EME;
aManP.DT_EMISSIONE:=TRUNC(aTSNow);
aManP.IM_RITENUTE:=0;
aManP.IM_MANDATO:=aObb.im_obbligazione;
-- aManP.DT_TRASMISSIONE:=;
-- aManP.DT_PAGAMENTO:=;
-- aManP.DT_ANNULLAMENTO:=;
aManP.IM_PAGATO:=0;
aManP.UTCR:=aUser;
aManP.DACR:=aTSNow;
aManP.UTUV:=aUser;
aManP.DUVA:=aTSNow;
aManP.PG_VER_REC:=1;
aManP.STATO_TRASMISSIONE:=CNRCTB038.STATO_MAN_TRASCAS_NODIST;
-- Generazione righe mandato
aManPRiga:=null;
aManPRiga.CD_CDS:=aGen.cd_cds;
aManPRiga.ESERCIZIO:=aGen.esercizio;
aManPRiga.ESERCIZIO_OBBLIGAZIONE:=aGenRiga.esercizio_obbligazione;
aManPRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aGenRiga.esercizio_ori_obbligazione;
aManPRiga.PG_OBBLIGAZIONE:=aGenRiga.pg_obbligazione;
aManPRiga.PG_OBBLIGAZIONE_SCADENZARIO:=aGenRiga.pg_obbligazione_scadenzario;
aManPRiga.CD_CDS_DOC_AMM:=aGen.cd_cds;
aManPRiga.CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aManPRiga.ESERCIZIO_DOC_AMM:=aGen.esercizio;
aManPRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aManPRiga.PG_DOC_AMM:=aGen.pg_documento_generico;
aManPRiga.DS_MANDATO_RIGA:=aManP.ds_mandato;
aManPRiga.STATO:=aManP.stato;
aManPRiga.CD_TERZO:=aGenRiga.cd_terzo;
aManPRiga.PG_BANCA:=aGenRiga.pg_banca;
aManPRiga.CD_MODALITA_PAG:=aGenRiga.cd_modalita_pag;
aManPRiga.IM_MANDATO_RIGA:=aObb.im_obbligazione;
aManPRiga.IM_RITENUTE_RIGA:=0;
aManPRiga.FL_PGIRO:='N';
aManPRiga.UTCR:=aUser;
aManPRiga.DACR:=aTSNow;
aManPRiga.UTUV:=aUser;
aManPRiga.DUVA:=aTSNow;
aManPRiga.PG_VER_REC:=1;
aTotMandato:=aTotMandato+aManPRiga.im_mandato_riga;
aListRigheManP(1):=aManPRiga;
-- =======================================================================================================
-- inizio S.F. 10.07.2007
-- Aggiorno il riferimento al documento generico di versamento in tabella liquidazione
-- tranne che per le UO liquidate via interfaccia (inutile l'if tanto ?¨ gi? nel ramo non interfaccia)
Update liquidazione_iva
Set cd_tipo_documento = aGen.cd_tipo_documento_amm,
esercizio_doc_amm = aGen.esercizio,
cd_cds_doc_amm = aGen.cd_cds,
cd_uo_doc_amm = aGen.cd_unita_organizzativa,
pg_doc_amm = aGen.pg_documento_generico,
duva = aTSNow,
utuv = aUser,
pg_ver_rec = pg_ver_rec + 1
Where cd_cds = aCdCds And
esercizio = aEs And
cd_unita_organizzativa = aCdUo And
dt_inizio = trunc(aDtDa) And
dt_fine = trunc(aDta) And
tipo_liquidazione = aTipoLiquidazione And
report_id = 0;
-- fine S.F. 10.07.2007
-- =======================================================================================================
CNRCTB037.generaDocumento(aManP,aListRigheManP); -- IVA COMMERCIALE
Else --nvl(recParametriCNR.fl_tesoreria_unica,'N') = 'Y'
generaVariazioneBilancio(aCdCds,aEs,aCdUo,aEV,aLiquidIva,aTSNow,aUser);
End If;
Else --Else di ("If aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC Then")
-- ====================================================
-- INTRAUE/SAN MARINO SENZ'IVA (PARTITA DI GIRO TRONCA)
-- ====================================================
--Se non attiva la tesoreria unica effettuo il giro classico di creazione obbligazione
--Se attiva invece non devo creare nulla
If nvl(recParametriCNR.fl_tesoreria_unica,'N') = 'N' Then
-- Estrazione del conto finanziario da utilizzare
aEV := getVoceIvaIstituzionale(aEs,nvl(recParametriCNR.fl_nuovo_pdg,'N'), aLiquidIva.tipo_liquidazione);
aManP.CD_CDS:=aCdCds;
aManP.ESERCIZIO:=aEs;
aManP.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aManP.CD_CDS_ORIGINE:=aCdCds;
aManP.CD_UO_ORIGINE:=aCdUo;
aManP.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_MAN;
aManP.TI_MANDATO:=CNRCTB038.TI_MAN_PAG;
aManP.TI_COMPETENZA_RESIDUO:=CNRCTB038.TI_MAN_COMP;
aManP.DS_MANDATO:=getDescLiquidazione(aLiquidIva);
aManP.STATO:=CNRCTB038.STATO_MAN_EME;
aManP.DT_EMISSIONE:=TRUNC(aTSNow);
aManP.IM_RITENUTE:=0;
-- aManP.DT_TRASMISSIONE:=;
-- aManP.DT_PAGAMENTO:=;
-- aManP.DT_ANNULLAMENTO:=;
aManP.IM_PAGATO:=0;
aManP.UTCR:=aUser;
aManP.DACR:=aTSNow;
aManP.UTUV:=aUser;
aManP.DUVA:=aTSNow;
aManP.PG_VER_REC:=1;
aManP.STATO_TRASMISSIONE:=CNRCTB038.STATO_MAN_TRASCAS_NODIST;
aTotMandato:=0;
aGen := null;
-- Creo il documento generico di spesa su partita di giro collegato all'annotazione di entrata su pgiro del contributo ritenuta
aGen.CD_CDS:=aCdCds;
aGen.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aGen.ESERCIZIO:=aEs;
aGen.CD_CDS_ORIGINE:=aCdCds;
aGen.CD_UO_ORIGINE:=aCdUo;
aGen.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_VER_SPESA;
aGen.DATA_REGISTRAZIONE:=TRUNC(aTSNow);
aGen.DS_DOCUMENTO_GENERICO:=getDescLiquidazione(aLiquidIva);
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
aGen.STATO_COFI:=CNRCTB100.STATO_GEN_COFI_TOT_MR;
aGen.STATO_COGE:=CNRCTB100.STATO_COEP_EXC;
aGen.STATO_COAN:=CNRCTB100.STATO_COEP_EXC;
aGen.CD_DIVISA:=aDivisaEuro;
aGen.CAMBIO:=1;
-- aGen.ESERCIZIO_LETTERA:=0;
-- aGen.PG_LETTERA:=0;
aGen.DACR:=aTSNow;
aGen.UTCR:=aUser;
aGen.DUVA:=aTSNow;
aGen.UTUV:=aUser;
aGen.PG_VER_REC:=1;
aGen.DT_SCADENZA:=TRUNC(aTSNow);
aGen.STATO_PAGAMENTO_FONDO_ECO:=CNRCTB100.STATO_NO_PFONDOECO;
aGen.TI_ASSOCIATO_MANREV:=CNRCTB100.TI_ASSOC_TOT_MAN_REV ;
begin
select * into aVoceF from voce_f where
esercizio = aLiquidIva.esercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
and ti_gestione = CNRCTB001.GESTIONE_SPESE
and cd_titolo_capitolo = aAssPgiro.cd_voce_clg
and ti_voce = CNRCTB001.CAPITOLO;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario di spesa su partita di giro per versamento IVA centro non trovato');
end;
aObb.ESERCIZIO:=aEs;
aObb.CD_CDS:=aCdCds;
aObb.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB_PGIRO;
aObb.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aObb.CD_CDS_ORIGINE:=aCdCds;
aObb.CD_UO_ORIGINE:=aCdUo;
aObb.CD_TIPO_OBBLIGAZIONE:=NULL;
aObb.TI_APPARTENENZA:=CNRCTB001.APPARTENENZA_CDS;
aObb.TI_GESTIONE:=CNRCTB001.GESTIONE_SPESE;
aObb.CD_ELEMENTO_VOCE:=aEv.cd_elemento_voce;
aObb.DT_REGISTRAZIONE:=trunc(aTSNow);
aObb.DS_OBBLIGAZIONE:=getDescLiquidazione(aLiquidIva);
aObb.NOTE_OBBLIGAZIONE:=NULL;
aObb.CD_TERZO:=aCdTerzo;
aObb.IM_OBBLIGAZIONE:=abs(aLiquidIva.iva_da_versare);
aObb.IM_COSTI_ANTICIPATI:=0;
aObb.ESERCIZIO_COMPETENZA:=aEs;
aObb.STATO_OBBLIGAZIONE:=CNRCTB035.STATO_DEFINITIVO;
aObb.DT_CANCELLAZIONE:=NULL;
aObb.CD_RIFERIMENTO_CONTRATTO:=NULL;
aObb.DT_SCADENZA_CONTRATTO:=NULL;
aObb.FL_CALCOLO_AUTOMATICO:='Y';
aObb.CD_FONDO_RICERCA:=NULL;
aObb.FL_SPESE_COSTI_ALTRUI:='N';
aObb.FL_PGIRO:='Y';
aObb.DACR:=aTSNow;
aObb.UTCR:=aUser;
aObb.DUVA:=aTSNow;
aObb.UTUV:=aUser;
aObb.RIPORTATO:='N';
aObb.PG_VER_REC:=1;
aObbScad.ESERCIZIO:=aObb.esercizio;
aObbScad.CD_CDS:=aObb.cd_cds;
aObbScad.DT_SCADENZA:=aObb.dt_registrazione;
aObbScad.DS_SCADENZA:=aObb.ds_obbligazione;
aObbScad.IM_SCADENZA:=aObb.IM_OBBLIGAZIONE;
aObbScad.IM_ASSOCIATO_DOC_AMM:=aObb.IM_OBBLIGAZIONE;
aObbScad.IM_ASSOCIATO_DOC_CONTABILE:=0;
aObbScad.DACR:=aTSNow;
aObbScad.UTCR:=aUser;
aObbScad.DUVA:=aTSNow;
aObbScad.UTUV:=aUser;
aObbScad.PG_VER_REC:=1;
aObbScadVoce.ESERCIZIO:=aObb.esercizio;
aObbScadVoce.CD_CDS:=aObb.cd_cds;
aObbScadVoce.TI_APPARTENENZA:=aVoceF.ti_appartenenza;
aObbScadVoce.TI_GESTIONE:=aVoceF.ti_gestione;
aObbScadVoce.CD_VOCE:=aVoceF.cd_voce;
aObbScadVoce.CD_CENTRO_RESPONSABILITA:=aLASpecIva.cd_centro_responsabilita;
aObbScadVoce.CD_LINEA_ATTIVITA:=aLASpecIva.cd_linea_attivita;
aObbScadVoce.IM_VOCE:=aObb.IM_OBBLIGAZIONE;
aObbScadVoce.CD_FONDO_RICERCA:=NULL;
aObbScadVoce.DACR:=aTSNow;
aObbScadVoce.UTCR:=aUser;
aObbScadVoce.DUVA:=aTSNow;
aObbScadVoce.UTUV:=aUser;
aObbScadVoce.PG_VER_REC:=1;
aDettObbScad(1):=aObbScadVoce;
-- Creo la partita di giro tronca di accantonamento versamenti locali
CNRCTB030.CREAOBBLIGAZIONEPGIROTRONC(false,aObb,aObbScad,aAccPG,aAccPGScad,trunc(aTSNow));
aGenRiga:=null;
aGenRiga.CD_CDS:=aGen.CD_CDS;
aGenRiga.CD_UNITA_ORGANIZZATIVA:=aGen.CD_UNITA_ORGANIZZATIVA;
aGenRiga.ESERCIZIO:=aGen.ESERCIZIO;
aGenRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.CD_TIPO_DOCUMENTO_AMM;
aGenRiga.DS_RIGA:=aGen.DS_DOCUMENTO_GENERICO;
aGenRiga.IM_RIGA_DIVISA:= aObb.im_obbligazione;
aGenRiga.IM_RIGA:=aObb.im_obbligazione;
aGenRiga.CD_TERZO:=aCdTerzo;
aGenRiga.RAGIONE_SOCIALE:=aAnagTst.RAGIONE_SOCIALE;
aGenRiga.NOME:=aAnagTst.NOME;
aGenRiga.COGNOME:=aAnagTst.COGNOME;
aGenRiga.CODICE_FISCALE:=aAnagTst.CODICE_FISCALE;
aGenRiga.PARTITA_IVA:=aAnagTst.PARTITA_IVA;
aGenRiga.CD_MODALITA_PAG:=aCdModPag;
aGenRiga.PG_BANCA:=aPgBanca;
-- aGenRiga.CD_TERMINI_PAG:=aCompenso.CD_TERMINI_PAG;
-- aGenRiga.CD_TERMINI_PAG_UO_CDS:=aCompenso.CD_TERMINI_PAG_UO_CDS;
-- aGenRiga.PG_BANCA_UO_CDS:=aGen.PG_BANCA_UO_CDS;
-- aGenRiga.CD_MODALITA_PAG_UO_CDS:=aGen.CD_MODALITA_PAG_UO_CDS;
-- aGenRiga.NOTE:=aGen.NOTE;
aGenRiga.DT_DA_COMPETENZA_COGE:=TRUNC(aLiquidIva.dt_inizio);
aGenRiga.DT_A_COMPETENZA_COGE:=TRUNC(aLiquidIva.dt_fine);
aGenRiga.STATO_COFI:=aGen.STATO_COFI;
-- aGenRiga.DT_CANCELLAZIONE:=aGen.DT_CANCELLAZIONE;
-- aGenRiga.CD_CDS_OBBLIGAZIONE:=aGen.CD_CDS_OBBLIGAZIONE;
-- aGenRiga.ESERCIZIO_OBBLIGAZIONE:=aGen.ESERCIZIO_OBBLIGAZIONE;
-- aGenRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aGen.ESERCIZIO_ORI_OBBLIGAZIONE;
-- aGenRiga.PG_OBBLIGAZIONE:=aGen.PG_OBBLIGAZIONE;
-- aGenRiga.PG_OBBLIGAZIONE_SCADENZARIO:=aGen.PG_OBBLIGAZIONE_SCADENZARIO;
aGenRiga.CD_CDS_OBBLIGAZIONE:=aObb.CD_CDS;
aGenRiga.ESERCIZIO_OBBLIGAZIONE:=aObb.ESERCIZIO;
aGenRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aObb.ESERCIZIO_ORIGINALE;
aGenRiga.PG_OBBLIGAZIONE:=aObb.PG_OBBLIGAZIONE;
aGenRiga.PG_OBBLIGAZIONE_SCADENZARIO:=1;
aGenRiga.DACR:=aGen.DACR;
aGenRiga.UTCR:=aGen.UTCR;
aGenRiga.UTUV:=aGen.UTUV;
aGenRiga.DUVA:=aGen.DUVA;
aGenRiga.PG_VER_REC:=aGen.PG_VER_REC;
aGenRiga.TI_ASSOCIATO_MANREV:=aGen.TI_ASSOCIATO_MANREV;
aListGenRighe(aListGenRighe.count+1):=aGenRiga;
-- Generazione righe mandato
aManPRiga:=null;
aManPRiga.CD_CDS:=aGen.cd_cds;
aManPRiga.ESERCIZIO:=aGen.esercizio;
aManPRiga.ESERCIZIO_OBBLIGAZIONE:=aGenRiga.esercizio_obbligazione;
aManPRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aGenRiga.esercizio_ori_obbligazione;
aManPRiga.PG_OBBLIGAZIONE:=aGenRiga.pg_obbligazione;
aManPRiga.PG_OBBLIGAZIONE_SCADENZARIO:=aGenRiga.pg_obbligazione_scadenzario;
aManPRiga.CD_CDS_DOC_AMM:=aGen.cd_cds;
aManPRiga.CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aManPRiga.ESERCIZIO_DOC_AMM:=aGen.esercizio;
aManPRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aManPRiga.PG_DOC_AMM:=aGen.pg_documento_generico;
aManPRiga.DS_MANDATO_RIGA:=aManP.ds_mandato;
aManPRiga.STATO:=aManP.stato;
aManPRiga.CD_TERZO:=aGenRiga.cd_terzo;
aManPRiga.PG_BANCA:=aGenRiga.pg_banca;
aManPRiga.CD_MODALITA_PAG:=aGenRiga.cd_modalita_pag;
aManPRiga.IM_MANDATO_RIGA:=aGenRiga.im_riga;
aManPRiga.IM_RITENUTE_RIGA:=0;
aManPRiga.FL_PGIRO:='Y';
aManPRiga.UTCR:=aUser;
aManPRiga.DACR:=aTSNow;
aManPRiga.UTUV:=aUser;
aManPRiga.DUVA:=aTSNow;
aManPRiga.PG_VER_REC:=1;
aTotMandato:=aTotMandato+aManPRiga.im_mandato_riga;
aListRigheManP(aListRigheManP.count+1):=aManPRiga;
aGen.IM_TOTALE:=aTotMandato;
CNRCTB110.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
FOR I IN 1 .. aListRigheManP.COUNT LOOP
aListRigheManP(I).CD_CDS_DOC_AMM:=aGen.cd_cds;
aListRigheManP(I).CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aListRigheManP(I).ESERCIZIO_DOC_AMM:=aGen.esercizio;
aListRigheManP(I).CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aListRigheManP(I).PG_DOC_AMM:=aGen.pg_documento_generico;
END LOOP;
aManP.IM_MANDATO:=aTotMandato;
-- =======================================================================================================
-- inizio S.F. 10.07.2007
-- Aggiorno il riferimento al documento generico di versamento in tabella liquidazione
-- tranne che per le UO liquidate via interfaccia (inutile l'if tanto ?¨ gi? nel ramo non interfaccia)
Update liquidazione_iva
Set cd_tipo_documento = aGen.cd_tipo_documento_amm,
esercizio_doc_amm = aGen.esercizio,
cd_cds_doc_amm = aGen.cd_cds,
cd_uo_doc_amm = aGen.cd_unita_organizzativa,
pg_doc_amm = aGen.pg_documento_generico,
duva = aTSNow,
utuv = aUser,
pg_ver_rec = pg_ver_rec + 1
Where cd_cds = aCdCds And
esercizio = aEs And
cd_unita_organizzativa = aCdUo And
dt_inizio = trunc(aDtDa) And
dt_fine = trunc(aDta) And
tipo_liquidazione = aTipoLiquidazione And
report_id = 0;
-- fine S.F. 10.07.2007
-- =======================================================================================================
CNRCTB037.generaDocumento(aManP, aListRigheManP); -- INTRAUE/SAN MARINO SENZ'IVA
End If; -- Fine "If nvl(recParametriCNR.fl_tesoreria_unica,'N') = 'N' Then")
End If; -- Fine gestione COMMERCIALE - INTRAUE/SAN MARINO SENZ'IVA
End If; -- UO NON liquidate via interfaccia (CHIUDE "If not isIvaInterfaccia Then")
-- Apertura della partita di giro TRONCA sulla UO SAC di versamento se non attiva la tesoreria unica
aggiornaPraticaGruppoCentro(aLiquidIva, aUOVERSIVA, nvl(recParametriCNR.fl_tesoreria_unica,'N'), aTSNow, aUser);
Else -- PARTE RELATIVA A LIQUIDAZIONE DEL CENTRO **************** Else di ("If aUOENTE.cd_unita_organizzativa <> aCdUo Then")
-- =====================
-- Se l'iva da versare in liquidazione centralizzata ?¨ < -26 genero il mandato
-- =====================
If aLiquidIva.iva_da_versare < (-1)*26 Then
Declare
Type obbScadTableType Is Table Of obbligazione_scadenzario%Rowtype Index By BINARY_INTEGER;
obbScadList obbScadTableType;
Begin
-- Se si tratta di liquidazione di UO = da UO di versamento:
--
-- 1. creo 1 generico con n righe per chiudere lato spesa le partite di giro aperte dalle UO con i versamenti locali
-- 2. creo un mandato di versamento cumulativo al terzo (ERARIO) recuperato dalla tabella gruppo_cr_det
--
-- Recupera il gruppo CORI dell'IVA
Begin
Select a.* Into aGruppoCoriDet
From gruppo_cr_det a, tipo_cr_base b
Where a.esercizio = aEs
And b.esercizio = a.esercizio
And b.cd_contributo_ritenuta = aCdCoriIva
And b.cd_gruppo_cr = a.cd_gruppo_cr
And a.cd_regione = CNRCTB080.REGIONE_INDEFINITA
And a.pg_comune = CNRCTB080.COMUNE_INDEFINITO;
Exception
When NO_DATA_FOUND Then
IBMERR001.RAISE_ERR_GENERICO('Dettagli di versamento CORI IVA non trovati');
End;
If aGruppoCoriDet.pg_banca Is null Or aGruppoCoriDet.cd_modalita_pagamento Is Null Or aGruppoCoriDet.cd_terzo_versamento Is Null Then
IBMERR001.RAISE_ERR_GENERICO('Terzo o sue modalità di pagamento non specificate per GRUPPO CORI IVA');
End If;
-- Recupera l'anagrafica di tale gruppo
aAnagTst:=CNRCTB080.GETANAG(aGruppoCoriDet.cd_terzo_versamento);
aManP.CD_CDS:=aUOVERSIVA.cd_unita_padre;
aManP.ESERCIZIO:=aEs;
aManP.CD_UNITA_ORGANIZZATIVA:=aUOVERSIVA.cd_unita_organizzativa;
aManP.CD_CDS_ORIGINE:=aUOVERSIVA.cd_unita_padre;
aManP.CD_UO_ORIGINE:=aUOVERSIVA.cd_unita_organizzativa;
aManP.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_MAN;
aManP.TI_MANDATO:=CNRCTB038.TI_MAN_PAG;
aManP.TI_COMPETENZA_RESIDUO:=CNRCTB038.TI_MAN_COMP;
aManP.DS_MANDATO:=getDescLiquidazione(aLiquidIva);
aManP.STATO:=CNRCTB038.STATO_MAN_EME;
aManP.DT_EMISSIONE:=TRUNC(aTSNow);
aManP.IM_RITENUTE:=0;
-- aManP.DT_TRASMISSIONE:=;
-- aManP.DT_PAGAMENTO:=;
-- aManP.DT_ANNULLAMENTO:=;
aManP.IM_PAGATO:=0;
If aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_ISTSPLIT Then
aManP.tipo_debito_siope := 'I';
End If;
aManP.UTCR:=aUser;
aManP.DACR:=aTSNow;
aManP.UTUV:=aUser;
aManP.DUVA:=aTSNow;
aManP.PG_VER_REC:=1;
aManP.STATO_TRASMISSIONE:=CNRCTB038.STATO_MAN_TRASCAS_NODIST;
aTotMandato:=0;
aGen:=null;
-- Creo il documento generico di spesa su partita di giro collegato all'annotazione di entrata su pgiro del contributo ritenuta
aGen.CD_CDS:=aUOVERSIVA.cd_unita_padre;
aGen.CD_UNITA_ORGANIZZATIVA:=aUOVERSIVA.cd_unita_organizzativa;
aGen.ESERCIZIO:=aEs;
aGen.CD_CDS_ORIGINE:=aUOVERSIVA.cd_unita_padre;
aGen.CD_UO_ORIGINE:=aUOVERSIVA.cd_unita_organizzativa;
aGen.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_VER_SPESA;
aGen.DATA_REGISTRAZIONE:=TRUNC(aTSNow);
aGen.DS_DOCUMENTO_GENERICO:=getDescLiquidazione(aLiquidIva);
If aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC Then
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_COMMERCIALE;
Else
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
End If;
aGen.STATO_COFI:=CNRCTB100.STATO_GEN_COFI_TOT_MR;
aGen.STATO_COGE:=CNRCTB100.STATO_COEP_EXC;
aGen.STATO_COAN:=CNRCTB100.STATO_COEP_EXC;
aGen.CD_DIVISA:=aDivisaEuro;
aGen.CAMBIO:=1;
-- aGen.ESERCIZIO_LETTERA:=0;
-- aGen.PG_LETTERA:=0;
aGen.DACR:=aTSNow;
aGen.UTCR:=aUser;
aGen.DUVA:=aTSNow;
aGen.UTUV:=aUser;
aGen.PG_VER_REC:=1;
aGen.DT_SCADENZA:=TRUNC(aTSNow);
aGen.STATO_PAGAMENTO_FONDO_ECO:=CNRCTB100.STATO_NO_PFONDOECO;
aGen.TI_ASSOCIATO_MANREV:=CNRCTB100.TI_ASSOC_TOT_MAN_REV ;
If Nvl(recParametriCNR.fl_tesoreria_unica,'N') = 'Y' And aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC Then
aEv := getVoceIvaCommerciale(aLiquidIva.esercizio);
Declare
aCDRUOVERSIVA v_cdr_valido%rowtype;
aLASpecVersIva v_linea_attivita_valida%Rowtype;
aLASpecVersIvaSac v_linea_attivita_valida%Rowtype;
impObbligazione NUMBER := 0;
impLiqResiduo NUMBER := 0;
tipoObbligazione VARCHAR2(10);
aObb obbligazione%rowtype;
aObbScad obbligazione_scadenzario%rowtype;
aObbScadVoce obbligazione_scad_voce%rowtype;
Begin
-- Estrazione del CDR SAC di versamento iva
aCDRUOVERSIVA := getCDRUOVERSIVA(aEsDefault);
-- Estrazione della linea di attività SAC da utilizzare per la creazione della variazione
aLASpecVersIvaSac := getLASPECVERSIVASAC(aEsDefault, aCDRUOVERSIVA);
impLiqResiduo := Abs(aLiquidIva.iva_da_versare);
--trovo la disponibilità residua sulla GAE della SAC
For rec in (Select * From v_assestato
Where esercizio = aEs
And esercizio_res <= aEs
And cd_centro_responsabilita = aCDRUOVERSIVA.CD_CENTRO_RESPONSABILITA
And cd_linea_attivita = aLASpecVersIvaSac.CD_LINEA_ATTIVITA
And cd_elemento_voce = aEv.cd_elemento_voce
And Nvl(importo_disponibile, 0) > 0
order by esercizio_res) Loop
If impLiqResiduo > 0 Then
If Nvl(rec.importo_disponibile,0) <= impLiqResiduo Then
impObbligazione := Nvl(rec.importo_disponibile,0);
Else
impObbligazione := impLiqResiduo;
End If;
If rec.esercizio = rec.esercizio_res Then
tipoObbligazione := CNRCTB018.TI_DOC_OBB;
Else
tipoObbligazione := CNRCTB018.TI_DOC_OBB_RES_IMPRO;
End If;
createObbligazioneEnte(aEs, aLiquidIva, rec.esercizio_res, impObbligazione, aUOVERSIVA, aEv,
aGruppoCoriDet, aLASpecVersIvaSac, nvl(recParametriCNR.fl_nuovo_pdg,'N'),
tipoObbligazione, aUser, aObb, aObbScad, aObbScadVoce);
aDettObbScad(1):=aObbScadVoce;
If rec.esercizio = rec.esercizio_res Then
CNRCTB030.creaObbligazione(False,aObb,aObbScad,aDettObbScad);
Else
CNRCTB030.creaObbligazioneResidua(False,aObb,aObbScad,aDettObbScad);
End If;
obbScadList(obbScadList.count+1) := aObbScad;
impLiqResiduo := impLiqResiduo - impObbligazione;
End If;
End Loop;
If impLiqResiduo>0 Then
IBMERR001.RAISE_ERR_GENERICO('Disponibilità del CDR '||aCDRUOVERSIVA.CD_CENTRO_RESPONSABILITA||' sulla GAE '||
aLASpecVersIvaSac.CD_LINEA_ATTIVITA||' insufficiente di '||Ltrim(Rtrim(To_Char(Abs(impLiqResiduo),'999g999g999g999g990d00')))||
' per effettuare il versamento Iva di '||Ltrim(Rtrim(To_Char(Abs(aLiquidIva.iva_da_versare),'999g999g999g999g990d00'))));
End If;
End;
Else
aEv := getVoceIvaIstituzionaleEnte(aLiquidIva.esercizio, aCdCoriIva, nvl(recParametriCNR.fl_nuovo_pdg,'N'));
createObbligazioneEnte(aEs, aLiquidIva, aEs, abs(aLiquidIva.iva_da_versare), aUOVERSIVA, aEv, aGruppoCoriDet, aLASpecIva,
nvl(recParametriCNR.fl_nuovo_pdg,'N'), CNRCTB018.TI_DOC_OBB_PGIRO, aUser,
aObb, aObbScad, aObbScadVoce);
-- Creo la partita di giro tronca di accantonamento versamenti locali
CNRCTB030.CREAOBBLIGAZIONEPGIROTRONC(false,aObb,aObbScad,aAccPG,aAccPGScad,trunc(aTSNow));
obbScadList(obbScadList.count+1) := aObbScad;
End If;
For i In 1..obbScadList.count loop
Dbms_Output.put_line('Obbligazione '||i||' nr:'||obbScadList(i).CD_CDS||obbScadList(i).ESERCIZIO||obbScadList(i).ESERCIZIO_ORIGINALE
||obbScadList(i).PG_OBBLIGAZIONE||obbScadList(i).PG_OBBLIGAZIONE_SCADENZARIO||' - IMPORTO: '||obbScadList(i).im_scadenza||
' - IMPORTO ASS: '||obbScadList(i).im_associato_doc_amm);
aGenRiga:=null;
aGenRiga.CD_CDS:=aGen.CD_CDS;
aGenRiga.CD_UNITA_ORGANIZZATIVA:=aGen.CD_UNITA_ORGANIZZATIVA;
aGenRiga.ESERCIZIO:=aGen.ESERCIZIO;
aGenRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.CD_TIPO_DOCUMENTO_AMM;
aGenRiga.DS_RIGA:=aGen.DS_DOCUMENTO_GENERICO;
aGenRiga.IM_RIGA_DIVISA:= obbScadList(i).im_scadenza;
aGenRiga.IM_RIGA:=obbScadList(i).im_scadenza;
aGenRiga.CD_TERZO:=aGruppoCoriDet.cd_terzo_versamento;
aGenRiga.RAGIONE_SOCIALE:=aAnagTst.RAGIONE_SOCIALE;
aGenRiga.NOME:=aAnagTst.NOME;
aGenRiga.COGNOME:=aAnagTst.COGNOME;
aGenRiga.CODICE_FISCALE:=aAnagTst.CODICE_FISCALE;
aGenRiga.PARTITA_IVA:=aAnagTst.PARTITA_IVA;
aGenRiga.CD_MODALITA_PAG:=aGruppoCoriDet.CD_MODALITA_PAGAMENTO;
aGenRiga.PG_BANCA:=aGruppoCoriDet.PG_BANCA;
-- aGenRiga.CD_TERMINI_PAG:=aCompenso.CD_TERMINI_PAG;
-- aGenRiga.CD_TERMINI_PAG_UO_CDS:=aCompenso.CD_TERMINI_PAG_UO_CDS;
-- aGenRiga.PG_BANCA_UO_CDS:=aGen.PG_BANCA_UO_CDS;
-- aGenRiga.CD_MODALITA_PAG_UO_CDS:=aGen.CD_MODALITA_PAG_UO_CDS;
-- aGenRiga.NOTE:=aGen.NOTE;
aGenRiga.DT_DA_COMPETENZA_COGE:=TRUNC(aLiquidIva.dt_inizio);
aGenRiga.DT_A_COMPETENZA_COGE:=TRUNC(aLiquidIva.dt_fine);
aGenRiga.STATO_COFI:=aGen.STATO_COFI;
-- aGenRiga.DT_CANCELLAZIONE:=aGen.DT_CANCELLAZIONE;
-- aGenRiga.CD_CDS_OBBLIGAZIONE:=aGen.CD_CDS_OBBLIGAZIONE;
-- aGenRiga.ESERCIZIO_OBBLIGAZIONE:=aGen.ESERCIZIO_OBBLIGAZIONE;
-- aGenRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aGen.ESERCIZIO_ORI_OBBLIGAZIONE;
-- aGenRiga.PG_OBBLIGAZIONE:=aGen.PG_OBBLIGAZIONE;
-- aGenRiga.PG_OBBLIGAZIONE_SCADENZARIO:=aGen.PG_OBBLIGAZIONE_SCADENZARIO;
aGenRiga.CD_CDS_OBBLIGAZIONE:=obbScadList(i).CD_CDS;
aGenRiga.ESERCIZIO_OBBLIGAZIONE:=obbScadList(i).ESERCIZIO;
aGenRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=obbScadList(i).ESERCIZIO_ORIGINALE;
aGenRiga.PG_OBBLIGAZIONE:=obbScadList(i).PG_OBBLIGAZIONE;
aGenRiga.PG_OBBLIGAZIONE_SCADENZARIO:=obbScadList(i).PG_OBBLIGAZIONE_SCADENZARIO;
aGenRiga.DACR:=aGen.DACR;
aGenRiga.UTCR:=aGen.UTCR;
aGenRiga.UTUV:=aGen.UTUV;
aGenRiga.DUVA:=aGen.DUVA;
aGenRiga.PG_VER_REC:=aGen.PG_VER_REC;
aGenRiga.TI_ASSOCIATO_MANREV:=aGen.TI_ASSOCIATO_MANREV;
aListGenRighe(aListGenRighe.count+1):=aGenRiga;
-- Generazione righe mandato
aManPRiga:=null;
aManPRiga.CD_CDS:=aGen.cd_cds;
aManPRiga.ESERCIZIO:=aGen.esercizio;
aManPRiga.ESERCIZIO_OBBLIGAZIONE:=aGenRiga.esercizio_obbligazione;
aManPRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aGenRiga.esercizio_ori_obbligazione;
aManPRiga.PG_OBBLIGAZIONE:=aGenRiga.pg_obbligazione;
aManPRiga.PG_OBBLIGAZIONE_SCADENZARIO:=aGenRiga.pg_obbligazione_scadenzario;
aManPRiga.CD_CDS_DOC_AMM:=aGen.cd_cds;
aManPRiga.CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aManPRiga.ESERCIZIO_DOC_AMM:=aGen.esercizio;
aManPRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aManPRiga.PG_DOC_AMM:=aGen.pg_documento_generico;
aManPRiga.DS_MANDATO_RIGA:=aManP.ds_mandato;
aManPRiga.STATO:=aManP.stato;
aManPRiga.CD_TERZO:=aGenRiga.cd_terzo;
aManPRiga.PG_BANCA:=aGenRiga.pg_banca;
aManPRiga.CD_MODALITA_PAG:=aGenRiga.cd_modalita_pag;
aManPRiga.IM_MANDATO_RIGA:=aGenRiga.im_riga;
aManPRiga.IM_RITENUTE_RIGA:=0;
If Nvl(recParametriCNR.fl_tesoreria_unica,'N') = 'Y' And aLiquidIva.tipo_liquidazione = CNRCTB250.TI_LIQ_IVA_COMMERC Then
aManPRiga.FL_PGIRO:='N';
Else
aManPRiga.FL_PGIRO:='Y';
End If;
aManPRiga.UTCR:=aUser;
aManPRiga.DACR:=aTSNow;
aManPRiga.UTUV:=aUser;
aManPRiga.DUVA:=aTSNow;
aManPRiga.PG_VER_REC:=1;
aTotMandato:=aTotMandato+aManPRiga.im_mandato_riga;
aListRigheManP(aListRigheManP.count+1):=aManPRiga;
End Loop;
aGen.IM_TOTALE:=aTotMandato;
CNRCTB110.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
For I In 1 .. aListRigheManP.COUNT Loop
aListRigheManP(I).CD_CDS_DOC_AMM:=aGen.cd_cds;
aListRigheManP(I).CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aListRigheManP(I).ESERCIZIO_DOC_AMM:=aGen.esercizio;
aListRigheManP(I).CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aListRigheManP(I).PG_DOC_AMM:=aGen.pg_documento_generico;
End Loop;
aManP.IM_MANDATO := aTotMandato;
/* STANI 08.07.2007 L'UPDATE PRIMA ERA DOPO LA GENERAZIONE DEL DOCUMENTO, HO DOVUTO SPOSTARLO PERCHE' IL CODICE
SIOPE SPECIALE (DA CONFIGURAZIONE CNR) LO DERIVA DALLA ASSOCIAZIONE DEL DOCUMENTO A
LIQUIDAZIONE_IVA (CHE OVVIAMENTE NON TROVAVA) */
Update liquidazione_iva
Set cd_cds_obb_accentr = obbScadList(1).cd_cds,
esercizio_obb_accentr = obbScadList(1).esercizio,
esercizio_ori_obb_accentr = obbScadList(1).esercizio_originale,
pg_obb_accentr = obbScadList(1).pg_obbligazione,
cd_tipo_documento = aGen.cd_tipo_documento_amm,
esercizio_doc_amm = aGen.esercizio,
cd_cds_doc_amm = aGen.cd_cds,
cd_uo_doc_amm = aGen.cd_unita_organizzativa,
pg_doc_amm = aGen.pg_documento_generico,
duva = aTSNow,
utuv = aUser,
pg_ver_rec = pg_ver_rec + 1
Where cd_cds = aCdCds
And esercizio = aEs
And cd_unita_organizzativa = aCdUo
And dt_inizio = trunc(aDtDa)
And dt_fine = trunc(aDta)
And tipo_liquidazione = aTipoLiquidazione
And report_id = 0;
CNRCTB037.generaDocumento(aManP,aListRigheManP);
End;
End If; -- Fine caso importo da versare < -26 euro
End If; -- Fine di ("If aUOENTE.cd_unita_organizzativa <> aCdUo Then")
End;
procedure ins_LIQUIDAZIONE_IVA_CENTRO (aDest LIQUIDAZIONE_IVA_CENTRO%rowtype) is
begin
insert into LIQUIDAZIONE_IVA_CENTRO (
ESERCIZIO
,TIPO_LIQUIDAZIONE
,DT_INIZIO
,DT_FINE
,STATO
,CD_CDS_OBB_ACCENTR
,ESERCIZIO_OBB_ACCENTR
,ESERCIZIO_ORI_OBB_ACCENTR
,PG_OBB_ACCENTR
,CD_CDS_LI
,CD_UO_LI
,REPORT_ID_LI
,DACR
,UTCR
,DUVA
,UTUV
,PG_VER_REC
) values (
aDest.ESERCIZIO
,aDest.TIPO_LIQUIDAZIONE
,aDest.DT_INIZIO
,aDest.DT_FINE
,aDest.STATO
,aDest.CD_CDS_OBB_ACCENTR
,aDest.ESERCIZIO_OBB_ACCENTR
,aDest.ESERCIZIO_ORI_OBB_ACCENTR
,aDest.PG_OBB_ACCENTR
,aDest.CD_CDS_LI
,aDest.CD_UO_LI
,aDest.REPORT_ID_LI
,aDest.DACR
,aDest.UTCR
,aDest.DUVA
,aDest.UTUV
,aDest.PG_VER_REC
);
end;
Procedure ctrlEsistenzaVariazioniIva(aCdCds VARCHAR2,aEs NUMBER,aTipo VARCHAR2) Is
messageCmp VARCHAR2(10000);
messageRes VARCHAR2(10000);
messageErr VARCHAR2(10000);
contaVar NUMBER:=0;
Begin
If aTipo In ('C','T') Then
For rec In (Select B.PG_VARIAZIONE_PDG, B.CD_CENTRO_RESPONSABILITA
From PDG_VARIAZIONE_RIGA_GEST A, PDG_VARIAZIONE B
Where A.ESERCIZIO = aEs
And A.CD_CDR_ASSEGNATARIO In (Select CD_CENTRO_RESPONSABILITA
From V_STRUTTURA_ORGANIZZATIVA
Where CD_CDS = aCdCds
And CD_TIPO_LIVELLO = 'CDR'
And ESERCIZIO = aEs)
And A.CD_LINEA_ATTIVITA = CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA)
And A.ESERCIZIO = B.ESERCIZIO
And A.PG_VARIAZIONE_PDG = B.PG_VARIAZIONE_PDG) Loop
contaVar := contaVar + 1;
If messageCmp Is Not Null Then
messageCmp := messageCmp||', ';
End If;
messageCmp := messageCmp||'n.'||rec.PG_VARIAZIONE_PDG||' del CDR '||rec.CD_CENTRO_RESPONSABILITA;
End Loop;
End If;
If aTipo In ('R','T') Then
For rec In (Select B.PG_VARIAZIONE, B.CD_CENTRO_RESPONSABILITA
From VAR_STANZ_RES_RIGA A, VAR_STANZ_RES B
Where A.ESERCIZIO = aEs
And A.CD_CDR In (Select CD_CENTRO_RESPONSABILITA
From V_STRUTTURA_ORGANIZZATIVA
Where CD_CDS = aCdCds
And CD_TIPO_LIVELLO = 'CDR'
And ESERCIZIO = aEs)
And A.CD_LINEA_ATTIVITA = CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA)
And A.ESERCIZIO = B.ESERCIZIO
And A.PG_VARIAZIONE = B.PG_VARIAZIONE) Loop
contaVar := contaVar + 1;
If messageRes Is Not Null Then
messageRes := messageRes||', ';
End If;
messageRes := messageRes||'n.'||rec.PG_VARIAZIONE||' del CDR '||rec.CD_CENTRO_RESPONSABILITA;
End Loop;
End If;
If messageCmp Is Not Null Or messageRes Is Not Null Then
messageErr := 'Registrazione non possibile.\n';
If contaVar = 1 Then
messageErr := messageErr||'La variazione di ';
Else
messageErr := messageErr||'Le variazioni di ';
End If;
If messageCmp Is Not Null Then
messageErr := messageErr||'competenza '||messageCmp;
If messageRes Is Not Null Then
messageErr := messageErr||' e di ';
End If;
End If;
If messageRes Is Not Null Then
messageErr := messageErr||'residuo '||messageRes;
End If;
If contaVar = 1 Then
messageErr := messageErr||' grava ';
Else
messageErr := messageErr||' gravano ';
End If;
messageErr := messageErr||'ancora sulla G.A.E. dell''IVA.';
IBMERR001.RAISE_ERR_GENERICO(messageErr);
End If;
End;
Procedure controllaAssunzioneImpegni(aCdCds VARCHAR2,aEs NUMBER) Is
esiste Number;
aObb Obbligazione%rowtype;
BLOCCO_ASS_IMP_IVA CHAR(1);
Begin
Begin
Select FL_BLOCCO_ASS_IMP_IVA Into BLOCCO_ASS_IMP_IVA
From PARAMETRI_CDS
Where Cd_cds = aCdCds
And Esercizio = aEs;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('Parametri CDS ('||aCdCds||') mancanti per l''anno '||aEs);
End;
If BLOCCO_ASS_IMP_IVA = 'Y' Then
ctrlEsistenzaVariazioniIva(aCdCds, aEs, 'T');
Select Count(1) Into esiste
From VOCE_F_SALDI_CDR_LINEA
Where ESERCIZIO = aEs
And ESERCIZIO_RES = aEs
And CD_CENTRO_RESPONSABILITA In (Select CD_CENTRO_RESPONSABILITA
From V_STRUTTURA_ORGANIZZATIVA
Where CD_CDS = aCdCds
And CD_TIPO_LIVELLO = 'CDR'
And ESERCIZIO = aEs)
And CD_LINEA_ATTIVITA = CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA)
And TI_APPARTENENZA = 'D'
And TI_GESTIONE = 'S'
And IM_OBBL_ACC_COMP != 0;
If Esiste > 0 Then
Begin
Select o.* Into aObb
From Obbligazione o, obbligazione_scadenzario obs, obbligazione_scad_voce obsv
Where o.cd_cds = obs.cd_cds
And o.esercizio = obs.esercizio
And o.esercizio_originale = obs.esercizio_originale
And o.pg_obbligazione = obs.pg_obbligazione
And obs.cd_cds = obsv.cd_cds
And obs.esercizio = obsv.esercizio
And obs.esercizio_originale = obsv.esercizio_originale
And obs.pg_obbligazione = obsv.pg_obbligazione
And obs.pg_obbligazione_scadenzario = obsv.pg_obbligazione_scadenzario
And obsv.ti_appartenenza = 'D'
And obsv.ti_gestione = 'S'
And obsv.cd_centro_responsabilita In (Select CD_CENTRO_RESPONSABILITA
From V_STRUTTURA_ORGANIZZATIVA
Where CD_CDS = aCdCds
And CD_TIPO_LIVELLO = 'CDR'
And ESERCIZIO = aEs)
And obsv.esercizio = aEs
And obsv.esercizio_originale = aEs
And obsv.cd_linea_attivita = CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA);
IBMERR001.RAISE_ERR_GENERICO('Registrazione non possibile.\nL''impegno n.'||aObb.pg_obbligazione||' della UO '||aObb.cd_unita_organizzativa||' grava ancora sulla G.A.E. dell''IVA.');
Exception
When No_Data_Found Then
Null;
When Too_Many_Rows Then
IBMERR001.RAISE_ERR_GENERICO('Registrazione non possibile.\nEsistono più impegni che gravano ancora sulla G.A.E. dell''IVA.');
End;
End If;
End If;
End;
Procedure controllaAssunzioneImpResImpro(aCdCds VARCHAR2,aEs NUMBER) Is
esiste Number;
aObb Obbligazione%rowtype;
BLOCCO_ASS_IMP_IVA CHAR(1);
Begin
Begin
Select FL_BLOCCO_ASS_IMP_IVA Into BLOCCO_ASS_IMP_IVA
From PARAMETRI_CDS
Where Cd_cds = aCdCds
And Esercizio = aEs;
Exception
When No_Data_Found Then
IBMERR001.RAISE_ERR_GENERICO('Parametri CDS ('||aCdCds||') mancanti per l''anno '||aEs);
End;
If BLOCCO_ASS_IMP_IVA = 'Y' Then
ctrlEsistenzaVariazioniIva(aCdCds, aEs, 'T');
Select Count(1) Into esiste
From VOCE_F_SALDI_CDR_LINEA
Where ESERCIZIO = aEs
And ESERCIZIO_RES < aEs
And CD_CENTRO_RESPONSABILITA In (Select CD_CENTRO_RESPONSABILITA
From V_STRUTTURA_ORGANIZZATIVA
Where CD_CDS = aCdCds
And CD_TIPO_LIVELLO = 'CDR'
And ESERCIZIO = aEs)
And CD_LINEA_ATTIVITA = CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA)
And TI_APPARTENENZA = 'D'
And TI_GESTIONE = 'S'
And IM_OBBL_RES_IMP != 0;
If Esiste > 0 Then
Begin
Select o.* Into aObb
From Obbligazione o, obbligazione_scadenzario obs, obbligazione_scad_voce obsv
Where o.cd_cds = obs.cd_cds
And o.esercizio = obs.esercizio
And o.esercizio_originale = obs.esercizio_originale
And o.pg_obbligazione = obs.pg_obbligazione
And obs.cd_cds = obsv.cd_cds
And obs.esercizio = obsv.esercizio
And obs.esercizio_originale = obsv.esercizio_originale
And obs.pg_obbligazione = obsv.pg_obbligazione
And obs.pg_obbligazione_scadenzario = obsv.pg_obbligazione_scadenzario
And obsv.ti_appartenenza = 'D'
And obsv.ti_gestione = 'S'
And obsv.cd_centro_responsabilita In (Select CD_CENTRO_RESPONSABILITA
From V_STRUTTURA_ORGANIZZATIVA
Where CD_CDS = aCdCds
And CD_TIPO_LIVELLO = 'CDR'
And ESERCIZIO = aEs)
And obsv.esercizio = aEs
And obsv.esercizio_originale < aEs
And obsv.cd_linea_attivita = CNRCTB015.GETVAL01PERCHIAVE(LINEA_ATTIVITA_SPECIALE,LA_VER_IVA);
IBMERR001.RAISE_ERR_GENERICO('Registrazione non possibile.\nL''impegno residuo n.'||aObb.esercizio_originale||'/'||aObb.pg_obbligazione||' della UO '||aObb.cd_unita_organizzativa||' grava ancora sulla G.A.E. dell''IVA.');
Exception
When No_Data_Found Then
Null;
When Too_Many_Rows Then
IBMERR001.RAISE_ERR_GENERICO('Registrazione non possibile.\nEsistono più impegni residui che gravano ancora sulla G.A.E. dell''IVA.');
End;
End If;
End If;
End;
End;
© 2015 - 2024 Weber Informatics LLC | Privacy Policy