expsigladb.Package.CNRCTB570_BODY.sql Maven / Gradle / Ivy
CREATE OR REPLACE PACKAGE BODY "CNRCTB570" AS
procedure annullaLiquidazione(aLGCori liquid_gruppo_cori%rowtype, aUser varchar2) is
aLC liquid_cori%rowtype;
aUOVERSACC unita_organizzativa%rowtype;
aUOVERSCONTOBI unita_organizzativa%rowtype;
aTSNow date;
aGC liquid_gruppo_centro%rowtype;
aLGCC liquid_gruppo_centro_comp%rowtype;
aAcc accertamento%rowtype;
aAccScad accertamento_scadenzario%rowtype;
aAccScadVoce accertamento_scad_voce%rowtype;
aObb obbligazione%rowtype;
aObbScad obbligazione_scadenzario%rowtype;
aObbScadVoce obbligazione_scad_voce%rowtype;
aAccC accertamento%rowtype;
aAccCScad accertamento_scadenzario%rowtype;
aAccCScadVoce accertamento_scad_voce%rowtype;
aObbC obbligazione%rowtype;
aObbCScad obbligazione_scadenzario%rowtype;
aObbCScadVoce obbligazione_scad_voce%rowtype;
recParametriCNR PARAMETRI_CNR%Rowtype;
ESERCIZIO_UO_SPECIALI number;
Begin
aTSNow:=sysdate;
recParametriCNR := CNRUTL001.getRecParametriCnr(aLGCori.esercizio);
-- Leggo la testata della liquidazione (lock)
select * into aLC from liquid_cori where
cd_cds = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa
and pg_liquidazione = aLGCori.pg_liquidazione
for update nowait;
ESERCIZIO_UO_SPECIALI := to_number(To_Char(aLC.DT_DA,'YYYY'));
aUOVERSACC:=CNRCTB020.getUOVersCori(ESERCIZIO_UO_SPECIALI);
aUOVERSCONTOBI:=CNRCTB020.getUOVersCoriContoBI(ESERCIZIO_UO_SPECIALI);
If aLGCori.cd_unita_organizzativa = aUOVERSCONTOBI.cd_unita_organizzativa then
IBMERR001.RAISE_ERR_GENERICO('Non è possibile eliminare il versamento dei CORI che rientrano nel Modello F24EP');
End If;
-- Se il versamento è quello dell'UO di versamento, e il gruppo di cui annullare la liquidazione è composto di SOLI
-- dati propri dell'UO che versa, posso smontare la liquidazione di quel gruppo
if aLGCori.cd_unita_organizzativa = aUOVERSACC.cd_unita_organizzativa then
declare
aTempN number;
begin
select distinct 1 into aTempN from liquid_gruppo_centro where
cd_cds_lc = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_uo_lc = aLGCori.cd_unita_organizzativa
and pg_lc = aLGCori.pg_liquidazione
and cd_gruppo_cr = aLGCori.cd_gruppo_cr
and cd_regione = aLGCori.cd_regione
and pg_comune = aLGCori.pg_comune;
IBMERR001.RAISE_ERR_GENERICO('Non è possibile eliminare il versamento accentrato dei CORI perchè la liquidazione raccoglie versamenti di altre UO per il gruppo'||CNRCTB575.getDesc(aLGCori));
exception when NO_DATA_FOUND then
null;
end;
end if;
-- Devo modificare la partita di giro sull'UO che versa legata a aLGCori con fl_accentrato a Y
if aLGCori.fl_accentrato = 'Y' then
-- Solo se lo stato è diverso da liquidato posso smontare
if aLGCori.stato = CNRCTB575.STATO_LIQUIDATO then
IBMERR001.RAISE_ERR_GENERICO('La liquidazione CORI al centro risulta già chiusa per il gruppo CORI '||CNRCTB575.getDesc(aLGCori));
end if;
begin
aGC:=getGruppoCentro(aLC, aLGCori);
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Riferimento a gruppo centro di liquidazione non trovato per il gruppo CORI '||CNRCTB575.getDesc(aLGCori));
end;
if aGC.stato = CNRCTB575.STATO_GRUPPO_CENTRO_CHIUSO then
IBMERR001.RAISE_ERR_GENERICO('La liquidazione CORI al centro risulta già chiusa per il gruppo CORI '||CNRCTB575.getDesc(aLGCori));
end if;
if aLGCori.im_liquidato > 0 then
IF recParametriCNR.FL_TESORERIA_UNICA = 'Y' THEN
/* aObbGiro := null;
aObbGiro.esercizio:=aGC.esercizio_obb_accentr;
aObbGiro.cd_cds:=aGC.cd_cds_obb_accentr;
aObbGiro.esercizio_originale:=aGC.esercizio_ori_obb_accentr;
aObbGiro.pg_obbligazione:=aGC.pg_obb_accentr;
CNRCTB035.GETPGIROCDSINV(aObbGiro,aObbScadGiro,aObbScadVoceGiro,aAccGiro,aAccScadGiro,aAccScadVoceGiro);
CNRCTB043.modificaPraticaAcc(aAccGiro.esercizio,aAccGiro.cd_cds,aAccGiro.esercizio_originale,aAccGiro.pg_accertamento,0-aLGCori.im_liquidato,aTSNow,aUser);*/
IBMERR001.RAISE_ERR_GENERICO('Impossibile annullare la liquidazione CORI nel caso di tesoreria unica');
else
CNRCTB043.modificaPraticaObb(aGC.esercizio_obb_accentr,aGC.cd_cds_obb_accentr,aGC.esercizio_ori_obb_accentr,aGC.pg_obb_accentr,0-aLGCori.im_liquidato,aTSNow,aUser,'Y');
end if;
elsif aLGCori.im_liquidato < 0 then
-- Elimina la partita di giro di restituzione e la riga in LIQUID_GRUPPO_ENTRO_COMP
begin
select * into aLGCC from liquid_gruppo_centro_comp where
esercizio = aLGCori.esercizio
and cd_gruppo_cr = aLGCori.cd_gruppo_cr
and cd_regione = aLGCori.cd_regione
and pg_comune = aLGCori.pg_comune
and pg_gruppo_centro = aLGCori.pg_gruppo_centro
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa
for update nowait;
aAcc.cd_cds:=aLGCC.cd_cds_acc_accentr;
aAcc.esercizio:=aLGCC.esercizio_acc_accentr;
aAcc.esercizio_originale:=aLGCC.esercizio_ori_acc_accentr;
aAcc.pg_accertamento:=aLGCC.pg_acc_accentr;
IF recParametriCNR.FL_TESORERIA_UNICA = 'Y' THEN
IBMERR001.RAISE_ERR_GENERICO('Impossibile annullare la liquidazione CORI nel caso di tesoreria unica');
else
CNRCTB035.GETPGIROCDSINV(aAcc,aAccScad,aAccScadVoce,aObb,aObbScad,aObbScadVoce);
CNRCTB035.annullaObbligazione(aObb.cd_cds,aObb.esercizio,aObb.esercizio_originale,aObb.pg_obbligazione,aUser);
-- Elimina la partita di giro di compensazione locale
if aLGCori.pg_acc_compens is not null then
aAccC.cd_cds:=aLGCori.cd_cds_acc_compens;
aAccC.esercizio:=aLGCori.esercizio_acc_compens;
aAccC.esercizio_originale:=aLGCori.esercizio_ori_acc_compens;
aAccC.pg_accertamento:=aLGCori.pg_acc_compens;
CNRCTB035.GETPGIROCDSINV(aAccC,aAccCScad,aAccCScadVoce,aObbC,aObbCScad,aObbCScadVoce);
CNRCTB035.annullaObbligazione(aObbC.cd_cds,aObbC.esercizio,aObbC.esercizio_originale,aObbC.pg_obbligazione,aUser);
end if;
end if;
delete from liquid_gruppo_centro_comp where
esercizio = aLGCori.esercizio
and cd_gruppo_cr = aLGCori.cd_gruppo_cr
and cd_regione = aLGCori.cd_regione
and pg_comune = aLGCori.pg_comune
and pg_gruppo_centro = aLGCori.pg_gruppo_centro
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa;
exception when NO_DATA_FOUND then
null;
end;
else
null;
end if;
end if; -- FINE AGGIORNAMENTO PARTITA DI GIRO CREATA AL CENTRO
-- Elimino il dettaglio minimo della liquidazione di aLGCori
delete from liquid_gruppo_cori_det where
cd_cds = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa
and pg_liquidazione = aLGCori.pg_liquidazione
and cd_cds_origine = aLGCori.cd_cds_origine
and cd_uo_origine = aLGCori.cd_uo_origine
and pg_liquidazione_origine = aLGCori.pg_liquidazione_origine
and cd_gruppo_cr = aLGCori.cd_gruppo_cr
and cd_regione = aLGCori.cd_regione
and pg_comune = aLGCori.pg_comune;
delete from ASS_PGIRO_GRUPPO_CENTRO where
cd_cds = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_UO = aLGCori.cd_unita_organizzativa
and pg_liq = aLGCori.pg_liquidazione
and cd_cds_orig = aLGCori.cd_cds_origine
and cd_uo_orig = aLGCori.cd_uo_origine
and pg_liq_orig = aLGCori.pg_liquidazione_origine
and cd_gr_cr = aLGCori.cd_gruppo_cr
and cd_regione = aLGCori.cd_regione
and pg_comune = aLGCori.pg_comune;
-- Elimino aLGCori
delete from liquid_gruppo_cori where
cd_cds = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa
and pg_liquidazione = aLGCori.pg_liquidazione
and cd_cds_origine = aLGCori.cd_cds_origine
and cd_uo_origine = aLGCori.cd_uo_origine
and pg_liquidazione_origine = aLGCori.pg_liquidazione_origine
and cd_gruppo_cr = aLGCori.cd_gruppo_cr
and cd_regione = aLGCori.cd_regione
and pg_comune = aLGCori.pg_comune;
-- Se non ci sono sotto la liquidazione gruppi TRASFERITI (stato T) posso mettere la liquidazione a Liquidata (L)
declare
aTempC char(1);
begin
select distinct stato into aTempC from liquid_gruppo_cori where
cd_cds = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa
and pg_liquidazione = aLGCori.pg_liquidazione
and stato = CNRCTB575.STATO_TRASFERITO;
exception when NO_DATA_FOUND Then
update liquid_cori
set
stato = CNRCTB575.STATO_LIQUIDATO,
duva = aTSNow,
utuv = aUser,
pg_ver_rec = pg_ver_rec + 1
where
cd_cds = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa
and pg_liquidazione = aLGCori.pg_liquidazione;
end;
-- Se non ci sono altre righe nella liquidazione, elimino anche la testata (LIQUID_CORI)
-- LIQUID_CORI per aUOVERSACC.cd_unita_organizzativa potrebbe avere altri dettagli, quindi
-- viene trattata a parte
declare
aLocG liquid_gruppo_cori%rowtype;
begin
select * into aLocG from liquid_gruppo_cori where
esercizio = aLGCori.esercizio
and pg_liquidazione = aLGCori.pg_liquidazione
And cd_cds_origine = aLGCori.cd_cds_origine
and cd_uo_origine = aLGCori.cd_uo_origine
for update nowait;
exception
when TOO_MANY_ROWS then
null;
when NO_DATA_FOUND Then
delete from liquid_cori where
cd_cds = aLGCori.cd_cds_origine
and esercizio = aLGCori.esercizio
and cd_unita_organizzativa = aLGCori.cd_uo_origine
and pg_liquidazione = aLGCori.pg_liquidazione
And cd_unita_organizzativa != aUOVERSACC.cd_unita_organizzativa
And cd_unita_organizzativa != aUOVERSCONTOBI.cd_unita_organizzativa;
end;
-- Se non ci sono altre righe nella liquidazione per aUOVERSACC.cd_unita_organizzativa,
-- elimino anche la testata (LIQUID_CORI)
declare
aLocG liquid_gruppo_cori%rowtype;
begin
select * into aLocG from liquid_gruppo_cori where
cd_cds = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa
and pg_liquidazione = aLGCori.pg_liquidazione
And cd_unita_organizzativa = aUOVERSACC.cd_unita_organizzativa
for update nowait;
exception
when TOO_MANY_ROWS then
null;
when NO_DATA_FOUND Then
delete from liquid_cori where
cd_cds = aLGCori.cd_cds
and esercizio = aLGCori.esercizio
and cd_unita_organizzativa = aLGCori.cd_unita_organizzativa
and pg_liquidazione = aLGCori.pg_liquidazione
And cd_unita_organizzativa = aUOVERSACC.cd_unita_organizzativa;
end;
null;
end;
function getGruppoCentroAperto(aL liquid_cori%rowtype, aAggregato liquid_gruppo_cori%rowtype) return liquid_gruppo_centro%rowtype is
aLGC liquid_gruppo_centro%rowtype;
begin
select * into aLGC from liquid_gruppo_centro where
esercizio = aAggregato.esercizio
and cd_gruppo_cr = aAggregato.cd_gruppo_cr
and cd_regione = aAggregato.cd_regione
and pg_comune = aAggregato.pg_comune
and da_esercizio_precedente = aL.da_esercizio_precedente
and stato = CNRCTB575.STATO_GRUPPO_CENTRO_INIZIALE
for update nowait;
return aLGC;
end;
function getGruppoCentro(aL liquid_cori%rowtype, aAggregato liquid_gruppo_cori%rowtype) return liquid_gruppo_centro%rowtype is
aLGC liquid_gruppo_centro%rowtype;
begin
select * into aLGC from liquid_gruppo_centro where
esercizio = aAggregato.esercizio
and cd_gruppo_cr = aAggregato.cd_gruppo_cr
and cd_regione = aAggregato.cd_regione
and pg_comune = aAggregato.pg_comune
and pg_gruppo_centro = aAggregato.pg_gruppo_centro
and da_esercizio_precedente = aL.da_esercizio_precedente
for update nowait;
return aLGC;
end;
function creaGruppoCentroComp(aL liquid_cori%rowtype, aLGC liquid_gruppo_centro%rowtype, aAggregato liquid_gruppo_cori%rowtype,aTSNow date, aUser varchar2) return liquid_gruppo_centro_comp%rowtype is
aLGCC liquid_gruppo_centro_comp%rowtype;
begin
aLGCC.ESERCIZIO:=aLGC.esercizio;
aLGCC.CD_GRUPPO_CR:=aLGC.cd_gruppo_cr;
aLGCC.CD_REGIONE:=aLGC.cd_regione;
aLGCC.PG_COMUNE:=aLGC.pg_comune;
aLGCC.PG_GRUPPO_CENTRO:=aLGC.pg_gruppo_centro;
aLGCC.cd_unita_organizzativa:=aAggregato.cd_unita_organizzativa;
aLGCC.DACR:=aTSNow;
aLGCC.UTCR:=aUser;
aLGCC.DUVA:=aTSNow;
aLGCC.UTUV:=aUser;
aLGCC.PG_VER_REC:=1;
begin
CNRCTB575.INS_LIQUID_GRUPPO_CENTRO_COMP(aLGCC);
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('Esiste già una liquidazione con saldo negativo sul gruppo'||aLGCC.cd_gruppo_cr||'.'||aLGCC.cd_regione||'.'||aLGCC.pg_comune||' per l''UO:'||aLGCC.cd_unita_organizzativa);
end;
return aLGCC;
end;
procedure restituzioneCrediti(aLiquid liquid_cori%rowtype,Cds In Out VARCHAR2,Uo In Out VARCHAR2,terzo_versamento In Out VARCHAR2, aLGC liquid_gruppo_centro%rowtype,
aTotReversale IN OUT number, aRevP IN OUT reversale%rowtype, aListRigheRevP IN OUT CNRCTB038.righeReversaleList,
aTotMandato IN OUT number, aManP IN OUT mandato%rowtype, aListRigheManP IN OUT CNRCTB038.righeMandatoList, aUser varchar2, aTSNow date) is
aGen documento_generico%rowtype;
aGenRiga documento_generico_riga%rowtype;
aGenOpp documento_generico%rowtype;
aGenOppRiga documento_generico_riga%rowtype;
aListGenRighe CNRCTB100.docGenRigaList;
aGenVS documento_generico%rowtype;
aGenVSRiga documento_generico_riga%rowtype;
aGenVE documento_generico%rowtype;
aGenVERiga documento_generico_riga%rowtype;
aListGenVERighe CNRCTB100.docGenRigaList;
aListGenVSRighe CNRCTB100.docGenRigaList;
aAcc accertamento%rowtype;
aAccScad accertamento_scadenzario%rowtype;
aAccScadVoce accertamento_scad_voce%rowtype;
aAccNew accertamento%rowtype;
aAccScadNew accertamento_scadenzario%rowtype;
aAccScadVoceNew accertamento_scad_voce%rowtype;
aObb obbligazione%rowtype;
aObbScad obbligazione_scadenzario%rowtype;
aObbScadVoce obbligazione_scad_voce%rowtype;
aObbNew obbligazione%rowtype;
aObbScadNew obbligazione_scadenzario%rowtype;
aObbScadVoceNew obbligazione_scad_voce%rowtype;
aCdTerzoRes number(8);
aCdModPagRes varchar2(10);
aPgBancaRes number(10);
aCdTerzoVE number(8);
aCdModPagVE varchar2(10);
aPgBancaVE number(10);
aManPRiga mandato_riga%rowtype;
aAnagTst anagrafico%rowtype;
aAnagVer anagrafico%rowtype;
aRevPRiga reversale_riga%rowtype;
aDateCont date;
aDivisaEuro varchar2(50);
aCdTerzoUo number(8);
aCdModPagUo varchar2(10);
aPgBancaUo number(10);
aUOVERSCONTOBI unita_organizzativa%rowtype;
aCdEV varchar2(20);
elementoVoce elemento_voce%rowtype;
recParametriCNR PARAMETRI_CNR%Rowtype;
ESERCIZIO_UO_SPECIALI number;
IMPORTO_DA_REGOLARIZZARE NUMBER := 0;
aRevRegolarizzazione reversale%rowtype;
aListRigheRevRegolarizzazione CNRCTB038.righeReversaleList;
aManRegolarizzazione mandato%rowtype;
aListRigheManRegolarizzazione CNRCTB038.righeMandatoList;
aAnagVerRegolarizzazione anagrafico%rowtype;
aListGenVERigheRegolarizz CNRCTB100.docGenRigaList;
aGenRegolarizzazione documento_generico%rowtype;
aGenRigaRegolarizzazione documento_generico_riga%rowtype;
ES_MAN NUMBER;
NUM_MAN NUMBER;
IM_REV NUMBER;
begin
recParametriCNR := CNRUTL001.getRecParametriCnr(aLiquid.esercizio);
aDateCont:=CNRCTB008.getTimestampContabile(aLGC.esercizio,aTSNow);
aDivisaEuro:=CNRCTB015.GETVAL01PERCHIAVE(CNRCTB100.CCNR_DIVISA,CNRCTB100.CCNR_EURO);
ESERCIZIO_UO_SPECIALI := to_number(To_Char(aLiquid.DT_DA,'YYYY'));
aUOVERSCONTOBI:=CNRCTB020.getUOVersCoriContoBI(ESERCIZIO_UO_SPECIALI);
aGenVE:=null;
-- Creo il documento generico di entrata su partita di giro collegato all'annotazione di spesa su pgiro del contributo ritenuta
aGenVE.CD_CDS:=Cds;
aGenVE.CD_UNITA_ORGANIZZATIVA:=Uo;
aGenVE.ESERCIZIO:=aLGC.esercizio;
aGenVE.CD_CDS_ORIGINE:=Cds;
aGenVE.CD_UO_ORIGINE:=Uo;
aGenVE.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_VER_ENTRATA;
aGenVE.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGenVE.DS_DOCUMENTO_GENERICO:='CORI-COMPENSAZIONE gruppo cr:'||aLGC.cd_gruppo_cr||'.'||aLGC.cd_regione||'.'||aLGC.pg_comune;
aGenVE.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
-- aGenVE.IM_TOTALE:=;
aGenVE.STATO_COFI:=CNRCTB100.STATO_GEN_COFI_TOT_MR;
aGenVE.STATO_COGE:=CNRCTB100.STATO_COEP_EXC;
aGenVE.STATO_COAN:=CNRCTB100.STATO_COEP_EXC;
aGenVE.CD_DIVISA:=aDivisaEuro;
aGenVE.CAMBIO:=1;
aGenVE.DACR:=aTSNow;
aGenVE.UTCR:=aUser;
aGenVE.DUVA:=aTSNow;
aGenVE.UTUV:=aUser;
aGenVE.PG_VER_REC:=1;
aGenVE.DT_SCADENZA:=TRUNC(aTSNow);
aGenVE.STATO_PAGAMENTO_FONDO_ECO:=CNRCTB100.STATO_NO_PFONDOECO;
aGenVE.TI_ASSOCIATO_MANREV:=CNRCTB100.TI_ASSOC_TOT_MAN_REV ;
aGenVE.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenVE.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aAnagVer:=CNRCTB080.GETANAG(terzo_versamento);
for aLGCC in (select * from liquid_gruppo_centro_comp where
ESERCIZIO=aLGC.esercizio
and CD_GRUPPO_CR=aLGC.cd_gruppo_cr
and CD_REGIONE=aLGC.cd_regione
and PG_COMUNE=aLGC.pg_comune
and PG_GRUPPO_CENTRO=aLGC.pg_gruppo_centro
for update nowait
) loop
-- Estraggo il terzo UO relativo all'UO SAC che accentra i versamenti
CNRCTB080.GETTERZOPERUO(aLGCC.cd_unita_organizzativa,aCdTerzoRes, aCdModPagRes, aPgBancaRes,aLGC.esercizio);
aAnagTst:=CNRCTB080.GETANAG(aCdTerzoRes);
aGen:=null;
aGenRiga:=null;
--aAcc si chiude con la reversale di versamento
--aObb si chiude con il mandato di restituzione
--Se la UO è 999.000, solo la reversale di versamento deve uscire dalla 999, mentre il mandato di restituzione deve uscire dalla SAC
--quindi devo annullare aAcc sulla SAC (cioè rendere tronca aObb) e ricrearla tronca sulla 999
If recParametriCNR.FL_TESORERIA_UNICA != 'Y' then
aAcc.cd_cds:=aLGCC.cd_cds_acc_accentr;
aAcc.esercizio:=aLGCC.esercizio_acc_accentr;
aAcc.esercizio_originale:=aLGCC.esercizio_ori_acc_accentr;
aAcc.pg_accertamento:=aLGCC.pg_acc_accentr;
CNRCTB035.GETPGIROCDSINV(aAcc,aAccScad,aAccScadVoce,aObb,aObbScad,aObbScadVoce);
if Uo = aUOVERSCONTOBI.cd_unita_organizzativa then
CNRCTB043.troncaPraticaObbPgiro(aObb.esercizio,aObb.cd_cds,aObb.esercizio_originale,aObb.pg_obbligazione,aTSNow,aUser);
-- devo creare la pgiro tronca sulla 999
aAccNew:=null;
aAccScadNew:=null;
aObbNew:=null;
aObbScadNew:=null;
--determino il capitolo da mettere sulla pgiro
Begin
Select distinct a.cd_elemento_voce
Into aCdEV
From ass_tipo_cori_ev a, tipo_cr_base b
Where b.esercizio = aLGCC.esercizio
And b.cd_gruppo_cr = aLGCC.cd_gruppo_cr
And a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
And a.esercizio = aLGCC.esercizio
And a.ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And a.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR;
Exception
when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aLGCC.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aLGCC.cd_gruppo_cr||' non trovato');
End;
Begin
Select *
Into elementoVoce
From elemento_voce
Where esercizio = aLGCC.esercizio
And ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
And ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And cd_elemento_voce = aCdEV;
Exception
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aLGCC.cd_gruppo_cr||' non esistente');
End;
aAccNew.CD_CDS:=Cds;
aAccNew.ESERCIZIO:=aAcc.esercizio;
aAccNew.ESERCIZIO_ORIGINALE:=aAcc.esercizio_originale;
If aAcc.esercizio = aAcc.esercizio_originale Then
aAccNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC;
Else
aAccNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC_RES;
End If;
aAccNew.CD_UNITA_ORGANIZZATIVA:=Uo;
aAccNew.CD_CDS_ORIGINE:=Cds;
aAccNew.CD_UO_ORIGINE:=Uo;
aAccNew.TI_APPARTENENZA:=elementoVoce.ti_appartenenza;
aAccNew.TI_GESTIONE:=elementoVoce.ti_gestione;
aAccNew.CD_ELEMENTO_VOCE:=elementoVoce.cd_elemento_voce;
aAccNew.CD_VOCE:=elementoVoce.cd_elemento_voce;
aAccNew.DT_REGISTRAZIONE:=TRUNC(trunc(aTSNow));
aAccNew.DS_ACCERTAMENTO:='PGiro creata in automatico da liquidazione CORI';
aAccNew.NOTE_ACCERTAMENTO:='';
aAccNew.CD_TERZO:=aAcc.CD_TERZO;
aAccNew.IM_ACCERTAMENTO:=aObb.IM_OBBLIGAZIONE; --aAcc.IM_ACCERTAMENTO è stato annullato
aAccNew.FL_PGIRO:='Y';
aAccNew.RIPORTATO:='N';
aAccNew.DACR:=aTSNow;
aAccNew.UTCR:=aUser;
aAccNew.DUVA:=aTSNow;
aAccNew.UTUV:=aUser;
aAccNew.PG_VER_REC:=1;
aAccNew.ESERCIZIO_COMPETENZA:=aAcc.esercizio;
CNRCTB040.CREAACCERTAMENTOPGIROTRONC(false,aAccNew,aAccScadNew,aObbNew,aObbScadNew,trunc(aTSNow));
CREALIQUIDCORIASSPGIRO(aLiquid,aLGCC.cd_gruppo_cr,aLGCC.cd_regione,aLGCC.pg_comune,'E',null,null,aAccNew,aAcc,aUser,trunc(aTSNow));
aAcc := aAccNew;
aAccScad := aAccScadNew;
End If;
-- Creo il documento generico di spesa su partita di giro collegato all'annotazione di entrata su pgiro
-- per versamento accentrato
aGen.CD_CDS:=aObb.cd_cds; --Cds;
aGen.CD_UNITA_ORGANIZZATIVA:=aObb.cd_unita_organizzativa; --Uo;
aGen.ESERCIZIO:=aLGC.esercizio;
aGen.CD_CDS_ORIGINE:=aObb.cd_cds; --Cds;
aGen.CD_UO_ORIGINE:=aObb.cd_unita_organizzativa; --Uo;
aGen.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_VER_SPESA;
aGen.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGen.DS_DOCUMENTO_GENERICO:='CORI-RESTITUZIONE A UO:'||aLGCC.cd_unita_organizzativa||' gruppo cr:'||aLGC.cd_gruppo_cr||'.'||aLGC.cd_regione||'.'||aLGC.pg_comune;
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
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 ;
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRiga.DT_DA_COMPETENZA_COGE:=aGen.DT_DA_COMPETENZA_COGE;
aGenRiga.DT_A_COMPETENZA_COGE:=aGen.DT_A_COMPETENZA_COGE;
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:=aCdTerzoRes;
aGenRiga.CD_MODALITA_PAG:=aCdModPagRes;
aGenRiga.PG_BANCA:=aPgBancaRes;
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_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.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.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
aListRigheManP.delete;
aManP:=null;
aManP.CD_CDS:=aGen.cd_cds;
aManP.ESERCIZIO:=aGen.esercizio;
aManP.CD_UNITA_ORGANIZZATIVA:=aGen.cd_unita_organizzativa;
aManP.CD_CDS_ORIGINE:=aGen.cd_cds;
aManP.CD_UO_ORIGINE:=aGen.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:='Mandato di resituzione crediti versamento gruppo CORI: '||aLGC.cd_gruppo_cr||'.'||aLGC.cd_regione||'.'||aLGC.pg_comune;
aManP.STATO:=CNRCTB038.STATO_MAN_EME;
aManP.DT_EMISSIONE:=TRUNC(aDateCont);
aManP.IM_RITENUTE:=0;
aManP.IM_MANDATO:=aGen.IM_TOTALE;
-- 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:=aGen.IM_TOTALE;
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;
aListRigheManP(aListRigheManP.count+1):=aManPRiga;
CNRCTB037.GENERADOCUMENTO(aManP,aListRigheManP);
else
if aLGCC.CD_CDS_OBB_ACCENTR_OPP is not null and recParametriCNR.FL_TESORERIA_UNICA = 'Y' then
begin
Select * into aObb
From obbligazione
Where cd_cds = aLGCC.CD_CDS_OBB_ACCENTR_OPP And
esercizio = aLGCC.ES_OBB_ACCENTR_OPP And
esercizio_originale = aLGCC.ES_ORIG_OBB_ACCENTR_OPP And
pg_obbligazione = aLGCC.PG_OBB_ACCENTR_OPP And
fl_pgiro = 'Y'
For update nowait;
IMPORTO_DA_REGOLARIZZARE := aObb.IM_OBBLIGAZIONE;
Select * into aAccScad
From accertamento_scadenzario
Where cd_cds = aLGCC.cd_cds_acc_accentr And
esercizio = aLGCC.esercizio_acc_accentr And
esercizio_originale = aLGCC.esercizio_ori_acc_accentr And
pg_accertamento = aLGCC.pg_acc_accentr;
CNRCTB035.sdoppiaScadenzaAccertamento(aAccScad, aAccScad.im_SCADENZA - IMPORTO_DA_REGOLARIZZARE, aUser);
exception
when NO_DATA_FOUND then
IMPORTO_DA_REGOLARIZZARE := 0;
end;
ELSE
IMPORTO_DA_REGOLARIZZARE := 0;
end if;
Begin
Select * into aAcc
From accertamento
Where cd_cds = aLGCC.cd_cds_acc_accentr And
esercizio = aLGCC.esercizio_acc_accentr And
esercizio_originale = aLGCC.esercizio_ori_acc_accentr And
pg_accertamento = aLGCC.pg_acc_accentr And
fl_pgiro = 'Y'
For update nowait;
Select * into aAccScad
From accertamento_scadenzario
Where cd_cds = aLGCC.cd_cds_acc_accentr And
esercizio = aLGCC.esercizio_acc_accentr And
esercizio_originale = aLGCC.esercizio_ori_acc_accentr And
pg_accertamento = aLGCC.pg_acc_accentr and
pg_accertamento_scadenzario = 1
For update nowait;
Select * into aAccScadVoce
From accertamento_scad_voce
Where cd_cds = aLGCC.cd_cds_acc_accentr And
esercizio = aLGCC.esercizio_acc_accentr And
esercizio_originale = aLGCC.esercizio_ori_acc_accentr And
pg_accertamento = aLGCC.pg_acc_accentr and
pg_accertamento_scadenzario = 1
For Update nowait;
Exception
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Accertamento non trovato '||aLGCC.cd_cds_acc_accentr||'-'||aLGCC.esercizio_acc_accentr||'-'||aLGCC.esercizio_ori_acc_accentr||'-'||aLGCC.pg_acc_accentr);
end;
End if;
-- Crea righe di generico e di reversale per compensazione liquidazione al centro
aGenVERiga:=null;
aGenVERiga.DT_DA_COMPETENZA_COGE:=aGenVE.DT_DA_COMPETENZA_COGE;
aGenVERiga.DT_A_COMPETENZA_COGE:=aGenVE.DT_A_COMPETENZA_COGE;
aGenVERiga.CD_CDS:=aGenVE.CD_CDS;
aGenVERiga.CD_UNITA_ORGANIZZATIVA:=aGenVE.CD_UNITA_ORGANIZZATIVA;
aGenVERiga.ESERCIZIO:=aGenVE.ESERCIZIO;
aGenVERiga.CD_TIPO_DOCUMENTO_AMM:=aGenVE.CD_TIPO_DOCUMENTO_AMM;
aGenVERiga.DS_RIGA:=aGenVE.DS_DOCUMENTO_GENERICO;
aGenVERiga.IM_RIGA_DIVISA:=aAccScad.im_SCADENZA;
aGenVERiga.IM_RIGA:=aAccScad.im_SCADENZA;
-- Utilizzo delle corrette informazioni di pagamento nel caso di accentramento o non accentramento
aGenVERiga.CD_TERZO:=terzo_versamento;
If Uo = aUOVERSCONTOBI.cd_unita_organizzativa then
CNRCTB080.getTerzoPerEnteContoBI(Uo, aCdTerzoVE, aCdModPagVE, aPgBancaVE);
Else
aCdTerzoVE := aCdTerzoRes;
aPgBancaVE := aPgBancaRes;
aCdModPagVE := aCdModPagRes;
End If;
aGenVERiga.CD_TERZO_UO_CDS:=aCdTerzoVE;
aGenVERiga.PG_BANCA_UO_CDS:=aPgBancaVE;
aGenVERiga.CD_MODALITA_PAG_UO_CDS:=aCdModPagVE;
aGenVERiga.RAGIONE_SOCIALE:=aAnagVer.RAGIONE_SOCIALE;
aGenVERiga.NOME:=aAnagVer.NOME;
aGenVERiga.COGNOME:=aAnagVer.COGNOME;
aGenVERiga.CODICE_FISCALE:=aAnagVer.CODICE_FISCALE;
aGenVERiga.PARTITA_IVA:=aAnagVer.PARTITA_IVA;
aGenVERiga.STATO_COFI:=aGenVE.STATO_COFI;
aGenVERiga.CD_CDS_ACCERTAMENTO:=aAcc.CD_CDS;
aGenVERiga.ESERCIZIO_ACCERTAMENTO:=aAcc.ESERCIZIO;
aGenVERiga.ESERCIZIO_ORI_ACCERTAMENTO:=aAcc.ESERCIZIO_ORIGINALE;
aGenVERiga.PG_ACCERTAMENTO:=aAcc.PG_ACCERTAMENTO;
aGenVERiga.PG_ACCERTAMENTO_SCADENZARIO:=1;
aGenVERiga.DACR:=aGenVE.DACR;
aGenVERiga.UTCR:=aGenVE.UTCR;
aGenVERiga.UTUV:=aGenVE.UTUV;
aGenVERiga.DUVA:=aGenVE.DUVA;
aGenVERiga.PG_VER_REC:=aGenVE.PG_VER_REC;
aGenVERiga.TI_ASSOCIATO_MANREV:=aGenVE.TI_ASSOCIATO_MANREV;
aListGenVERighe(aListGenVERighe.count+1):=aGenVERiga;
-- Generazione righe reversale
aRevPRiga:=null;
aRevPRiga.CD_CDS:=aGenVE.cd_cds;
aRevPRiga.ESERCIZIO:=aGenVE.esercizio;
aRevPRiga.ESERCIZIO_ACCERTAMENTO:=aGenVERiga.esercizio_ACCERTAMENTO;
aRevPRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aGenVERiga.esercizio_ORI_ACCERTAMENTO;
aRevPRiga.PG_ACCERTAMENTO:=aGenVERiga.pg_accertamento;
aRevPRiga.PG_ACCERTAMENTO_SCADENZARIO:=aGenVERiga.pg_accertamento_scadenzario;
aRevPRiga.CD_CDS_DOC_AMM:=aGenVE.cd_cds;
aRevPRiga.CD_UO_DOC_AMM:=aGenVE.cd_unita_organizzativa;
aRevPRiga.ESERCIZIO_DOC_AMM:=aGenVE.esercizio;
aRevPRiga.CD_TIPO_DOCUMENTO_AMM:=aGenVE.cd_tipo_documento_amm;
aRevPRiga.PG_DOC_AMM:=-1000;
aRevPRiga.DS_REVERSALE_RIGA:=aRevP.ds_reversale;
aRevPRiga.STATO:=aRevP.stato;
aRevPRiga.CD_TERZO:=aGenVERiga.cd_terzo;
aRevPRiga.CD_TERZO_UO:=aGenVERiga.cd_terzo_uo_cds;
aRevPRiga.PG_BANCA:=aGenVERiga.pg_banca_uo_cds;
aRevPRiga.CD_MODALITA_PAG:=aGenVERiga.cd_modalita_pag_uo_cds;
aRevPRiga.IM_REVERSALE_RIGA:=aAccScad.im_SCADENZA;
aRevPRiga.FL_PGIRO:='Y';
aRevPRiga.UTCR:=aUser;
aRevPRiga.DACR:=aTSNow;
aRevPRiga.UTUV:=aUser;
aRevPRiga.DUVA:=aTSNow;
aRevPRiga.PG_VER_REC:=1;
aTotReversale:=aTotReversale+aRevPRiga.im_reversale_riga;
aListRigheRevP(aListRigheRevP.count+1):=aRevPRiga;
if aLGCC.CD_CDS_OBB_ACCENTR_OPP is not null and importo_da_regolarizzare > 0 and recParametriCNR.FL_TESORERIA_UNICA = 'Y' then
Select * into aObbScad
From obbligazione_scadenzario
Where cd_cds = aLGCC.CD_CDS_OBB_ACCENTR_OPP And
esercizio = aLGCC.ES_OBB_ACCENTR_OPP And
esercizio_originale = aLGCC.ES_ORIG_OBB_ACCENTR_OPP And
pg_obbligazione = aLGCC.PG_OBB_ACCENTR_OPP
For update nowait;
Select * into aObbScadVoce
From obbligazione_scad_voce
Where cd_cds = aLGCC.CD_CDS_OBB_ACCENTR_OPP And
esercizio = aLGCC.ES_OBB_ACCENTR_OPP And
esercizio_originale = aLGCC.ES_ORIG_OBB_ACCENTR_OPP And
pg_obbligazione = aLGCC.PG_OBB_ACCENTR_OPP
For Update nowait;
aGenVS:=null;
-- Creo il documento generico di spesa su partita di giro opposta collegato all'annotazione di spesa su pgiro del contributo ritenuta
aGenVS.CD_CDS:=Cds;
aGenVS.CD_UNITA_ORGANIZZATIVA:=Uo;
aGenVS.ESERCIZIO:=aLGC.esercizio;
aGenVS.CD_CDS_ORIGINE:=Cds;
aGenVS.CD_UO_ORIGINE:=Uo;
aGenVS.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_VER_SPESA;
aGenVS.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGenVS.DS_DOCUMENTO_GENERICO:='CORI-COMPENSAZIONE OPPOSTA gruppo cr:'||aLGC.cd_gruppo_cr||'.'||aLGC.cd_regione||'.'||aLGC.pg_comune;
aGenVS.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
aGenVS.IM_TOTALE:=aObb.im_obbligazione;
aGenVS.STATO_COFI:=CNRCTB100.STATO_GEN_COFI_TOT_MR;
aGenVS.STATO_COGE:=CNRCTB100.STATO_COEP_EXC;
aGenVS.STATO_COAN:=CNRCTB100.STATO_COEP_EXC;
aGenVS.CD_DIVISA:=aDivisaEuro;
aGenVS.CAMBIO:=1;
aGenVS.DACR:=aTSNow;
aGenVS.UTCR:=aUser;
aGenVS.DUVA:=aTSNow;
aGenVS.UTUV:=aUser;
aGenVS.PG_VER_REC:=1;
aGenVS.DT_SCADENZA:=TRUNC(aTSNow);
aGenVS.STATO_PAGAMENTO_FONDO_ECO:=CNRCTB100.STATO_NO_PFONDOECO;
aGenVS.TI_ASSOCIATO_MANREV:=CNRCTB100.TI_ASSOC_TOT_MAN_REV ;
aGenVS.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenVS.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenVSRiga:=null;
aGenVSRiga.DT_DA_COMPETENZA_COGE:=aGenVS.DT_DA_COMPETENZA_COGE;
aGenVSRiga.DT_A_COMPETENZA_COGE:=aGenVS.DT_A_COMPETENZA_COGE;
aGenVSRiga.CD_CDS:=aGenVS.CD_CDS;
aGenVSRiga.CD_UNITA_ORGANIZZATIVA:=aGenVS.CD_UNITA_ORGANIZZATIVA;
aGenVSRiga.ESERCIZIO:=aGenVS.ESERCIZIO;
aGenVSRiga.CD_TIPO_DOCUMENTO_AMM:=aGenVS.CD_TIPO_DOCUMENTO_AMM;
aGenVSRiga.DS_RIGA:=aGenVS.DS_DOCUMENTO_GENERICO;
aGenVSRiga.IM_RIGA_DIVISA:=aObb.im_obbligazione;
aGenVSRiga.IM_RIGA:=aObb.im_obbligazione;
-- Utilizzo delle corrette informazioni di pagamento nel caso di accentramento o non accentramento
aGenVSRiga.CD_TERZO:=aObb.cd_terzo;
CNRCTB080.getModPagUltime(aObb.cd_terzo, aCdModPagVE, aPgBancaVE);
aGenVSRiga.CD_MODALITA_PAG:=aCdModPagVE;
aGenVSRiga.PG_BANCA:=aPgBancaVE;
aAnagVerRegolarizzazione :=CNRCTB080.GETANAG(aObb.cd_terzo);
aGenVSRiga.RAGIONE_SOCIALE:=aAnagVerRegolarizzazione.RAGIONE_SOCIALE;
aGenVSRiga.NOME:=aAnagVerRegolarizzazione.NOME;
aGenVSRiga.COGNOME:=aAnagVerRegolarizzazione.COGNOME;
aGenVSRiga.CODICE_FISCALE:=aAnagVerRegolarizzazione.CODICE_FISCALE;
aGenVSRiga.PARTITA_IVA:=aAnagVerRegolarizzazione.PARTITA_IVA;
aGenVSRiga.STATO_COFI:=aGenVS.STATO_COFI;
aGenVSRiga.DT_CANCELLAZIONE:=aGenVS.DT_CANCELLAZIONE;
aGenVSRiga.CD_CDS_OBBLIGAZIONE:=aObb.CD_CDS;
aGenVSRiga.ESERCIZIO_OBBLIGAZIONE:=aObb.ESERCIZIO;
aGenVSRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aObb.ESERCIZIO_ORIGINALE;
aGenVSRiga.PG_OBBLIGAZIONE:=aObb.PG_OBBLIGAZIONE;
aGenVSRiga.PG_OBBLIGAZIONE_SCADENZARIO:=1;
aGenVSRiga.DACR:=aGenVS.DACR;
aGenVSRiga.UTCR:=aGenVS.UTCR;
aGenVSRiga.UTUV:=aGenVS.UTUV;
aGenVSRiga.DUVA:=aGenVS.DUVA;
aGenVSRiga.PG_VER_REC:=aGenVS.PG_VER_REC;
aGenVSRiga.TI_ASSOCIATO_MANREV:=aGenVS.TI_ASSOCIATO_MANREV;
aListGenVSRighe (1):=aGenVSRiga;
-- Generazione righe MANDATO
aManRegolarizzazione:=null;
aManRegolarizzazione.CD_CDS:=aGenVS.cd_cds;
aManRegolarizzazione.ESERCIZIO:=aGenVS.esercizio;
aManRegolarizzazione.CD_UNITA_ORGANIZZATIVA:=aGenVS.cd_unita_organizzativa;
aManRegolarizzazione.CD_CDS_ORIGINE:=aGenVS.cd_cds;
aManRegolarizzazione.CD_UO_ORIGINE:=aGenVS.cd_unita_organizzativa;
aManRegolarizzazione.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_MAN;
aManRegolarizzazione.TI_MANDATO:=CNRCTB038.TI_MAN_REG;
aManRegolarizzazione.TI_COMPETENZA_RESIDUO:=CNRCTB038.TI_MAN_COMP;
aManRegolarizzazione.DS_MANDATO:='Mandato di regolarizzazione restituzione crediti versamento gruppo CORI: '||aLGC.cd_gruppo_cr||'.'||aLGC.cd_regione||'.'||aLGC.pg_comune||' per la uo di origine '||aLGCC.cd_unita_organizzativa;
aManRegolarizzazione.STATO:=CNRCTB038.STATO_MAN_PAG;
aManRegolarizzazione.DT_EMISSIONE:=TRUNC(aDateCont);
aManRegolarizzazione.IM_RITENUTE:=0;
aManRegolarizzazione.IM_MANDATO:=aGenVS.IM_TOTALE;
-- aManP.DT_TRASMISSIONE:=;
-- aManP.DT_PAGAMENTO:=;
-- aManP.DT_ANNULLAMENTO:=;
aManRegolarizzazione.IM_PAGATO:=0;
aManRegolarizzazione.UTCR:=aUser;
aManRegolarizzazione.DACR:=aTSNow;
aManRegolarizzazione.UTUV:=aUser;
aManRegolarizzazione.DUVA:=aTSNow;
aManRegolarizzazione.PG_VER_REC:=1;
aManRegolarizzazione.STATO_TRASMISSIONE:=CNRCTB038.STATO_MAN_TRASCAS_NODIST;
aManPRiga:=null;
aManPRiga.CD_CDS:=aGenVS.cd_cds;
aManPRiga.ESERCIZIO:=aGenVS.esercizio;
aManPRiga.ESERCIZIO_OBBLIGAZIONE:=aGenVSRiga.esercizio_OBBLIGAZIONE;
aManPRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aGenVSRiga.esercizio_ORI_OBBLIGAZIONE;
aManPRiga.PG_OBBLIGAZIONE:=aGenVSRiga.pg_OBBLIGAZIONE;
aManPRiga.PG_OBBLIGAZIONE_SCADENZARIO:=aGenVSRiga.pg_OBBLIGAZIONE_scadenzario;
aManPRiga.CD_CDS_DOC_AMM:=aGenVS.cd_cds;
aManPRiga.CD_UO_DOC_AMM:=aGenVS.cd_unita_organizzativa;
aManPRiga.ESERCIZIO_DOC_AMM:=aGenVS.esercizio;
aManPRiga.CD_TIPO_DOCUMENTO_AMM:=aGenVS.cd_tipo_documento_amm;
aManPRiga.PG_DOC_AMM:=-1000;
aManPRiga.DS_MANDATO_RIGA:=aManRegolarizzazione.ds_mandato;
aManPRiga.STATO:=aManRegolarizzazione.stato;
aManPRiga.CD_TERZO:=aGenVSRiga.cd_terzo;
aManPRiga.IM_MANDATO_RIGA:=aObb.im_obbligazione;
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;
aListRigheManRegolarizzazione (1):=aManPRiga;
CNRCTB110.CREAGENERICOAGGOBBACC(aGenVS,aListGenVSRighe);
for i in 1..aListRigheManRegolarizzazione.count loop
if aListRigheManRegolarizzazione (i).pg_doc_amm=-1000 then
aListRigheManRegolarizzazione(i).pg_doc_amm:=aGenVS.pg_documento_generico;
end if;
end loop;
aManRegolarizzazione.IM_PAGATO:=aManRegolarizzazione.IM_MANDATO;
CNRCTB037.generaDocumento(aManRegolarizzazione,aListRigheManRegolarizzazione);
CNRCTB037.RISCONTROMANDATO (aManRegolarizzazione.esercizio, aManRegolarizzazione.cd_cds, aManRegolarizzazione.pg_mandato, 'I', aManRegolarizzazione.utcr);
aGenRegolarizzazione:=null;
aGenRegolarizzazione.CD_CDS:=Cds;
aGenRegolarizzazione.CD_UNITA_ORGANIZZATIVA:=Uo;
aGenRegolarizzazione.ESERCIZIO:=aLGC.esercizio;
aGenRegolarizzazione.CD_CDS_ORIGINE:=Cds;
aGenRegolarizzazione.CD_UO_ORIGINE:=Uo;
aGenRegolarizzazione.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GENERICO_REGOLA_E;
aGenRegolarizzazione.DATA_REGISTRAZIONE:=TRUNC(aDateCont); -- TRUNC(aTSNow);
aGenRegolarizzazione.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont); -- TRUNC(aTSNow);
aGenRegolarizzazione.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont); -- TRUNC(aTSNow);
aGenRegolarizzazione.DS_DOCUMENTO_GENERICO:='CORI-COMPENSAZIONE OPPOSTA regolarizzazione gruppo cr:'||aLGC.cd_gruppo_cr||'.'||aLGC.cd_regione||'.'||aLGC.pg_comune||' per la uo di origine '||aLGCC.cd_unita_organizzativa;
aGenRegolarizzazione.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
aGenRegolarizzazione.IM_TOTALE:=aManRegolarizzazione.IM_MANDATO;
aGenRegolarizzazione.STATO_COFI:=CNRCTB100.STATO_GEN_COFI_TOT_MR;
aGenRegolarizzazione.STATO_COGE:=CNRCTB100.STATO_COEP_EXC;
aGenRegolarizzazione.STATO_COAN:=CNRCTB100.STATO_COEP_EXC;
aGenRegolarizzazione.CD_DIVISA:=aDivisaEuro;
aGenRegolarizzazione.CAMBIO:=1;
aGenRegolarizzazione.DACR:=aTSNow;
aGenRegolarizzazione.UTCR:=aUser;
aGenRegolarizzazione.DUVA:=aTSNow;
aGenRegolarizzazione.UTUV:=aUser;
aGenRegolarizzazione.PG_VER_REC:=1;
aGenRegolarizzazione.DT_SCADENZA:=TRUNC(aTSNow);
aGenRegolarizzazione.STATO_PAGAMENTO_FONDO_ECO:=CNRCTB100.STATO_NO_PFONDOECO;
aGenRegolarizzazione.TI_ASSOCIATO_MANREV:=CNRCTB100.TI_ASSOC_TOT_MAN_REV ;
aGenRegolarizzazione.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRegolarizzazione.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRigaRegolarizzazione:=null;
aGenRigaRegolarizzazione.DT_DA_COMPETENZA_COGE:=aGenRegolarizzazione.DT_DA_COMPETENZA_COGE;
aGenRigaRegolarizzazione.DT_A_COMPETENZA_COGE:=aGenRegolarizzazione.DT_A_COMPETENZA_COGE;
aGenRigaRegolarizzazione.CD_CDS:=aGenRegolarizzazione.CD_CDS;
aGenRigaRegolarizzazione.CD_UNITA_ORGANIZZATIVA:=aGenRegolarizzazione.CD_UNITA_ORGANIZZATIVA;
aGenRigaRegolarizzazione.ESERCIZIO:=aGenRegolarizzazione.ESERCIZIO;
aGenRigaRegolarizzazione.CD_TIPO_DOCUMENTO_AMM:=aGenRegolarizzazione.CD_TIPO_DOCUMENTO_AMM;
aGenRigaRegolarizzazione.DS_RIGA:=aGenRegolarizzazione.DS_DOCUMENTO_GENERICO;
aGenRigaRegolarizzazione.IM_RIGA_DIVISA:=IMPORTO_DA_REGOLARIZZARE;
aGenRigaRegolarizzazione.IM_RIGA:=IMPORTO_DA_REGOLARIZZARE;
-- Utilizzo delle corrette informazioni di pagamento nel caso di accentramento o non accentramento
aGenRigaRegolarizzazione.CD_TERZO:=aAcc.cd_terzo;
CNRCTB080.getTerzoPerUO(aGenRegolarizzazione.CD_UNITA_ORGANIZZATIVA, aCdTerzoUO, aCdModPagUO, aPgBancaUO,aGenRegolarizzazione.esercizio);
aGenRigaRegolarizzazione.CD_TERZO_UO_CDS:=aCdTerzoUO;
aGenRigaRegolarizzazione.PG_BANCA_UO_CDS:=aPgBancaUO;
aGenRigaRegolarizzazione.CD_MODALITA_PAG_UO_CDS:=aCdModPagUO;
aGenRigaRegolarizzazione.STATO_COFI:=aGenRegolarizzazione.STATO_COFI;
aGenRigaRegolarizzazione.DT_CANCELLAZIONE:=aGenRegolarizzazione.DT_CANCELLAZIONE;
aGenRigaRegolarizzazione.CD_CDS_ACCERTAMENTO:=aAcc.CD_CDS;
aGenRigaRegolarizzazione.ESERCIZIO_ACCERTAMENTO:=aAcc.ESERCIZIO;
aGenRigaRegolarizzazione.ESERCIZIO_ORI_ACCERTAMENTO:=aAcc.ESERCIZIO_ORIGINALE;
aGenRigaRegolarizzazione.PG_ACCERTAMENTO:=aAcc.PG_ACCERTAMENTO;
aGenRigaRegolarizzazione.PG_ACCERTAMENTO_SCADENZARIO:=2;
aGenRigaRegolarizzazione.DACR:=aGenRegolarizzazione.DACR;
aGenRigaRegolarizzazione.UTCR:=aGenRegolarizzazione.UTCR;
aGenRigaRegolarizzazione.UTUV:=aGenRegolarizzazione.UTUV;
aGenRigaRegolarizzazione.DUVA:=aGenRegolarizzazione.DUVA;
aGenRigaRegolarizzazione.PG_VER_REC:=aGenRegolarizzazione.PG_VER_REC;
aGenRigaRegolarizzazione.TI_ASSOCIATO_MANREV:=aGenRegolarizzazione.TI_ASSOCIATO_MANREV;
aListGenVERigheRegolarizz (1):=aGenRigaRegolarizzazione;
BEGIN
CNRCTB110.creaGenericoAggObbAcc(aGenRegolarizzazione,aListGenVERigheRegolarizz);
Exception
WHEN Others THEN RAISE_APPLICATION_ERROR(-20100,aGenRigaRegolarizzazione.DS_RIGA||' '||aAcc.PG_ACCERTAMENTO);
END;
--- creo la reversale di regolarizzazione
aRevRegolarizzazione.CD_CDS:=Cds;
aRevRegolarizzazione.ESERCIZIO:=aLGC.esercizio;
aRevRegolarizzazione.CD_UNITA_ORGANIZZATIVA:=uo;
aRevRegolarizzazione.CD_CDS_ORIGINE:=Cds;
aRevRegolarizzazione.CD_UO_ORIGINE:=uo;
aRevRegolarizzazione.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_REV;
aRevRegolarizzazione.TI_REVERSALE:=CNRCTB038.TI_REV_REG;
aRevRegolarizzazione.TI_COMPETENZA_RESIDUO:=CNRCTB038.TI_MAN_COMP;
aRevRegolarizzazione.DS_REVERSALE:='Reversale di regolarizzazione restituzione crediti versamento gruppo CORI: '||aLGC.cd_gruppo_cr||'.'||aLGC.cd_regione||'.'||aLGC.pg_comune||' per la uo di origine '||aLGCC.cd_unita_organizzativa;
aRevRegolarizzazione.STATO:=CNRCTB038.STATO_REV_PAG;
aRevRegolarizzazione.DT_EMISSIONE:=TRUNC(aDateCont); -- TRUNC(aTSNow);
aRevRegolarizzazione.STATO_COGE := CNRCTB100.STATO_COEP_EXC;
aRevRegolarizzazione.IM_REVERSALE:=aManRegolarizzazione.IM_MANDATO;
aRevRegolarizzazione.IM_INCASSATO:=aManRegolarizzazione.IM_MANDATO;
aRevRegolarizzazione.DACR:=aTSNow;
aRevRegolarizzazione.UTCR:=aUser;
aRevRegolarizzazione.DUVA:=aTSNow;
aRevRegolarizzazione.UTUV:=aUser;
aRevRegolarizzazione.PG_VER_REC:=1;
aRevRegolarizzazione.STATO_TRASMISSIONE:=CNRCTB038.STATO_REV_TRASCAS_NODIST;
-- per ogni riga di doc.generico creato per la chiusra del fondo viene creata una riga di reversale
aRevPRiga:=null;
aRevPRiga.CD_CDS:=aRevRegolarizzazione.cd_cds;
aRevPRiga.ESERCIZIO:=aRevRegolarizzazione.esercizio;
aRevPRiga.ESERCIZIO_ACCERTAMENTO:=aAcc.esercizio;
aRevPRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aAcc.esercizio_oriGINALE;
aRevPRiga.PG_ACCERTAMENTO:=aAcc.pg_accertamento;
aRevPRiga.PG_ACCERTAMENTO_SCADENZARIO:=2;
aRevPRiga.CD_CDS_DOC_AMM:=aGenRegolarizzazione.cd_cds;
aRevPRiga.CD_UO_DOC_AMM:=aGenRegolarizzazione.cd_unita_organizzativa;
aRevPRiga.ESERCIZIO_DOC_AMM:=aGenRegolarizzazione.esercizio;
aRevPRiga.CD_TIPO_DOCUMENTO_AMM:=aGenRegolarizzazione.cd_tipo_documento_amm;
aRevPRiga.PG_DOC_AMM:=aGenRegolarizzazione.pg_documento_generico;
aRevPRiga.DS_REVERSALE_RIGA:=aRevRegolarizzazione.ds_reversale;
aRevPRiga.STATO:=aRevRegolarizzazione.STATO;
aRevPRiga.CD_TERZO:=aGenRigaRegolarizzazione.cd_terzo;
aRevPRiga.CD_TERZO_UO:=aGenRigaRegolarizzazione.cd_terzo_uo_cds;
aRevPRiga.IM_REVERSALE_RIGA:=aManRegolarizzazione.IM_MANDATO;
aRevPRiga.FL_PGIRO:='Y';
aRevPRiga.UTCR:=aUser;
aRevPRiga.DACR:=aTSNow;
aRevPRiga.UTUV:=aUser;
aRevPRiga.DUVA:=aTSNow;
aRevPRiga.PG_VER_REC:=1;
aListRigheRevRegolarizzazione (1):=aRevPRiga;
cnrctb037.GENERAREVERSALE( aRevRegolarizzazione,aListRigheRevRegolarizzazione);
cnrctb038.ins_ASS_MANDATO_REVERSALE ( aManRegolarizzazione, aManRegolarizzazione.pg_mandato, aRevRegolarizzazione);
-- Aggiorna il campo IM_PAGAMENTI_INCASSI su VOCE_F_SALDI_CMP
CNRCTB037.RISCONTROREVERSALE (aRevRegolarizzazione.esercizio, aRevRegolarizzazione.cd_cds, aRevRegolarizzazione.pg_reversale, 'I', aManRegolarizzazione.utcr);
end if;
end loop;
if aListGenVERighe.count > 0 then
CNRCTB110.CREAGENERICOAGGOBBACC(aGenVE,aListGenVERighe);
end if;
for i in 1..aListRigheRevP.count loop
if aListRigheRevP(i).pg_doc_amm=-1000 then
aListRigheRevP(i).pg_doc_amm:=aGenVE.pg_documento_generico;
end if;
end loop;
end;
function creaGruppoCentro(aL liquid_cori%rowtype, aAggregato liquid_gruppo_cori%rowtype,aTSNow date, aUser varchar2) return liquid_gruppo_centro%rowtype is
aLGC liquid_gruppo_centro%rowtype;
aPgGruppoCentro number(10);
begin
begin
select pg_gruppo_centro+1 into aPgGruppoCentro from liquid_gruppo_centro where
ESERCIZIO=aAggregato.esercizio
AND CD_GRUPPO_CR=aAggregato.cd_gruppo_cr
AND CD_REGIONE=aAggregato.cd_regione
AND PG_COMUNE=aAggregato.pg_comune
AND pg_gruppo_centro=(select max(pg_gruppo_centro) from liquid_gruppo_centro
where
ESERCIZIO=aAggregato.esercizio
AND CD_GRUPPO_CR=aAggregato.cd_gruppo_cr
AND CD_REGIONE=aAggregato.cd_regione
AND PG_COMUNE=aAggregato.pg_comune
)
for update nowait;
exception when NO_DATA_FOUND then
aPgGruppoCentro:=1;
end;
aLGC.ESERCIZIO:=aAggregato.esercizio;
aLGC.CD_GRUPPO_CR:=aAggregato.cd_gruppo_cr;
aLGC.CD_REGIONE:=aAggregato.cd_regione;
aLGC.PG_COMUNE:=aAggregato.pg_comune;
aLGC.PG_GRUPPO_CENTRO:=aPgGruppoCentro;
aLGC.STATO:=CNRCTB575.STATO_GRUPPO_CENTRO_INIZIALE;
aLGC.CD_CDS_LC:=null;
aLGC.CD_UO_LC:=null;
aLGC.PG_LC:=null;
aLGC.DACR:=aTSNow;
aLGC.UTCR:=aUser;
aLGC.DUVA:=aTSNow;
aLGC.UTUV:=aUser;
aLGC.PG_VER_REC:=1;
aLGC.DA_ESERCIZIO_PRECEDENTE:=aL.da_esercizio_precedente;
begin
CNRCTB575.INS_LIQUID_GRUPPO_CENTRO(aLGC);
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 aLGC;
end;
procedure aggiornaPraticaGruppoCentro(aL liquid_cori%rowtype, aAggregato liquid_gruppo_cori%rowtype,aUOVERSACC unita_organizzativa%rowtype,aTSNow date,aUser varchar2, tb_ass_pgiro IN OUT tab_ass_pgiro) is
aAcc accertamento%rowtype;
aAccScad accertamento_scadenzario%rowtype;
aObb obbligazione%rowtype;
aObbScad obbligazione_scadenzario%rowtype;
aObbNew obbligazione%rowtype;
aObbScadNew obbligazione_scadenzario%rowtype;
aAccNew accertamento%rowtype;
aAccScadNew accertamento_scadenzario%rowtype;
aObbPG obbligazione%rowtype;
aObbGiro obbligazione%rowtype;
aObbScadGiro obbligazione_scadenzario%rowtype;
aObbScadVoceGiro obbligazione_scad_voce%rowtype;
aObbScadVoce obbligazione_scad_voce%rowtype;
aAccScadVoce accertamento_scad_voce%rowtype;
aObbPGScad obbligazione_scadenzario%rowtype;
aAccGiro accertamento%rowtype;
aAccScadGiro accertamento_scadenzario%rowtype;
aAccScadVoceGiro accertamento_scad_voce%rowtype;
aAccPG accertamento%rowtype;
aAccPGScad accertamento_scadenzario%rowtype;
aCdEV varchar2(20);
elementoVoce elemento_voce%rowtype;
aLGC liquid_gruppo_centro%rowtype;
aLGCC liquid_gruppo_centro_comp%rowtype;
aCdTerzoAcc number(8);
aCdModPagAcc varchar2(10);
aPgBancaAcc number(10);
aCdTerzoAcc_unica number(8);
aCdModPagAcc_unica varchar2(10);
aPgBancaAcc_unica number(10);
aCdTerzoUo number(8);
aCdModPagUo varchar2(10);
aPgBancaUo number(10);
aGen documento_generico%rowtype;
aGenRiga documento_generico_riga%rowtype;
aListGenRighe CNRCTB100.docGenRigaList;
aRev reversale%rowtype;
aRevRiga reversale_riga%rowtype;
aAnagTst anagrafico%rowtype;
aContoColl ass_partita_giro%rowtype;
aDateCont date;
aAccConScad varchar2(1):='Y';
recParametriCNR PARAMETRI_CNR%Rowtype;
TROVATO_DETTAGLIO_P_GIRO VARCHAR2(1);
SOMMA_OPPOSTA NUMBER := 0;
aObbGiroOpp obbligazione%rowtype;
aObbScadGiroOpp obbligazione_scadenzario%rowtype;
aObbScadVoceGiroOpp obbligazione_scad_voce%rowtype;
aAccGiroOpp accertamento%rowtype;
aAccScadGiroOpp accertamento_scadenzario%rowtype;
aAccScadVoceGiroOpp accertamento_scad_voce%rowtype;
Begin
/***************GGGGGGGGGGGGGGG PENSO CHE BISOGNA MODIFICARE QUESTA PARTE....DEVO SOMMARE GLI IMPORTI DI SEGNO INVERSO CHE TROVO SU CONTRIBUTO_RITENUTA CHE DEVO METTERE IN JOIN
CON LIQUID_GRUPPO_CORI_DET....POI L'IMPORTO IN VALORE ASSOLUTO LO DEVO SOMMARE ALL'IMPORTO LIQUIDATO E DEVO CREARE I DOCUMENTI CONTABILI E AMMINISTRATIVI DI SEGNO OPPOSTO...
Nel 2017 ci sono accertamenti e impegni in partita di giro sul cds dell'istituto per ogni compenso...questi vengono ribaltati a 0.
Nel 2018:
nel caso di ammontare positivo nel 2018 viene creato un unico impegno a residuo tronco (con accertamento a 0) per tutti gli istituti...sulla uo 000.407......l'impegno viene registrato su liquid_gruppo_cori,
e l'importo dell'impegno deriva dalla somma di tutte le liquidazioni positive degli istituti, somma che si può ricavare da questa select:
select sum(im_liquidato)
from liquid_gruppo_cori
where
ESERCIZIO = 2018
AND cd_gruppo_cr = '1004'
AND IM_LIQUIDATO > 0
AND cd_cds != '000'
AND PG_LIQUIDAZIONE = 0
AND (ESERCIZIO_ORI_OBB_ACCENTR = 2017 or
ESERCIZIO_ORI_OBB_ACCENTR is null)
nel caso di ammontare negativo per ciascun istituto viene creato un accertamento a residuo tronco (con impegno a 0)...sulla uo 000.407...per ogni istituto che ha ritenute da versare...l'accertamento viene registrato su liquid_gruppo_centro_comp,
e l'importo dell'accertamento deriva dalla somma algebrica di impegni e accertamenti dell'istituto,
le somme si possono ricavare da questa select:
select sum(ammontare) from
contributo_ritenuta c, liquid_gruppo_Cori_Det l
where c.esercizio = l.esercizio_contributo_ritenuta and
c.pg_compenso = l.pg_compenso and
C.CD_UNITA_ORGANIZZATIVA = l.cd_uo_origine and
c.cd_contributo_ritenuta = l.cd_contributo_ritenuta and
l.ESERCIZIO = 2018 and
l.cd_uo_origine = '014.000' and pg_liquidazione = 0 and
l.cd_gruppo_cr = '1004'
CONTROLLARE BENE COME FA CON I GENERICI I MANDATI E LE REVERSALI.... FORSE DEVO MODIFICARE ANCHE ALTRO */
if aAggregato.im_liquidato = 0 then
-- ATTENZIONE!!! Se l'importo da liquidare è 0 non c'è niente da aggiornare al centro
return;
end if;
recParametriCNR := CNRUTL001.getRecParametriCnr(aL.esercizio);
aDateCont:=CNRCTB008.getTimestampContabile(aL.esercizio,aTSNow);
aLGC:=null;
--pipe.send_message('1 '|| aL.esercizio);
begin
aLGC:=getGruppoCentroAperto(aL, aAggregato);
exception when NO_DATA_FOUND then
aLGC:=creaGruppoCentro(aL, aAggregato,aTSNow,aUser);
end;
-- Estraggo il terzo UO relativo all'UO SAC che accentra i versamenti
CNRCTB080.GETTERZOPERUO(aUOVERSACC.cd_unita_organizzativa,aCdTerzoAcc, aCdModPagAcc, aPgBancaAcc,aL.esercizio);
--GGG1 DA CAMBIARE
if aAggregato.im_liquidato < 0 Then
--and recParametriCNR.FL_TESORERIA_UNICA != 'Y'
aLGCC:=creaGruppoCentroComp(aL, aLGC, aAggregato,aTSNow,aUser);
IF recParametriCNR.FL_TESORERIA_UNICA = 'Y' THEN
-- CNRCTB080.getTerzoPerEnteContoBI(aUOVERSACC.cd_unita_organizzativa, aCdTerzoAcc_unica, aCdModPagAcc_unica, aPgBancaAcc_unica);
BEGIN
SELECT cd_terzo_versamento, CD_MODALITA_PAGAMENTO, PG_BANCA
INTO aCdTerzoAcc_unica, aCdModPagAcc_unica, aPgBancaAcc_unica
FROM GRUPPO_CR_DET
WHERE ESERCIZIO = aAggregato.esercizio AND
CD_GRUPPO_CR = aAggregato.CD_GRUPPO_CR AND
CD_REGIONE = aAggregato.cd_regione AND
PG_COMUNE = aAggregato.pg_comune;
Exception
WHEN Others THEN
IBMERR001.RAISE_ERR_GENERICO('Errore nel recupero del terzo per il gruppo '||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune||'. Errore:'||sqlerrm);
END;
aObbPG:=null;
aObbPGScad:=null;
if aL.da_esercizio_precedente = 'Y' then
select NVL(sum(ammontare),0)
INTO SOMMA_OPPOSTA
from
contributo_ritenuta c, liquid_gruppo_Cori_Det l
where c.esercizio = l.esercizio_contributo_ritenuta and
c.pg_compenso = l.pg_compenso and
C.CD_UNITA_ORGANIZZATIVA = l.cd_uo_origine and
c.cd_contributo_ritenuta = l.cd_contributo_ritenuta and
C.TI_ENTE_PERCIPIENTE = l.TI_ENTE_PERCIPIENTE and
l.CD_CDS = aAggregato.CD_CDS and
l.ESERCIZIO = aAggregato.esercizio and
l.CD_UNITA_ORGANIZZATIVA = aAggregato.CD_UNITA_ORGANIZZATIVA and
l.PG_LIQUIDAZIONE = aAggregato.PG_LIQUIDAZIONE and
l.CD_CDS_ORIGINE = aAggregato.CD_CDS_ORIGINE and
l.CD_UO_ORIGINE = aAggregato.CD_UO_ORIGINE and
l.PG_LIQUIDAZIONE_ORIGINE = aAggregato.PG_LIQUIDAZIONE_ORIGINE and
l.CD_GRUPPO_CR = aAggregato.CD_GRUPPO_CR and
l.CD_REGIONE = aAggregato.CD_REGIONE and
l.PG_COMUNE = aAggregato.PG_COMUNE and
C.AMMONTARE > 0;
END IF;
begin
select distinct a.cd_elemento_voce
into aCdEV
from ass_tipo_cori_ev a, tipo_cr_base b
where b.esercizio = aAggregato.esercizio
and b.cd_gruppo_cr = aAggregato.cd_gruppo_cr
and a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
and a.esercizio = aAggregato.esercizio
and a.ti_gestione = CNRCTB001.GESTIONE_ENTRATE
and a.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR;
exception when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non trovato');
end;
begin
select *
into elementoVoce
from elemento_Voce
where esercizio = aAggregato.esercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
and ti_gestione = CNRCTB001.GESTIONE_ENTRATE
and cd_elemento_voce = aCdEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non esistente');
end;
aAcc:=null;
aAccScad:=null;
aAcc.CD_CDS:=aUOVERSACC.cd_unita_padre;
aAcc.ESERCIZIO:=aAggregato.esercizio;
if aL.da_esercizio_precedente = 'Y' then
aAcc.ESERCIZIO_ORIGINALE:=aAggregato.esercizio - 1;
aAcc.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC_PGIRO_RES;
aAcc.pg_accertamento:=CNRCTB018.getNextNumDocCont(CNRCTB018.TI_DOC_ACC_PGIRO, aAcc.ESERCIZIO_ORIGINALE, aAcc.CD_CDS, aUser);
else
aAcc.ESERCIZIO_ORIGINALE:=aAggregato.esercizio;
aAcc.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC_PGIRO;
end if;
aAcc.CD_UNITA_ORGANIZZATIVA:=aUOVERSACC.cd_unita_organizzativa;
aAcc.CD_CDS_ORIGINE:=aUOVERSACC.cd_unita_padre;
aAcc.CD_UO_ORIGINE:=aUOVERSACC.cd_unita_organizzativa;
aAcc.TI_APPARTENENZA:=elementoVoce.TI_APPARTENENZA;
aAcc.TI_GESTIONE:=elementoVoce.TI_GESTIONE;
-- Utilizzo come conto il primo conto che trovo di un CORI appartenente al gruppo
aAcc.CD_ELEMENTO_VOCE:=aCdEV;
aAcc.CD_VOCE:=elementoVoce.cd_elemento_voce;
aAcc.DT_REGISTRAZIONE:=TRUNC(aDateCont);
aAcc.DS_ACCERTAMENTO:='CORI-VA compensazione gruppo cr :'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aAcc.NOTE_ACCERTAMENTO:='';
aAcc.CD_TERZO:=aCdTerzoAcc_unica;
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:=aAcc.ESERCIZIO;
aAcc.IM_ACCERTAMENTO:=abs(aAggregato.im_liquidato) + SOMMA_OPPOSTA;
CNRCTB040.CREAACCERTAMENTOPGIROTRONC(false,aAcc,aAccScad,aObbPG,aObbPGScad,trunc(aTSNow));
aAccPG:=aAcc;
aAccPGScad:=aAccScad;
aObbPG:=null;
aObbPGScad:=null;
-- GG MODIFICA PER RIBALTARE ANCHE GLI IMPEGNI E NON CREARE SOLO GLI ACCERTAMENTI...IN QUESTO MODO IL FINE ANNO DEGLI IMPEGNI QUADRA CON L'INIZIO ANNO SUCCESSIVO
IF SOMMA_OPPOSTA > 0 THEN
begin
select distinct a.cd_elemento_voce
into aCdEV
from ass_tipo_cori_ev a, tipo_cr_base b
where b.esercizio = aAggregato.esercizio
and b.cd_gruppo_cr = aAggregato.cd_gruppo_cr
and a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
and a.esercizio = aAggregato.esercizio
and a.ti_gestione = CNRCTB001.GESTIONE_SPESE
and a.ti_appartenenza = CNRCTB001.APPARTENENZA_CDS;
exception when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non trovato');
end;
begin
select *
into elementoVoce
from elemento_Voce
where esercizio = aAggregato.esercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
and ti_gestione = CNRCTB001.GESTIONE_SPESE
and cd_elemento_voce = aCdEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non esistente');
end;
aObb:=null;
aObbScad:=null;
aObb.CD_CDS:=aUOVERSACC.cd_unita_padre;
aObb.ESERCIZIO:=aAggregato.esercizio;
if aL.da_esercizio_precedente = 'Y' then
aObb.ESERCIZIO_ORIGINALE:=aAggregato.esercizio - 1;
aObb.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB_PGIRO_RES;
aObb.pg_obbligazione:=CNRCTB018.getNextNumDocCont(CNRCTB018.TI_DOC_OBB_PGIRO, aObb.ESERCIZIO_ORIGINALE, aObb.CD_CDS, aUser);
else
aObb.ESERCIZIO_ORIGINALE:=aAggregato.esercizio;
aObb.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB_PGIRO;
end if;
aObb.im_costi_anticipati:=0;
aObb.fl_calcolo_automatico:='N';
aObb.fl_spese_costi_altrui:='N';
aObb.STATO_OBBLIGAZIONE := CNRCTB035.STATO_DEFINITIVO;
aObb.CD_UNITA_ORGANIZZATIVA:=aUOVERSACC.cd_unita_organizzativa;
aObb.CD_CDS_ORIGINE:=aUOVERSACC.cd_unita_padre;
aObb.CD_UO_ORIGINE:=aUOVERSACC.cd_unita_organizzativa;
aObb.TI_APPARTENENZA:=elementoVoce.TI_APPARTENENZA;
aObb.TI_GESTIONE:=elementoVoce.TI_GESTIONE;
-- Utilizzo come conto il primo conto che trovo di un CORI appartenente al gruppo
aObb.CD_ELEMENTO_VOCE:=aCdEV;
aObb.DT_REGISTRAZIONE:=TRUNC(aDateCont);
aObb.DS_OBBLIGAZIONE:='CORI-VA compensazione per il segno opposto gruppo cr:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aObb.NOTE_OBBLIGAZIONE:='';
aObb.CD_TERZO:=aCdTerzoAcc_unica;
aObb.FL_PGIRO:='Y';
aObb.RIPORTATO:='N';
aObb.DACR:=aTSNow;
aObb.UTCR:=aUser;
aObb.DUVA:=aTSNow;
aObb.UTUV:=aUser;
aObb.PG_VER_REC:=1;
aObb.ESERCIZIO_COMPETENZA:=aObb.ESERCIZIO;
aObb.IM_OBBLIGAZIONE:=SOMMA_OPPOSTA;
CNRCTB030.CREAOBBLIGAZIONEPGIROTRONC(false,aObb,aObbScad,aAcc,aAccScad,trunc(aTSNow));
aObbPG:=aObb;
aObbPGScad:=aObbScad;
END IF;
TROVATO_DETTAGLIO_P_GIRO := 'N';
begin
For i in 1..Nvl(tb_ass_pgiro.Count,0) Loop
if aAggregato.cd_cds = tb_ass_pgiro(i).cd_cds and
aAggregato.esercizio = tb_ass_pgiro(i).esercizio and
aAggregato.cd_unita_organizzativa = tb_ass_pgiro(i).cd_uo and
aAggregato.pg_liquidazione = tb_ass_pgiro(i).pg_liq and
aAggregato.cd_cds_origine = tb_ass_pgiro(i).cd_cds_orig and
aAggregato.cd_uo_origine = tb_ass_pgiro(i).cd_uo_orig and
aAggregato.pg_liquidazione_origine = tb_ass_pgiro(i).pg_liq_orig and
aAggregato.cd_gruppo_cr = tb_ass_pgiro(i).cd_gr_cr and
aAggregato.cd_regione = tb_ass_pgiro(i).cd_regione and
aAggregato.pg_comune = tb_ass_pgiro(i).pg_comune then
TROVATO_DETTAGLIO_P_GIRO := 'S';
IF SOMMA_OPPOSTA > 0 THEN
tb_ass_pgiro(i).CD_CDS_OBB_PGIRO_OPP := aObbPG.cd_cds;
tb_ass_pgiro(i).ES_OBB_PGIRO_OPP := aObbPG.esercizio;
tb_ass_pgiro(i).ES_ORIG_OBB_PGIRO_OPP := aObbPG.esercizio_originale;
tb_ass_pgiro(i).PG_OBB_PGIRO_OPP := aObbPG.PG_OBBLIGAZIONE;
END IF;
tb_ass_pgiro(i).cd_cds_acc_pgiro := aAccPG.cd_cds;
tb_ass_pgiro(i).es_acc_pgiro := aAccPG.esercizio;
tb_ass_pgiro(i).es_orig_acc_pgiro := aAccPG.esercizio_originale;
tb_ass_pgiro(i).pg_acc_pgiro := aAccPG.pg_accertamento;
tb_ass_pgiro(i).ti_origine_pgiro := 'E';
end if;
End Loop;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Errore a ');
end;
IF TROVATO_DETTAGLIO_P_GIRO = 'N' THEN
IBMERR001.RAISE_ERR_GENERICO('Per il cds '||aAggregato.cd_cds||', l''esercizio '||aAggregato.esercizio||', la UO '||aAggregato.cd_unita_organizzativa||', la liquidazione '||aAggregato.pg_liquidazione||
', il gruppo '||aAggregato.cd_gruppo_cr||', la regione '||aAggregato.cd_regione||', il comune '||aAggregato.pg_comune||' non è stata trovata la partita di giro di dettaglio');
END IF;
ELSE
aAccPG:=null;
aAccPGScad:=null;
begin
select distinct a.cd_elemento_voce
into aCdEV
from ass_tipo_cori_ev a, tipo_cr_base b
where
b.esercizio = aAggregato.esercizio
and b.cd_gruppo_cr = aAggregato.cd_gruppo_cr
and a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
and a.esercizio = aAggregato.esercizio
and a.ti_gestione = CNRCTB001.GESTIONE_ENTRATE
and a.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR;
exception when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non trovato');
end;
begin
select * into aContoColl from ass_partita_giro where
esercizio = aAggregato.esercizio
and ti_gestione = CNRCTB001.GESTIONE_ENTRATE
and ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
and cd_voce = aCdEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto associato in partita di giro non trovato per voce di entrata:'||aCdEV);
end;
-- Estraggo il terzo UO relativo all'UO SAC che accentra i versamenti
CNRCTB080.GETTERZOPERUO(aLGCC.cd_unita_organizzativa,aCdTerzoUo, aCdModPagUo, aPgBancaUo,aAggregato.esercizio);
aObb:=null;
aObbScad:=null;
aObb.CD_CDS:=aUOVERSACC.cd_unita_padre;
aObb.ESERCIZIO:=aAggregato.esercizio;
aObb.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB_PGIRO;
aObb.CD_UNITA_ORGANIZZATIVA:=aUOVERSACC.cd_unita_organizzativa;
aObb.CD_CDS_ORIGINE:=aUOVERSACC.cd_unita_padre;
aObb.CD_UO_ORIGINE:=aUOVERSACC.cd_unita_organizzativa;
aObb.TI_APPARTENENZA:=aContoColl.ti_appartenenza_clg;
aObb.TI_GESTIONE:=aContoColl.ti_gestione_clg;
aObb.CD_ELEMENTO_VOCE:=aContoColl.cd_voce_clg;
aObb.DT_REGISTRAZIONE:=TRUNC(aDateCont);
aObb.DS_OBBLIGAZIONE:='CORI-VA compensazione gruppo cr:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aObb.NOTE_OBBLIGAZIONE:='';
aObb.CD_TERZO:=aCdTerzoUo;
aObb.IM_OBBLIGAZIONE:=abs(aAggregato.im_liquidato);
aObb.stato_obbligazione:=CNRCTB035.STATO_DEFINITIVO;
aObb.im_costi_anticipati:=0;
aObb.fl_calcolo_automatico:='N';
aObb.fl_spese_costi_altrui:='N';
aObb.FL_PGIRO:='Y';
aObb.RIPORTATO:='N';
aObb.DACR:=aTSNow;
aObb.UTCR:=aUser;
aObb.DUVA:=aTSNow;
aObb.UTUV:=aUser;
aObb.PG_VER_REC:=1;
aObb.ESERCIZIO_COMPETENZA:=aAggregato.esercizio;
CNRCTB030.CREAOBBLIGAZIONEPGIRO(false,aObb,aObbScad,aAccPG,aAccPGScad,trunc(aTSNow));
END IF;
update liquid_gruppo_centro_comp set
cd_cds_acc_accentr = aAccPG.cd_cds
,esercizio_acc_accentr = aAccPG.esercizio
,esercizio_ori_acc_accentr = aAccPG.esercizio_originale
,pg_acc_accentr = aAccPG.pg_accertamento
,cd_cds_OBB_accentr_OPP = aObbPG.cd_cds
,ES_OBB_ACCENTR_OPP = aObbPG.esercizio
,ES_ORIG_OBB_ACCENTR_OPP = aObbPG.esercizio_originale
,PG_OBB_ACCENTR_OPP = aObbPG.pg_obbligazione
where esercizio = aLGC.esercizio
and cd_gruppo_cr = aLGC.cd_gruppo_cr
and cd_regione = aLGC.cd_regione
and pg_comune = aLGC.pg_comune
and pg_gruppo_centro = aLGC.pg_gruppo_centro
and cd_unita_organizzativa = aAggregato.cd_unita_organizzativa;
else -- aAggregato.im_liquidato > 0
if aL.da_esercizio_precedente = 'Y' then
select abs(NVL(sum(ammontare),0) )
INTO SOMMA_OPPOSTA
from
contributo_ritenuta c, liquid_gruppo_Cori_Det l
where c.esercizio = l.esercizio_contributo_ritenuta and
c.pg_compenso = l.pg_compenso and
C.CD_UNITA_ORGANIZZATIVA = l.cd_uo_origine and
c.cd_contributo_ritenuta = l.cd_contributo_ritenuta and
C.TI_ENTE_PERCIPIENTE = l.TI_ENTE_PERCIPIENTE and
l.CD_CDS = aAggregato.CD_CDS and
l.ESERCIZIO = aAggregato.esercizio and
l.CD_UNITA_ORGANIZZATIVA = aAggregato.CD_UNITA_ORGANIZZATIVA and
l.PG_LIQUIDAZIONE = aAggregato.PG_LIQUIDAZIONE and
l.CD_CDS_ORIGINE = aAggregato.CD_CDS_ORIGINE and
l.CD_UO_ORIGINE = aAggregato.CD_UO_ORIGINE and
l.PG_LIQUIDAZIONE_ORIGINE = aAggregato.PG_LIQUIDAZIONE_ORIGINE and
l.CD_GRUPPO_CR = aAggregato.CD_GRUPPO_CR and
l.CD_REGIONE = aAggregato.CD_REGIONE and
l.PG_COMUNE = aAggregato.PG_COMUNE and
C.AMMONTARE < 0;
END IF;
if aLGC.pg_obb_accentr is not null then
--CNRCTB043.modificaPraticaObb(aLGC.esercizio_obb_accentr,aLGC.cd_cds_obb_accentr,aLGC.esercizio_ori_obb_accentr,aLGC.pg_obb_accentr,aAggregato.im_liquidato,aTSNow,aUser);
--aggiunto l'ultimo parametro aAccConScad = 'Y' per indicare che sono gestite le scadenze per le pgiro di entrata
IF recParametriCNR.FL_TESORERIA_UNICA = 'Y' THEN
aObbGiro := null;
aObbGiro.esercizio:=aLGC.esercizio_obb_accentr;
aObbGiro.cd_cds:=aLGC.cd_cds_obb_accentr;
aObbGiro.esercizio_originale:=aLGC.esercizio_ori_obb_accentr;
aObbGiro.pg_obbligazione:=aLGC.pg_obb_accentr;
CNRCTB035.GETPGIROCDS(aObbGiro,aObbScadGiro,aObbScadVoceGiro,aAccGiro,aAccScadGiro,aAccScadVoceGiro);
CNRCTB043.modificaPraticaAcc(aAccGiro.esercizio,aAccGiro.cd_cds,aAccGiro.esercizio_originale,aAccGiro.pg_accertamento,aAggregato.im_liquidato + somma_opposta,aTSNow,aUser);
TROVATO_DETTAGLIO_P_GIRO := 'N';
begin
For i in 1..Nvl(tb_ass_pgiro.Count,0) Loop
if aAggregato.cd_cds = tb_ass_pgiro(i).cd_cds and
aAggregato.esercizio = tb_ass_pgiro(i).esercizio and
aAggregato.cd_unita_organizzativa = tb_ass_pgiro(i).cd_uo and
aAggregato.pg_liquidazione = tb_ass_pgiro(i).pg_liq and
aAggregato.cd_cds_origine = tb_ass_pgiro(i).cd_cds_orig and
aAggregato.cd_uo_origine = tb_ass_pgiro(i).cd_uo_orig and
aAggregato.pg_liquidazione_origine = tb_ass_pgiro(i).pg_liq_orig and
aAggregato.cd_gruppo_cr = tb_ass_pgiro(i).cd_gr_cr and
aAggregato.cd_regione = tb_ass_pgiro(i).cd_regione and
aAggregato.pg_comune = tb_ass_pgiro(i).pg_comune then
TROVATO_DETTAGLIO_P_GIRO := 'S';
tb_ass_pgiro(i).cd_cds_obb_pgiro := aObbGiro.cd_cds;
tb_ass_pgiro(i).es_obb_pgiro := aObbGiro.esercizio;
tb_ass_pgiro(i).es_orig_obb_pgiro := aObbGiro.esercizio_originale;
tb_ass_pgiro(i).pg_obb_pgiro := aObbGiro.pg_obbligazione;
tb_ass_pgiro(i).ti_origine_pgiro := 'S';
end if;
End Loop;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Errore b ');
end;
IF TROVATO_DETTAGLIO_P_GIRO = 'N' THEN
IBMERR001.RAISE_ERR_GENERICO('Per il cds '||aAggregato.cd_cds||', l''esercizio '||aAggregato.esercizio||', la UO '||aAggregato.cd_unita_organizzativa||', la liquidazione '||aAggregato.pg_liquidazione||
', il gruppo '||aAggregato.cd_gruppo_cr||', la regione '||aAggregato.cd_regione||', il comune '||aAggregato.pg_comune||' non è stata trovata la partita di giro di dettaglio');
END IF;
ELSE
CNRCTB043.modificaPraticaObb(aLGC.esercizio_obb_accentr,aLGC.cd_cds_obb_accentr,aLGC.esercizio_ori_obb_accentr,aLGC.pg_obb_accentr,aAggregato.im_liquidato,aTSNow,aUser,aAccConScad);
END IF;
else
aObbPG:=null;
aObbPGScad:=null;
IF recParametriCNR.FL_TESORERIA_UNICA = 'Y' THEN
aObbNew:=null;
aObbScadNew:=null;
aAccNew:=null;
aAccScadNew:=null;
--determino il capitolo da mettere sulla pgiro
Begin
Select distinct a.cd_elemento_voce
Into aCdEV
From ass_tipo_cori_ev a, tipo_cr_base b
Where b.esercizio = aAggregato.esercizio
And b.cd_gruppo_cr = aAggregato.cd_gruppo_cr
And a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
And a.esercizio = aAggregato.esercizio
And a.ti_gestione = CNRCTB001.GESTIONE_SPESE
And a.ti_appartenenza = CNRCTB001.APPARTENENZA_CDS;
Exception
when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non trovato');
End;
Begin
Select *
Into elementoVoce
From elemento_voce
Where esercizio = aAggregato.esercizio
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_gestione = CNRCTB001.GESTIONE_SPESE
And cd_elemento_voce = aCdEV;
Exception
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non esistente');
End;
aObbNew.CD_CDS:=aUOVERSACC.cd_unita_padre;
aObbNew.ESERCIZIO:=aAggregato.esercizio;
if aL.da_esercizio_precedente = 'Y' then
aObbNew.ESERCIZIO_ORIGINALE:=aAggregato.esercizio - 1;
aObbNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB_PGIRO_RES;
aObbNew.pg_obbligazione:=CNRCTB018.getNextNumDocCont(CNRCTB018.TI_DOC_OBB_PGIRO, aObbNew.ESERCIZIO_ORIGINALE, aObbNew.CD_CDS, aUser);
else
aObbNew.ESERCIZIO_ORIGINALE:=aAggregato.esercizio;
aObbNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB_PGIRO;
end if;
aObbNew.CD_UNITA_ORGANIZZATIVA:=aUOVERSACC.cd_unita_organizzativa;
aObbNew.CD_CDS_ORIGINE:=aUOVERSACC.cd_unita_padre;
aObbNew.CD_UO_ORIGINE:=aUOVERSACC.cd_unita_organizzativa;
aObbNew.TI_APPARTENENZA:=elementoVoce.ti_appartenenza;
aObbNew.TI_GESTIONE:=elementoVoce.ti_gestione;
aObbNew.CD_ELEMENTO_VOCE:=aCdEV;
aObbNew.DT_REGISTRAZIONE:=TRUNC(aDateCont);
aObbNew.DS_OBBLIGAZIONE:='CORI-VA gruppo cr:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aObbNew.NOTE_OBBLIGAZIONE:='';
aObbNew.CD_TERZO:=CNRCTB015.GETIM01PERCHIAVE(CNRCTB035.TERZO_SPECIALE,CNRCTB035.CODICE_DIVERSI_PGIRO);
aObbNew.IM_OBBLIGAZIONE:=aAggregato.im_liquidato;
aObbNew.stato_obbligazione:=CNRCTB035.STATO_DEFINITIVO;
aObbNew.im_costi_anticipati:=0;
aObbNew.fl_calcolo_automatico:='N';
aObbNew.fl_spese_costi_altrui:='N';
aObbNew.FL_PGIRO:='Y';
aObbNew.RIPORTATO:='N';
aObbNew.DACR:=aTSNow;
aObbNew.UTCR:=aUser;
aObbNew.DUVA:=aTSNow;
aObbNew.UTUV:=aUser;
aObbNew.PG_VER_REC:=1;
aObbNew.ESERCIZIO_COMPETENZA:=aObbNew.ESERCIZIO;
CNRCTB030.CREAOBBLIGAZIONEPGIROTRONC(false,aObbNew,aObbScadNew,aAccNew,aAccScadNew,trunc(aTSNow));
aObbPG:=aObbNew;
aObbPGScad:=aObbScadNew;
aAcc:=aAccNew;
aAccScad:=aAccScadNew;
TROVATO_DETTAGLIO_P_GIRO := 'N';
begin
For i in 1..Nvl(tb_ass_pgiro.Count,0) Loop
if aAggregato.cd_cds = tb_ass_pgiro(i).cd_cds and
aAggregato.esercizio = tb_ass_pgiro(i).esercizio and
aAggregato.cd_unita_organizzativa = tb_ass_pgiro(i).cd_uo and
aAggregato.pg_liquidazione = tb_ass_pgiro(i).pg_liq and
aAggregato.cd_cds_origine = tb_ass_pgiro(i).cd_cds_orig and
aAggregato.cd_uo_origine = tb_ass_pgiro(i).cd_uo_orig and
aAggregato.pg_liquidazione_origine = tb_ass_pgiro(i).pg_liq_orig and
aAggregato.cd_gruppo_cr = tb_ass_pgiro(i).cd_gr_cr and
aAggregato.cd_regione = tb_ass_pgiro(i).cd_regione and
aAggregato.pg_comune = tb_ass_pgiro(i).pg_comune then
TROVATO_DETTAGLIO_P_GIRO := 'S';
tb_ass_pgiro(i).cd_cds_obb_pgiro := aObbNew.cd_cds;
tb_ass_pgiro(i).es_obb_pgiro := aObbNew.esercizio;
tb_ass_pgiro(i).es_orig_obb_pgiro := aObbNew.esercizio_originale;
tb_ass_pgiro(i).pg_obb_pgiro := aObbNew.pg_obbligazione;
tb_ass_pgiro(i).ti_origine_pgiro := 'S';
end if;
End Loop;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Errore c1 ');
end;
IF TROVATO_DETTAGLIO_P_GIRO = 'N' THEN
IBMERR001.RAISE_ERR_GENERICO('Per il cds '||aAggregato.cd_cds||', l''esercizio '||aAggregato.esercizio||', la UO '||aAggregato.cd_unita_organizzativa||', la liquidazione '||aAggregato.pg_liquidazione||
', il gruppo '||aAggregato.cd_gruppo_cr||', la regione '||aAggregato.cd_regione||', il comune '||aAggregato.pg_comune||' non è stata trovata la partita di giro di dettaglio');
END IF;
ELSE
aObbPG:=null;
aObbPGScad:=null;
begin
select distinct a.cd_elemento_voce
into aCdEV
from ass_tipo_cori_ev a, tipo_cr_base b
where b.esercizio = aAggregato.esercizio
and b.cd_gruppo_cr = aAggregato.cd_gruppo_cr
and a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
and a.esercizio = aAggregato.esercizio
and a.ti_gestione = CNRCTB001.GESTIONE_ENTRATE
and a.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR;
exception when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non trovato');
end;
begin
select *
into elementoVoce
from elemento_voce
where esercizio = aAggregato.esercizio
and ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
and ti_gestione = CNRCTB001.GESTIONE_ENTRATE
and cd_elemento_voce = aCdEV;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non esistente');
end;
aAcc:=null;
aAccScad:=null;
aAcc.CD_CDS:=aUOVERSACC.cd_unita_padre;
aAcc.ESERCIZIO:=aAggregato.esercizio;
aAcc.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC_PGIRO;
aAcc.CD_UNITA_ORGANIZZATIVA:=aUOVERSACC.cd_unita_organizzativa;
aAcc.CD_CDS_ORIGINE:=aUOVERSACC.cd_unita_padre;
aAcc.CD_UO_ORIGINE:=aUOVERSACC.cd_unita_organizzativa;
aAcc.TI_APPARTENENZA:=elementoVoce.ti_APPARTENENZA;
aAcc.TI_GESTIONE:=elementoVoce.ti_GESTIONE;
-- Utilizzo come conto il primo conto che trovo di un CORI appartenente al gruppo
aAcc.CD_ELEMENTO_VOCE:=aCdEV;
aAcc.CD_VOCE:=elementoVoce.cd_elemento_voce;
aAcc.DT_REGISTRAZIONE:=TRUNC(aDateCont);
aAcc.DS_ACCERTAMENTO:='CORI-VA gruppo cr:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aAcc.NOTE_ACCERTAMENTO:='';
aAcc.CD_TERZO:=aCdTerzoAcc;
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:=aAggregato.esercizio;
aAcc.IM_ACCERTAMENTO:=aAggregato.im_liquidato;
CNRCTB040.CREAACCERTAMENTOPGIRO(false,aAcc,aAccScad,aObbPG,aObbPGScad,trunc(aTSNow));
-- Crea generico e reversale provvisoria
aAnagTst:=CNRCTB080.GETANAG(aCdTerzoAcc);
aGen:=null;
aGenRiga:=null;
aListGenRighe.delete;
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(aDateCont);
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DS_DOCUMENTO_GENERICO:='CORI-VA gruppo cr:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
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:='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:='CORI-VA gruppo cr:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aRev.STATO:=CNRCTB038.STATO_REV_EME;
aRev.DT_EMISSIONE:=TRUNC(aDateCont);
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;
update liquid_gruppo_centro
set cd_cds_obb_accentr = aObbPG.cd_cds
,esercizio_obb_accentr = aObbPG.esercizio
,esercizio_ori_obb_accentr = aObbPG.esercizio_originale
,pg_obb_accentr = aObbPG.pg_obbligazione
where esercizio = aLGC.esercizio
And cd_gruppo_cr = aLGC.cd_gruppo_cr
and cd_regione = aLGC.cd_regione
and pg_comune = aLGC.pg_comune
and pg_gruppo_centro = aLGC.pg_gruppo_centro;
-- Fix mancato aggiornamento pg_obb_accentr su liquid_gruppo_cori_locale alla creazione obb accentr
-- sul gruppo CORI al centro
aLGC.cd_cds_obb_accentr:=aObbPG.cd_cds;
aLGC.esercizio_obb_accentr:=aObbPG.esercizio;
aLGC.esercizio_ori_obb_accentr:=aObbPG.esercizio_originale;
aLGC.pg_obb_accentr:=aObbPG.pg_obbligazione;
end if;
end if;
if somma_opposta > 0 and recParametriCNR.FL_TESORERIA_UNICA = 'Y' then
if aLGC.PG_ACC_ACCENTR_OPP is not null then
aObbGiro := null;
aAccGiroOpp.esercizio:=aLGC.ES_ACC_ACCENTR_OPP;
aAccGiroOpp.cd_cds:=aLGC.CD_CDS_ACC_ACCENTR_OPP;
aAccGiroOpp.esercizio_originale:=aLGC.ES_ORIG_ACC_ACCENTR_OPP;
aAccGiroOpp.pg_ACCERTAMENTO:=aLGC.PG_ACC_ACCENTR_OPP;
CNRCTB035.GETPGIROCDS(aAccGiroOpp,aAccScadGiroOpp,aAccScadVoceGiroOpp,aObbGiroOpp,aObbScadGiroOpp,aObbScadVoceGiroOpp);
CNRCTB043.modificaPraticaObb(aObbGiroOpp.esercizio,aObbGiroOpp.cd_cds,aObbGiroOpp.esercizio_originale,aObbGiroOpp.pg_OBBLIGAZIONE,somma_opposta,aTSNow,aUser,'N', 'N');
TROVATO_DETTAGLIO_P_GIRO := 'N';
begin
For i in 1..Nvl(tb_ass_pgiro.Count,0) Loop
if aAggregato.cd_cds = tb_ass_pgiro(i).cd_cds and
aAggregato.esercizio = tb_ass_pgiro(i).esercizio and
aAggregato.cd_unita_organizzativa = tb_ass_pgiro(i).cd_uo and
aAggregato.pg_liquidazione = tb_ass_pgiro(i).pg_liq and
aAggregato.cd_cds_origine = tb_ass_pgiro(i).cd_cds_orig and
aAggregato.cd_uo_origine = tb_ass_pgiro(i).cd_uo_orig and
aAggregato.pg_liquidazione_origine = tb_ass_pgiro(i).pg_liq_orig and
aAggregato.cd_gruppo_cr = tb_ass_pgiro(i).cd_gr_cr and
aAggregato.cd_regione = tb_ass_pgiro(i).cd_regione and
aAggregato.pg_comune = tb_ass_pgiro(i).pg_comune then
TROVATO_DETTAGLIO_P_GIRO := 'S';
tb_ass_pgiro(i).CD_CDS_ACC_PGIRO_OPP := aAccGiroOpp.cd_cds;
tb_ass_pgiro(i).ES_ACC_PGIRO_OPP := aAccGiroOpp.esercizio;
tb_ass_pgiro(i).ES_ORIG_ACC_PGIRO_OPP := aAccGiroOpp.esercizio_originale;
tb_ass_pgiro(i).PG_ACC_PGIRO_OPP := aAccGiroOpp.PG_ACCERTAMENTO;
end if;
End Loop;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Errore b ');
end;
IF TROVATO_DETTAGLIO_P_GIRO = 'N' THEN
IBMERR001.RAISE_ERR_GENERICO('Per il cds '||aAggregato.cd_cds||', l''esercizio '||aAggregato.esercizio||', la UO '||aAggregato.cd_unita_organizzativa||', la liquidazione '||aAggregato.pg_liquidazione||
', il gruppo '||aAggregato.cd_gruppo_cr||', la regione '||aAggregato.cd_regione||', il comune '||aAggregato.pg_comune||' non è stata trovata la partita di giro di dettaglio');
END IF;
else
aAccNew:=null;
aAccScadNew:=null;
Begin
Select distinct a.cd_elemento_voce
Into aCdEV
From ass_tipo_cori_ev a, tipo_cr_base b
Where b.esercizio = aAggregato.esercizio
And b.cd_gruppo_cr = aAggregato.cd_gruppo_cr
And a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
And a.esercizio = aAggregato.esercizio
And a.ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And a.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR;
Exception
when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non trovato');
End;
Begin
Select *
Into elementoVoce
From elemento_voce
Where esercizio = aAggregato.esercizio
And ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
And ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And cd_elemento_voce = aCdEV;
Exception
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non esistente');
End;
aAccNew.CD_CDS:=aUOVERSACC.cd_unita_padre;
aAccNew.ESERCIZIO:=aAggregato.esercizio;
if aL.da_esercizio_precedente = 'Y' then
aAccNew.ESERCIZIO_ORIGINALE:=aAggregato.esercizio - 1;
aAccNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC_PGIRO_RES;
aAccNew.pg_accertamento:=CNRCTB018.getNextNumDocCont(CNRCTB018.TI_DOC_ACC_PGIRO, aAccNew.ESERCIZIO_ORIGINALE, aAccNew.CD_CDS, aUser);
else
aAccNew.ESERCIZIO_ORIGINALE:=aAggregato.esercizio;
aAccNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC_PGIRO;
end if;
aAccNew.CD_UNITA_ORGANIZZATIVA:=aUOVERSACC.cd_unita_organizzativa;
aAccNew.CD_CDS_ORIGINE:=aUOVERSACC.cd_unita_padre;
aAccNew.CD_UO_ORIGINE:=aUOVERSACC.cd_unita_organizzativa;
aAccNew.TI_APPARTENENZA:=elementoVoce.ti_appartenenza;
aAccNew.TI_GESTIONE:=elementoVoce.ti_gestione;
aAccNew.CD_ELEMENTO_VOCE:=aCdEV;
aAccNew.CD_VOCE:=aCdEV;
aAccNew.DT_REGISTRAZIONE:=TRUNC(aDateCont);
aAccNew.DS_ACCERTAMENTO:='CORI-VA per il segno opposto gruppo cr:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aAccNew.NOTE_ACCERTAMENTO:='';
aAccNew.CD_TERZO:=CNRCTB015.GETIM01PERCHIAVE(CNRCTB035.TERZO_SPECIALE,CNRCTB035.CODICE_DIVERSI_PGIRO);
aAccNew.IM_ACCERTAMENTO:=SOMMA_OPPOSTA;
aAccNew.fl_calcolo_automatico:='N';
aAccNew.FL_PGIRO:='Y';
aAccNew.RIPORTATO:='N';
aAccNew.DACR:=aTSNow;
aAccNew.UTCR:=aUser;
aAccNew.DUVA:=aTSNow;
aAccNew.UTUV:=aUser;
aAccNew.PG_VER_REC:=1;
aAccNew.ESERCIZIO_COMPETENZA:=aAggregato.esercizio;
CNRCTB040.CREAACCERTAMENTOPGIROTRONC(false,aAccNew,aAccScadNew,aObbGiroOpp,aObbScadGiroOpp,trunc(aTSNow));
aAcc:=aAccNew;
aAccScad:=aAccScadNew;
TROVATO_DETTAGLIO_P_GIRO := 'N';
begin
For i in 1..Nvl(tb_ass_pgiro.Count,0) Loop
if aAggregato.cd_cds = tb_ass_pgiro(i).cd_cds and
aAggregato.esercizio = tb_ass_pgiro(i).esercizio and
aAggregato.cd_unita_organizzativa = tb_ass_pgiro(i).cd_uo and
aAggregato.pg_liquidazione = tb_ass_pgiro(i).pg_liq and
aAggregato.cd_cds_origine = tb_ass_pgiro(i).cd_cds_orig and
aAggregato.cd_uo_origine = tb_ass_pgiro(i).cd_uo_orig and
aAggregato.pg_liquidazione_origine = tb_ass_pgiro(i).pg_liq_orig and
aAggregato.cd_gruppo_cr = tb_ass_pgiro(i).cd_gr_cr and
aAggregato.cd_regione = tb_ass_pgiro(i).cd_regione and
aAggregato.pg_comune = tb_ass_pgiro(i).pg_comune then
TROVATO_DETTAGLIO_P_GIRO := 'S';
tb_ass_pgiro(i).CD_CDS_ACC_PGIRO_OPP := aAcc.cd_cds;
tb_ass_pgiro(i).ES_ACC_PGIRO_OPP := aAcc.esercizio;
tb_ass_pgiro(i).ES_ORIG_ACC_PGIRO_OPP := aAcc.esercizio_originale;
tb_ass_pgiro(i).PG_ACC_PGIRO_OPP := aAcc.PG_ACCERTAMENTO;
end if;
End Loop;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Errore c1 ');
end;
IF TROVATO_DETTAGLIO_P_GIRO = 'N' THEN
IBMERR001.RAISE_ERR_GENERICO('Per il cds '||aAggregato.cd_cds||', l''esercizio '||aAggregato.esercizio||', la UO '||aAggregato.cd_unita_organizzativa||', la liquidazione '||aAggregato.pg_liquidazione||
', il gruppo '||aAggregato.cd_gruppo_cr||', la regione '||aAggregato.cd_regione||', il comune '||aAggregato.pg_comune||' non è stata trovata la partita di giro di dettaglio');
END IF;
update liquid_gruppo_centro
set CD_CDS_ACC_ACCENTR_OPP = aAcc.cd_cds
,ES_ACC_ACCENTR_OPP = aAcc.esercizio
,ES_ORIG_ACC_ACCENTR_OPP = aAcc.esercizio_originale
,PG_ACC_ACCENTR_OPP = aAcc.pg_accertamento
where esercizio = aLGC.esercizio
And cd_gruppo_cr = aLGC.cd_gruppo_cr
and cd_regione = aLGC.cd_regione
and pg_comune = aLGC.pg_comune
and pg_gruppo_centro = aLGC.pg_gruppo_centro;
aLGC.CD_CDS_ACC_ACCENTR_OPP:=aAcc.cd_cds;
aLGC.ES_ACC_ACCENTR_OPP:=aAcc.esercizio;
aLGC.ES_ORIG_ACC_ACCENTR_OPP:=aAcc.esercizio_originale;
aLGC.PG_ACC_ACCENTR_OPP:=aAcc.pg_accertamento;
END IF;
END IF;
-- Aggiorna liquid_gruppo_cori con le informazioni relative all'obbligazione pgiro su UO che versa
if aAggregato.im_liquidato < 0 Then
update liquid_gruppo_cori
set pg_gruppo_centro = aLGC.pg_gruppo_centro,
stato = CNRCTB575.STATO_TRASFERITO
where esercizio = aAggregato.esercizio
and cd_cds = aAggregato.cd_cds
and cd_unita_organizzativa = aAggregato.cd_unita_organizzativa
and cd_cds_origine = aAggregato.cd_cds_origine
and cd_uo_origine = aAggregato.cd_uo_origine
and pg_liquidazione = aAggregato.pg_liquidazione
and pg_liquidazione_origine = aAggregato.pg_liquidazione_origine
and cd_gruppo_cr = aAggregato.cd_gruppo_cr
and cd_regione = aAggregato.cd_regione
and pg_comune = aAggregato.pg_comune;
else
update liquid_gruppo_cori
set cd_cds_obb_accentr = aLGC.cd_cds_obb_accentr,
esercizio_obb_accentr = aLGC.esercizio_obb_accentr,
esercizio_ori_obb_accentr = aLGC.esercizio_ori_obb_accentr,
pg_obb_accentr = aLGC.pg_obb_accentr,
pg_gruppo_centro = aLGC.pg_gruppo_centro,
stato = CNRCTB575.STATO_TRASFERITO
where esercizio = aAggregato.esercizio
and cd_cds = aAggregato.cd_cds
and cd_unita_organizzativa = aAggregato.cd_unita_organizzativa
and cd_cds_origine = aAggregato.cd_cds_origine
and cd_uo_origine = aAggregato.cd_uo_origine
and pg_liquidazione = aAggregato.pg_liquidazione
and pg_liquidazione_origine = aAggregato.pg_liquidazione_origine
and cd_gruppo_cr = aAggregato.cd_gruppo_cr
and cd_regione = aAggregato.cd_regione
and pg_comune = aAggregato.pg_comune;
IF SOMMA_OPPOSTA > 0 THEN
update liquid_gruppo_cori
set CD_CDS_ACC_ACCENTR_OPP = aLGC.CD_CDS_ACC_ACCENTR_OPP,
ES_ACC_ACCENTR_OPP = aLGC.ES_ACC_ACCENTR_OPP,
ES_ORIG_ACC_ACCENTR_OPP = aLGC.ES_ORIG_ACC_ACCENTR_OPP,
PG_ACC_ACCENTR_OPP = aLGC.PG_ACC_ACCENTR_OPP
where esercizio = aAggregato.esercizio
and cd_cds = aAggregato.cd_cds
and cd_unita_organizzativa = aAggregato.cd_unita_organizzativa
and cd_cds_origine = aAggregato.cd_cds_origine
and cd_uo_origine = aAggregato.cd_uo_origine
and pg_liquidazione = aAggregato.pg_liquidazione
and pg_liquidazione_origine = aAggregato.pg_liquidazione_origine
and cd_gruppo_cr = aAggregato.cd_gruppo_cr
and cd_regione = aAggregato.cd_regione
and pg_comune = aAggregato.pg_comune;
END IF;
end if;
CREA_ASS_PGIRO_GR_C(tb_ass_pgiro, aUser, aTSNow);
end;
procedure vsx_liquida_cori(
pgCall NUMBER
) is
aEs number(4);
aCdCds varchar2(30);
aCdUo varchar2(30);
aUOVERSACC unita_organizzativa%rowtype;
aUOVERSCONTOBI unita_organizzativa%rowtype;
CONTO_BI varchar2(1);
aPgLiq number(8);
aAssObbAcr ass_obb_acr_pgiro%rowtype;
aUser varchar2(20);
aTSNow date;
aObb obbligazione%rowtype;
aObbScad obbligazione_scadenzario%rowtype;
aObbScadVoce obbligazione_scad_voce%rowtype;
aAcc accertamento%rowtype;
aAccScad accertamento_scadenzario%rowtype;
aAccScadVoce accertamento_scad_voce%rowtype;
aAccOrig accertamento%rowtype;
aAccVC accertamento%rowtype;
aObbVC obbligazione%rowtype;
aGen documento_generico%rowtype;
aGenRiga documento_generico_riga%rowtype;
aListGenRighe CNRCTB100.docGenRigaList;
aTotMandato number(15,2);
aTotReversale number(15,2);
aManP mandato%rowtype;
aManPRiga mandato_riga%rowtype;
aListRigheManP CNRCTB038.righeMandatoList;
aRevP reversale%rowtype;
aRevPRiga reversale_riga%rowtype;
aListRigheRevP CNRCTB038.righeReversaleList;
aDivisaEuro varchar2(30);
aLiquidGruppoCori liquid_gruppo_cori_det%rowtype;
aLiquidGruppoCoriDet liquid_gruppo_cori_det%rowtype;
aTipoGenerico varchar2(10);
aAnagTst anagrafico%rowtype;
aLiquid liquid_cori%rowtype;
aLiquidOrig liquid_cori%rowtype;
isLiquidParzAcc boolean;
aStatoLiquidazione char(1);
elementoVoce elemento_voce%rowtype;
aCdTerzoAcc number(8);
aCdModPagAcc varchar2(10);
aPgBancaAcc number(10);
aCdTerzoUO number(8);
aCdModPagUO varchar2(10);
aPgBancaUO number(10);
aCdTerzoUORev number(8);
aCdModPagUORev varchar2(10);
aPgBancaUORev number(10);
lIsCdsInterDet boolean;
lIsCdsInterTot boolean;
aAccTmp accertamento%rowtype;
aAccScadTmp accertamento_scadenzario%rowtype;
aAccScadVoceTmp accertamento_scad_voce%rowtype;
aObbTmp obbligazione%rowtype;
aObbScadTmp obbligazione_scadenzario%rowtype;
aObbScadVoceTmp obbligazione_scad_voce%rowtype;
aCdEV varchar2(20);
aEVComp elemento_voce%rowtype;
aDateCont date;
UOENTE unita_organizzativa%rowtype;
tipo_ic CHAR(1);
aObbOld obbligazione%rowtype;
aObbScadOld obbligazione_scadenzario%rowtype;
aObbScadVoceOld obbligazione_scad_voce%rowtype;
aAccOld accertamento%rowtype;
aAccScadOld accertamento_scadenzario%rowtype;
aAccScadVoceOld accertamento_scad_voce%rowtype;
aObbNew obbligazione%rowtype;
aObbScadNew obbligazione_scadenzario%rowtype;
aObbScadVoceNew obbligazione_scad_voce%rowtype;
aAccNew accertamento%rowtype;
aAccScadNew accertamento_scadenzario%rowtype;
aAccScadVoceNew accertamento_scad_voce%rowtype;
aAccGiroOpp accertamento%rowtype;
aAccScadGiroOpp accertamento_scadenzario%rowtype;
aAccScadVoceGiroOpp accertamento_scad_voce%rowtype;
aObbGiroOpp obbligazione%rowtype;
aObbScadGiroOpp obbligazione_scadenzario%rowtype;
aObbScadVoceGiroOpp obbligazione_scad_voce%rowtype;
recParametriCNR PARAMETRI_CNR%Rowtype;
ind_pGiro number := 0;
ESERCIZIO_UO_SPECIALI NUMBER;
somma_compensazioni NUMBER;
msg_acc varchar2(1000) := '';
aCdTerzoVE number(8);
aCdModPagVE varchar2(10);
aPgBancaVE number(10);
begin
for aPar in (select * from vsx_liquidazione_cori where pg_call = pgCall
) loop
aEs:=aPar.esercizio;
aCdCds:=aPar.cd_cds;
aCdUo:=aPar.cd_unita_organizzativa;
aPgLiq:=aPar.pg_liquidazione;
aUser:=aPar.utcr;
aTSNow:=aPar.dacr;
exit;
end loop;
if aEs is null then
IBMERR001.RAISE_WRN_GENERICO('Nessun gruppo CORI trovato per la liquidazione');
end if;
recParametriCNR := CNRUTL001.getRecParametriCnr(aEs);
-- Controllo che la liq. per il centro sia aperta nell'esercizio specificato
CNRCTB575.CHECKLIQUIDCENTROAPERTA(aEs);
-- Check su esercizio
if
not CNRCTB008.ISESERCIZIOAPERTO(aEs, aCdCds)
then
IBMERR001.RAISE_ERR_GENERICO('L''esercizio '||aEs||' non è aperto per il CDS '||aCdCds);
end if;
aDateCont:=CNRCTB008.getTimestampContabile(aEs,aTSNow);
begin
select *
into aLiquid
from liquid_cori
where esercizio = aEs
and cd_cds = aCdCds
and cd_unita_organizzativa = aCdUo
and pg_liquidazione = aPgLiq
for update nowait;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Liquidazione CORI non trovata n.'||aPgLiq||' es.'||aEs||' cds:'||aCdCds||' uo:'||aCdUo);
end;
ESERCIZIO_UO_SPECIALI := to_number(To_Char(aLiquid.DT_DA,'YYYY'));
-- Elimino il dettaglio minimo della liquidazione di aLGC non selezionati
delete from liquid_gruppo_cori_det a where
cd_cds = aCdCds
and esercizio = aEs
and cd_unita_organizzativa = aCdUo
and pg_liquidazione = aPgLiq
and not exists (select 1 from vsx_liquidazione_cori aParD
where aParD.pg_call = pgCall
and aParD.cd_cds = a.cd_cds
and aParD.esercizio = a.esercizio
and aParD.cd_unita_organizzativa = a.cd_unita_organizzativa
and aParD.pg_liquidazione = a.pg_liquidazione
and aParD.cd_cds_origine = a.cd_cds_origine
and aParD.cd_uo_origine = a.cd_uo_origine
and aParD.pg_liquidazione_origine = a.pg_liquidazione_origine
and aParD.cd_gruppo_cr = a.cd_gruppo_cr
and aParD.cd_regione = a.cd_regione
and aParD.pg_comune = a.pg_comune );
-- Elimino aLGC non selezionati
delete from liquid_gruppo_cori a Where
cd_cds = aCdCds
and esercizio = aEs
and cd_unita_organizzativa = aCdUo
and pg_liquidazione = aPgLiq
and not exists (select 1 from vsx_liquidazione_cori aParD
where aParD.pg_call = pgCall
and aParD.cd_cds = a.cd_cds
and aParD.esercizio = a.esercizio
and aParD.cd_unita_organizzativa = a.cd_unita_organizzativa
and aParD.pg_liquidazione = a.pg_liquidazione
and aParD.cd_cds_origine = a.cd_cds_origine
and aParD.cd_uo_origine = a.cd_uo_origine
and aParD.pg_liquidazione_origine = a.pg_liquidazione_origine
and aParD.cd_gruppo_cr = a.cd_gruppo_cr
and aParD.cd_regione = a.cd_regione
and aParD.pg_comune = a.pg_comune);
-- Flag che determina se l'UO in processo è di CDS versato via interfaccia
lIsCdsInterDet := IsCdsInterfDet(aCdCds,aEs);
lIsCdsInterTot := IsCdsInterfTot(aCdCds,aEs);
aDivisaEuro:=CNRCTB015.GETVAL01PERCHIAVE(CNRCTB100.CCNR_DIVISA,CNRCTB100.CCNR_EURO);
aUOVERSACC:=CNRCTB020.getUOVersCori(ESERCIZIO_UO_SPECIALI);
aUOVERSCONTOBI:=CNRCTB020.getUOVersCoriContoBI(ESERCIZIO_UO_SPECIALI);
-- Controllo che la liq. per locale sia aperta nell'esercizio specificato
if aUOVERSACC.cd_unita_organizzativa <> aCdUO and aUOVERSCONTOBI.cd_unita_organizzativa <> aCdUO then
CNRCTB575.CHECKLIQUIDLOCALEAPERTA(aEs);
end if;
UOENTE:=CNRCTB020.GETUOENTE(aEs);
-- Check su esercizio
If Not CNRCTB008.ISESERCIZIOAPERTO(aEs, aUOVERSACC.cd_unita_padre)
Then
IBMERR001.RAISE_ERR_GENERICO('L''esercizio '||aEs||' non è aperto per il CDS di versamento CORI '||aUOVERSACC.cd_unita_padre);
End If;
-- Nel caso di liq. via interfaccia, devo ripulire in interfaccia
-- il puntatore alla liquidazione per quei gruppi che l'utente ha scelto di NON versare
-- PER L'INTERFACCIA DI TIPO DETTAGLIO:
If lIsCdsInterDet Then
For aLCInterf in (
Select * From liquid_cori_interf_dett alc
Where esercizio=decode(aLiquid.da_esercizio_precedente,'Y',aEs-1,aEs)
And cd_cds = aCdCds
And cd_unita_organizzativa = aCdUo
And pg_liquidazione = aPgLiq
And cd_gruppo_cr is not null
And Not Exists (
Select 1 from vsx_liquidazione_cori aParD
Where aParD.pg_call = pgCall
and aParD.cd_cds = aCdCds
and aParD.esercizio = aEs
and aParD.cd_unita_organizzativa = aCdUo
and aParD.pg_liquidazione = aPgLiq
and aParD.cd_uo_origine = cd_unita_organizzativa
and aParD.cd_gruppo_cr = alc.cd_gruppo_cr
and aParD.cd_regione = alc.cd_regione
and aParD.pg_comune = alc.pg_comune)
For update nowait) Loop
Update liquid_cori_interf_dett
Set cd_gruppo_cr = null,
pg_liquidazione = null,
utuv = aUser,
duva = aTSNow,
pg_ver_rec = pg_ver_rec + 1
Where
CD_CDS=aLCInterf.CD_CDS AND
ESERCIZIO=aLCInterf.ESERCIZIO AND
CD_UNITA_ORGANIZZATIVA=aLCInterf.CD_UNITA_ORGANIZZATIVA AND
PG_CARICAMENTO=aLCInterf.PG_CARICAMENTO AND
DT_INIZIO=aLCInterf.DT_INIZIO AND
DT_FINE=aLCInterf.DT_FINE AND
MATRICOLA=aLCInterf.MATRICOLA AND
CODICE_FISCALE=aLCInterf.CODICE_FISCALE AND
TI_PAGAMENTO=aLCInterf.TI_PAGAMENTO AND
ESERCIZIO_COMPENSO=aLCInterf.ESERCIZIO_COMPENSO AND
CD_IMPONIBILE=aLCInterf.CD_IMPONIBILE AND
TI_ENTE_PERCIPIENTE=aLCInterf.TI_ENTE_PERCIPIENTE AND
CD_CONTRIBUTO_RITENUTA=aLCInterf.CD_CONTRIBUTO_RITENUTA;
End Loop;
End If; --DELL'INTERFACCIA DI TIPO DETTAGLIO
-- PER L'INTERFACCIA DI TIPO TOTALE:
If lIsCdsInterTot Then
For aLCInterf in (
Select * From liquid_cori_interf alc
Where esercizio=decode(aLiquid.da_esercizio_precedente,'Y',aEs-1,aEs)
And cd_cds = aCdCds
And cd_unita_organizzativa = aCdUo
And pg_liquidazione = aPgLiq
And cd_gruppo_cr is not null
And Not Exists (
Select 1 from vsx_liquidazione_cori aParD
Where aParD.pg_call = pgCall
and aParD.cd_cds = aCdCds
and aParD.esercizio = aEs
and aParD.cd_unita_organizzativa = aCdUo
and aParD.pg_liquidazione = aPgLiq
and aParD.cd_uo_origine = cd_unita_organizzativa
and aParD.cd_gruppo_cr = alc.cd_gruppo_cr
and aParD.cd_regione = alc.cd_regione
and aParD.pg_comune = alc.pg_comune)
For update nowait) Loop
Update liquid_cori_interf
Set pg_liquidazione = null,
utuv = aUser,
duva = aTSNow,
pg_ver_rec = pg_ver_rec + 1
Where
CD_CDS=aLCInterf.CD_CDS AND
ESERCIZIO=aLCInterf.ESERCIZIO AND
CD_UNITA_ORGANIZZATIVA=aLCInterf.CD_UNITA_ORGANIZZATIVA AND
PG_CARICAMENTO=aLCInterf.PG_CARICAMENTO And
CD_GRUPPO_CR=aLCInterf.CD_GRUPPO_CR And
CD_REGIONE = aLCInterf.CD_REGIONE And
PG_COMUNE = aLCInterf.PG_COMUNE And
DT_INIZIO=aLCInterf.DT_INIZIO And
DT_FINE=aLCInterf.DT_FINE;
End Loop;
End If;-- DELL'INTERFACCIA DI TIPO TOTALE
-- Nel caso di UO di versamento accentrato, devo ripulire nei gruppi centro impattati
-- il puntatore alla liquidazione per quei gruppi che l'utente ha scelto di NON versare
If aUOVERSACC.cd_unita_organizzativa = aCdUo or aUOVERSCONTOBI.cd_unita_organizzativa = aCdUo then
For aDGruppoCentro in (
Select * From liquid_gruppo_centro
Where esercizio=aEs
And cd_cds_lc = aCdCds
And cd_uo_lc = aCdUo
And pg_lc = aPgLiq
And stato = CNRCTB575.STATO_GRUPPO_CENTRO_INIZIALE
For update nowait)
Loop
Declare
aLNum number;
Begin
Select distinct 1 into aLNum
From vsx_liquidazione_cori aParD
Where aParD.pg_call = pgCall
And aParD.cd_cds = aCdCds
And aParD.esercizio = aEs
And aParD.cd_unita_organizzativa = aCdUo
And aParD.pg_liquidazione = aPgLiq
And aParD.cd_uo_origine = UOENTE.cd_unita_organizzativa
And aParD.cd_gruppo_cr = aDGruppoCentro.cd_gruppo_cr
And aParD.cd_regione = aDGruppoCentro.cd_regione
And aParD.pg_comune = aDGruppoCentro.pg_comune;
Exception when NO_DATA_FOUND Then
Update liquid_gruppo_centro
Set cd_cds_lc = null,
cd_uo_lc = null,
pg_lc = null,
pg_ver_rec=pg_ver_rec+1
Where esercizio = aEs
And cd_gruppo_cr = aDGruppoCentro.cd_gruppo_cr
And cd_regione = aDGruppoCentro.cd_regione
And pg_comune = aDGruppoCentro.pg_comune
And pg_gruppo_centro = aDGruppoCentro.pg_gruppo_centro;
End;
End loop;
End If;
-- Estraggo il terzo UO relativo all'UO SAC che accentra i versamenti
CNRCTB080.GETTERZOPERUO(aUOVERSACC.cd_unita_organizzativa,aCdTerzoAcc, aCdModPagAcc, aPgBancaAcc,aEs);
isLiquidParzAcc:=false;
-- LIQUIDAZIONE DI UO
-- CICLO SU AGGREGATI PROPRI
-- Nel caso di UO di versamento centrale: raccolgo anche i gruppi dei versamenti locali
-- Nel caso di UO di versamenti unificati: raccolgo anche i gruppi di tutte le UO della SAC
-- Deve esistere un loop esterno che raggruppa i gruppi, per ognuno dei quali viene creato un Mandato
-- (prima per ogni aggregato veniva creato un mandato poiche' non potevano esserci due uo con lo stesso gruppo)
-- e il loop interno, gia' esistente, per ogni gruppo prende tutte le UO
For aVersamenti In (Select a.cd_gruppo_cr,a.esercizio,a.cd_cds,a.cd_unita_organizzativa,
a.cd_terzo_versamento,a.cd_modalita_pagamento,a.pg_banca,fl_accentrato,Sum(a.im_liquidato) tot_liquidato, b.ti_mandato
From V_LIQUID_GRUPPO_CORI_CR_DET a, rif_modalita_pagamento b
Where a.esercizio = aEs
And a.cd_cds = aCdCds
And a.cd_unita_organizzativa = aCdUo
And a.pg_liquidazione = aPgLiq
and a.cd_modalita_pagamento = b.cd_modalita_pag
And Exists (Select 1 From vsx_liquidazione_cori v
Where v.pg_call = pgCall
And v.esercizio = a.esercizio
And v.cd_cds = a.cd_cds
And v.cd_unita_organizzativa = a.cd_unita_organizzativa
And v.cd_cds_origine = a.cd_cds_origine
And v.cd_uo_origine = a.cd_uo_origine
And v.cd_gruppo_cr = a.cd_gruppo_cr
And v.cd_regione = a.cd_regione
And v.pg_comune = a.pg_comune
And v.pg_liquidazione = a.pg_liquidazione
And v.pg_liquidazione_origine = a.pg_liquidazione_origine)
Group by a.cd_gruppo_cr,a.esercizio,a.cd_cds,a.cd_unita_organizzativa,
a.cd_terzo_versamento,a.cd_modalita_pagamento,a.pg_banca,fl_accentrato, b.ti_mandato
Order by a.cd_gruppo_cr,a.esercizio,a.cd_cds,a.cd_unita_organizzativa,
a.cd_terzo_versamento,a.cd_modalita_pagamento,a.pg_banca,fl_accentrato
) Loop -- LOOP VERSAMENTO aVersamenti
--pipe.send_message('aVersamenti.cd_gruppo_cr = '||aVersamenti.cd_gruppo_cr);
select FL_CONTO_BI
INTO CONTO_BI
from rif_modalita_pagamento
WHERE CD_MODALITA_PAG = aVersamenti.cd_modalita_pagamento;
If aVersamenti.fl_accentrato = 'Y' then
if aCdTerzoAcc is null or aCdModPagAcc is null or aPgBancaAcc is null then
IBMERR001.RAISE_ERR_GENERICO('Dati relativi al terzo di versamento accentrato non trovati o non completi');
end if;
aAnagTst:=CNRCTB080.GETANAG(aCdTerzoAcc);
isLiquidParzAcc:=true; -- Serve per marcare l'intera liquidazione come TRASFERITA (la chiusura dei pending verrà fatta alcentro)
Else
if aVersamenti.cd_terzo_versamento is null or aVersamenti.pg_banca is null or aVersamenti.cd_modalita_pagamento is null then
IBMERR001.RAISE_ERR_GENERICO('Dati relativi al terzo di versamento CORI non trovati o non completi per gruppo:'||aVersamenti.cd_gruppo_cr);
end if;
aAnagTst:=CNRCTB080.GETANAG(aVersamenti.cd_terzo_versamento);
End If;
--pipe.send_message('aVersamenti.cd_gruppo_cr '||aVersamenti.cd_gruppo_cr);
--pipe.send_message('aVersamenti.tot_liquidato '||aVersamenti.tot_liquidato);
-- Gestione liquidazione gruppi negativi solo da esercizio precedente
If aVersamenti.tot_liquidato < 0 then
If aLiquid.da_esercizio_precedente = 'N' Or aVersamenti.fl_accentrato = 'N' Then
IBMERR001.RAISE_ERR_GENERICO('Importo di liquidazione negativo o nullo per gruppo CORI: '||aVersamenti.cd_gruppo_cr||' - Terzo di versamento: '||aVersamenti.cd_terzo_versamento);
End if;
End if;
-- Per i gruppi dei versamenti locali non devo controllare aVersamenti.tot_liquidato bensì devo fare
-- la somma da V_LIQUID_CENTRO_UO perchè aVersamenti.tot_liquidato contiene solo la parte positiva
-- e se la somma è negativa il versamento deve essere bloccato
--PER IL MOMENTO PENSO CHE DEVO BLOCCARE ANCHE SE UN SOLO DETTAGLIO (ISTITUTO) E' NEGATIVO ma nel secondo loop
--QUESTO CONTROLLO FORSE VA MODIFICATO TOGLIENDO LA CONDIZIONE SU REGIONE E COMUNE E AGGIUNGENDO IL TERZO DI VERSAMENTO
--?????????????????????
If aUOVERSACC.cd_unita_organizzativa = aCdUo or aUOVERSCONTOBI.cd_unita_organizzativa = aCdUo Then
Declare
totale_negativo number;
Begin
select nvl(sum(l.im_liquidato),0)
into totale_negativo
from V_LIQUID_CENTRO_UO l, GRUPPO_CR_DET g
where l.cd_cds = aCdCds
and l.cd_unita_organizzativa = aCdUo
and l.esercizio = aEs
and l.pg_liquidazione = aPgLiq
And l.esercizio = g.esercizio
And l.cd_gruppo_cr = g.cd_gruppo_cr
And l.cd_regione = g.cd_regione
And l.pg_comune = g.pg_comune
and l.cd_gruppo_cr = aVersamenti.cd_gruppo_cr
And g.cd_terzo_versamento = aVersamenti.cd_terzo_versamento
And g.cd_modalita_pagamento = aVersamenti.cd_modalita_pagamento
And g.pg_banca = aVersamenti.pg_banca
and im_liquidato < 0
And Exists (Select 1 From vsx_liquidazione_cori v
Where v.pg_call = pgCall
And v.esercizio = aEs
And v.cd_cds = aCdCds
And v.cd_unita_organizzativa = aCdUo
And v.cd_uo_origine = UOENTE.cd_unita_organizzativa
And v.cd_gruppo_cr = aVersamenti.cd_gruppo_cr
And v.cd_regione = l.cd_regione
And v.pg_comune = l.pg_comune
And v.pg_liquidazione = aPgLiq
And v.pg_liquidazione_origine = 0);
--pipe.send_message('aVersamenti.tot_liquidato + totale_negativo '||To_Char(aVersamenti.tot_liquidato + totale_negativo));
If (aVersamenti.tot_liquidato + totale_negativo) < 0 then
IBMERR001.RAISE_ERR_GENERICO('Esistono Gruppi Locali negativi che rendono tutta la liquidazione negativa per il gruppo CORI:'||aVersamenti.cd_gruppo_cr||' - Terzo di versamento:'||aVersamenti.cd_terzo_versamento);
End if;
End;
End If;
-- Questa parte, relativa alla chiusura delle partite di giro dei compensi va tolta per i CDS caricati via interfaccia
-- Inizio parte 1 esclusa per liq. di uo appartenenti a cds liquidati via interfaccia
aTotMandato:=0;
aTotReversale:=0;
If Not lIsCdsInterDet And Not lIsCdsInterTot then
aManP:=null;
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;
if aVersamenti.ti_mandato = 'S' THEN
aManP.TI_MANDATO:=CNRCTB038.TI_MAN_SOS;
ELSE
aManP.TI_MANDATO:=CNRCTB038.TI_MAN_PAG;
END IF;
aManP.TI_COMPETENZA_RESIDUO:=CNRCTB038.TI_MAN_COMP;
aManP.DS_MANDATO:='Mandato di versamento CORI: '||aEs||'-'||aCdCds||' - '||aCdUo||' gruppo CORI:'||aVersamenti.cd_gruppo_cr;
aManP.STATO:=CNRCTB038.STATO_MAN_EME;
aManP.DT_EMISSIONE:=TRUNC(aDateCont);
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;
aRevP:=null;
aRevP.CD_CDS:=aCdCds;
aRevP.ESERCIZIO:=aEs;
aRevP.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aRevP.CD_CDS_ORIGINE:=aCdCds;
aRevP.CD_UO_ORIGINE:=aCdUo;
aRevP.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_REV;
aRevP.TI_REVERSALE:=CNRCTB038.TI_REV_INC;
aRevP.TI_COMPETENZA_RESIDUO:=CNRCTB038.TI_MAN_COMP;
aRevP.DS_REVERSALE:='Reversale di versamento CORI: '||aEs||'-'||aCdCds||' - '||aCdUo||' gruppo CORI:'||aVersamenti.cd_gruppo_cr;
aRevP.STATO:=CNRCTB038.STATO_REV_EME;
aRevP.DT_EMISSIONE:=TRUNC(aDateCont);
-- aRevP.DT_TRASMISSIONE:=;
-- aRevP.DT_PAGAMENTO:=;
-- aRevP.DT_ANNULLAMENTO:=;
aRevP.IM_INCASSATO:=0;
aRevP.UTCR:=aUser;
aRevP.DACR:=aTSNow;
aRevP.UTUV:=aUser;
aRevP.DUVA:=aTSNow;
aRevP.PG_VER_REC:=1;
aRevP.STATO_TRASMISSIONE:=CNRCTB038.STATO_REV_TRASCAS_NODIST;
-- Modifica del 23/04/2004
-- Le reversali di versamento CORI DEVONO essere processate in economica come i mandati
aRevP.STATO_COGE:=CNRCTB100.STATO_COEP_INI;
aListRigheManP.delete;
aListRigheRevP.delete;
End If; --fine If not lIsCdsInterDet and not lIsCdsInterTot
For aGruppi In (Select a.cd_gruppo_cr,a.cd_regione,a.pg_comune,a.esercizio,a.cd_cds,a.cd_unita_organizzativa,
a.cd_terzo_versamento,a.cd_modalita_pagamento,a.pg_banca,fl_accentrato,Sum(a.im_liquidato) im_liquidato
From V_LIQUID_GRUPPO_CORI_CR_DET a
Where a.esercizio = aEs
And a.cd_cds = aCdCds
And a.cd_unita_organizzativa = aCdUo
And a.pg_liquidazione = aPgLiq
And a.cd_gruppo_cr = aVersamenti.cd_gruppo_cr
And a.cd_terzo_versamento = aVersamenti.cd_terzo_versamento
And a.cd_modalita_pagamento = aVersamenti.cd_modalita_pagamento
And a.pg_banca = aVersamenti.pg_banca
And Exists (Select 1 From vsx_liquidazione_cori v
Where v.pg_call = pgCall
And v.esercizio = a.esercizio
And v.cd_cds = a.cd_cds
And v.cd_unita_organizzativa = a.cd_unita_organizzativa
And v.cd_cds_origine = a.cd_cds_origine
And v.cd_uo_origine = a.cd_uo_origine
And v.cd_gruppo_cr = a.cd_gruppo_cr
And v.cd_regione = a.cd_regione
And v.pg_comune = a.pg_comune
And v.pg_liquidazione = a.pg_liquidazione
And v.pg_liquidazione_origine = a.pg_liquidazione_origine)
Group by a.cd_gruppo_cr,a.cd_regione,a.pg_comune,a.esercizio,a.cd_cds,a.cd_unita_organizzativa,
a.cd_terzo_versamento,a.cd_modalita_pagamento,a.pg_banca,fl_accentrato
Order by a.cd_gruppo_cr,a.cd_regione,a.pg_comune,a.esercizio,a.cd_cds,a.cd_unita_organizzativa,
a.cd_terzo_versamento,a.cd_modalita_pagamento,a.pg_banca,fl_accentrato
) Loop -- loop principale aGruppi
--pipe.send_message('Loop aGruppi');
--pipe.send_message('aGruppi.cd_gruppo_cr '||aGruppi.cd_gruppo_cr);
--pipe.send_message('aGruppi.im_liquidato '||aGruppi.im_liquidato);
-- Gestione liquidazione gruppi negativi solo da esercizio precedente
-- DA COMMENTARE SOLO A GENNAIO PER LA LIQ DA ESERCIZIO PRECEDENTE ---- SI COMMENTA SOLO LA PARTE INTERNA...NON QUELLA CHE EMETTE I MANDATI
--INIZIO PARTE DA COMMENTARE SOLO A GENNAIO
/*
If aGruppi.im_liquidato < 0 then
If aLiquid.da_esercizio_precedente = 'N' Or aGruppi.fl_accentrato = 'N' Then
IBMERR001.RAISE_ERR_GENERICO('Importo di liquidazione negativo o nullo per gruppo CORI: '||aGruppi.cd_gruppo_cr||'.'||aGruppi.cd_regione||'.'||aGruppi.pg_comune);
End if;
End if;
*/
--FINE PARTE DA COMMENTARE SOLO A GENNAIO
-- Per i gruppi dei versamenti locali non devo controllare aGruppi.im_liquidato bensì devo fare
-- la somma da V_LIQUID_CENTRO_UO perchè aGruppi.im_liquidato contiene solo la parte positiva
-- e se la somma è negativa il versamento deve essere bloccato
If aUOVERSACC.cd_unita_organizzativa = aCdUo or aUOVERSCONTOBI.cd_unita_organizzativa = aCdUo Then
Declare
totale_negativo number;
Begin
select nvl(sum(im_liquidato),0)
into totale_negativo
from V_LIQUID_CENTRO_UO
where cd_cds = aCdCds
and cd_unita_organizzativa = aCdUo
and esercizio = aEs
and pg_liquidazione = aPgLiq
and cd_gruppo_cr = aGruppi.cd_gruppo_cr
and cd_regione = aGruppi.cd_regione
and pg_comune = aGruppi.pg_comune
and im_liquidato < 0
And Exists (Select 1 From vsx_liquidazione_cori v
Where v.pg_call = pgCall
And v.esercizio = aEs
And v.cd_cds = aCdCds
And v.cd_unita_organizzativa = aCdUo
And v.cd_uo_origine = UOENTE.cd_unita_organizzativa
And v.cd_gruppo_cr = aGruppi.cd_gruppo_cr
And v.cd_regione = aGruppi.cd_regione
And v.pg_comune = aGruppi.pg_comune
And v.pg_liquidazione = aPgLiq
And v.pg_liquidazione_origine = 0);
--pipe.send_message('aGruppi.im_liquidato + totale_negativo '||To_Char(aGruppi.im_liquidato + totale_negativo));
-- DA COMMENTARE SOLO A GENNAIO PER LA LIQ DA ESERCIZIO PRECEDENTE---- SI COMMENTA SOLO LA PARTE INTERNA...NON QUELLA CHE EMETTE I MANDATI
--INIZIO PARTE DA COMMENTARE SOLO A GENNAIO
/*
If (aGruppi.im_liquidato + totale_negativo) < 0 then
IBMERR001.RAISE_ERR_GENERICO('Esistono Gruppi Locali negativi che rendono tutta la liquidazione negativa per il gruppo CORI:'||aGruppi.cd_gruppo_cr||'.'||aGruppi.cd_regione||'.'||aGruppi.pg_comune);
--IBMERR001.RAISE_ERR_GENERICO('Esistono Gruppi Locali negativi che rendono tutta la liquidazione negativa per il gruppo CORI:'||aGruppi.cd_gruppo_cr||'.'||aGruppi.cd_regione||'.'||aGruppi.pg_comune||'/'||totale_negativo||'/'||aGruppi.im_liquidato);
End if;
*/
--FINE PARTE DA COMMENTARE SOLO A GENNAIO
End;
End If;
--
--UOENTE:=CNRCTB020.GETUOENTE(aEs);
-- Questa parte, relativa alla chiusura delle partite di giro dei compensi va tolta per i CDS caricati via interfaccia
-- Inizio parte 1 esclusa per liq. di uo appartenenti a cds liquidati via interfaccia
-- Devo prendere tutte le UO di origine tranne la 999.000
For aAggregato in (Select * From V_LIQUID_GRUPPO_CORI_CR_DET a
Where a.esercizio = aEs
And a.cd_cds = aCdCds
And a.cd_unita_organizzativa = aCdUo
And a.pg_liquidazione = aPgLiq
And (-- Proprio
a.cd_uo_origine = a.cd_unita_organizzativa
-- Non proprio e non presente come proprio
Or
(a.cd_uo_origine <> a.cd_unita_organizzativa
/*
And Not Exists (Select 1 From vsx_liquidazione_cori v
Where v.pg_call = pgCall
And v.esercizio = a.esercizio
And v.cd_cds = a.cd_cds
And v.cd_unita_organizzativa = a.cd_unita_organizzativa
And v.pg_liquidazione = a.pg_liquidazione
And v.cd_uo_origine = v.cd_unita_organizzativa
And v.cd_gruppo_cr = a.cd_gruppo_cr
And v.cd_regione = a.cd_regione
And v.pg_comune = a.pg_comune)*/
)
)
And a.cd_uo_origine <> UOENTE.cd_unita_organizzativa --'999.000'
And Exists (Select 1 From vsx_liquidazione_cori v
Where v.pg_call = pgCall
And v.esercizio = a.esercizio
And v.cd_cds = a.cd_cds
And v.cd_unita_organizzativa = a.cd_unita_organizzativa
And v.cd_cds_origine = a.cd_cds_origine
And v.cd_uo_origine = a.cd_uo_origine
And v.cd_gruppo_cr = a.cd_gruppo_cr
And v.cd_regione = a.cd_regione
And v.pg_comune = a.pg_comune
And v.pg_liquidazione = a.pg_liquidazione
And v.pg_liquidazione_origine = a.pg_liquidazione_origine)
And a.cd_gruppo_cr = aGruppi.cd_gruppo_cr
And a.cd_regione = aGruppi.cd_regione
And a.pg_comune = aGruppi.pg_comune
) Loop -- loop 1
tb_ass_pgiro.delete;
--pipe.send_message('Loop aAggregato');
If not lIsCdsInterDet And Not lIsCdsInterTot then
-- CICLO SUI CORI DEI MIEI AGGREGATI PER CHIUDERE LE PARTITE DI GIRO APERTE
-- Questa gestione estrae solo i CORI appartenenti all'UO che liquida
For aCori in (Select *
From contributo_ritenuta a
Where
-- Tolgo la clausola sull'esercizio per estrarre indipendentemente da quello
-- a.esercizio = aEsOrigine
-- a.cd_cds = aAggregato.cd_cds
-- And a.cd_unita_organizzativa = aAggregato.cd_unita_organizzativa
a.cd_cds = aAggregato.cd_cds_origine
And a.cd_unita_organizzativa = aAggregato.cd_uo_origine
And exists (Select 1 From liquid_gruppo_cori_det a1
Where a1.cd_gruppo_cr = aAggregato.cd_gruppo_cr
And a1.cd_regione = aAggregato.cd_regione
And a1.pg_comune = aAggregato.pg_comune
And a1.cd_cds = aAggregato.cd_cds
And a1.cd_uo_origine = aAggregato.cd_uo_origine
And a1.cd_cds_origine = aAggregato.cd_cds_origine
And a1.cd_unita_organizzativa = aAggregato.cd_unita_organizzativa
And a1.pg_liquidazione = aAggregato.pg_liquidazione
And a1.pg_liquidazione_origine = aAggregato.pg_liquidazione
And a1.esercizio = aAggregato.esercizio
-- Estrae solo i CORI referenziati in LIQUID_GRUPPO_CORI_DET
And a1.esercizio_contributo_ritenuta = a.esercizio
And a1.cd_cds_origine = a.cd_cds
And a1.cd_uo_origine = a.cd_unita_organizzativa
And a1.pg_compenso = a.pg_compenso
And a1.cd_contributo_ritenuta = a.cd_contributo_ritenuta
And a1.ti_ente_percipiente = a.ti_ente_percipiente)
For update nowait
) Loop -- loop2
--Il documento generico deve essere Istituzionale o Commerciale così come il compenso
Begin
Select c.ti_istituz_commerc
Into tipo_ic
From compenso c
Where c.cd_cds = aCori.cd_cds
And c.cd_unita_organizzativa = aCori.cd_unita_organizzativa
And c.esercizio = aCori.esercizio
And c.pg_compenso = aCori.pg_compenso;
Exception
When Others Then
tipo_ic := 'I';
End;
-- Gestione dei CORI positivi
if aCori.ammontare > 0 then
-- Modifica del 18/11/2002 anche il generico di trasferimento nel caso di CORI accentrati è targato come GEN_COR_VER_S
aTipoGenerico := CNRCTB100.TI_GEN_CORI_VER_SPESA;
--GGGG_TODO VERIFICARE IN CONTRIBUTO_RITENUTA LE DIFFERENZE DI DATI TRA GLI ISTITUTI E LE UO...VERIFICARE ANCHE LE QUERY DEI CURSORI..
aAccTmp.cd_cds := aCori.cd_cds_accertamento;
aAccTmp.esercizio := aCori.esercizio_accertamento;
aAccTmp.esercizio_originale := aCori.esercizio_ori_accertamento;
aAccTmp.pg_accertamento := aCori.pg_accertamento;
CNRCTB035.getPgiroCds(aAccTmp, aAccScadTmp, aAccScadVoceTmp, aObbTmp, aObbScadTmp, aObbScadVoceTmp);
--/* GG REMMATO SOLO PER IL FINE ANNO 2015
If aLiquid.da_esercizio_precedente = 'Y' Then
-- 09.01.2008 remmata questa chiamata, e utilizzata la nuova gestione che ribalta entrambi i documenti
-- CNRCTB046.ripPgiroCds (aAccTmp, aObb, aTSNow, aUser);
-- 09.01.2008 SF PARTITE DI GIRO DA ESERCIZIO PRECEDENTE
CNRCTB046.ripPgiroCdsEntrambe( aObbTmp, aObbScadTmp, aObbScadVoceTmp, aAccTmp, aAccScadTmp, aAccScadVoceTmp, Null, Null, CNRCTB001.GESTIONE_SPESE,
aTSNow, aUser, aObb, aAcc);
CNRCTB035.getPgiroCds (aObb, aObbScad, aObbScadVoce, aAcc, aAccScad, aAccScadVoce);
Else
aObb := aObbTmp;
aObbScad := aObbScadTmp;
End if;
--*/
-- aObb := aObbTmp;
-- aObbScad := aObbScadTmp;
-- FINE GG
------------------------------------
-- se la UO è quella del versamento su conto BI occorre rendere tronca la PGIRO in oggetto
-- e crearla sempre tronca sulla UO di versamento (999.000)
If aCdUo = aUOVERSCONTOBI.cd_unita_organizzativa
--GG CONDIZIONE AGGIUNTA PER EVITARE LA PARTITA DI GIRO DALLA 000.407 ALLA 999.000
-- da qui non dovrebbe passare più
and aUOVERSACC.cd_unita_organizzativa != aUOVERSCONTOBI.cd_unita_organizzativa then
--prendo la pgiro duale (e verifico che sia effettivamente chiusa prima di renderla tronca)
--aObbOld.cd_cds:=aGruppoCentro.cd_cds_obb_accentr;
--aObbOld.esercizio:=aGruppoCentro.esercizio_obb_accentr;
--aObbOld.esercizio_originale:=aGruppoCentro.esercizio_ori_obb_accentr;
--aObbOld.pg_obbligazione:=aGruppoCentro.pg_obb_accentr;
--CNRCTB035.GETPGIROCDSINV(aObbOld,aObbScadOld,aObbScadVoceOld,aAccOld,aAccScadOld,aAccScadVoceOld);
--rendo tronca la stessa (cioè annullo la parte spesa)
--/* GG REMMATO SOLO PER IL FINE ANNO 2015
If aLiquid.da_esercizio_precedente = 'N' Then
CNRCTB043.troncaPraticaAccPgiro(aAccTmp.esercizio,aAccTmp.cd_cds,aAccTmp.esercizio_originale,aAccTmp.pg_accertamento,aTSNow,aUser);
Else -- rendo tronca quella ribaltata
CNRCTB043.troncaPraticaAccPgiroInv(aAcc.esercizio,aAcc.cd_cds,aAcc.esercizio_originale,aAcc.pg_accertamento,aTSNow,aUser);
End if;
--*/
-- CNRCTB043.troncaPraticaAccPgiro(aAccTmp.esercizio,aAccTmp.cd_cds,aAccTmp.esercizio_originale,aAccTmp.pg_accertamento,aTSNow,aUser);
-- FINE GG
-- devo creare la pgiro tronca sulla 999
aObbNew:=null;
aObbScadNew:=null;
aAccNew:=null;
aAccScadNew:=null;
--determino il capitolo da mettere sulla pgiro
Begin
Select distinct a.cd_elemento_voce
Into aCdEV
From ass_tipo_cori_ev a, tipo_cr_base b
Where b.esercizio = aEs --aCori.esercizio
And b.cd_gruppo_cr = aAggregato.cd_gruppo_cr
And a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
And a.esercizio = aEs --aCori.esercizio
And a.ti_gestione = CNRCTB001.GESTIONE_SPESE
And a.ti_appartenenza = CNRCTB001.APPARTENENZA_CDS;
Exception
when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non trovato');
End;
Begin
Select *
Into elementoVoce
From elemento_voce
Where esercizio = aEs --aCori.esercizio
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_gestione = CNRCTB001.GESTIONE_SPESE
And cd_elemento_voce = aCdEV;
Exception
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non esistente');
End;
aObbNew.CD_CDS:=aCdCds;
aObbNew.ESERCIZIO:=aObb.esercizio;
aObbNew.ESERCIZIO_ORIGINALE:=aObb.esercizio_originale;
--/* GG REMMATO SOLO PER IL FINE ANNO 2015
If aLiquid.da_esercizio_precedente = 'N' Then
aObbNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_IMP;
Else
aObbNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_IMP_RES;
End If;
--*/
-- aObbNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_IMP;
-- FINE GG
aObbNew.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aObbNew.CD_CDS_ORIGINE:=aCdCds;
aObbNew.CD_UO_ORIGINE:=aCdUo;
aObbNew.TI_APPARTENENZA:=elementoVoce.ti_appartenenza;
aObbNew.TI_GESTIONE:=elementoVoce.ti_gestione;
aObbNew.CD_ELEMENTO_VOCE:=elementoVoce.cd_elemento_voce;
aObbNew.DT_REGISTRAZIONE:=TRUNC(trunc(aTSNow));
aObbNew.DS_OBBLIGAZIONE:='PGiro creata in automatico da liquidazione CORI';
aObbNew.NOTE_OBBLIGAZIONE:='';
aObbNew.CD_TERZO:=aObb.CD_TERZO;
aObbNew.IM_OBBLIGAZIONE:=aObb.IM_OBBLIGAZIONE; --aObbOld.IM_OBBLIGAZIONE è stata già annullata
aObbNew.stato_obbligazione:=CNRCTB035.STATO_DEFINITIVO;
aObbNew.im_costi_anticipati:=0;
aObbNew.fl_calcolo_automatico:='N';
aObbNew.fl_spese_costi_altrui:='N';
aObbNew.FL_PGIRO:='Y';
aObbNew.RIPORTATO:='N';
aObbNew.DACR:=aTSNow;
aObbNew.UTCR:=aUser;
aObbNew.DUVA:=aTSNow;
aObbNew.UTUV:=aUser;
aObbNew.PG_VER_REC:=1;
aObbNew.ESERCIZIO_COMPETENZA:=aEs;
CNRCTB030.CREAOBBLIGAZIONEPGIROTRONC(false,aObbNew,aObbScadNew,aAccNew,aAccScadNew,trunc(aTSNow));
CREALIQUIDCORIASSPGIRO(aLiquid,aAggregato.cd_gruppo_cr,aAggregato.cd_regione,aAggregato.pg_comune,'S',aObbNew,aObb,null,null,aUser,trunc(aTSNow));
aObb := aObbNew;
aObbScad := aObbScadNew;
End If;
-------------------------------------
---INIZIO GGG
IF recParametriCNR.FL_TESORERIA_UNICA = 'Y' and aAggregato.cd_unita_organizzativa <> aUOVERSACC.cd_unita_organizzativa and
aAggregato.cd_unita_organizzativa <> aUOVERSCONTOBI.cd_unita_organizzativa and aAggregato.fl_accentrato = 'Y' THEN
If aLiquid.da_esercizio_precedente = 'N' Then
CNRCTB043.troncaPraticaAccPgiro(aCori.esercizio_accertamento,aCori.cd_cds_accertamento,aCori.esercizio_ori_accertamento,aCori.pg_accertamento,aTSNow,aUser);
Else -- rendo tronca quella ribaltata
-- GGG TODO_DA_VERIFICARE COSA PASSARE...DOVREBBE ESSERE OK...CHIEDERE A TILDE
CNRCTB043.troncaPraticaAccPgiroInv(aAcc.esercizio,aAcc.cd_cds,aAcc.esercizio_oriGINALE,aAcc.pg_accertamento,aTSNow,aUser);
End if;
ind_pGiro := Nvl(tb_ass_pgiro.Count,0) + 1;
tb_ass_pgiro(ind_pGiro).cd_cds := aCori.cd_cds;
tb_ass_pgiro(ind_pGiro).cd_uo := aCori.cd_unita_organizzativa;
tb_ass_pgiro(ind_pGiro).cd_cds_orig := aCori.cd_cds;
tb_ass_pgiro(ind_pGiro).cd_uo_orig := aCori.cd_unita_organizzativa;
tb_ass_pgiro(ind_pGiro).esercizio := aEs;
tb_ass_pgiro(ind_pGiro).es_compenso := aCori.esercizio;
tb_ass_pgiro(ind_pGiro).pg_compenso := aCori.pg_compenso;
tb_ass_pgiro(ind_pGiro).pg_liq := aPgLiq;
tb_ass_pgiro(ind_pGiro).pg_liq_orig := aPgLiq;
tb_ass_pgiro(ind_pGiro).cd_gr_cr := aAggregato.cd_gruppo_cr;
tb_ass_pgiro(ind_pGiro).cd_regione := aAggregato.cd_regione;
tb_ass_pgiro(ind_pGiro).pg_comune := aAggregato.pg_comune;
tb_ass_pgiro(ind_pGiro).cd_cori := aCori.cd_contributo_ritenuta;
tb_ass_pgiro(ind_pGiro).ti_en_per := aCori.ti_ente_percipiente;
tb_ass_pgiro(ind_pGiro).ti_origine := 'E';
tb_ass_pgiro(ind_pGiro).es_acc := aCori.esercizio_accertamento;
tb_ass_pgiro(ind_pGiro).es_ori_acc := aCori.esercizio_ori_accertamento;
tb_ass_pgiro(ind_pGiro).cds_acc := aCori.cd_cds_accertamento;
tb_ass_pgiro(ind_pGiro).pg_acc := aCori.pg_accertamento;
ELSE
aGen:=null;
aGenRiga:=null;
aListGenRighe.delete;
-- Creo il documento generico di spesa su partita di giro collegato all'annotazione di entrata su pgiro del contributo ritenuta
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:=aTipoGenerico;
aGen.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGen.DS_DOCUMENTO_GENERICO:='CORI-D cn.'||aCori.pg_compenso||' '||aCori.cd_contributo_ritenuta;
--aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
aGen.TI_ISTITUZ_COMMERC:=tipo_ic;
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;
--Massimo Iaccarino Inizio
aGen.CD_DIVISA:=aDivisaEuro;
aGen.CAMBIO:=1;
--Massimo Iaccarino Fine
-- 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 ;
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRiga.DT_DA_COMPETENZA_COGE:=aGen.DT_DA_COMPETENZA_COGE;
aGenRiga.DT_A_COMPETENZA_COGE:=aGen.DT_A_COMPETENZA_COGE;
--
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;
-- Utilizzo delle corrette informazioni di pagamento nel caso di accentramento o non accentramento
if aAggregato.fl_accentrato = 'Y' then
aGenRiga.CD_TERZO:=aCdTerzoAcc;
aGenRiga.CD_MODALITA_PAG:=aCdModPagAcc;
aGenRiga.PG_BANCA:=aPgBancaAcc;
else
aGenRiga.CD_TERZO:=aAggregato.cd_terzo_versamento;
aGenRiga.CD_MODALITA_PAG:=aAggregato.CD_MODALITA_PAGAMENTO;
aGenRiga.PG_BANCA:=aAggregato.PG_BANCA;
end if;
-- aGenRiga.CD_TERZO_CESSIONARIO:=aGen.CD_TERZO_CESSIONARIO;
-- aGenRiga.CD_TERZO_UO_CDS:=aGen.CD_TERZO_UO_CDS;
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_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.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.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
-- 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:='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;
END IF;
---FINE GGG
-- ================================================================
-- Se il CORI è negativo
-- ================================================================
elsif aCori.ammontare < 0 Then
-- Modifica del 18/11/2002 anche il generico di trasferimento nel caso di CORI accentrati è targato come GEN_COR_VER_E
--if aAggregato.fl_accentrato = 'Y' then
-- aTipoGenerico := CNRCTB100.TI_GENERICO_TRASF_E;
-- else
aTipoGenerico := CNRCTB100.TI_GEN_CORI_VER_ENTRATA;
-- end if;
aObbTmp.cd_cds:=aCori.cd_cds_obbligazione;
aObbTmp.esercizio:=aCori.esercizio_obbligazione;
aObbTmp.esercizio_originale:=aCori.esercizio_ori_obbligazione;
aObbTmp.pg_obbligazione:=aCori.pg_obbligazione;
-- recupero l'accertamento collegato alla partita di giro di spesa.
CNRCTB035.getPgiroCds(aObbTmp,aObbScadTmp,aObbScadVoceTmp,aAccTmp,aAccScadTmp,aAccScadVoceTmp);
--/* GG REMMATO SOLO PER IL FINE ANNO 2015
If aLiquid.da_esercizio_precedente = 'Y' Then
-- 09.01.2008 remmata questa chiamata, e utilizzata la nuova gestione che ribalta entrambi i documenti
-- CNRCTB046.ripPgiroCds(aObbTmp,aAcc,aTSNow,aUser);
-- 09.01.2008 SF PARTITE DI GIRO DA ESERCIZIO PRECEDENTE
CNRCTB046.ripPgiroCdsEntrambe(aObbTmp, aObbScadTmp, aObbScadVoceTmp, aAccTmp, aAccScadTmp, aAccScadVoceTmp, Null, Null, CNRCTB001.GESTIONE_ENTRATE,
aTSNow, aUser, aObb, aAcc);
CNRCTB035.getPgiroCds(aAcc,aAccScad,aAccScadVoce,aObb,aObbScad,aObbScadVoce);
Else
aAcc := aAccTmp;
aAccScad := aAccScadTmp;
End If;
--*/
-- aAcc := aAccTmp;
-- aAccScad := aAccScadTmp;
-- FINE GG
------------------------------------
-- se la UO è quella del versamento su conto BI occorre rendere tronca la PGIRO in oggetto
-- e crearla sempre tronca sulla UO di versamento (999.000)
If aCdUo = aUOVERSCONTOBI.cd_unita_organizzativa
--GG CONDIZIONE AGGIUNTA PER EVITARE LA PARTITA DI GIRO DALLA 000.407 ALLA 999.000
and aUOVERSACC.cd_unita_organizzativa != aUOVERSCONTOBI.cd_unita_organizzativa then
--prendo la pgiro duale (e verifico che sia effettivamente chiusa prima di renderla tronca)
--aObbOld.cd_cds:=aGruppoCentro.cd_cds_obb_accentr;
--aObbOld.esercizio:=aGruppoCentro.esercizio_obb_accentr;
--aObbOld.esercizio_originale:=aGruppoCentro.esercizio_ori_obb_accentr;
--aObbOld.pg_obbligazione:=aGruppoCentro.pg_obb_accentr;
--CNRCTB035.GETPGIROCDSINV(aObbOld,aObbScadOld,aObbScadVoceOld,aAccOld,aAccScadOld,aAccScadVoceOld);
--rendo tronca la stessa (cioè annullo la parte entrata)
--/* GG REMMATO SOLO PER IL FINE ANNO 2015
If aLiquid.da_esercizio_precedente = 'N' Then
CNRCTB043.troncaPraticaObbPgiro(aObbTmp.esercizio,aObbTmp.cd_cds,aObbTmp.esercizio_originale,aObbTmp.pg_obbligazione,aTSNow,aUser);
Else -- rendo tronca quella ribaltata
CNRCTB043.troncaPraticaObbPgiroInv(aObb.esercizio,aObb.cd_cds,aObb.esercizio_originale,aObb.pg_obbligazione,aTSNow,aUser);
End if;
--*/
-- CNRCTB043.troncaPraticaObbPgiro(aObbTmp.esercizio,aObbTmp.cd_cds,aObbTmp.esercizio_originale,aObbTmp.pg_obbligazione,aTSNow,aUser);
-- FINE GG
-- devo creare la pgiro tronca sulla 999
aAccNew:=null;
aAccScadNew:=null;
aObbNew:=null;
aObbScadNew:=null;
--determino il capitolo da mettere sulla pgiro
Begin
Select distinct a.cd_elemento_voce
Into aCdEV
From ass_tipo_cori_ev a, tipo_cr_base b
Where b.esercizio = aEs --aCori.esercizio
And b.cd_gruppo_cr = aAggregato.cd_gruppo_cr
And a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
And a.esercizio = aEs --aCori.esercizio
And a.ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And a.ti_appartenenza = CNRCTB001.APPARTENENZA_CNR;
Exception
when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non trovato');
End;
Begin
Select *
Into elementoVoce
From elemento_voce
Where esercizio = aEs --aCori.esercizio
And ti_appartenenza = CNRCTB001.APPARTENENZA_CNR
And ti_gestione = CNRCTB001.GESTIONE_ENTRATE
And cd_elemento_voce = aCdEV;
Exception
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aAggregato.cd_gruppo_cr||' non esistente');
End;
aAccNew.CD_CDS:=aCdCds;
aAccNew.ESERCIZIO:=aAcc.esercizio;
aAccNew.ESERCIZIO_ORIGINALE:=aAcc.esercizio_originale;
--/* GG REMMATO SOLO PER IL FINE ANNO 2015
If aLiquid.da_esercizio_precedente = 'N' Then
aAccNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC;
Else
aAccNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC_RES;
End If;
--*/
-- aAccNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_ACC;
-- FINE GG
aAccNew.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aAccNew.CD_CDS_ORIGINE:=aCdCds;
aAccNew.CD_UO_ORIGINE:=aCdUo;
aAccNew.TI_APPARTENENZA:=elementoVoce.ti_appartenenza;
aAccNew.TI_GESTIONE:=elementoVoce.ti_gestione;
aAccNew.CD_ELEMENTO_VOCE:=elementoVoce.cd_elemento_voce;
aAccNew.CD_VOCE:=elementoVoce.cd_elemento_voce;
aAccNew.DT_REGISTRAZIONE:=TRUNC(trunc(aTSNow));
aAccNew.DS_ACCERTAMENTO:='PGiro creata in automatico da liquidazione CORI';
aAccNew.NOTE_ACCERTAMENTO:='';
aAccNew.CD_TERZO:=aAcc.CD_TERZO;
aAccNew.IM_ACCERTAMENTO:=aAcc.IM_ACCERTAMENTO;
aAccNew.FL_PGIRO:='Y';
aAccNew.RIPORTATO:='N';
aAccNew.DACR:=aTSNow;
aAccNew.UTCR:=aUser;
aAccNew.DUVA:=aTSNow;
aAccNew.UTUV:=aUser;
aAccNew.PG_VER_REC:=1;
aAccNew.ESERCIZIO_COMPETENZA:=aEs;
CNRCTB040.CREAACCERTAMENTOPGIROTRONC(false,aAccNew,aAccScadNew,aObbNew,aObbScadNew,trunc(aTSNow));
CREALIQUIDCORIASSPGIRO(aLiquid,aAggregato.cd_gruppo_cr,aAggregato.cd_regione,aAggregato.pg_comune,'E',null,null,aAccNew,aAcc,aUser,trunc(aTSNow));
aAcc := aAccNew;
aAccScad := aAccScadNew;
End If;
-------------------------------------
---INIZIO GGG
IF recParametriCNR.FL_TESORERIA_UNICA = 'Y' and aAggregato.cd_unita_organizzativa <> aUOVERSACC.cd_unita_organizzativa and
aAggregato.cd_unita_organizzativa <> aUOVERSCONTOBI.cd_unita_organizzativa and aAggregato.fl_accentrato = 'Y' THEN
-- rendo tronca LA PARTITA DI GIRO DELL'ISTITUTO
If aLiquid.da_esercizio_precedente = 'N' Then
CNRCTB043.troncaPraticaObbPgiro(aCori.esercizio_obbligazione,aCori.cd_cds,aCori.esercizio_ori_obbligazione,aCori.pg_obbligazione,aTSNow,aUser);
Else -- rendo tronca quella ribaltata
-- GGG TODO_DA_VERIFICARE COSA PASSARE...DOVREBBE ESSERE OK...CHIEDERE A TILDE
CNRCTB043.troncaPraticaObbPgiroInv(aObb.esercizio,aObb.cd_cds,aObb.esercizio_originale,aObb.pg_obbligazione,aTSNow,aUser);
End if;
ind_pGiro := Nvl(tb_ass_pgiro.Count,0) + 1;
tb_ass_pgiro(ind_pGiro).cd_cds := aCori.cd_cds;
tb_ass_pgiro(ind_pGiro).cd_uo := aCori.cd_unita_organizzativa;
tb_ass_pgiro(ind_pGiro).cd_cds_orig := aCori.cd_cds;
tb_ass_pgiro(ind_pGiro).cd_uo_orig := aCori.cd_unita_organizzativa;
tb_ass_pgiro(ind_pGiro).esercizio := aEs;
tb_ass_pgiro(ind_pGiro).es_compenso := aCori.esercizio;
tb_ass_pgiro(ind_pGiro).pg_compenso := aCori.pg_compenso;
tb_ass_pgiro(ind_pGiro).pg_liq := aPgLiq;
tb_ass_pgiro(ind_pGiro).pg_liq_orig := aPgLiq;
tb_ass_pgiro(ind_pGiro).cd_gr_cr := aAggregato.cd_gruppo_cr;
tb_ass_pgiro(ind_pGiro).cd_regione := aAggregato.cd_regione;
tb_ass_pgiro(ind_pGiro).pg_comune := aAggregato.pg_comune;
tb_ass_pgiro(ind_pGiro).cd_cori := aCori.cd_contributo_ritenuta;
tb_ass_pgiro(ind_pGiro).ti_en_per := aCori.ti_ente_percipiente;
tb_ass_pgiro(ind_pGiro).ti_origine := 'S';
tb_ass_pgiro(ind_pGiro).es_obb := aCori.esercizio_obbligazione;
tb_ass_pgiro(ind_pGiro).es_ori_obb := aCori.esercizio_ori_obbligazione;
tb_ass_pgiro(ind_pGiro).cds_obb := aCori.cd_cds_obbligazione;
tb_ass_pgiro(ind_pGiro).pg_obb := aCori.pg_obbligazione;
ELSE
aGen:=null;
aGenRiga:=null;
aListGenRighe.delete;
-- Creo il documento generico di entrata su partita di giro collegato all'annotazione di spesa su pgiro del contributo ritenuta
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.CD_TIPO_DOCUMENTO_AMM:=aTipoGenerico;
aGen.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGen.DS_DOCUMENTO_GENERICO:='CORI-D cn.'||aCori.pg_compenso||' '||aCori.cd_contributo_ritenuta;
aGen.TI_ISTITUZ_COMMERC:=tipo_ic;
aGen.IM_TOTALE:=aAcc.im_accertamento;
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.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 ;
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRiga.DT_DA_COMPETENZA_COGE:=aGen.DT_DA_COMPETENZA_COGE;
aGenRiga.DT_A_COMPETENZA_COGE:=aGen.DT_A_COMPETENZA_COGE;
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;
-- Utilizzo delle corrette informazioni di pagamento nel caso di accentramento o non accentramento
if aAggregato.fl_accentrato = 'Y' then
aGenRiga.CD_TERZO:=aCdTerzoAcc;
else
aGenRiga.CD_TERZO:=aAggregato.cd_terzo_versamento;
end if;
-- aGenRiga.CD_TERZO_CESSIONARIO:=aGen.CD_TERZO_CESSIONARIO;
-- Estrae il terzo associato all'UO del compenso e le sue modalità di pagamento di tipo bancario più recenti
-- se entro dalla 999 estraggo il terzo associato ad essa con modalità di pagamento BI
IF CONTO_BI = 'Y' THEN
CNRCTB080.getTerzoPerEnteContoBI(aCdUo, aCdTerzoUO, aCdModPagUO, aPgBancaUO);
Else
CNRCTB080.getTerzoPerUO(aCori.cd_unita_organizzativa, aCdTerzoUO, aCdModPagUO, aPgBancaUO,aAcc.esercizio);
End If;
--
aGenRiga.CD_TERZO_UO_CDS:=aCdTerzoUO;
aGenRiga.PG_BANCA_UO_CDS:=aPgBancaUO;
aGenRiga.CD_MODALITA_PAG_UO_CDS:=aCdModPagUO;
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_TERMINI_PAG:=aCompenso.CD_TERMINI_PAG;
-- aGenRiga.CD_TERMINI_PAG_UO_CDS:=aCompenso.CD_TERMINI_PAG_UO_CDS;
-- aGenRiga.NOTE:=aGen.NOTE;
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_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.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);
-- Generazione righe reversale
aRevPRiga:=null;
aRevPRiga.CD_CDS:=aGen.cd_cds;
aRevPRiga.ESERCIZIO:=aGen.esercizio;
aRevPRiga.ESERCIZIO_ACCERTAMENTO:=aGenRiga.esercizio_ACCERTAMENTO;
aRevPRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aGenRiga.esercizio_ORI_ACCERTAMENTO;
aRevPRiga.PG_ACCERTAMENTO:=aGenRiga.pg_accertamento;
aRevPRiga.PG_ACCERTAMENTO_SCADENZARIO:=aGenRiga.pg_accertamento_scadenzario;
aRevPRiga.CD_CDS_DOC_AMM:=aGen.cd_cds;
aRevPRiga.CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aRevPRiga.ESERCIZIO_DOC_AMM:=aGen.esercizio;
aRevPRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aRevPRiga.PG_DOC_AMM:=aGen.pg_documento_generico;
aRevPRiga.DS_REVERSALE_RIGA:=aManP.ds_mandato;
aRevPRiga.STATO:=aManP.stato;
aRevPRiga.CD_TERZO:=aGenRiga.cd_terzo;
aRevPRiga.CD_TERZO_UO:=aGenRiga.cd_terzo_uo_cds;
aRevPRiga.PG_BANCA:=aGenRiga.pg_banca_uo_cds;
aRevPRiga.CD_MODALITA_PAG:=aGenRiga.cd_modalita_pag_uo_cds;
aRevPRiga.IM_REVERSALE_RIGA:=aAcc.im_accertamento;
aRevPRiga.FL_PGIRO:='Y';
aRevPRiga.UTCR:=aUser;
aRevPRiga.DACR:=aTSNow;
aRevPRiga.UTUV:=aUser;
aRevPRiga.DUVA:=aTSNow;
aRevPRiga.PG_VER_REC:=1;
aTotReversale:=aTotReversale+aRevPRiga.im_reversale_riga;
aListRigheRevP(aListRigheRevP.count+1):=aRevPRiga;
END IF;
---FINE GGG
else -- su ammontare = 0
null;
end if; -- if su ammontare
End Loop; -- FINE DEL CICLO DI LOOP SU CORI --loop2
-- Creazione della partita di giro di compensazione nel caso di liquidazione negativa (non via interfaccia)
-- GGG TODO....VERIFICARE QUALI MODIFICHE APPORTARE IN QUESTO CASO...ESERCIZIO PRECEDENTE
If recParametriCNR.FL_TESORERIA_UNICA != 'Y' and
Not lIsCdsInterDet
And Not lIsCdsInterTot
And aAggregato.im_liquidato < 0
And aLiquid.da_esercizio_precedente = 'Y'
-- La compensazione viene fatta SOLO per le liquidazioni locali non per quella del centro!!!
-- I cori negativi del centro vanno nella reversale con le compensazioni negative dei gruppi centro da esercizio precedente
And aAggregato.cd_unita_organizzativa <> aUOVERSACC.cd_unita_organizzativa
And aAggregato.cd_unita_organizzativa <> aUOVERSCONTOBI.cd_unita_organizzativa
Then
-- Genera pgiro
-- Riporta pgiro
-- Crea riga generico e mandato
aAcc:=null;
aAccScad:=null;
-- Devo estrarre l'ELEMENTO_VOCE identificato in CONFIGURAZIONE_CNR come COMPENSAZIONE_CORI
aCdEV:=CNRCTB015.GETVAL01PERCHIAVE(aAggregato.esercizio,CNRCTB575.ELEMENTO_VOCE_SPECIALE,CNRCTB575.COMPENSAZIONE_CORI);
Begin
Select * Into aEVComp
From elemento_voce
Where esercizio = aAggregato.esercizio
And ti_gestione = CNRCTB001.GESTIONE_SPESE
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And cd_elemento_voce = aCdEV
And fl_partita_giro = 'Y';
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto su partita di giro per compensazione CORI negativi non trovato: '||aCdEV);
End;
aObb:=null;
aObbScad:=null;
aObb.CD_CDS:=aAggregato.cd_cds;
aObb.ESERCIZIO:=aAggregato.esercizio;
aObb.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_OBB_PGIRO;
aObb.CD_UNITA_ORGANIZZATIVA:=aAggregato.cd_unita_organizzativa;
aObb.CD_CDS_ORIGINE:=aAggregato.cd_cds;
aObb.CD_UO_ORIGINE:=aAggregato.cd_unita_organizzativa;
aObb.TI_APPARTENENZA:=aEVComp.ti_appartenenza;
aObb.TI_GESTIONE:=aEVComp.ti_gestione;
aObb.CD_ELEMENTO_VOCE:=aEVComp.cd_elemento_voce;
aObb.DT_REGISTRAZIONE:=TRUNC(aDateCont);
aObb.DS_OBBLIGAZIONE:='CORI-VA compensazione gruppo cr:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aObb.NOTE_OBBLIGAZIONE:='';
If aAggregato.fl_accentrato = 'Y' then
aObb.CD_TERZO:=aCdTerzoAcc;
Else
aObb.CD_TERZO:=aAggregato.cd_terzo_versamento;
End If;
aObb.IM_OBBLIGAZIONE:=abs(aAggregato.im_liquidato);
aObb.stato_obbligazione:=CNRCTB035.STATO_DEFINITIVO;
aObb.im_costi_anticipati:=0;
aObb.fl_calcolo_automatico:='N';
aObb.fl_spese_costi_altrui:='N';
aObb.FL_PGIRO:='Y';
aObb.RIPORTATO:='N';
aObb.DACR:=aTSNow;
aObb.UTCR:=aUser;
aObb.DUVA:=aTSNow;
aObb.UTUV:=aUser;
aObb.PG_VER_REC:=1;
aObb.ESERCIZIO_COMPETENZA:=aAggregato.esercizio;
CNRCTB030.CREAOBBLIGAZIONEPGIRO(false,aObb,aObbScad,aAcc,aAccScad,trunc(aTSNow));
aTipoGenerico := CNRCTB100.TI_GEN_CORI_VER_SPESA;
aGen:=null;
aGenRiga:=null;
aListGenRighe.delete;
-- Creo il documento generico di spesa su partita di giro collegato all'annotazione di entrata su pgiro del contributo ritenuta
aGen.CD_CDS:=aAggregato.cd_cds;
aGen.CD_UNITA_ORGANIZZATIVA:=aAggregato.cd_unita_organizzativa;
aGen.ESERCIZIO:=aAggregato.esercizio;
aGen.CD_CDS_ORIGINE:=aAggregato.cd_cds;
aGen.CD_UO_ORIGINE:=aAggregato.cd_unita_organizzativa;
aGen.CD_TIPO_DOCUMENTO_AMM:=aTipoGenerico;
aGen.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGen.DS_DOCUMENTO_GENERICO:='COMPENSAZIONE LIQ. GRUPPO CORI:'||aAggregato.cd_gruppo_cr||'.'||aAggregato.cd_regione||'.'||aAggregato.pg_comune;
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
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.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 ;
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRiga.DT_DA_COMPETENZA_COGE:=aGen.DT_DA_COMPETENZA_COGE;
aGenRiga.DT_A_COMPETENZA_COGE:=aGen.DT_A_COMPETENZA_COGE;
--
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;
-- Utilizzo delle corrette informazioni di pagamento nel caso di accentramento o non accentramento
if aAggregato.fl_accentrato = 'Y' then
aGenRiga.CD_TERZO:=aCdTerzoAcc;
aGenRiga.CD_MODALITA_PAG:=aCdModPagAcc;
aGenRiga.PG_BANCA:=aPgBancaAcc;
else
aGenRiga.CD_TERZO:=aAggregato.cd_terzo_versamento;
aGenRiga.CD_MODALITA_PAG:=aAggregato.CD_MODALITA_PAGAMENTO;
aGenRiga.PG_BANCA:=aAggregato.PG_BANCA;
end if;
-- aGenRiga.CD_TERZO_CESSIONARIO:=aGen.CD_TERZO_CESSIONARIO;
-- aGenRiga.CD_TERZO_UO_CDS:=aGen.CD_TERZO_UO_CDS;
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_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.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.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
-- 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:='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;
Update liquid_gruppo_cori
Set cd_cds_acc_compens=aAcc.cd_cds,
esercizio_acc_compens=aAcc.esercizio,
esercizio_ori_acc_compens=aAcc.esercizio_originale,
pg_acc_compens=aAcc.pg_accertamento,
utuv=aUser,
duva=aTSNow,
pg_ver_rec=pg_ver_rec+1
Where esercizio = aAggregato.esercizio
and cd_cds = aAggregato.cd_cds
and cd_unita_organizzativa = aAggregato.cd_unita_organizzativa
and pg_liquidazione = aAggregato.pg_liquidazione
and cd_gruppo_cr = aAggregato.cd_gruppo_cr
and cd_regione = aAggregato.cd_regione
and pg_comune = aAggregato.pg_comune
and cd_cds_origine = aAggregato.cd_cds_origine
and cd_uo_origine = aAggregato.cd_uo_origine
and pg_liquidazione_origine = aAggregato.pg_liquidazione_origine;
End If; -- fine generazione pgiro di compensazione su liq. locale negativa
End If; -- Fine parte 1 esclusa per liq. di uo appartenenti a cds liquidati via interfaccia - If not lIsCdsInterDet And Not lIsCdsInterTot
-- ================================================================================
-- AGGIORNAMENTO DELLA PRATICA AL CENTRO (SOLO LIQUIDAZIONE LOCALE)
-- ================================================================================
If aAggregato.cd_unita_organizzativa <> aUOVERSACC.cd_unita_organizzativa and
aAggregato.cd_unita_organizzativa <> aUOVERSCONTOBI.cd_unita_organizzativa and
aAggregato.fl_Accentrato = 'Y' Then
Declare
aLocAggregato liquid_gruppo_cori%rowtype;
begin
Begin
Select * into aLocAggregato
From liquid_gruppo_cori
Where cd_cds = aAggregato.cd_cds
and esercizio = aAggregato.esercizio
and cd_unita_organizzativa = aAggregato.cd_unita_organizzativa
and pg_liquidazione = aAggregato.pg_liquidazione
and cd_cds_origine = aAggregato.cd_cds_origine
and cd_uo_origine = aAggregato.cd_uo_origine
and pg_liquidazione_origine = aAggregato.pg_liquidazione_origine
and cd_gruppo_cr = aAggregato.cd_gruppo_cr
and cd_regione = aAggregato.cd_regione
and pg_comune = aAggregato.pg_comune
For update nowait;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Dettaglio gruppo di liquidazione CORI non trovato');
End;
aggiornaPraticaGruppoCentro(aLiquid, aLocAggregato,aUOVERSACC,aTSNow,aUser, tb_ass_pgiro);
End;
End If;
End Loop; -- FINE CICLO DI LOOP SU AGGREGATI -- LOOP 1
-- ================================================================================
-- GESTIONE DEGLI AGGREGATI RACCOLTI DA ALTRE UO DEL TIPO DI QUELLO IN PROCESSO
-- ================================================================================
-- Se l'UO è quella di versamento CORI centralizzati
-- Raccoglie tutti gli aggregati al centro del tipo specificato dall'utente (da es. prec e non)
-- Non filtra più per UO
if aCdUo = aUOVERSACC.cd_unita_organizzativa or aCdUo = aUOVERSCONTOBI.cd_unita_organizzativa then
--pipe.send_message('UOENTE.cd_unita_organizzativa = '||UOENTE.cd_unita_organizzativa);
--pipe.send_message('aGruppi.cd_unita_organizzativa = '||aGruppi.cd_unita_organizzativa);
Declare
aVSX vsx_liquidazione_cori%rowtype;
isFoundGruppoCentro boolean;
Begin
Select * Into aVSX
From vsx_liquidazione_cori v
Where v.pg_call = pgCall
And v.esercizio = aGruppi.esercizio
And v.cd_cds = aGruppi.cd_cds
And v.cd_unita_organizzativa = aGruppi.cd_unita_organizzativa
And v.cd_gruppo_cr = aGruppi.cd_gruppo_cr
And v.cd_regione = aGruppi.cd_regione
And v.pg_comune = aGruppi.pg_comune
And v.pg_liquidazione = aPgLiq
And v.cd_uo_origine = UOENTE.cd_unita_organizzativa; --'999.000'
--And v.cd_uo_origine <> aGruppi.cd_unita_organizzativa; ?????????????????????????????????? perchè c'è?????????
isFoundGruppoCentro:=false;
---- da quì parte la creazione di generico e mandati/reversali da liquid_gruppo_centro...
For aGruppoCentro in (Select * From liquid_gruppo_centro
Where esercizio = aGruppi.esercizio
And cd_gruppo_cr = aGruppi.cd_gruppo_cr
And cd_regione = aGruppi.cd_regione
And pg_comune = aGruppi.pg_comune
And da_esercizio_precedente = aLiquid.da_esercizio_precedente
And stato = CNRCTB575.STATO_GRUPPO_CENTRO_INIZIALE
For update nowait)
Loop
isFoundGruppoCentro:=true;
Update liquid_gruppo_centro
Set stato = CNRCTB575.STATO_GRUPPO_CENTRO_CHIUSO,
utuv=aUser,
duva=aTSNow,
pg_ver_rec=pg_ver_rec+1
Where esercizio = aGruppoCentro.esercizio
And cd_gruppo_cr = aGruppoCentro.cd_gruppo_cr
And cd_regione = aGruppoCentro.cd_regione
And pg_comune = aGruppoCentro.pg_comune
And pg_gruppo_centro = aGruppoCentro.pg_gruppo_centro;
-- Crea i mandati di eventuale restituzione crediti alle UO con gruppi negativi....GIRA SOLO SUI DATI DEGLI ANNI PRECEDENTI
--restituzioneCrediti(aAggregato,aGruppoCentro,aTotReversale,aRevP,aListRigheRevP,aUser,aTSNow);
-- GGG TODO PER I MANDATI DI RESTITUZIONE..SOLO A FINE ANNO
-- If recParametriCNR.FL_TESORERIA_UNICA != 'Y' then
restituzioneCrediti(aLiquid,aCdCds,aCdUo,aGruppi.cd_terzo_versamento,aGruppoCentro,aTotReversale,aRevP,aListRigheRevP,aTotMandato,aManP,aListRigheManP,aUser,aTSNow);
-- end if;
aGen:=null;
aGenRiga:=null;
if aGruppoCentro.pg_obb_accentr is not null then
begin
select * into aObbVC
from obbligazione
where cd_cds = aGruppoCentro.cd_cds_obb_accentr
and esercizio = aGruppoCentro.esercizio_obb_accentr
and esercizio_originale = aGruppoCentro.esercizio_ori_obb_accentr
and pg_obbligazione = aGruppoCentro.pg_obb_accentr
for update nowait;
exception
when NO_DATA_FOUND then
If cnrutil.isLabelObbligazione() Then
IBMERR001.RAISE_ERR_GENERICO('Obbligazione di versamento cori al centro non trovata: '||aGruppoCentro.pg_obb_accentr);
Else
IBMERR001.RAISE_ERR_GENERICO('Impegno di versamento cori al centro non trovato: '||aGruppoCentro.pg_obb_accentr);
End If;
end;
-- se la UO è quella del versamento su conto BI occorre rendere tronca la PGIRO in oggetto
-- e crearla sempre tronca sulla UO di versamento (999.000)
--pipe.send_message('aCdUo = '||aCdUo);
--pipe.send_message('aUOVERSCONTOBI.cd_unita_organizzativa = '||aUOVERSCONTOBI.cd_unita_organizzativa);
If aCdUo = aUOVERSCONTOBI.cd_unita_organizzativa
--GG CONDIZIONE AGGIUNTA PER EVITARE LA PARTITA DI GIRO DALLA 000.407 ALLA 999.000
and aUOVERSACC.cd_unita_organizzativa != aUOVERSCONTOBI.cd_unita_organizzativa then
--prendo la pgiro duale (e verifico che sia effettivamente chiusa prima di renderla tronca)
aObbOld.cd_cds:=aGruppoCentro.cd_cds_obb_accentr;
aObbOld.esercizio:=aGruppoCentro.esercizio_obb_accentr;
aObbOld.esercizio_originale:=aGruppoCentro.esercizio_ori_obb_accentr;
aObbOld.pg_obbligazione:=aGruppoCentro.pg_obb_accentr;
-- Il parametro 'X' serve solo per baipassare il controllo che non possono esistere più scadenze
-- per le pgiro di entrata
CNRCTB035.GETPGIROCDSINV(aObbOld,aObbScadOld,aObbScadVoceOld,aAccOld,aAccScadOld,aAccScadVoceOld,'X');
--rendo tronca la stessa (cioè annullo la parte spesa)
CNRCTB043.troncaPraticaAccPgiro(aAccOld.esercizio,aAccOld.cd_cds,aAccOld.esercizio_originale,aAccOld.pg_accertamento,aTSNow,aUser);
-- devo creare la pgiro tronca sulla 999
aObbNew:=null;
aObbScadNew:=null;
aAccNew:=null;
aAccScadNew:=null;
--determino il capitolo da mettere sulla pgiro
Begin
Select distinct a.cd_elemento_voce
Into aCdEV
From ass_tipo_cori_ev a, tipo_cr_base b
Where b.esercizio = aGruppoCentro.esercizio
And b.cd_gruppo_cr = aGruppoCentro.cd_gruppo_cr
And a.cd_contributo_ritenuta = b.cd_contributo_ritenuta
And a.esercizio = aGruppoCentro.esercizio
And a.ti_gestione = CNRCTB001.GESTIONE_SPESE
And a.ti_appartenenza = CNRCTB001.APPARTENENZA_CDS;
Exception
when TOO_MANY_ROWS then
IBMERR001.RAISE_ERR_GENERICO('Esiste più di un conto finanziario associato a CORI del gruppo '||aGruppoCentro.cd_gruppo_cr);
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Conto finanziario associato a CORI del gruppo '||aGruppoCentro.cd_gruppo_cr||' non trovato');
End;
Begin
Select *
Into elementoVoce
From elemento_Voce
Where esercizio = aGruppoCentro.esercizio
And ti_appartenenza = CNRCTB001.APPARTENENZA_CDS
And ti_gestione = CNRCTB001.GESTIONE_SPESE
And cd_elemento_Voce = aCdEV;
Exception
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Codice voce '||aCdEV||' associata a CORI del gruppo '||aGruppoCentro.cd_gruppo_cr||' non trovato');
End;
aObbNew.CD_CDS:=aCdCds;
aObbNew.ESERCIZIO:=aEs;
aObbNew.ESERCIZIO_ORIGINALE:= aObbOld.esercizio_originale; ------ aEs;
If aObbNew.esercizio = aObbNew.esercizio_originale Then
aObbNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_IMP;
Else
aObbNew.CD_TIPO_DOCUMENTO_CONT:=CNRCTB018.TI_DOC_IMP_RES;
End If;
aObbNew.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aObbNew.CD_CDS_ORIGINE:=aCdCds;
aObbNew.CD_UO_ORIGINE:=aCdUo;
aObbNew.TI_APPARTENENZA:=elementoVoce.ti_appartenenza;
aObbNew.TI_GESTIONE:=elementoVoce.ti_gestione;
aObbNew.CD_ELEMENTO_VOCE:=elementoVoce.cd_elemento_voce;
aObbNew.DT_REGISTRAZIONE:=TRUNC(trunc(aTSNow));
aObbNew.DS_OBBLIGAZIONE:='PGiro creata in automatico da liquidazione CORI';
aObbNew.NOTE_OBBLIGAZIONE:='';
aObbNew.CD_TERZO:=aObbOld.CD_TERZO;
aObbNew.IM_OBBLIGAZIONE:=aObbVC.IM_OBBLIGAZIONE; --aObbOld.IM_OBBLIGAZIONE è stata già annullata
aObbNew.stato_obbligazione:=CNRCTB035.STATO_DEFINITIVO;
aObbNew.im_costi_anticipati:=0;
aObbNew.fl_calcolo_automatico:='N';
aObbNew.fl_spese_costi_altrui:='N';
aObbNew.FL_PGIRO:='Y';
aObbNew.RIPORTATO:='N';
aObbNew.DACR:=aTSNow;
aObbNew.UTCR:=aUser;
aObbNew.DUVA:=aTSNow;
aObbNew.UTUV:=aUser;
aObbNew.PG_VER_REC:=1;
aObbNew.ESERCIZIO_COMPETENZA:=aEs;
CNRCTB030.CREAOBBLIGAZIONEPGIROTRONC(false,aObbNew,aObbScadNew,aAccNew,aAccScadNew,trunc(aTSNow));
CREALIQUIDCORIASSPGIRO(aLiquid,aGruppoCentro.cd_gruppo_cr,aGruppoCentro.cd_regione,aGruppoCentro.pg_comune,'S',aObbNew,aObbOld,null,null,aUser,trunc(aTSNow));
End If;
-- Creo il documento generico di spesa su partita di giro collegato all'annotazione di entrata su pgiro
-- per versamento accentrato
aGen.CD_CDS:=aGruppi.cd_cds;
aGen.CD_UNITA_ORGANIZZATIVA:=aGruppi.cd_unita_organizzativa;
aGen.ESERCIZIO:=aGruppi.esercizio;
aGen.CD_CDS_ORIGINE:=aGruppi.cd_cds;
aGen.CD_UO_ORIGINE:=aGruppi.cd_unita_organizzativa;
aGen.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_VER_SPESA;
aGen.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGen.DS_DOCUMENTO_GENERICO:='CORI-ACC'||' cds:'||aGruppi.cd_cds||' uo:'||aGruppi.cd_unita_organizzativa||' pg_liq.:'||aPgLiq||' gruppo cr:'||aGruppi.cd_gruppo_cr;
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
aGen.IM_TOTALE:=aObbVC.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 ;
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRiga.DT_DA_COMPETENZA_COGE:=aGen.DT_DA_COMPETENZA_COGE;
aGenRiga.DT_A_COMPETENZA_COGE:=aGen.DT_A_COMPETENZA_COGE;
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:=aGruppi.cd_terzo_versamento;
aGenRiga.CD_MODALITA_PAG:=aGruppi.CD_MODALITA_PAGAMENTO;
aGenRiga.PG_BANCA:=aGruppi.PG_BANCA;
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.STATO_COFI:=aGen.STATO_COFI;
If aCdUo = aUOVERSCONTOBI.cd_unita_organizzativa
--GG CONDIZIONE AGGIUNTA PER EVITARE LA PARTITA DI GIRO DALLA 000.407 ALLA 999.000
and aUOVERSACC.cd_unita_organizzativa != aUOVERSCONTOBI.cd_unita_organizzativa then
aGenRiga.CD_CDS_OBBLIGAZIONE:=aObbNew.cd_cds;
aGenRiga.ESERCIZIO_OBBLIGAZIONE:=aObbNew.esercizio;
aGenRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aObbNew.esercizio_originale;
aGenRiga.PG_OBBLIGAZIONE:=aObbNew.pg_obbligazione;
Else
aGenRiga.CD_CDS_OBBLIGAZIONE:=aGruppoCentro.cd_cds_obb_accentr;
aGenRiga.ESERCIZIO_OBBLIGAZIONE:=aGruppoCentro.esercizio_obb_accentr;
aGenRiga.ESERCIZIO_ORI_OBBLIGAZIONE:=aGruppoCentro.esercizio_ori_obb_accentr;
aGenRiga.PG_OBBLIGAZIONE:=aGruppoCentro.pg_obb_accentr;
End if;
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.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
-- 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:=aGen.IM_TOTALE;
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;
/*
if aGruppoCentro.PG_ACC_ACCENTR_OPP is not null then
select sum(im_obbligazione)
into somma_compensazioni
FROM liquid_gruppo_centro_comp l, obbligazione o
where cd_cds_OBB_accentr_OPP = o.cd_cds and
ES_OBB_ACCENTR_OPP = o.esercizio and
ES_ORIG_OBB_ACCENTR_OPP = o.esercizio_originale and
PG_OBB_ACCENTR_OPP = o.pg_obbligazione and
l.ESERCIZIO = aGruppoCentro.esercizio and
l.CD_GRUPPO_CR = aGruppoCentro.cd_gruppo_cr and
l.CD_REGIONE = aGruppoCentro.cd_regione and
l.PG_COMUNE = aGruppoCentro.pg_comune and
l.PG_GRUPPO_CENTRO = aGruppoCentro.pg_gruppo_centro and
PG_OBB_ACCENTR_OPP is not null;
if somma_compensazioni > 0 then
aAccGiroOpp.esercizio:=aGruppoCentro.ES_ACC_ACCENTR_OPP;
aAccGiroOpp.cd_cds:=aGruppoCentro.CD_CDS_ACC_ACCENTR_OPP;
aAccGiroOpp.esercizio_originale:=aGruppoCentro.ES_ORIG_ACC_ACCENTR_OPP;
aAccGiroOpp.pg_ACCERTAMENTO:=aGruppoCentro.PG_ACC_ACCENTR_OPP;
CNRCTB035.GETPGIROCDS(aAccGiroOpp,aAccScadGiroOpp,aAccScadVoceGiroOpp,aObbGiroOpp,aObbScadGiroOpp,aObbScadVoceGiroOpp);
CNRCTB043.modificaPraticaoBB(aAccGiroOpp.esercizio,aAccGiroOpp.cd_cds,aAccGiroOpp.esercizio_originale,aAccGiroOpp.pg_accertamento,-somma_compensazioni,aTSNow,aUser,'S','N');
end if;
begin
select * into aAccVC
from accertamento
where cd_cds = aGruppoCentro.CD_CDS_ACC_ACCENTR_OPP
and esercizio = aGruppoCentro.ES_ACC_ACCENTR_OPP
and esercizio_originale = aGruppoCentro.ES_ORIG_ACC_ACCENTR_OPP
and pg_ACCERTAMENTO = aGruppoCentro.PG_ACC_ACCENTR_OPP
for update nowait;
exception
when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Accertamento opposto di versamento cori al centro non trovata: '||aGruppoCentro.PG_ACC_ACCENTR_OPP);
end;
-- Creo il documento generico opposto di entrata su partita di giro collegato all'annotazione di entrata su pgiro
-- per versamento accentrato
aGen := null;
aGen.CD_CDS:=aGruppi.cd_cds;
aGen.CD_UNITA_ORGANIZZATIVA:=aGruppi.cd_unita_organizzativa;
aGen.ESERCIZIO:=aGruppi.esercizio;
aGen.CD_CDS_ORIGINE:=aGruppi.cd_cds;
aGen.CD_UO_ORIGINE:=aGruppi.cd_unita_organizzativa;
aGen.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_VER_ENTRATA;
aGen.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGen.DS_DOCUMENTO_GENERICO:='CORI-ACC OPPOSTO'||' cds:'||aGruppi.cd_cds||' uo:'||aGruppi.cd_unita_organizzativa||' pg_liq.:'||aPgLiq||' gruppo cr:'||aGruppi.cd_gruppo_cr;
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
aGen.IM_TOTALE:=aAccVC.im_accertamento;
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.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 ;
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRiga := null;
aGenRiga.DT_DA_COMPETENZA_COGE:=aGen.DT_DA_COMPETENZA_COGE;
aGenRiga.DT_A_COMPETENZA_COGE:=aGen.DT_A_COMPETENZA_COGE;
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:=aGruppi.cd_terzo_versamento;
CNRCTB080.getTerzoPerUO(aGen.CD_UNITA_ORGANIZZATIVA, aCdTerzoUORev, aCdModPagUORev, aPgBancaUORev,aGruppi.esercizio);
aGenRiga.CD_MODALITA_PAG:=aGruppi.CD_MODALITA_PAGAMENTO;
aGenRiga.CD_TERZO_UO_CDS:= aCdTerzoUORev;
aGenRiga.PG_BANCA:= aPgBancaUORev;
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.STATO_COFI:=aGen.STATO_COFI;
aGenRiga.CD_CDS_ACCERTAMENTO:=aGruppoCentro.CD_CDS_ACC_ACCENTR_OPP;
aGenRiga.ESERCIZIO_ACCERTAMENTO:=aGruppoCentro.ES_ACC_ACCENTR_OPP;
aGenRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aGruppoCentro.ES_ORIG_ACC_ACCENTR_OPP;
aGenRiga.PG_ACCERTAMENTO:=aGruppoCentro.PG_ACC_ACCENTR_OPP;
aGenRiga.PG_ACCERTAMENTO_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.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
-- Generazione righe mandato
aRevPRiga:=null;
aRevPRiga.CD_CDS:=aGen.cd_cds;
aRevPRiga.ESERCIZIO:=aGen.esercizio;
aRevPRiga.ESERCIZIO_ACCERTAMENTO:=aGenRiga.esercizio_ACCERTAMENTO;
aRevPRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aGenRiga.esercizio_ori_ACCERTAMENTO;
aRevPRiga.PG_ACCERTAMENTO:=aGenRiga.pg_ACCERTAMENTO;
aRevPRiga.PG_ACCERTAMENTO_SCADENZARIO:=aGenRiga.pg_ACCERTAMENTO_scadenzario;
aRevPRiga.CD_CDS_DOC_AMM:=aGen.cd_cds;
aRevPRiga.CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aRevPRiga.ESERCIZIO_DOC_AMM:=aGen.esercizio;
aRevPRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aRevPRiga.PG_DOC_AMM:=aGen.pg_documento_generico;
aRevPRiga.DS_REVERSALE_RIGA:=aRevP.ds_REVERSALE;
aRevPRiga.STATO:=aRevP.stato;
aRevPRiga.CD_TERZO:=aGenRiga.CD_TERZO;
aRevPRiga.CD_TERZO_UO:=aGenRiga.CD_TERZO_UO_CDS;
aRevPRiga.PG_BANCA:=aGenRiga.pg_banca;
aRevPRiga.CD_MODALITA_PAG:=aCdModPagUORev;
aRevPRiga.IM_REVERSALE_RIGA:=aGen.IM_TOTALE;
aRevPRiga.FL_PGIRO:='Y';
aRevPRiga.UTCR:=aUser;
aRevPRiga.DACR:=aTSNow;
aRevPRiga.UTUV:=aUser;
aRevPRiga.DUVA:=aTSNow;
aRevPRiga.PG_VER_REC:=1;
--
aTotReversale:=aTotReversale+aRevPRiga.im_Reversale_riga;
aListRigheRevP(aListRigheRevP.count+1):=aRevPRiga;
end if;
*/
if aGruppoCentro.PG_ACC_ACCENTR_OPP is not null and aLiquid.da_esercizio_precedente = 'Y' then
select NVL(sum(ammontare),0)
INTO somma_compensazioni
from contributo_ritenuta c, liquid_gruppo_Cori_Det l, liquid_gruppo_Cori lc
where c.esercizio = l.esercizio_contributo_ritenuta and
c.pg_compenso = l.pg_compenso and
C.CD_CDS = l.cd_CDS_origine and
C.CD_UNITA_ORGANIZZATIVA = l.cd_uo_origine and
c.cd_contributo_ritenuta = l.cd_contributo_ritenuta and
C.TI_ENTE_PERCIPIENTE = l.TI_ENTE_PERCIPIENTE and
l.ESERCIZIO = aGruppoCentro.esercizio and
l.CD_GRUPPO_CR = aGruppoCentro.cd_gruppo_cr and
l.CD_REGIONE = aGruppoCentro.cd_regione and
l.PG_COMUNE = aGruppoCentro.pg_comune and
l.CD_CDS = lc.CD_CDS and
l.ESERCIZIO = lc.esercizio and
l.CD_UNITA_ORGANIZZATIVA = lc.CD_UNITA_ORGANIZZATIVA and
l.PG_LIQUIDAZIONE = lc.PG_LIQUIDAZIONE and
l.CD_CDS_ORIGINE = lc.CD_CDS_ORIGINE and
l.CD_UO_ORIGINE = lc.CD_UO_ORIGINE and
l.PG_LIQUIDAZIONE_ORIGINE = lc.PG_LIQUIDAZIONE_ORIGINE and
l.CD_GRUPPO_CR = lc.CD_GRUPPO_CR and
l.CD_REGIONE = lc.CD_REGIONE and
l.PG_COMUNE = lc.PG_COMUNE and
lc.im_liquidato > 0 AND
C.AMMONTARE < 0 AND
LC.CD_CDS_ACC_ACCENTR_OPP = aGruppoCentro.CD_CDS_ACC_ACCENTR_OPP AND
LC.ES_ACC_ACCENTR_OPP = aGruppoCentro.ES_ACC_ACCENTR_OPP AND
LC.ES_ORIG_ACC_ACCENTR_OPP = aGruppoCentro.ES_ORIG_ACC_ACCENTR_OPP AND
LC.PG_ACC_ACCENTR_OPP = aGruppoCentro.PG_ACC_ACCENTR_OPP;
if somma_compensazioni < 0 then
somma_compensazioni := abs(somma_compensazioni);
-- Creo il documento generico opposto di entrata su partita di giro collegato all'annotazione di entrata su pgiro
-- per versamento accentrato
aGen := null;
aGen.CD_CDS:=aGruppi.cd_cds;
aGen.CD_UNITA_ORGANIZZATIVA:=aGruppi.cd_unita_organizzativa;
aGen.ESERCIZIO:=aGruppi.esercizio;
aGen.CD_CDS_ORIGINE:=aGruppi.cd_cds;
aGen.CD_UO_ORIGINE:=aGruppi.cd_unita_organizzativa;
aGen.CD_TIPO_DOCUMENTO_AMM:=CNRCTB100.TI_GEN_CORI_VER_ENTRATA;
aGen.DATA_REGISTRAZIONE:=TRUNC(aDateCont);
aGen.DS_DOCUMENTO_GENERICO:='CORI-ACC OPPOSTO'||' cds:'||aGruppi.cd_cds||' uo:'||aGruppi.cd_unita_organizzativa||' pg_liq.:'||aPgLiq||' gruppo cr:'||aGruppi.cd_gruppo_cr;
aGen.TI_ISTITUZ_COMMERC:=CNRCTB100.TI_ISTITUZIONALE;
aGen.IM_TOTALE:=somma_compensazioni;
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.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 ;
aGen.DT_DA_COMPETENZA_COGE:=TRUNC(aDateCont);
aGen.DT_A_COMPETENZA_COGE:=TRUNC(aDateCont);
aGenRiga := null;
aGenRiga.DT_DA_COMPETENZA_COGE:=aGen.DT_DA_COMPETENZA_COGE;
aGenRiga.DT_A_COMPETENZA_COGE:=aGen.DT_A_COMPETENZA_COGE;
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:=aGruppi.cd_terzo_versamento;
CNRCTB080.getTerzoPerEnteContoBI(aGen.CD_UNITA_ORGANIZZATIVA, aCdTerzoVE, aCdModPagVE, aPgBancaVE);
aGenRiga.CD_TERZO_UO_CDS:=aCdTerzoVE;
aGenRiga.PG_BANCA_UO_CDS:=aPgBancaVE;
aGenRiga.CD_MODALITA_PAG_UO_CDS:=aCdModPagVE;
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.STATO_COFI:=aGen.STATO_COFI;
aGenRiga.CD_CDS_ACCERTAMENTO:=aGruppoCentro.CD_CDS_ACC_ACCENTR_OPP;
aGenRiga.ESERCIZIO_ACCERTAMENTO:=aGruppoCentro.ES_ACC_ACCENTR_OPP;
aGenRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aGruppoCentro.ES_ORIG_ACC_ACCENTR_OPP;
aGenRiga.PG_ACCERTAMENTO:=aGruppoCentro.PG_ACC_ACCENTR_OPP;
aGenRiga.PG_ACCERTAMENTO_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.CREAGENERICOAGGOBBACC(aGen,aListGenRighe);
-- Generazione righe mandato
aRevPRiga:=null;
aRevPRiga.CD_CDS:=aGen.cd_cds;
aRevPRiga.ESERCIZIO:=aGen.esercizio;
aRevPRiga.ESERCIZIO_ACCERTAMENTO:=aGenRiga.esercizio_ACCERTAMENTO;
aRevPRiga.ESERCIZIO_ORI_ACCERTAMENTO:=aGenRiga.esercizio_ori_ACCERTAMENTO;
aRevPRiga.PG_ACCERTAMENTO:=aGenRiga.pg_ACCERTAMENTO;
aRevPRiga.PG_ACCERTAMENTO_SCADENZARIO:=aGenRiga.pg_ACCERTAMENTO_scadenzario;
aRevPRiga.CD_CDS_DOC_AMM:=aGen.cd_cds;
aRevPRiga.CD_UO_DOC_AMM:=aGen.cd_unita_organizzativa;
aRevPRiga.ESERCIZIO_DOC_AMM:=aGen.esercizio;
aRevPRiga.CD_TIPO_DOCUMENTO_AMM:=aGen.cd_tipo_documento_amm;
aRevPRiga.PG_DOC_AMM:=aGen.pg_documento_generico;
aRevPRiga.DS_REVERSALE_RIGA:=aGenRiga.DS_RIGA;
aRevPRiga.STATO:=aRevP.stato;
aRevPRiga.CD_TERZO:=aGenRiga.CD_TERZO;
aRevPRiga.CD_TERZO_UO:=aGenRiga.CD_TERZO_UO_CDS;
aRevPRiga.PG_BANCA:=aGenRiga.pg_banca;
aRevPRiga.CD_MODALITA_PAG:=aCdModPagUORev;
aRevPRiga.IM_REVERSALE_RIGA:=aGen.IM_TOTALE;
aRevPRiga.FL_PGIRO:='Y';
aRevPRiga.UTCR:=aUser;
aRevPRiga.DACR:=aTSNow;
aRevPRiga.UTUV:=aUser;
aRevPRiga.DUVA:=aTSNow;
aRevPRiga.PG_VER_REC:=1;
--
aTotReversale:=aTotReversale+aRevPRiga.im_Reversale_riga;
aListRigheRevP(aListRigheRevP.count+1):=aRevPRiga;
end if;
end if; --fine if aGruppoCentro.PG_ACC_ACCENTR_OPP is not null and aL.da_esercizio_precedente = 'Y' then
end if; --fine if aGruppoCentro.pg_obb_accentr is not null then
For aAggregatoOrig in (Select * From liquid_gruppo_cori
Where esercizio = aGruppoCentro.esercizio
And cd_unita_organizzativa <> aGruppi.cd_unita_organizzativa
And cd_gruppo_cr = aGruppoCentro.cd_gruppo_cr
And cd_regione = aGruppoCentro.cd_regione
And pg_comune = aGruppoCentro.pg_comune
And pg_gruppo_centro = aGruppoCentro.pg_gruppo_centro
And stato = CNRCTB575.STATO_TRASFERITO
For update nowait
) Loop -- loop 3
-- Aggiorna lo stato della liquidazione di origine
select *
into aLiquidOrig
from liquid_cori
where esercizio = aAggregatoOrig.esercizio
and cd_cds = aAggregatoOrig.cd_cds
and cd_unita_organizzativa = aAggregatoOrig.cd_unita_organizzativa
and pg_liquidazione = aAggregatoOrig.pg_liquidazione
for update nowait;
-- Aggiorna lo stato della riga di liquidazione in periferia
update liquid_gruppo_cori set
stato = CNRCTB575.STATO_LIQUIDATO,
utuv=aUser,
duva=aTSNow,
pg_ver_rec=pg_ver_rec+1
Where esercizio = aAggregatoOrig.esercizio
and cd_cds = aAggregatoOrig.cd_cds
and cd_unita_organizzativa = aAggregatoOrig.cd_unita_organizzativa
and pg_liquidazione = aAggregatoOrig.pg_liquidazione
and cd_gruppo_cr = aAggregatoOrig.cd_gruppo_cr
and cd_regione = aAggregatoOrig.cd_regione
and pg_comune = aAggregatoOrig.pg_comune
and cd_cds_origine = aAggregatoOrig.cd_cds_origine
and cd_uo_origine = aAggregatoOrig.cd_uo_origine
and pg_liquidazione_origine = aAggregatoOrig.pg_liquidazione_origine;
-- Quando tutti i dettagli trasferiti di una liquidazione risultano liquidati
-- la liquidazione diventa liquidata
declare
aLAGG liquid_gruppo_cori%rowtype;
begin
select * into aLAGG from liquid_gruppo_cori
where esercizio = aAggregatoOrig.esercizio
and cd_cds = aAggregatoOrig.cd_cds
and cd_unita_organizzativa = aAggregatoOrig.cd_unita_organizzativa
and pg_liquidazione = aAggregatoOrig.pg_liquidazione
and stato = CNRCTB575.STATO_TRASFERITO
for update nowait;
exception
when TOO_MANY_ROWS then
null;
when NO_DATA_FOUND then
update liquid_cori
set stato = CNRCTB575.STATO_LIQUIDATO,
utuv=aUser,
duva=aTSNow,
pg_ver_rec=pg_ver_rec+1
where esercizio = aAggregatoOrig.esercizio
and cd_cds = aAggregatoOrig.cd_cds
and cd_unita_organizzativa = aAggregatoOrig.cd_unita_organizzativa
and pg_liquidazione = aAggregatoOrig.pg_liquidazione;
end;
End Loop; -- loop 3
End Loop; -- Chiusura loop sui gruppi centro (sono 2 da esercizio prec o corr.)
if not isFoundGruppoCentro then
IBMERR001.RAISE_ERR_GENERICO('Gruppo centro non liquidato non trovato per Gruppo CORI:'||aGruppi.cd_gruppo_cr||'.'||aGruppi.cd_regione||'.'||aGruppi.pg_comune);
end if;
Exception when NO_DATA_FOUND then
null;
End;
End If; -- FINE GESTIONE SPECIALE PER UO DI VERSAMENTO ACCENTRATO if aCdUo = aUOVERSACC.cd_unita_organizzativa or aCdUo = aUOVERSCONTOBI.cd_unita_organizzativa
End Loop; -- FINE CICLO DI LOOP PRINCIPALE aGruppi
-- Questa parte, relativa alla chiusura delle partite di giro dei compensi va tolta per i CDS caricati via interfaccia
-- Inizio parte 2 esclusa per liq. di uo appartenenti a cds liquidati via interfaccia
if not lIsCdsInterDet And Not lIsCdsInterTot then
aManP.IM_MANDATO:=aTotMandato;
-- Aggiornamento del 14/03/2003 ERR. 530
aRevP.IM_REVERSALE:=aTotReversale;
if aTotMandato - aTotReversale >= 0 then
aManP.IM_RITENUTE:=aTotReversale;
CNRCTB037.generaDocumento(aManP,aListRigheManP,aRevP,aListRigheRevP);
else
--NON DOVREBBE ENTRARE MAI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/*
CNRCTB037.generaDocumento(aManP,aListRigheManP);
if aVersamenti.cd_unita_organizzativa = aUOVERSACC.cd_unita_organizzativa then
CNRCTB037.generaReversale(aRevP,aListRigheRevP);
-- mette il riferimento alla reversale sciolta su tutte e due le liquidazioni 999 e propria del centro
update liquid_gruppo_cori l
set l.cd_cds_rev = aRevP.cd_cds
,l.esercizio_rev = aRevP.esercizio
,l.pg_rev = aRevP.pg_reversale
Where l.esercizio = aVersamenti.esercizio
And l.cd_cds = aVersamenti.cd_cds
And l.cd_unita_organizzativa = aVersamenti.cd_unita_organizzativa
And l.pg_liquidazione = aPgLiq
And l.cd_gruppo_cr = aVersamenti.cd_gruppo_cr
--And cd_regione = aGruppi.cd_regione
--And pg_comune = aGruppi.pg_comune;
And (l.esercizio,l.cd_gruppo_cr,l.cd_regione,l.pg_comune) In
(Select c.esercizio,c.cd_gruppo_cr,c.cd_regione,c.pg_comune
From gruppo_cr_det c
Where c.cd_terzo_versamento = aVersamenti.cd_terzo_versamento
And c.cd_modalita_pagamento = aVersamenti.cd_modalita_pagamento
And c.pg_banca = aVersamenti.pg_banca);
end if;
*/
IBMERR001.RAISE_ERR_GENERICO('La quota complessiva CORI da versare per Gruppo CORI:'||aVersamenti.cd_gruppo_cr||' e Terzo di versamento .'||aVersamenti.cd_terzo_versamento||' risulta negativa!');
end if;
-- Aggiorna liquid_gruppo_cori con le informazioni relative al mandato di versamento/trasferimento
Update liquid_gruppo_cori l
Set l.cd_cds_doc = aManP.cd_cds
,l.esercizio_doc = aManP.esercizio
,l.pg_doc = aManP.pg_mandato
Where l.esercizio = aVersamenti.esercizio
And l.cd_cds = aVersamenti.cd_cds
And l.cd_unita_organizzativa = aVersamenti.cd_unita_organizzativa
And l.pg_liquidazione = aPgLiq
And l.cd_gruppo_cr = aVersamenti.cd_gruppo_cr
--And cd_regione = aGruppi.cd_regione
--And pg_comune = aGruppi.pg_comune;
And (l.esercizio,l.cd_gruppo_cr,l.cd_regione,l.pg_comune) In
(Select c.esercizio,c.cd_gruppo_cr,c.cd_regione,c.pg_comune
From gruppo_cr_det c
Where c.cd_terzo_versamento = aVersamenti.cd_terzo_versamento
And c.cd_modalita_pagamento = aVersamenti.cd_modalita_pagamento
And c.pg_banca = aVersamenti.pg_banca);
End If; -- Fine parte 2 esclusa per liq. di uo appartenenti a cds liquidati via interfaccia
End Loop; -- FINE CICLO DI LOOP VERSAMENTO aVersamenti
-- Aggiorna lo stato della liquidazione corrente
if isLiquidParzAcc and aUOVERSACC.cd_unita_organizzativa <> aCdUo and aUOVERSCONTOBI.cd_unita_organizzativa <> aCdUo then
aStatoLiquidazione:=CNRCTB575.STATO_TRASFERITO;
else
aStatoLiquidazione:=CNRCTB575.STATO_LIQUIDATO;
end if;
update liquid_cori
set stato = aStatoLiquidazione,
utuv=aUser,
duva=aTSNow,
pg_ver_rec=pg_ver_rec+1
where esercizio = aEs
and cd_cds = aCdCds
and cd_unita_organizzativa = aCdUo
and pg_liquidazione = aPgLiq;
end;
procedure aggiorna_totale_gruppo_cori (p_cds in varchar2, p_uo in varchar2, p_aTotLiquid in number, p_aFlAccentrato in varchar2, p_aOldGruppoCr in varchar2, p_aOldRegioneCr in varchar2, p_aOldComuneCr in number, aPgLiq in number, aCdCds in varchar2, aCdUo in varchar2, aEs in number) is
begin
Update liquid_gruppo_cori
set im_liquidato = p_aTotLiquid,
fl_accentrato=p_aFlAccentrato,
stato=decode(p_aFlAccentrato,'Y',CNRCTB575.STATO_TRASFERITO,CNRCTB575.STATO_LIQUIDATO)
Where esercizio = aEs
And cd_cds = aCdCds
And cd_cds_origine = p_cds
And cd_unita_organizzativa = aCdUo
And cd_uo_origine = p_uo
And cd_gruppo_cr = p_aOldGruppoCr
And cd_regione = p_aOldRegioneCr
And pg_comune = p_aOldComuneCr
And pg_liquidazione = aPgLiq
And pg_liquidazione_origine = aPgLiq;
end;
-- ==========================
-- Calcolo della liquidazione
-- ==========================
procedure calcolaLiquidazione(aCdCds varchar2, aEs number,daEsercizioPrec char, aCdUo varchar2, aPgLiq number, aDtDa date, aDtA date, aUser varchar2) is
aTSNow date;
aLiquidCori liquid_cori%rowtype;
aLiquidGruppoCori liquid_gruppo_cori%rowtype;
aLiquidGruppoCoriDet liquid_gruppo_cori_det%rowtype;
aOldGruppoCr varchar2(30);
aOldComuneCr number(10);
aOldRegioneCr varchar2(10);
aTotLiquid number(15,2);
aOldPgCompenso number(10);
isLiquidaSuInviato char(1);
aUOVERSACC unita_organizzativa%rowtype;
aUOVERSUNIFICATI unita_organizzativa%rowtype;
aUOVERSCONTOBI unita_organizzativa%rowtype;
aFlAccentrato char(1);
aIsCdsInterDet boolean;
aIsCdsInterTot boolean;
aObb obbligazione%rowtype;
UOENTE unita_organizzativa%rowtype;
ESERCIZIO_UO_SPECIALI NUMBER;
begin
if aPgLiq is null
or aCdCds is null
or aCdUo is null
or aEs is null
or daEsercizioPrec is null
or aDtDa is null
or aDtA is null
or aUser is null
then
IBMERR001.RAISE_ERR_GENERICO('Alcuni parametri di liquidazione non sono stati specificati');
end if;
if to_number(to_char(aDtDa,'YYYY')) != to_number(to_char(aDtA,'YYYY')) THEN
IBMERR001.RAISE_ERR_GENERICO('La date di inizio e la data di fine devono essere dello stesso anno');
else
ESERCIZIO_UO_SPECIALI := to_number(To_Char(aDtDa,'YYYY'));
END IF;
-- Controllo che la liquidazione al centro sia aperta
-- Fix errore 729
CNRCTB575.CHECKLIQUIDCENTROAPERTA(aEs);
aIsCdsInterDet := IsCdsInterfDet(aCdCds, aEs);
aIsCdsInterTot := IsCdsInterfTot(aCdCds, aEs);
if aIsCdsInterDet then
calcolaLiquidInterf (aCdCds,
aEs ,
daEsercizioPrec ,
aCdUo ,
aPgLiq ,
aDtDa ,
aDtA ,
aUser );
end if;
If aIsCdsInterTot Then
calcolaLiquidInterfTot (aCdCds,
aEs ,
daEsercizioPrec ,
aCdUo ,
aPgLiq ,
aDtDa ,
aDtA ,
aUser );
end if;
if not aIsCdsInterDet And Not aIsCdsInterTot then -- Diramazione calcolo cori inter
aTSNow:=sysdate;
aLiquidCori.CD_CDS:=aCdCds;
aLiquidCori.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aLiquidCori.ESERCIZIO:=aEs;
aLiquidCori.PG_LIQUIDAZIONE:=aPgLiq;
aLiquidCori.DA_ESERCIZIO_PRECEDENTE:=daEsercizioPrec;
aLiquidCori.DT_DA:=trunc(aDtDa);
aLiquidCori.DT_A:=trunc(aDtA);
aLiquidCori.STATO:=CNRCTB575.STATO_INIZIALE;
aLiquidCori.DACR:=aTSNow;
aLiquidCori.UTCR:=aUser;
aLiquidCori.DUVA:=aTSNow;
aLiquidCori.UTUV:=aUser;
aLiquidCori.PG_VER_REC:=0;
CNRCTB575.INS_LIQUID_CORI(aLiquidCori);
isLiquidaSuInviato:=CNRCTB575.ISLIQUIDACORIINVIATO(aEs);
-- Estrazione delle UO di versamento CORI accentrato, unificato e
-- della UO abilitata al versamento direttamente dal conto presso la Banca d'Italia (999.000)
aUOVERSACC:=CNRCTB020.getUOVersCori(ESERCIZIO_UO_SPECIALI);
aUOVERSUNIFICATI:=CNRCTB020.getUOVersCoriTuttaSAC(ESERCIZIO_UO_SPECIALI);
aUOVERSCONTOBI:=CNRCTB020.getUOVersCoriContoBI(ESERCIZIO_UO_SPECIALI);
-- Controllo che la liq. locale sia aperta nell'esercizio specificato
if aUOVERSACC.cd_unita_organizzativa <> aCdUO and aUOVERSCONTOBI.cd_unita_organizzativa <> aCdUO then
CNRCTB575.CHECKLIQUIDLOCALEAPERTA(aEs);
end if;
-- Se l'UO di versamento = all'UO in processo e la liquidazione è di esercizio CORRENTE
-- creo le righe relative alla liquidazione al centro dei gruppi locali
-- targandole con 999.000, 999 rispettivamente in UO e CDS origine
If aUOVERSACC.cd_unita_organizzativa = aCdUo or aUOVERSCONTOBI.cd_unita_organizzativa = aCdUo Then
UOENTE:=CNRCTB020.GETUOENTE(aEs);
For aGCentro in (Select * from liquid_gruppo_centro
Where esercizio = aEs
And da_esercizio_precedente = daEsercizioPrec
And stato = CNRCTB575.STATO_GRUPPO_CENTRO_INIZIALE
And cd_gruppo_cr = GruppoValido(esercizio, ESERCIZIO_UO_SPECIALI, cd_gruppo_cr, aCdUo)
for update nowait)
Loop -- loop 1
Update liquid_gruppo_centro set
cd_cds_lc = aCdCds,
cd_uo_lc =aCdUo,
pg_lc =aPgLiq,
utuv=aUser,
duva=aTSNow,
pg_ver_rec=pg_ver_rec+1
Where esercizio = aGCentro.esercizio
And pg_gruppo_centro = aGCentro.pg_gruppo_centro
And cd_gruppo_cr = aGCentro.cd_gruppo_cr
And cd_regione = aGCentro.cd_regione
And pg_comune = aGCentro.pg_comune;
aObb:=null;
if aGCentro.pg_obb_accentr is not null then
Begin
Select * into aObb
From obbligazione
Where cd_cds = aGCentro.cd_cds_obb_accentr
And esercizio = aGCentro.esercizio_obb_accentr
And esercizio_originale = aGCentro.esercizio_ori_obb_accentr
And pg_obbligazione = aGCentro.pg_obb_accentr
For update nowait;
Exception when NO_DATA_FOUND then
If cnrutil.isLabelObbligazione() Then
IBMERR001.RAISE_ERR_GENERICO('Obbligazione per versamento del gruppo centro non trovata');
Else
IBMERR001.RAISE_ERR_GENERICO('Impegno per versamento del gruppo centro non trovato');
End If;
End;
end if;
aLiquidGruppoCori.ESERCIZIO:=aGCentro.esercizio;
aLiquidGruppoCori.CD_CDS:=aCdCds;
aLiquidGruppoCori.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aLiquidGruppoCori.PG_LIQUIDAZIONE:=aPgLiq;
aLiquidGruppoCori.CD_CDS_ORIGINE:=UOENTE.cd_unita_padre;
aLiquidGruppoCori.CD_UO_ORIGINE:=UOENTE.cd_unita_organizzativa;
aLiquidGruppoCori.PG_LIQUIDAZIONE_ORIGINE:=0;
aLiquidGruppoCori.CD_GRUPPO_CR:=aGCentro.cd_gruppo_cr;
aLiquidGruppoCori.CD_REGIONE:=aGCentro.cd_regione;
aLiquidGruppoCori.PG_COMUNE:=aGCentro.pg_comune;
aLiquidGruppoCori.IM_LIQUIDATO:=nvl(aObb.im_obbligazione,0);
aLiquidGruppoCori.FL_ACCENTRATO:='N';
aLiquidGruppoCori.STATO:=CNRCTB575.STATO_LIQUIDATO;
aLiquidGruppoCori.pg_gruppo_centro:=aGCentro.pg_gruppo_centro;
aLiquidGruppoCori.cd_cds_obb_accentr:=aGCentro.cd_cds_obb_accentr;
aLiquidGruppoCori.esercizio_obb_accentr:=aGCentro.esercizio_obb_accentr;
aLiquidGruppoCori.esercizio_ori_obb_accentr:=aGCentro.esercizio_ori_obb_accentr;
aLiquidGruppoCori.pg_obb_accentr:=aGCentro.pg_obb_accentr;
aLiquidGruppoCori.ESERCIZIO_DOC:=null;
aLiquidGruppoCori.CD_CDS_DOC:=null;
aLiquidGruppoCori.PG_DOC:=null;
aLiquidGruppoCori.DACR:=aTSNow;
aLiquidGruppoCori.UTCR:=aUser;
aLiquidGruppoCori.DUVA:=aTSNow;
aLiquidGruppoCori.UTUV:=aUser;
aLiquidGruppoCori.PG_VER_REC:=1;
CNRCTB575.INS_LIQUID_GRUPPO_CORI(aLiquidGruppoCori);
End Loop; -- loop 1
End If; --If aUOVERSACC.cd_unita_organizzativa = aCdUo or aUOVERSCONTOBI.cd_unita_organizzativa = aCdUo
aLiquidGruppoCori:=null;
aOldGruppoCr:=null;
aOldPgCompenso:=null;
aOldComuneCr:=null;
aOldRegioneCr:=null;
-- Si prendono i dati della UO in processo
For aCori in (select * from v_calcola_liquid_cori_det a
where a.esercizio = aEs
-- Questa clausola definisce la provenienza del compenso:
-- se daEsercizioPrec='Y'
-- vengono estratti compensi con mandati/reversali dell'esercizio precedente a quello di scrivania
-- altrimenti
-- vengono estratti compensi con mandati/reversali nell'esercizio di scrivania
and a.esercizio_doc_cont = decode(daEsercizioPrec,'Y',a.esercizio-1,a.esercizio)
and a.cd_cds = aCdCds
and a.cd_unita_organizzativa = aCdUo
and decode(isLiquidaSuInviato,'Y',a.dt_trasmissione_mandato,a.dt_emissione_mandato) >= trunc(aDtDa)
and decode(isLiquidaSuInviato,'Y',a.dt_trasmissione_mandato,a.dt_emissione_mandato) < trunc(aDtA + 1)
and a.cd_gruppo_cr = GruppoValido(aEs, ESERCIZIO_UO_SPECIALI, a.cd_gruppo_cr, aCdUo)
and not exists (Select 1 from liquid_gruppo_cori_det a1
Where -- Esclude i cori già processati
--a1.cd_cds = a.cd_cds
a1.esercizio_contributo_ritenuta = a.esercizio_compenso
--And a1.cd_unita_organizzativa = a.cd_unita_organizzativa
And a1.cd_cds_origine = a.cd_cds
And a1.cd_uo_origine = a.cd_unita_organizzativa
And (a1.pg_liquidazione != aPgLiq
Or
a1.esercizio != a.esercizio
Or
--se ad es. verso da 000.407 e poi vado nella 000.101, il pg_liq potrebbe
--essere lo stesso e quindi rivedo il compenso. Devo non farlo vedere
(a1.pg_liquidazione = aPgLiq And
a1.esercizio = a.esercizio And
( (a1.cd_cds = aUOVERSUNIFICATI.cd_unita_padre And
a1.cd_unita_organizzativa = aUOVERSUNIFICATI.cd_unita_organizzativa)
Or
(a1.cd_cds = a.cd_cds And
a1.cd_unita_organizzativa = a.cd_unita_organizzativa) )
)
)
And a1.cd_contributo_ritenuta = a.cd_contributo_ritenuta
And a1.pg_compenso = a.pg_compenso
And a1.ti_ente_percipiente = a.ti_ente_percipiente)
order by cd_gruppo_cr, cd_regione, pg_comune, pg_compenso, cd_contributo_ritenuta)
Loop -- loop 3
-- Lock del compenso
if aCori.cd_gruppo_cr is null then
IBMERR001.RAISE_ERR_GENERICO('Gruppo CORI non trovato per CORI:'||aCori.cd_contributo_ritenuta);
end if;
if aCori.cd_regione is null or aCori.pg_comune is null then
IBMERR001.RAISE_ERR_GENERICO('Dettaglio Gruppo CORI non trovato per CORI:'||aCori.cd_contributo_ritenuta||' di tipo:'||aCori.cd_classificazione_cori||' regione:'||aCori.cd_regione_cori||' comune:'||aCori.pg_comune_cori);
end if;
if aOldPgCompenso is null or aOldPgCompenso<>aCori.pg_compenso then
CNRCTB100.LOCKDOCAMM(CNRCTB100.TI_COMPENSO,aCori.cd_cds,aCori.esercizio_compenso,aCori.cd_unita_organizzativa,aCori.pg_compenso);
aOldPgCompenso:=aCori.pg_compenso;
end if;
if aOldGruppoCr is null
or aOldRegioneCr is null
or aOldComuneCr is null
or aOldGruppoCr<>aCori.cd_gruppo_cr
or aOldRegioneCr<>aCori.cd_regione
or aOldComuneCr<>aCori.pg_comune then
-- Estraggo l'informazione di versamento accentrato per il gruppo specificato
-- Aggiorno le informazioni relative ad importo liquidato e flag accentrato del totale precedente
if aOldGruppoCr is not null then
aggiorna_totale_gruppo_cori (aCdCds, aCdUo, aTotLiquid, aFlAccentrato, aOldGruppoCr, aOldRegioneCr, aOldComuneCr, aPgLiq, aCdCds, aCdUo, aEs);
end if;
Begin
-- Calcolo il nuovo valore del flag accentrato
select decode(aCori.cd_unita_organizzativa,aUOVERSACC.cd_unita_organizzativa,'N',nvl(d.fl_accentrato,b.fl_accentrato))
into aFlAccentrato
from gruppo_cr b, gruppo_cr_det c, gruppo_cr_uo d
where b.esercizio = ESERCIZIO_UO_SPECIALI
and b.cd_gruppo_cr = aCori.cd_gruppo_cr
and c.esercizio = ESERCIZIO_UO_SPECIALI
and c.cd_gruppo_cr = aCori.cd_gruppo_cr
and c.cd_regione = aCori.cd_regione
and c.pg_comune = aCori.pg_comune
and d.esercizio (+)= c.esercizio
and d.cd_gruppo_cr (+)= c.cd_gruppo_cr
and d.cd_unita_organizzativa (+)=aCori.cd_unita_organizzativa;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Gruppo CORI non trovato');
End;
aTotLiquid:=0;
aOldGruppoCr:=aCori.cd_gruppo_cr;
aOldRegioneCr:=aCori.cd_regione;
aOldComuneCr:=aCori.pg_comune;
aLiquidGruppoCori.ESERCIZIO:=aEs;
aLiquidGruppoCori.CD_CDS:=aCori.cd_cds;
aLiquidGruppoCori.CD_UNITA_ORGANIZZATIVA:=aCori.cd_unita_organizzativa;
aLiquidGruppoCori.CD_CDS_ORIGINE:=aCori.cd_cds;
aLiquidGruppoCori.CD_UO_ORIGINE:=aCori.cd_unita_organizzativa;
aLiquidGruppoCori.PG_LIQUIDAZIONE:=aLiquidCori.pg_liquidazione;
aLiquidGruppoCori.PG_LIQUIDAZIONE_ORIGINE:=aLiquidCori.pg_liquidazione;
aLiquidGruppoCori.CD_GRUPPO_CR:=aCori.cd_gruppo_cr;
aLiquidGruppoCori.CD_REGIONE:=aCori.cd_regione;
aLiquidGruppoCori.PG_COMUNE:=aCori.pg_comune;
aLiquidGruppoCori.IM_LIQUIDATO:=null;
aLiquidGruppoCori.FL_ACCENTRATO:='N';
aLiquidGruppoCori.STATO:=CNRCTB575.STATO_LIQUIDATO;
aLiquidGruppoCori.ESERCIZIO_DOC:=null;
aLiquidGruppoCori.CD_CDS_DOC:=null;
aLiquidGruppoCori.PG_DOC:=null;
aLiquidGruppoCori.DACR:=aTSNow;
aLiquidGruppoCori.UTCR:=aUser;
aLiquidGruppoCori.DUVA:=aTSNow;
aLiquidGruppoCori.UTUV:=aUser;
aLiquidGruppoCori.PG_VER_REC:=1;
aOldGruppoCr:=aLiquidGruppoCori.cd_gruppo_cr;
CNRCTB575.INS_LIQUID_GRUPPO_CORI(aLiquidGruppoCori);
end if; --aOldGruppoCr is null or .....
aLiquidGruppoCoriDet.CD_CDS:=aCori.cd_cds;
aLiquidGruppoCoriDet.CD_UNITA_ORGANIZZATIVA:=aCori.cd_unita_organizzativa;
aLiquidGruppoCoriDet.CD_CDS_ORIGINE:=aCori.cd_cds;
aLiquidGruppoCoriDet.CD_UO_ORIGINE:=aCori.cd_unita_organizzativa;
aLiquidGruppoCoriDet.ESERCIZIO:=aEs;
aLiquidGruppoCoriDet.ESERCIZIO_CONTRIBUTO_RITENUTA:=aCori.esercizio_compenso;
aLiquidGruppoCoriDet.PG_LIQUIDAZIONE:=aPgLiq;
aLiquidGruppoCoriDET.PG_LIQUIDAZIONE_ORIGINE:=aPgLiq;
aLiquidGruppoCoriDet.CD_GRUPPO_CR:=aCori.cd_gruppo_cr;
aLiquidGruppoCoriDet.CD_REGIONE:=aCori.cd_regione;
aLiquidGruppoCoriDet.PG_COMUNE:=aCori.pg_comune;
aLiquidGruppoCoriDet.CD_CONTRIBUTO_RITENUTA:=aCori.cd_contributo_ritenuta;
aLiquidGruppoCoriDet.PG_COMPENSO:=aCori.pg_compenso;
aLiquidGruppoCoriDet.TI_ENTE_PERCIPIENTE:=aCori.ti_ente_percipiente;
aLiquidGruppoCoriDet.DACR:=aTSNow;
aLiquidGruppoCoriDet.UTCR:=aUser;
aLiquidGruppoCoriDet.DUVA:=aTSNow;
aLiquidGruppoCoriDet.UTUV:=aUser;
aLiquidGruppoCoriDet.PG_VER_REC:=1;
CNRCTB575.INS_LIQUID_GRUPPO_CORI_DET(aLiquidGruppoCoriDet);
aTotLiquid:=aTotLiquid + aCori.im_cori;
End Loop; -- loop 3
If aOldGruppoCr is not null then
-- Aggiorno il totale precedente
aggiorna_totale_gruppo_cori (aCdCds, aCdUo, aTotLiquid, aFlAccentrato, aOldGruppoCr, aOldRegioneCr, aOldComuneCr, aPgLiq, aCdCds, aCdUo, aEs);
End if;
-- Se la UO in processo è quella abilitata a versare i dati di tutte le UO della SAC oppure è la 999.000
If aUOVERSUNIFICATI.cd_unita_organizzativa = aCdUo or aUOVERSCONTOBI.cd_unita_organizzativa = aCdUo Then
For aCdUoSAC In (Select a.cd_unita_organizzativa, a.cd_unita_padre
From unita_organizzativa a
Where a.fl_cds = 'N'
And a.cd_tipo_unita = CNRCTB020.TIPO_SAC
And exists (Select 1 from v_unita_organizzativa_valida
Where esercizio = aEs
And cd_unita_organizzativa = a.cd_unita_organizzativa)
And exists (Select 1 from gruppo_cr_uo WHERE esercizio = ESERCIZIO_UO_SPECIALI
And cd_unita_organizzativa = a.cd_unita_organizzativa)
And a.cd_unita_organizzativa <> aCdUo)
Loop
aLiquidGruppoCori:=null;
aOldGruppoCr:=null;
aOldPgCompenso:=null;
aOldComuneCr:=null;
aOldRegioneCr:=null;
For aCori in (select * from v_calcola_liquid_cori_det a
where a.esercizio = aEs
-- Questa clausola definisce la provenienza del compenso:
-- se daEsercizioPrec='Y'
-- vengono estratti compensi con mandati/reversali dell'esercizio precedente a quello di scrivania
-- altrimenti
-- vengono estratti compensi con mandati/reversali nell'esercizio di scrivania
and a.esercizio_doc_cont = decode(daEsercizioPrec,'Y',a.esercizio-1,a.esercizio)
and a.cd_cds = aCdUoSAC.cd_unita_padre
and a.cd_unita_organizzativa = aCdUoSAC.cd_unita_organizzativa
and decode(isLiquidaSuInviato,'Y',a.dt_trasmissione_mandato,a.dt_emissione_mandato) >= trunc(aDtDa)
and decode(isLiquidaSuInviato,'Y',a.dt_trasmissione_mandato,a.dt_emissione_mandato) < trunc(aDtA + 1)
and a.cd_gruppo_cr = GruppoValido(aEs, ESERCIZIO_UO_SPECIALI, a.cd_gruppo_cr, aCdUo)
and not exists (Select 1 from liquid_gruppo_cori_det a1
Where -- Esclude i cori già processati
-- a1.cd_cds = a.cd_cds
a1.esercizio_contributo_ritenuta = a.esercizio_compenso
--And a1.cd_unita_organizzativa = a.cd_unita_organizzativa
And a1.cd_cds_origine = a.cd_cds
And a1.cd_uo_origine = a.cd_unita_organizzativa
And (a1.pg_liquidazione != aPgLiq
Or
a1.esercizio != a.esercizio
Or
--se ad es. verso da 000.407 e poi vado nella 000.101, il pg_liq potrebbe
--essere lo stesso e quindi rivedo il compenso. Devo non farlo vedere
(a1.pg_liquidazione = aPgLiq And
a1.esercizio = a.esercizio And
( (a1.cd_cds = aUOVERSUNIFICATI.cd_unita_padre And
a1.cd_unita_organizzativa = aUOVERSUNIFICATI.cd_unita_organizzativa)
Or
(a1.cd_cds = a.cd_cds And
a1.cd_unita_organizzativa = a.cd_unita_organizzativa) )
)
)
And a1.cd_contributo_ritenuta = a.cd_contributo_ritenuta
And a1.pg_compenso = a.pg_compenso
And a1.ti_ente_percipiente = a.ti_ente_percipiente)
order by cd_unita_organizzativa, cd_gruppo_cr, cd_regione, pg_comune, pg_compenso, cd_contributo_ritenuta)
Loop -- loop 3
-- Lock del compenso
if aCori.cd_gruppo_cr is null then
IBMERR001.RAISE_ERR_GENERICO('Gruppo CORI non trovato per CORI:'||aCori.cd_contributo_ritenuta||' e per UO: '||aCori.cd_unita_organizzativa);
end if;
if aCori.cd_regione is null or aCori.pg_comune is null then
IBMERR001.RAISE_ERR_GENERICO('Dettaglio Gruppo CORI non trovato per CORI:'||aCori.cd_contributo_ritenuta||' di tipo:'||aCori.cd_classificazione_cori||' regione:'||aCori.cd_regione_cori||' comune:'||aCori.pg_comune_cori||' e per UO: '||aCori.cd_unita_organizzativa);
end if;
if aOldPgCompenso is null or aOldPgCompenso<>aCori.pg_compenso then
CNRCTB100.LOCKDOCAMM(CNRCTB100.TI_COMPENSO,aCori.cd_cds,aCori.esercizio_compenso,aCori.cd_unita_organizzativa,aCori.pg_compenso);
aOldPgCompenso:=aCori.pg_compenso;
end if;
if aOldGruppoCr is null
or aOldRegioneCr is null
or aOldComuneCr is null
or aOldGruppoCr<>aCori.cd_gruppo_cr
or aOldRegioneCr<>aCori.cd_regione
or aOldComuneCr<>aCori.pg_comune then
-- Estraggo l'informazione di versamento accentrato per il gruppo specificato
-- Aggiorno le informazioni relative ad importo liquidato e flag accentrato del totale precedente
if aOldGruppoCr is not null then
aggiorna_totale_gruppo_cori(aCdUoSAC.cd_unita_padre,aCdUoSAC.cd_unita_organizzativa, aTotLiquid, aFlAccentrato, aOldGruppoCr, aOldRegioneCr, aOldComuneCr, aPgLiq, aCdCds, aCdUo, aEs);
End if;
Begin
-- Calcolo il nuovo valore del flag accentrato
select decode(aCori.cd_unita_organizzativa,aUOVERSACC.cd_unita_organizzativa,'N',aUOVERSCONTOBI.cd_unita_organizzativa,'N',nvl(d.fl_accentrato,b.fl_accentrato))
into aFlAccentrato
from gruppo_cr b, gruppo_cr_det c, gruppo_cr_uo d
where b.esercizio = ESERCIZIO_UO_SPECIALI
and b.cd_gruppo_cr = aCori.cd_gruppo_cr
and c.esercizio = ESERCIZIO_UO_SPECIALI
and c.cd_gruppo_cr = aCori.cd_gruppo_cr
and c.cd_regione = aCori.cd_regione
and c.pg_comune = aCori.pg_comune
and d.esercizio (+)= c.esercizio
and d.cd_gruppo_cr (+)= c.cd_gruppo_cr
and d.cd_unita_organizzativa (+)=aCori.cd_unita_organizzativa;
Exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Gruppo CORI non trovato');
End;
aTotLiquid:=0;
aOldGruppoCr:=aCori.cd_gruppo_cr;
aOldRegioneCr:=aCori.cd_regione;
aOldComuneCr:=aCori.pg_comune;
aLiquidGruppoCori.ESERCIZIO:=aEs;
aLiquidGruppoCori.CD_CDS:=aCdCds;
aLiquidGruppoCori.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aLiquidGruppoCori.CD_CDS_ORIGINE:=aCori.cd_cds;
aLiquidGruppoCori.CD_UO_ORIGINE:=aCori.cd_unita_organizzativa;
aLiquidGruppoCori.PG_LIQUIDAZIONE:=aPgLiq;
aLiquidGruppoCori.PG_LIQUIDAZIONE_ORIGINE:=aPgLiq;--0;
aLiquidGruppoCori.CD_GRUPPO_CR:=aCori.cd_gruppo_cr;
aLiquidGruppoCori.CD_REGIONE:=aCori.cd_regione;
aLiquidGruppoCori.PG_COMUNE:=aCori.pg_comune;
aLiquidGruppoCori.IM_LIQUIDATO:=null;
aLiquidGruppoCori.FL_ACCENTRATO:='N';
aLiquidGruppoCori.STATO:=CNRCTB575.STATO_LIQUIDATO;
aLiquidGruppoCori.ESERCIZIO_DOC:=null;
aLiquidGruppoCori.CD_CDS_DOC:=null;
aLiquidGruppoCori.PG_DOC:=null;
aLiquidGruppoCori.DACR:=aTSNow;
aLiquidGruppoCori.UTCR:=aUser;
aLiquidGruppoCori.DUVA:=aTSNow;
aLiquidGruppoCori.UTUV:=aUser;
aLiquidGruppoCori.PG_VER_REC:=1;
aOldGruppoCr:=aLiquidGruppoCori.cd_gruppo_cr;
CNRCTB575.INS_LIQUID_GRUPPO_CORI(aLiquidGruppoCori);
end if; --if aOldGruppoCr is null or ....
aLiquidGruppoCoriDet.CD_CDS:=aCdCds;
aLiquidGruppoCoriDet.CD_UNITA_ORGANIZZATIVA:=aCdUo;
aLiquidGruppoCoriDet.CD_CDS_ORIGINE:=aCori.cd_cds;
aLiquidGruppoCoriDet.CD_UO_ORIGINE:=aCori.cd_unita_organizzativa;
aLiquidGruppoCoriDet.ESERCIZIO:=aEs;
aLiquidGruppoCoriDet.ESERCIZIO_CONTRIBUTO_RITENUTA:=aCori.esercizio_compenso;
aLiquidGruppoCoriDet.PG_LIQUIDAZIONE:=aPgLiq;
aLiquidGruppoCoriDET.PG_LIQUIDAZIONE_ORIGINE:=aPgLiq;--0;
aLiquidGruppoCoriDet.CD_GRUPPO_CR:=aCori.cd_gruppo_cr;
aLiquidGruppoCoriDet.CD_REGIONE:=aCori.cd_regione;
aLiquidGruppoCoriDet.PG_COMUNE:=aCori.pg_comune;
aLiquidGruppoCoriDet.CD_CONTRIBUTO_RITENUTA:=aCori.cd_contributo_ritenuta;
aLiquidGruppoCoriDet.PG_COMPENSO:=aCori.pg_compenso;
aLiquidGruppoCoriDet.TI_ENTE_PERCIPIENTE:=aCori.ti_ente_percipiente;
aLiquidGruppoCoriDet.DACR:=aTSNow;
aLiquidGruppoCoriDet.UTCR:=aUser;
aLiquidGruppoCoriDet.DUVA:=aTSNow;
aLiquidGruppoCoriDet.UTUV:=aUser;
aLiquidGruppoCoriDet.PG_VER_REC:=1;
CNRCTB575.INS_LIQUID_GRUPPO_CORI_DET(aLiquidGruppoCoriDet);
aTotLiquid:=aTotLiquid + aCori.im_cori;
End Loop; -- loop 3
if aOldGruppoCr is not null then
aggiorna_totale_gruppo_cori(aCdUoSAC.cd_unita_padre,aCdUoSAC.cd_unita_organizzativa, aTotLiquid, aFlAccentrato, aOldGruppoCr, aOldRegioneCr, aOldComuneCr, aPgLiq, aCdCds, aCdUo, aEs);
end if;
End Loop;
End If; -- fine If aUOVERSUNIFICATI.cd_unita_organizzativa = aCdUo or aUOVERSCONTOBI.cd_unita_organizzativa = aCdUo
end if; -- Diramazione calcolo cori inter
end;
function IsCdsInterfDet (aCdCds varchar2, aEs number) return boolean is
coriInterfDet number;
begin
select count(*)
into coriInterfDet
from LIQUID_CORI_INTERF_CDS
where esercizio = aEs
and cd_cds = aCdCds
And tipo = 'D';
if coriInterfDet > 0 then
return true;
else
return false;
end if;
end;
Function IsCdsInterfTot (aCdCds varchar2, aEs number) return boolean is
coriInterfTot number;
begin
select count(*)
into coriInterfTot
from LIQUID_CORI_INTERF_CDS
where esercizio = aEs
and cd_cds = aCdCds
And tipo = 'T';
if coriInterfTot > 0 then
return true;
else
return false;
end if;
end;
Procedure calcolaLiquidInterf (aCdCds varchar2, aEs number,daEsercizioPrec char,aCdUo varchar2, aPgLiq number, aDtDa date, aDtA date, aUser varchar2) is
lTSNow date;
isLiquidaSuInviato char(1);
lUOVERSACC unita_organizzativa%rowtype;
lLiquidCori liquid_cori%rowtype;
lLiquidGruppoCori liquid_gruppo_cori%rowtype;
lTotLiquidato number (15,2);
lFlAccentrato char (1);
aOldCdCori varchar2(10);
aCdGruppo varchar2(10);
-- lLiquidGruppoCoriInter liquid_cori_interf%rowtype;
begin
lTotLiquidato := 0;
lTSNow:=sysdate;
lLiquidCori.CD_CDS:=aCdCds;
lLiquidCori.CD_UNITA_ORGANIZZATIVA:=aCdUo;
lLiquidCori.ESERCIZIO:=aEs;
lLiquidCori.PG_LIQUIDAZIONE:=aPgLiq;
-- La liquidazione via interfaccia non può essere da esercizio precedente
lLiquidCori.DA_ESERCIZIO_PRECEDENTE:=daEsercizioPrec;
lLiquidCori.DT_DA:=trunc(aDtDa);
lLiquidCori.DT_A:=trunc(aDtA);
lLiquidCori.STATO:=CNRCTB575.STATO_INIZIALE;
lLiquidCori.DACR:=lTSNow;
lLiquidCori.UTCR:=aUser;
lLiquidCori.DUVA:=lTSNow;
lLiquidCori.UTUV:=aUser;
lLiquidCori.PG_VER_REC:=0;
CNRCTB575.INS_LIQUID_CORI(lLiquidCori);
-- isLiquidaSuInviato:=CNRCTB575.ISLIQUIDACORIINVIATO(aEs);
-- Estrazione dell'UO di versamento CORI
lUOVERSACC:=CNRCTB020.getUOVersCori(aEs);
for aLCID in (
select * from liquid_cori_interf_dett where
cd_cds = aCdCds
and cd_unita_organizzativa = aCdUO
and esercizio = decode(daEsercizioPrec,'Y',aEs-1,aEs)
and pg_liquidazione is null
and dt_inizio = trunc(aDtDa)
and dt_fine = trunc(aDtA)
order by cd_contributo_ritenuta
for update nowait
) loop
aOldCdCori:=null;
if aOldCdCori is null or aLCID.cd_contributo_ritenuta <> aOldCdCori then
aOldCdCori:=aLCID.cd_contributo_ritenuta;
begin
select cd_gruppo_cr into aCdGruppo from tipo_cr_base where
esercizio=aEs
and cd_contributo_ritenuta = aLCID.cd_contributo_ritenuta;
exception when NO_DATA_FOUND then
IBMERR001.RAISE_ERR_GENERICO('Gruppo cori non trovato per CORI:'||aLCID.cd_contributo_ritenuta);
end;
end if;
update liquid_cori_interf_dett set
cd_gruppo_cr = aCdGruppo,
pg_liquidazione = aPgLiq,
utuv = aUser,
duva = lTSNow,
pg_ver_rec=pg_ver_rec+1
where
CD_CDS=aLCID.CD_CDS AND
ESERCIZIO=aLCID.ESERCIZIO AND
CD_UNITA_ORGANIZZATIVA=aLCID.CD_UNITA_ORGANIZZATIVA AND
PG_CARICAMENTO=aLCID.PG_CARICAMENTO AND
DT_INIZIO=aLCID.DT_INIZIO AND
DT_FINE=aLCID.DT_FINE AND
MATRICOLA=aLCID.MATRICOLA AND
CODICE_FISCALE=aLCID.CODICE_FISCALE AND
TI_PAGAMENTO=aLCID.TI_PAGAMENTO AND
ESERCIZIO_COMPENSO=aLCID.ESERCIZIO_COMPENSO AND
CD_IMPONIBILE=aLCID.CD_IMPONIBILE AND
TI_ENTE_PERCIPIENTE=aLCID.TI_ENTE_PERCIPIENTE AND
CD_CONTRIBUTO_RITENUTA=aLCID.CD_CONTRIBUTO_RITENUTA;
end loop;
for lLiquidGruppoCoriInter in (select
CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_GRUPPO_CR, CD_REGIONE, PG_COMUNE,
sum(IM_RITENUTA) IM_LIQUIDATO
from liquid_cori_interf_dett
where
cd_cds = aCdCds
and cd_unita_organizzativa = aCdUO
and esercizio = decode(daEsercizioPrec,'Y',aEs-1,aEs)
and pg_liquidazione = aPgLiq
and dt_inizio = trunc(aDtDa)
and dt_fine = trunc(aDtA)
group by CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_GRUPPO_CR, CD_REGIONE, PG_COMUNE
order by CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_GRUPPO_CR, CD_REGIONE, PG_COMUNE
)
loop
select decode(lLiquidGruppoCoriInter.cd_unita_organizzativa,
lUOVERSACC.cd_unita_organizzativa,'N',
nvl(d.fl_accentrato,b.fl_accentrato))
into lFlAccentrato
from gruppo_cr b, gruppo_cr_det c, gruppo_cr_uo d
where b.esercizio = lLiquidGruppoCoriInter.esercizio
and b.cd_gruppo_cr = lLiquidGruppoCoriInter.cd_gruppo_cr
and c.esercizio = lLiquidGruppoCoriInter.esercizio
and c.cd_gruppo_cr = lLiquidGruppoCoriInter.cd_gruppo_cr
and c.cd_regione = lLiquidGruppoCoriInter.cd_regione
and c.pg_comune = lLiquidGruppoCoriInter.pg_comune
and d.esercizio (+) = c.esercizio
and d.cd_gruppo_cr (+) = c.cd_gruppo_cr
and d.cd_unita_organizzativa (+) = lLiquidGruppoCoriInter.cd_unita_organizzativa;
if lFlAccentrato = 'Y' then
lLiquidGruppoCori.CD_CDS := lLiquidGruppoCoriInter.cd_cds;
lLiquidGruppoCori.ESERCIZIO := aEs;
lLiquidGruppoCori.CD_UNITA_ORGANIZZATIVA := lLiquidGruppoCoriInter.CD_UNITA_ORGANIZZATIVA;
lLiquidGruppoCori.PG_LIQUIDAZIONE := lLiquidCori.PG_LIQUIDAZIONE;
lLiquidGruppoCori.CD_CDS_ORIGINE := lLiquidGruppoCoriInter.cd_cds;
lLiquidGruppoCori.CD_UO_ORIGINE := lLiquidGruppoCoriInter.CD_UNITA_ORGANIZZATIVA;
lLiquidGruppoCori.PG_LIQUIDAZIONE_ORIGINE := lLiquidCori.PG_LIQUIDAZIONE;
lLiquidGruppoCori.CD_GRUPPO_CR := lLiquidGruppoCoriInter.CD_GRUPPO_CR;
lLiquidGruppoCori.CD_REGIONE := lLiquidGruppoCoriInter.CD_REGIONE;
lLiquidGruppoCori.PG_COMUNE := lLiquidGruppoCoriInter.PG_COMUNE;
lLiquidGruppoCori.IM_LIQUIDATO := nvl(lLiquidGruppoCoriInter.IM_LIQUIDATO,0);
lLiquidGruppoCori.FL_ACCENTRATO := lFlAccentrato;
lLiquidGruppoCori.STATO := CNRCTB575.STATO_TRASFERITO;
lLiquidGruppoCori.CD_CDS_DOC := NULL;
lLiquidGruppoCori.ESERCIZIO_DOC := NULL;
lLiquidGruppoCori.PG_DOC := NULL;
lLiquidGruppoCori.CD_CDS_OBB_ACCENTR := NULL;
lLiquidGruppoCori.ESERCIZIO_OBB_ACCENTR := NULL;
lLiquidGruppoCori.ESERCIZIO_ORI_OBB_ACCENTR := NULL;
lLiquidGruppoCori.PG_OBB_ACCENTR := NULL;
lLiquidGruppoCori.DACR := lTSNow;
lLiquidGruppoCori.UTCR := aUser;
lLiquidGruppoCori.DUVA := lTSNow;
lLiquidGruppoCori.UTUV := aUser;
lLiquidGruppoCori.PG_VER_REC := 1;
CNRCTB575.INS_LIQUID_GRUPPO_CORI(lLiquidGruppoCori);
lTotLiquidato := lTotLiquidato + lLiquidGruppoCoriInter.IM_LIQUIDATO;
else
IBMERR001.RAISE_ERR_GENERICO('Il gruppo cori relativo all''unita organizzativa risulta essere non accentrato');
end if;
end loop;
end;
Procedure calcolaLiquidInterfTot (aCdCds varchar2, aEs number,daEsercizioPrec char,aCdUo varchar2, aPgLiq number, aDtDa date, aDtA date, aUser varchar2) is
lTSNow date;
isLiquidaSuInviato char(1);
lUOVERSACC unita_organizzativa%rowtype;
lLiquidCori liquid_cori%rowtype;
lLiquidGruppoCori liquid_gruppo_cori%rowtype;
lTotLiquidato number (15,2);
lFlAccentrato char (1);
Begin
lTotLiquidato := 0;
lTSNow:=sysdate;
lLiquidCori.CD_CDS:=aCdCds;
lLiquidCori.CD_UNITA_ORGANIZZATIVA:=aCdUo;
lLiquidCori.ESERCIZIO:=aEs;
lLiquidCori.PG_LIQUIDAZIONE:=aPgLiq;
-- La liquidazione via interfaccia non può essere da esercizio precedente
lLiquidCori.DA_ESERCIZIO_PRECEDENTE:=daEsercizioPrec;
lLiquidCori.DT_DA:=trunc(aDtDa);
lLiquidCori.DT_A:=trunc(aDtA);
lLiquidCori.STATO:=CNRCTB575.STATO_INIZIALE;
lLiquidCori.DACR:=lTSNow;
lLiquidCori.UTCR:=aUser;
lLiquidCori.DUVA:=lTSNow;
lLiquidCori.UTUV:=aUser;
lLiquidCori.PG_VER_REC:=0;
CNRCTB575.INS_LIQUID_CORI(lLiquidCori);
-- Estrazione dell'UO di versamento CORI
lUOVERSACC:=CNRCTB020.getUOVersCori(aEs);
--Valorizzazione del progressivo liquidazionje interfaccia
Update liquid_cori_interf
Set pg_liquidazione = aPgLiq,
utuv = aUser,
duva = lTSNow,
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
pg_liquidazione Is Null;
for lLiquidGruppoCoriInter in
(Select CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_GRUPPO_CR,
CD_REGIONE, PG_COMUNE, Nvl(Sum(IM_LIQUIDATO),0) IM_LIQUIDATO
From liquid_cori_interf
Where cd_cds = aCdCds
And cd_unita_organizzativa = aCdUO
And esercizio = decode(daEsercizioPrec,'Y',aEs-1,aEs)
And pg_liquidazione = aPgLiq
And dt_inizio = trunc(aDtDa)
And dt_fine = trunc(aDtA)
Group by CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_GRUPPO_CR, CD_REGIONE, PG_COMUNE
Order by CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_GRUPPO_CR, CD_REGIONE, PG_COMUNE)
Loop
Select decode(lLiquidGruppoCoriInter.cd_unita_organizzativa,
lUOVERSACC.cd_unita_organizzativa,'N',
nvl(d.fl_accentrato,b.fl_accentrato))
Into lFlAccentrato
From gruppo_cr b, gruppo_cr_det c, gruppo_cr_uo d
Where b.esercizio = lLiquidGruppoCoriInter.esercizio
And b.cd_gruppo_cr = lLiquidGruppoCoriInter.cd_gruppo_cr
And c.esercizio = lLiquidGruppoCoriInter.esercizio
And c.cd_gruppo_cr = lLiquidGruppoCoriInter.cd_gruppo_cr
And c.cd_regione = lLiquidGruppoCoriInter.cd_regione
And c.pg_comune = lLiquidGruppoCoriInter.pg_comune
And d.esercizio (+) = c.esercizio
And d.cd_gruppo_cr (+) = c.cd_gruppo_cr
And d.cd_unita_organizzativa (+) = lLiquidGruppoCoriInter.cd_unita_organizzativa;
if lFlAccentrato = 'Y' then
lLiquidGruppoCori.CD_CDS := lLiquidGruppoCoriInter.cd_cds;
lLiquidGruppoCori.ESERCIZIO := aEs;
lLiquidGruppoCori.CD_UNITA_ORGANIZZATIVA := lLiquidGruppoCoriInter.CD_UNITA_ORGANIZZATIVA;
lLiquidGruppoCori.PG_LIQUIDAZIONE := lLiquidCori.PG_LIQUIDAZIONE;
lLiquidGruppoCori.CD_CDS_ORIGINE := lLiquidGruppoCoriInter.cd_cds;
lLiquidGruppoCori.CD_UO_ORIGINE := lLiquidGruppoCoriInter.CD_UNITA_ORGANIZZATIVA;
lLiquidGruppoCori.PG_LIQUIDAZIONE_ORIGINE := lLiquidCori.PG_LIQUIDAZIONE;
lLiquidGruppoCori.CD_GRUPPO_CR := lLiquidGruppoCoriInter.CD_GRUPPO_CR;
lLiquidGruppoCori.CD_REGIONE := lLiquidGruppoCoriInter.CD_REGIONE;
lLiquidGruppoCori.PG_COMUNE := lLiquidGruppoCoriInter.PG_COMUNE;
lLiquidGruppoCori.IM_LIQUIDATO := nvl(lLiquidGruppoCoriInter.IM_LIQUIDATO,0);
lLiquidGruppoCori.FL_ACCENTRATO := lFlAccentrato;
lLiquidGruppoCori.STATO := CNRCTB575.STATO_TRASFERITO;
lLiquidGruppoCori.CD_CDS_DOC := NULL;
lLiquidGruppoCori.ESERCIZIO_DOC := NULL;
lLiquidGruppoCori.PG_DOC := NULL;
lLiquidGruppoCori.CD_CDS_OBB_ACCENTR := NULL;
lLiquidGruppoCori.ESERCIZIO_OBB_ACCENTR := NULL;
lLiquidGruppoCori.ESERCIZIO_ORI_OBB_ACCENTR := NULL;
lLiquidGruppoCori.PG_OBB_ACCENTR := NULL;
lLiquidGruppoCori.DACR := lTSNow;
lLiquidGruppoCori.UTCR := aUser;
lLiquidGruppoCori.DUVA := lTSNow;
lLiquidGruppoCori.UTUV := aUser;
lLiquidGruppoCori.PG_VER_REC := 1;
CNRCTB575.INS_LIQUID_GRUPPO_CORI(lLiquidGruppoCori);
lTotLiquidato := lTotLiquidato + lLiquidGruppoCoriInter.IM_LIQUIDATO;
else
IBMERR001.RAISE_ERR_GENERICO('Il gruppo cori relativo all''unita organizzativa risulta essere non accentrato');
end if;
end loop;
end;
function IsGruppoF24EP (aEs number, aGruppo varchar2) return boolean is
countGruppi number;
begin
Select count(*)
Into countGruppi
From GRUPPO_CR
Where esercizio = aEs
And cd_gruppo_cr = aGruppo
And (fl_f24online = 'Y' or fl_f24online_previd = 'Y');
if countGruppi > 0 then
return true;
else
return false;
end if;
end;
function GruppoF24EP (aEs number, aGruppo varchar2) return varchar2 is
gruppo varchar2(10);
begin
Select cd_gruppo_cr
Into gruppo
From GRUPPO_CR
Where esercizio = aEs
And cd_gruppo_cr = aGruppo
And (fl_f24online = 'Y' or fl_f24online_previd = 'Y');
return gruppo;
exception
when others then
gruppo := 'XXXXXXXXXX';
return gruppo;
end;
function GruppoValido (aEs number, ESERCIZIO_UO_SPECIALI number, aGruppo varchar2, aCdUo varchar2) return varchar2 is
gruppo varchar2(10);
aUOVERSACC unita_organizzativa%rowtype;
aUOVERSCONTOBI unita_organizzativa%rowtype;
CONTA NUMBER;
begin
aUOVERSACC:=CNRCTB020.getUOVersCori(ESERCIZIO_UO_SPECIALI);
aUOVERSCONTOBI:=CNRCTB020.getUOVersCoriContoBI(ESERCIZIO_UO_SPECIALI);
-- Se la UO di versamento accentrato è uguale alla UO dei versamenti su Conto BI tutti i gruppi sono validi
select count(1) into conta
from unita_organizzativa u, gruppo_cr_uo c
where u.cd_unita_organizzativa = aCdUo
and u.cd_unita_organizzativa = c.cd_unita_organizzativa
and c.esercizio = ESERCIZIO_UO_SPECIALI
and fl_cds = 'N'
and cd_tipo_unita = CNRCTB020.TIPO_SAC;
IF (aUOVERSACC.cd_unita_organizzativa = aUOVERSCONTOBI.cd_unita_organizzativa) THEN
RETURN aGruppo;
ELSif aUOVERSACC.cd_unita_organizzativa = aCdUo or CONTA > 0 then
Begin
Select cd_gruppo_cr
Into gruppo
From GRUPPO_CR
Where esercizio = aEs
And cd_gruppo_cr = aGruppo
And (fl_f24online = 'N' and fl_f24online_previd = 'N');
Exception
when others then
gruppo := 'XXXXXXXXXX';
return gruppo;
End;
elsif aUOVERSCONTOBI.cd_unita_organizzativa = aCdUo then
Begin
Select cd_gruppo_cr
Into gruppo
From GRUPPO_CR
Where esercizio = aEs
And cd_gruppo_cr = aGruppo
And (fl_f24online = 'Y' or fl_f24online_previd = 'Y');
Exception
when others then
gruppo := 'XXXXXXXXXX';
return gruppo;
End;
-- la UO in processo non è nè quella dei versamenti accentrati, nè una della SAC, nè quella dei versamente su Conto BI
-- quindi tutti i gruppi sono validi
else
return aGruppo;
end if;
return gruppo;
end;
Procedure CREALIQUIDCORIASSPGIRO(aLiquid liquid_cori%rowtype,aGruppo varchar2, aRegione varchar2, aComune number,aTipo varchar2,aObbNew obbligazione%rowtype,aObbOld obbligazione%rowtype,aAccNew accertamento%rowtype,aAccOld accertamento%rowtype,aUser varchar2,aTSNow date) is
begin
if aTipo = 'S' then
insert into LIQUID_CORI_ASS_PGIRO (
CD_CDS,
ESERCIZIO,
CD_UNITA_ORGANIZZATIVA,
PG_LIQUIDAZIONE,
CD_GRUPPO_CR,
CD_REGIONE,
PG_COMUNE,
TIPO_PGIRO,
CD_CDS_PGIRO_NEW,
ESERCIZIO_PGIRO_NEW,
PG_PGIRO_NEW,
ESERCIZIO_ORI_PGIRO_NEW,
CD_CDS_PGIRO_ORIGINE,
ESERCIZIO_PGIRO_ORIGINE,
PG_PGIRO_ORIGINE,
ESERCIZIO_ORI_PGIRO_ORIGINE,
UTCR,
DACR,
UTUV,
DUVA,
PG_VER_REC)
values(
aLiquid.CD_CDS,
aLiquid.ESERCIZIO,
aLiquid.CD_UNITA_ORGANIZZATIVA,
aLiquid.PG_LIQUIDAZIONE,
aGruppo,
aRegione,
aComune,
aTipo,
aObbNew.CD_CDS,
aObbNew.ESERCIZIO,
aObbNew.PG_OBBLIGAZIONE,
aObbNew.ESERCIZIO_ORIGINALE,
aObbOld.CD_CDS,
aObbOld.ESERCIZIO,
aObbOld.PG_OBBLIGAZIONE,
aObbOld.ESERCIZIO_ORIGINALE,
aUser,
aTSNow,
aUser,
aTSNow,
1);
Elsif aTipo = 'E' then
insert into LIQUID_CORI_ASS_PGIRO (
CD_CDS,
ESERCIZIO,
CD_UNITA_ORGANIZZATIVA,
PG_LIQUIDAZIONE,
CD_GRUPPO_CR,
CD_REGIONE,
PG_COMUNE,
TIPO_PGIRO,
CD_CDS_PGIRO_NEW,
ESERCIZIO_PGIRO_NEW,
PG_PGIRO_NEW,
ESERCIZIO_ORI_PGIRO_NEW,
CD_CDS_PGIRO_ORIGINE,
ESERCIZIO_PGIRO_ORIGINE,
PG_PGIRO_ORIGINE,
ESERCIZIO_ORI_PGIRO_ORIGINE,
UTCR,
DACR,
UTUV,
DUVA,
PG_VER_REC)
values(
aLiquid.CD_CDS,
aLiquid.ESERCIZIO,
aLiquid.CD_UNITA_ORGANIZZATIVA,
aLiquid.PG_LIQUIDAZIONE,
aGruppo,
aRegione,
aComune,
aTipo,
aAccNew.CD_CDS,
aAccNew.ESERCIZIO,
aAccNew.PG_ACCERTAMENTO,
aAccNew.ESERCIZIO_ORIGINALE,
aAccOld.CD_CDS,
aAccOld.ESERCIZIO,
aAccOld.PG_ACCERTAMENTO,
aAccOld.ESERCIZIO_ORIGINALE,
aUser,
aTSNow,
aUser,
aTSNow,
1);
End if;
end;
Procedure CREA_ASS_PGIRO_GR_C(tb_ass_pgiro tab_ass_pgiro, aUser varchar2, aTSNow date) is
begin
For i in 1..Nvl(tb_ass_pgiro.Count,0) Loop
insert into ASS_PGIRO_GRUPPO_CENTRO (
cd_cds ,
cd_uo ,
cd_cds_orig ,
cd_uo_orig ,
esercizio ,
es_compenso ,
pg_compenso ,
pg_liq ,
pg_liq_orig ,
cd_gr_cr ,
cd_regione ,
pg_comune ,
cd_cori ,
ti_en_per ,
ti_origine ,
es_acc ,
es_ori_acc ,
cds_acc ,
pg_acc ,
uo_acc ,
es_obb ,
es_ori_obb ,
cds_obb ,
pg_obb ,
uo_obb ,
cd_cds_acc_pgiro ,
es_acc_pgiro ,
es_orig_acc_pgiro ,
pg_acc_pgiro ,
uo_acc_pgiro ,
voce_acc_pgiro ,
cd_cds_obb_pgiro ,
es_obb_pgiro ,
es_orig_obb_pgiro ,
pg_obb_pgiro ,
ti_origine_pgiro ,
uo_obb_pgiro ,
voce_obb_pgiro ,
CD_CDS_ACC_PGIRO_OPP,
ES_ACC_PGIRO_OPP,
ES_ORIG_ACC_PGIRO_OPP,
PG_ACC_PGIRO_OPP,
CD_CDS_OBB_PGIRO_OPP,
ES_OBB_PGIRO_OPP,
ES_ORIG_OBB_PGIRO_OPP,
PG_OBB_PGIRO_OPP,
DACR ,
UTCR ,
DUVA ,
UTUV ,
PG_VER_REC)
values(
tb_ass_pgiro(i).cd_cds ,
tb_ass_pgiro(i).cd_uo ,
tb_ass_pgiro(i).cd_cds_orig,
tb_ass_pgiro(i).cd_uo_orig ,
tb_ass_pgiro(i).esercizio ,
tb_ass_pgiro(i).es_compenso ,
tb_ass_pgiro(i).pg_compenso ,
tb_ass_pgiro(i).pg_liq ,
tb_ass_pgiro(i).pg_liq_orig,
tb_ass_pgiro(i).cd_gr_cr ,
tb_ass_pgiro(i).cd_regione ,
tb_ass_pgiro(i).pg_comune ,
tb_ass_pgiro(i).cd_cori ,
tb_ass_pgiro(i).ti_en_per,
tb_ass_pgiro(i).ti_origine,
tb_ass_pgiro(i).es_acc,
tb_ass_pgiro(i).es_ori_acc,
tb_ass_pgiro(i).cds_acc,
tb_ass_pgiro(i).pg_acc,
tb_ass_pgiro(i).uo_acc,
tb_ass_pgiro(i).es_obb,
tb_ass_pgiro(i).es_ori_obb,
tb_ass_pgiro(i).cds_obb,
tb_ass_pgiro(i).pg_obb,
tb_ass_pgiro(i).uo_obb,
tb_ass_pgiro(i).cd_cds_acc_pgiro ,
tb_ass_pgiro(i).es_acc_pgiro ,
tb_ass_pgiro(i).es_orig_acc_pgiro,
tb_ass_pgiro(i).pg_acc_pgiro ,
tb_ass_pgiro(i).uo_acc_pgiro,
tb_ass_pgiro(i).voce_acc_pgiro ,
tb_ass_pgiro(i).cd_cds_obb_pgiro ,
tb_ass_pgiro(i).es_obb_pgiro ,
tb_ass_pgiro(i).es_orig_obb_pgiro,
tb_ass_pgiro(i).pg_obb_pgiro ,
tb_ass_pgiro(i).ti_origine_pgiro ,
tb_ass_pgiro(i).uo_obb_pgiro,
tb_ass_pgiro(i).voce_obb_pgiro ,
tb_ass_pgiro(i).CD_CDS_ACC_PGIRO_OPP,
tb_ass_pgiro(i).ES_ACC_PGIRO_OPP,
tb_ass_pgiro(i).ES_ORIG_ACC_PGIRO_OPP,
tb_ass_pgiro(i).PG_ACC_PGIRO_OPP,
tb_ass_pgiro(i).CD_CDS_OBB_PGIRO_OPP,
tb_ass_pgiro(i).ES_OBB_PGIRO_OPP,
tb_ass_pgiro(i).ES_ORIG_OBB_PGIRO_OPP,
tb_ass_pgiro(i).PG_OBB_PGIRO_OPP,
aTSNow,
aUser,
aTSNow,
aUser,
1);
End Loop;
end;
End;
/
© 2015 - 2024 Weber Informatics LLC | Privacy Policy