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

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

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

  CREATE OR REPLACE PACKAGE BODY "UTIL_BILANCIO" is

PROCEDURE STORNO_SP_FINALE_RIAPERTO_2005 (aES In NUMBER, aCDS In VARCHAR2) Is

NUMERO NUMBER;

BEGIN

For testate in (SELECT T.CD_cds, T.CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, TI_ISTITUZ_COMMERC,
       NVL(sum(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)-NVL(sum(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0) im_movimento
FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
WHERE  T.CD_CDS  = D.CD_CDS   AND
       T.ESERCIZIO = D.ESERCIZIO AND
       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA and
       T.PG_SCRITTURA = D.PG_SCRITTURA AND
       T.ATTIVA = 'Y' AND
       cd_voce_ep = 'X.01.002' And
       T.CD_CAUSALE_COGE = 'RIAPERTURA_CONTI' AND
       T.ESERCIZIO  = aEs  And
       T.CD_CDS = Nvl(aCds, T.CD_CDS)
Group BY T.CD_cds, T.CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, TI_ISTITUZ_COMMERC) Loop

NUMERO := CNRCTB200.getNextProgressivo(aEs, testate.CD_Cds, testate.Cd_Unita_Organizzativa, 'COGE',
                                       'STORNO_SP_FINALE', Trunc(SYSDATE));

Insert Into scrittura_partita_doppia (
CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO, IM_SCRITTURA,
TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA,
ATTIVA, DACR, UTCR, DUVA, UTUV, PG_VER_REC)
Values
(testate.CD_CDS, aEs, testate.CD_UNITA_ORGANIZZATIVA, numero, 'CAUSALE', 0, ABS(TESTATE.IM_MOVIMENTO),
'P', TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D', 'Storno scritture riapertura S.P. Finale nel 2006 ',
'Y', Sysdate, 'STORNO_SP_FINALE', Sysdate, 'STORNO_SP_FINALE', 1);

If TESTATE.im_movimento < 0 Then  -- SALDO DARE

Insert INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, aEs, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 1,
0, testate.CD_VOCE_EP, ABS(TESTATE.IM_MOVIMENTO), 'A',
TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
Sysdate, 'STORNO_SP_FINALE', Sysdate, 'STORNO_SP_FINALE', 1,
TESTATE.ti_istituz_commerc);

Insert INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, aEs, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 2,
0, 'X.01.001', ABS(TESTATE.IM_MOVIMENTO), 'D',
TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
Sysdate, 'STORNO_SP_FINALE', Sysdate, 'STORNO_SP_FINALE', 1,
TESTATE.ti_istituz_commerc);

Elsif TESTATE.im_movimento > 0 Then  -- SALDO AVERE

Insert INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, aEs, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 1,
0, testate.CD_VOCE_EP, ABS(TESTATE.IM_MOVIMENTO), 'D',
TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
Sysdate, 'STORNO_SP_FINALE', Sysdate, 'STORNO_SP_FINALE', 1,
TESTATE.ti_istituz_commerc);

Insert INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, aEs, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 2,
0, 'X.01.001', ABS(TESTATE.IM_MOVIMENTO), 'A',
TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
Sysdate, 'STORNO_SP_FINALE', Sysdate, 'STORNO_SP_FINALE', 1,
TESTATE.ti_istituz_commerc);

End If;

End Loop;

--commit;

End;


PROCEDURE STORNO_SP_FINALE_A_UT_ES_PREC (aES In NUMBER, aCDS In VARCHAR2) Is

NUMERO NUMBER;
aVoceSA varchar2(45);
 begin
  aVoceSA:=CNRCTB015.getVal02PerChiave(aEs, 'VOCEEP_SPECIALE','UTILE_PERDITA_ESERCIZIO');

For testate in (SELECT T.CD_cds, T.CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, TI_ISTITUZ_COMMERC,
       NVL(sum(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)-NVL(sum(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0) im_movimento
FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
WHERE  T.CD_CDS  = D.CD_CDS   AND
       T.ESERCIZIO = D.ESERCIZIO AND
       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA and
       T.PG_SCRITTURA = D.PG_SCRITTURA AND
       T.ATTIVA = 'Y' AND
       cd_voce_ep = 'X.01.002' And -- STATO PATRIMONIALE FINALE RIAPERTO
       T.CD_CAUSALE_COGE = 'RIAPERTURA_CONTI' AND
       T.ESERCIZIO  = aEs  And
       T.CD_CDS = Nvl(aCds, T.CD_CDS)
Group BY T.CD_cds, T.CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, TI_ISTITUZ_COMMERC) Loop

NUMERO := CNRCTB200.getNextProgressivo(aEs, testate.CD_Cds, testate.Cd_Unita_Organizzativa, 'COGE',
                                       'STO_AV_ES_PREC_'||aEs, Trunc(SYSDATE));

Insert Into scrittura_partita_doppia (
CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO, IM_SCRITTURA,
TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA,
ATTIVA, DACR, UTCR, DUVA, UTUV, PG_VER_REC)
Values
(testate.CD_CDS, aEs, testate.CD_UNITA_ORGANIZZATIVA, numero, 'CAUSALE', 0, ABS(TESTATE.IM_MOVIMENTO),
'P', TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), 'D', 'Storno S.P. Finale riaperto '||aEs||' a Avanzo Esercizi Precedenti',
'Y', Sysdate, 'STO_AV_ES_PREC_'||aEs, Sysdate, 'STO_AV_ES_PREC_'||aEs, 1);

If TESTATE.im_movimento < 0 Then  -- SALDO DARE

Insert INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, aEs, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 1,
0, testate.CD_VOCE_EP, ABS(TESTATE.IM_MOVIMENTO), 'A',
TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), 'D',
Sysdate, 'STO_AV_ES_PREC_'||aEs, Sysdate, 'STO_AV_ES_PREC_'||aEs, 1,
TESTATE.ti_istituz_commerc);

Insert INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, aEs, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 2,
0,aVoceSA, ABS(TESTATE.IM_MOVIMENTO), 'D',
TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), 'D',
Sysdate, 'STO_AV_ES_PREC_'||aEs, Sysdate, 'STO_AV_ES_PREC_'||aEs, 1,
TESTATE.ti_istituz_commerc);

Elsif TESTATE.im_movimento > 0 Then  -- SALDO AVERE

Insert INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, aEs, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 1,
0, testate.CD_VOCE_EP, ABS(TESTATE.IM_MOVIMENTO), 'D',
TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), 'D',
Sysdate, 'STO_AV_ES_PREC_'||aEs, Sysdate, 'STO_AV_ES_PREC_'||aEs, 1,
TESTATE.ti_istituz_commerc);

Insert INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, aEs, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 2,
0, aVoceSA, ABS(TESTATE.IM_MOVIMENTO), 'A',
TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), TO_DATE('01/01/'||aEs, 'DD/MM/YYYY'), 'D',
Sysdate, 'STO_AV_ES_PREC_'||aEs, Sysdate, 'STO_AV_ES_PREC_'||aEs, 1,
TESTATE.ti_istituz_commerc);

End If;
CANCELLA_SALDI(aEs,TESTATE.CD_CDS);
AGGIORNA_SALDI(aEs,TESTATE.CD_CDS);
End Loop;
Commit;
End;


PROCEDURE Storno_Scritture_2005 IS

NUMERO NUMBER;

BEGIN

FOR testate IN (SELECT T.CD_cds, T.CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, TI_ISTITUZ_COMMERC,t.esercizio,
       NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)-NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0) im_movimento
FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
WHERE  T.CD_CDS  = D.CD_CDS   AND
       T.ESERCIZIO = D.ESERCIZIO AND
       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
       T.PG_SCRITTURA = D.PG_SCRITTURA AND
       T.ATTIVA = 'Y' AND
       t.ESERCIZIO=2005 AND
       cd_causale_coge ='RIAPERTURA_CONTI' AND
       D.CD_VOCE_EP = 'P.01.004'
GROUP BY T.CD_cds, T.CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, TI_ISTITUZ_COMMERC,t.esercizio) LOOP

NUMERO := Cnrctb200.getNextProgressivo(testate.esercizio, testate.CD_Cds, testate.Cd_Unita_Organizzativa, 'COGE',
                                       'CED', TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA (
CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO, IM_SCRITTURA,
TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA,
ATTIVA, DACR, UTCR, DUVA, UTUV, PG_VER_REC)
VALUES
(testate.CD_CDS, testate.esercizio, testate.CD_UNITA_ORGANIZZATIVA, numero, 'CAUSALE', 0, ABS(TESTATE.IM_MOVIMENTO),
'P', TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D', 'Storno scritture riapertura S.P. iniziale nel 2005 ',
'Y', SYSDATE, 'CED', SYSDATE, 'CED', 1);

IF TESTATE.im_movimento < 0 THEN  -- SALDO DARE

INSERT INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, testate.esercizio, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 1,
0, testate.CD_VOCE_EP, ABS(TESTATE.IM_MOVIMENTO), 'A',
TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
SYSDATE, 'CED', SYSDATE, 'CED', 1,TESTATE.ti_istituz_commerc);

INSERT INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, testate.esercizio, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 2,
0, 'X.01.001', ABS(TESTATE.IM_MOVIMENTO), 'D',
TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
SYSDATE, 'CED', SYSDATE, 'CED', 1,TESTATE.ti_istituz_commerc);

ELSIF TESTATE.im_movimento > 0 THEN  -- SALDO AVERE

INSERT INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, testate.esercizio, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 1,
0, testate.CD_VOCE_EP, ABS(TESTATE.IM_MOVIMENTO), 'D',
TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
SYSDATE, 'CED', SYSDATE, 'CED', 1,TESTATE.ti_istituz_commerc);

INSERT INTO MOVIMENTO_COGE
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
VALUES
(TESTATE.CD_CDS, testate.esercizio, TESTATE.CD_UNITA_ORGANIZZATIVA, NUMERO, 2,
0, 'X.01.001', ABS(TESTATE.IM_MOVIMENTO), 'A',
TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
SYSDATE, 'CED', SYSDATE, 'CED', 1,
TESTATE.ti_istituz_commerc);

END IF;

END LOOP;

--commit;

END;

/*
PROCEDURE STORNA_AV_ES_PREC (aes in number) is
NUMERO NUMBER;

BEGIN

------------------ AVANZO DA STORNARE AD AVANZO ES. PRECEDENTE

FOR SALDI IN
(SELECT * FROM STORNI_AVANZO
 Order By 1, 2 ) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'STORNO_AVANZO',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aEs, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.DIFF), 'P', TO_DATE('01/01/2004', 'DD/MM/YYYY'),
'D', 'Storno Avanzo / Avanzo Esercizi Precedenti',
'Y', TRUNC(SYSDATE), 'STORNO_AVANZO', TRUNC(SYSDATE), 'STORNO_AVANZO', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.DIFF > 0 Then -- QUINDI E' MAGGIORE DARE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, Aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_AVANZO', TRUNC(SYSDATE), 'STORNO_AVANZO', 1, SALDI.TI_ISTITUZ_COMMERC);

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, 'N.02.003',
        ABS(SALDI.DIFF), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_AVANZO', TRUNC(SYSDATE), 'STORNO_AVANZO', 1, SALDI.TI_ISTITUZ_COMMERC);

ELSIF SALDI.DIFF < 0 Then -- SE INVECE E' MAGGIORE AVERE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_AVANZO', TRUNC(SYSDATE), 'STORNO_AVANZO', 1, SALDI.TI_ISTITUZ_COMMERC);

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, 'N.02.003',
        ABS(SALDI.DIFF), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_AVANZO', TRUNC(SYSDATE), 'STORNO_AVANZO', 1, SALDI.TI_ISTITUZ_COMMERC);

END IF;

END LOOP;

--commit;

END;
*/

PROCEDURE storna_att_pass_es_chiuso_2 (aes in NUMBER, CDS_IN VARCHAR2) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   cd_unita_organizzativa = Decode (CDS_IN, '*', cd_unita_organizzativa, CDS_IN) And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

For SALDI IN
(SELECT D.CD_CDS,
        D.CD_UNITA_ORGANIZZATIVA,
       CD_VOCE_EP,
       TI_ISTITUZ_COMMERC,
       NVL(sum(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0) DARE,
       NVL(sum(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0) AVERE,
       NVL(sum(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0)-NVL(sum(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0) DIFF
FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
WHERE  T.CD_CDS  = D.CD_CDS   AND
       T.ESERCIZIO = D.ESERCIZIO AND
       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA And
       T.CD_cds = ACDS.CD_UNITA_ORGANIZZATIVA And
       T.PG_SCRITTURA = D.PG_SCRITTURA AND
       T.ESERCIZIO  = AES AND
       T.ATTIVA = 'Y' AND
       TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY') > aes AND
       TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY') != aes and
       (CD_VOCE_EP) IN (SELECT CD_VOCE_EP FROM CNR_ASS_CONTO_GRUPPO_EP WHERE ESERCIZIO = AES AND
                        CD_PIANO_GRUPPI != 'CE') AND
     ((T.CD_CAUSALE_COGE IS NULL) OR
      (T.CD_CAUSALE_COGE != 'CHIUSURA_CONTO_ECONOMICO' AND
       T.CD_CAUSALE_COGE != 'CHIUSURA_STATO_PATRIMONIALE' AND
       T.CD_CAUSALE_COGE != 'DETERMINAZIONE_UTILE_PERDITA'))
GROUP BY D.CD_CDS, D.CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, TI_ISTITUZ_COMMERC) LOOP

If SALDI.DIFF != 0 Then

  NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE',
                                         'STORNO_POST_CHI_2', TRUNC(SYSDATE));

  INSERT INTO SCRITTURA_PARTITA_DOPPIA
  (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
  IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
  DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
  VALUES
  (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
  'CAUSALE', 0, ABS(SALDI.diff), 'P', TO_DATE('31/12/2003', 'DD/MM/YYYY'),
  'D', 'Storno post-chiusura attivita'' competenza esercizio precedente SCRITTURA',
  'Y', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.CD_CDS,
  SALDI.CD_UNITA_ORGANIZZATIVA);

End If;

-------------------------------- STORNO DELLA SCRITTURA --------------------------------

IF SALDI.DIFF > 0 THEN

        -- RETTIFICA L'ATTIVITA' CON UNA SCRITTURA IN AVERE 2003

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2002', 'DD/MM/YYYY'), TO_DATE('31/12/2002', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STORNATO CON STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

ELSIF SALDI.DIFF < 0 THEN

        -- RETTIFICA L'ATTIVITA' CON UNA SCRITTURA IN DARE 2003

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2002', 'DD/MM/YYYY'), TO_DATE('31/12/2002', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STORNATO CON STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

END IF;

----------------------------- STORNO DELLA CHIUSURA --------------------------------
-------  SIA DELLO STATO PATRIMONIALE INIZIALE CHE DELL'ATTIVITA/PASSIVITA  --------

If SALDI.DIFF != 0 Then

  NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE',
                                         'STORNO_POST_CHI_2', TRUNC(SYSDATE));

  INSERT INTO SCRITTURA_PARTITA_DOPPIA
  (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
  IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA, CD_CAUSALE_COGE,
  DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
  VALUES
  (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
  'CAUSALE', 0, ABS(SALDI.diff), 'P', TO_DATE('31/12/2003', 'DD/MM/YYYY'),
  'D', 'Storno post-chiusura attivita'' competenza esercizio precedente CHIUSURA',
  'Y', 'CHIUSURA_STATO_PATRIMONIALE', Trunc(SYSDATE), 'STORNO_POST_CHI_2', Trunc(SYSDATE),
  'STORNO_POST_CHI_2', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

End If;

IF SALDI.DIFF > 0 THEN

        -- D    ATTIVITA'/PASSIVITA'
        -- A    SPF
        -- D    SPF
        -- A    SPI

        -- ATTIVITA'/PASSIVITA'

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 3, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 4, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

ELSIF SALDI.DIFF < 0 THEN

        -- A    ATTIVITA'/PASSIVITA'
        -- D    SPF
        -- A    SPF
        -- D    SPI

        -- ATTIVITA'/PASSIVITA'

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 3, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 4, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

END IF;

------------------------------- STORNO DELLA RIAPERTURA -------------------------------

If SALDI.DIFF != 0 Then

  NUMERO := CNRCTB200.getNextProgressivo(aes+1, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE',
                                         'STORNO_POST_CHI_2', Trunc(SYSDATE));

  INSERT INTO SCRITTURA_PARTITA_DOPPIA
  (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
  IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
  DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
  VALUES
  (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO, 'CAUSALE', 0, ABS(SALDI.diff), 'P',
  TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
  'Storno post-chiusura attivita'' competenza esercizio precedente RIAPERTURA',
  'Y', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.CD_CDS,
  SALDI.CD_UNITA_ORGANIZZATIVA);

End If;

-- ESATTAMENTE IDENTICA (MA INVERTITA ALLA CHIUSURA)

IF SALDI.DIFF > 0 THEN

        -- A    ATTIVITA'/PASSIVITA'
        -- D    SPF
        -- A    SPF
        -- D    SPI

        -- ATTIVITA'/PASSIVITA'

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 3, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 4, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

ELSIF SALDI.DIFF < 0 THEN

        -- D    ATTIVITA'/PASSIVITA'
        -- A    SPF
        -- D    SPF
        -- A    SPI

        -- ATTIVITA'/PASSIVITA'

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 3, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 4, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI_2', TRUNC(SYSDATE), 'STORNO_POST_CHI_2', 1, SALDI.ti_istituz_commerc);

END IF;


End Loop;

--Commit;

END LOOP;
END;


PROCEDURE storna_att_pass_es_chiuso (aes in NUMBER, CDS_IN VARCHAR2) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   cd_unita_organizzativa = Decode (CDS_IN, '*', cd_unita_organizzativa, CDS_IN) And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

For SALDI IN
(SELECT D.CD_CDS,
        D.CD_UNITA_ORGANIZZATIVA,
       CD_VOCE_EP,
       TI_ISTITUZ_COMMERC,
       NVL(sum(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0) DARE,
       NVL(sum(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0) AVERE,
       NVL(sum(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0)-NVL(sum(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0) DIFF
FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
WHERE  T.CD_CDS  = D.CD_CDS   AND
       T.ESERCIZIO = D.ESERCIZIO AND
       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA And
       T.CD_cds = ACDS.CD_UNITA_ORGANIZZATIVA And
       T.PG_SCRITTURA = D.PG_SCRITTURA AND
       T.ESERCIZIO  = AES AND
       T.ATTIVA = 'Y' AND
       TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY') < AES AND
       TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY') < AES AND
       (CD_VOCE_EP) IN (SELECT CD_VOCE_EP FROM CNR_ASS_CONTO_GRUPPO_EP WHERE ESERCIZIO = AES AND
                        CD_PIANO_GRUPPI != 'CE') AND
     ((T.CD_CAUSALE_COGE IS NULL) OR
      (T.CD_CAUSALE_COGE != 'CHIUSURA_CONTO_ECONOMICO' AND
       T.CD_CAUSALE_COGE != 'CHIUSURA_STATO_PATRIMONIALE' AND
       T.CD_CAUSALE_COGE != 'DETERMINAZIONE_UTILE_PERDITA'))
GROUP BY D.CD_CDS, D.CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, TI_ISTITUZ_COMMERC) LOOP

If SALDI.DIFF != 0 Then

  NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE',
                                         'STORNO_POST_CHI', TRUNC(SYSDATE));

  INSERT INTO SCRITTURA_PARTITA_DOPPIA
  (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
  IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
  DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
  VALUES
  (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
  'CAUSALE', 0, ABS(SALDI.diff), 'P', TO_DATE('31/12/2003', 'DD/MM/YYYY'),
  'D', 'Storno post-chiusura attivita'' competenza esercizio precedente SCRITTURA',
  'Y', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.CD_CDS,
  SALDI.CD_UNITA_ORGANIZZATIVA);

End If;

-------------------------------- STORNO DELLA SCRITTURA --------------------------------

IF SALDI.DIFF > 0 THEN

        -- RETTIFICA L'ATTIVITA' CON UNA SCRITTURA IN AVERE 2003

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2002', 'DD/MM/YYYY'), TO_DATE('31/12/2002', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STORNATO CON STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

ELSIF SALDI.DIFF < 0 THEN

        -- RETTIFICA L'ATTIVITA' CON UNA SCRITTURA IN DARE 2003

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2002', 'DD/MM/YYYY'), TO_DATE('31/12/2002', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STORNATO CON STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

END IF;

----------------------------- STORNO DELLA CHIUSURA --------------------------------
-------  SIA DELLO STATO PATRIMONIALE INIZIALE CHE DELL'ATTIVITA/PASSIVITA  --------

If SALDI.DIFF != 0 Then

  NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE',
                                         'STORNO_POST_CHI', TRUNC(SYSDATE));

  INSERT INTO SCRITTURA_PARTITA_DOPPIA
  (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
  IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA, CD_CAUSALE_COGE,
  DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
  VALUES
  (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
  'CAUSALE', 0, ABS(SALDI.diff), 'P', TO_DATE('31/12/2003', 'DD/MM/YYYY'),
  'D', 'Storno post-chiusura attivita'' competenza esercizio precedente CHIUSURA',
  'Y', 'CHIUSURA_STATO_PATRIMONIALE', Trunc(SYSDATE), 'STORNO_POST_CHI', Trunc(SYSDATE),
  'STORNO_POST_CHI', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

End If;

IF SALDI.DIFF > 0 THEN

        -- D    ATTIVITA'/PASSIVITA'
        -- A    SPF
        -- D    SPF
        -- A    SPI

        -- ATTIVITA'/PASSIVITA'

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 3, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 4, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

ELSIF SALDI.DIFF < 0 THEN

        -- A    ATTIVITA'/PASSIVITA'
        -- D    SPF
        -- A    SPF
        -- D    SPI

        -- ATTIVITA'/PASSIVITA'

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 3, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 4, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

END IF;

------------------------------- STORNO DELLA RIAPERTURA -------------------------------

If SALDI.DIFF != 0 Then

  NUMERO := CNRCTB200.getNextProgressivo(aes+1, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE',
                                         'STORNO_POST_CHI', Trunc(SYSDATE));

  INSERT INTO SCRITTURA_PARTITA_DOPPIA
  (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
  IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
  DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
  VALUES
  (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO, 'CAUSALE', 0, ABS(SALDI.diff), 'P',
  TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
  'Storno post-chiusura attivita'' competenza esercizio precedente RIAPERTURA',
  'Y', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.CD_CDS,
  SALDI.CD_UNITA_ORGANIZZATIVA);

End If;

-- ESATTAMENTE IDENTICA (MA INVERTITA ALLA CHIUSURA)

IF SALDI.DIFF > 0 THEN

        -- A    ATTIVITA'/PASSIVITA'
        -- D    SPF
        -- A    SPF
        -- D    SPI

        -- ATTIVITA'/PASSIVITA'

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 3, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 4, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

ELSIF SALDI.DIFF < 0 THEN

        -- D    ATTIVITA'/PASSIVITA'
        -- A    SPF
        -- D    SPF
        -- A    SPI

        -- ATTIVITA'/PASSIVITA'

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, 0, SALDI.CD_VOCE_EP,
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 3, 0, 'X.01.001',
        ABS(SALDI.DIFF), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

        -- STATO PATRIMONIALE FINALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes+1, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 4, 0, 'X.01.002',
        ABS(SALDI.DIFF), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'STORNO_POST_CHI', TRUNC(SYSDATE), 'STORNO_POST_CHI', 1, SALDI.ti_istituz_commerc);

END IF;


End Loop;

--Commit;

END LOOP;
END;



PROCEDURE CONTAB_DOC_PAG (INES NUMBER, INTIPO VARCHAR2, INCDS VARCHAR2, INUO VARCHAR2,
                                            INNUMDOC NUMBER) IS
  aDocTst V_DOC_ULT_COGE_TSTA%rowtype;
BEGIN
SELECT *
INTO ADOCTST
from V_DOC_ULT_COGE_TSTA
where esercizio = INES and
CD_CDS = INCDS and
CD_UNITA_ORGANIZZATIVA = INUO AND
CD_TIPO_DOCUMENTO_CONT = INTIPO
And PG_DOCUMENTO_CONT = INNUMDOC;
CNRCTB205.regDocPagCoge(aDocTst, 'STA', sysdate);
END;



PROCEDURE CONTAB_DOC_AMM (INES NUMBER, INTIPO VARCHAR2, INCDS VARCHAR2, INUO VARCHAR2,
                                            INNUMDOC NUMBER) IS
     aTsta V_DOC_AMM_COGE_TSTA%rowtype;
Begin
  Select * into aTsta from V_DOC_AMM_COGE_TSTA where
esercizio = INES
And cd_tipo_documento = INTIPO
and cd_cds = INCDS
and cd_unita_organizzativa = INUO
and pg_numero_documento = INNUMDOC;
CNRCTB205.regDocAmmCoge(aTsta, 'STA', sysdate);
END;



PROCEDURE chiudi_provv_all_cds (aes in number) is
pg_exec  number;
job          number:=null;
next_date       date:=sysdate;
begin
For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop
begin
  pg_exec:=IBMUTL210.logStartExecution(job,'$$$$$TESTECONOM$$$$$');
  CNRCTB206.JOB_CHIUSURACOGECOAN(job,pg_exec,next_date,'Y',aes,acds.cd_unita_organizzativa);
EXCEPTION
  WHEN OTHERS THEN ROLLBACK;
    IBMUTL200.logErr(pg_exec, SQLERRM(SQLCODE),DBMS_UTILITY.FORMAT_ERROR_STACK,'$$$$$DEFAULT_HANDLER_ERRORI$$$$$');
END;

end loop;
END;



PROCEDURE Chiudi_Cds (aes in number, ACDS IN VARCHAR2) IS
  pg_exec NUMBER;
  job NUMBER:=NULL;
  next_date DATE:=SYSDATE;
BEGIN
  pg_exec:=Ibmutl210.logStartExecution(job,'$$$$$TESTECONOM$$$$$');
  Cnrctb206.JOB_CHIUSURACOGECOAN(job,pg_exec,next_date,'Y', aes,ACDS);
--EXCEPTION
--  WHEN OTHERS THEN
--  DBMS_OUTPUT.PUT_LINE ('WHEN OTHERS NELLA PROCEDURA');
--    ROLLBACK;
--    Ibmutl200.logErr(pg_exec,SQLERRM(SQLCODE),DBMS_UTILITY.FORMAT_ERROR_STACK,'$$$$$DEFAULT_HANDLER_ERRORI$$$$$');
END;



PROCEDURE CANCELLA_SALDI_GRUPPO (AES IN NUMBER) IS

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y' AND
                   CD_UNITA_ORGANIZZATIVA IN (
'000',
'002',
'003',
'007',
'014',
'016',
'018',
'019',
'020',
'022',
'023',
'024',
'026',
'028',
'029',
'032',
'036',
'041',
'042',
'043',
'044',
'045',
'046',
'048',
'051',
'052',
'053',
'055',
'056',
'057',
'059',
'063',
'064',
'066',
'067',
'068',
'071',
'073',
'074',
'075',
'077',
'078',
'080',
'091',
'094',
'096',
'097',
'099',
'100',
'101',
'102',
'103',
'104',
'106',
'107',
'317'                  )
                   Order by cd_unita_organizzativa) loop

Delete SALDO_COGE Where ESERCIZIO = AES And cd_Cds = acds.cd_unita_organizzativa;

Commit;

End Loop;

END;


PROCEDURE CANCELLA_ALL_SALDI (AES IN NUMBER) IS

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

Delete SALDO_COGE Where ESERCIZIO = AES And cd_Cds = acds.cd_unita_organizzativa;

Commit;

End Loop;

END;



PROCEDURE ANNULLA_CONTABILIZZAZIONE IS
CURSOR C IS
 SELECT * FROM CONTABILIZZAZIONE_DA_ANNULLARE
 ORDER BY ESERCIZIO,UO,TIPO_BUONO,NR_BUONO;
CUR C%ROWTYPE;
BEGIN
OPEN C;
LOOP
FETCH C INTO CUR;
EXIT WHEN C%NOTFOUND;
 Delete FROM MOVIMENTO_COGE Where
 (ESERCIZIO,CD_CDS,CD_UNITA_ORGANIZZATIVA,PG_SCRITTURA) IN(SELECT ESERCIZIO,CD_CDS,CD_UNITA_ORGANIZZATIVA,PG_SCRITTURA
 FROM SCRITTURA_PARTITA_DOPPIA
 WHERE
 ESERCIZIO   = CUR.ESERCIZIO AND
 CD_UNITA_ORGANIZZATIVA = CUR.UO AND
 CD_CAUSALE_COGE  LIKE '%BENE_DUREVOLE' AND
 CD_COMP_DOCUMENTO LIKE TO_CHAR(CUR.PG_INVENTARIO)||'.'||CUR.TIPO_BUONO||'.'||TO_CHAR(CUR.ESERCIZIO)||'.'||TO_CHAR(CUR.NR_BUONO)||'.%');

 DELETE
 FROM SCRITTURA_PARTITA_DOPPIA
 WHERE
 ESERCIZIO   = CUR.ESERCIZIO AND
 CD_UNITA_ORGANIZZATIVA = CUR.UO AND
 CD_CAUSALE_COGE  LIKE '%BENE_DUREVOLE' AND
 CD_COMP_DOCUMENTO LIKE TO_CHAR(CUR.PG_INVENTARIO)||'.'||CUR.TIPO_BUONO||'.'||TO_CHAR(CUR.ESERCIZIO)||'.'||TO_CHAR(CUR.NR_BUONO)||'.%';


END LOOP;
 CANCELLA_SALDI(CUR.ESERCIZIO,SUBSTR(CUR.UO,1,3));
 AGGIORNA_SALDI(CUR.ESERCIZIO,SUBSTR(CUR.UO,1,3));
END;



PROCEDURE annulla_chiusure_cds_SPORCHI is
 pg_exec number;
 job number:=null;
 next_date date:=sysdate;
Cursor C Is
select DISTINCT CD_CDS
from   saldo_coge a
WHERE   a.esercizio = 2003
AND CD_VOCE_EP = 'N.02.001'
group by a.esercizio, a.CD_CDS, a.CD_UNITA_ORGANIZZATIVA
having SUM(TOT_DARE) != SUM(TOT_AVERE)
Order By 1;

BEGIN

for rec in c loop

begin
  pg_exec:=IBMUTL210.logStartExecution(job,'$$$$$TESTECONOM$$$$$');
  CNRCTB206.JOB_ANNULLACHIUSURACOGECOAN(job,pg_exec,next_date,2003,rec.cd_cds);
EXCEPTION
  WHEN OTHERS THEN ROLLBACK;
  IBMUTL200.logErr(pg_exec, SQLERRM(SQLCODE),DBMS_UTILITY.FORMAT_ERROR_STACK,'$$$$$DEFAULT_HANDLER_ERRORI$$$$$');
end;

end loop;

END;



PROCEDURE Cancella_Saldi (AES IN NUMBER, IN_CDS IN VARCHAR2) IS

BEGIN

DELETE SALDO_COGE WHERE ESERCIZIO = AES AND CD_CDS = IN_CDS;

--COMMIT;

END;



PROCEDURE rettifiche_costi_comp_es_prec (aes in NUMBER, CDS In VARCHAR2, i_c In CHAR) Is
NUMERO NUMBER;

Begin

For aCDS in (Select CD_UNITA_ORGANIZZATIVA
             From v_unita_organizzativa_valida
             Where esercizio = aEs And
                   CD_UNITA_ORGANIZZATIVA = Nvl(CDS, CD_UNITA_ORGANIZZATIVA) And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

------------------ COSTI 2005 CON COMPETENZA 2004
For SALDI In
(SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) SALDO
 FROM    movimento_coge m, scrittura_partita_doppia t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = acds.cd_unita_organizzativa AND
         t.CD_CDS                  = m.CD_CDS                  and
         t.ESERCIZIO               = m.ESERCIZIO               and
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  And
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y' AND
         M.TI_ISTITUZ_COMMERC = Nvl(i_c, M.TI_ISTITUZ_COMMERC) AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM CNR_ASS_CONTO_GRUPPO_EP
          WHERE ESERCIZIO = aes AND
                CD_PIANO_GRUPPI = 'CE') AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM VOCE_EP
          WHERE ESERCIZIO = aes AND
                NATURA_VOCE IN ('EEC', 'EPC')) AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc
 Having NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) != 0) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'RET_COSTI_0805',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aEs, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2005', 'DD/MM/YYYY'),
'D', 'Rettifica Costi da esercizio precedente Terzo '||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_COSTI_0805', TRUNC(SYSDATE), 'RET_COSTI_0805', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- RETTIFICA IL COSTO CON UNA SCRITTURA IN AVERE NELL'ESERCIZIO PRECEDENTE (2004)

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, Aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2004', 'DD/MM/YYYY'), TO_DATE('31/12/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_COSTI_0905', TRUNC(SYSDATE), 'RET_COSTI_0905', 1, saldi.ti_istituz_commerc);

        -- STORNATO CON STESSO CONTO NELL'ANNO IN CORSO (2005)

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_COSTI_0805', TRUNC(SYSDATE), 'RET_COSTI_0805', 1, saldi.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2004', 'DD/MM/YYYY'), TO_DATE('31/12/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_COSTI_0805', TRUNC(SYSDATE), 'RET_COSTI_0805', 1, saldi.ti_istituz_commerc);

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_COSTI_0805', TRUNC(SYSDATE), 'RET_COSTI_0805', 1, saldi.ti_istituz_commerc);

END IF;

END LOOP;

--commit;

end loop;

END;



PROCEDURE rettificHE_costi (aes in number) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   CD_UNITA_ORGANIZZATIVA In ('000', '005', '035', '056', '078') And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

------------------ COSTI 2004 CON COMPETENZA 2003
FOR SALDI IN
(SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) SALDO
 FROM    movimento_coge m, scrittura_partita_doppia t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = acds.cd_unita_organizzativa AND
         t.CD_CDS                  = m.CD_CDS                  and
         t.ESERCIZIO               = m.ESERCIZIO               and
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  And
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y' AND
         M.TI_ISTITUZ_COMMERC = 'I'                            AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM CNR_ASS_CONTO_GRUPPO_EP
          WHERE ESERCIZIO = aes AND
                CD_PIANO_GRUPPI = 'CE') AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM VOCE_EP
          WHERE ESERCIZIO = aes AND
                NATURA_VOCE IN ('EEC', 'EPC')) AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc
 Having NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) != 0) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'RET_COSTI_0705',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aEs, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2004', 'DD/MM/YYYY'),
'D', 'Rettifica Costi da esercizio precedente Terzo LUGLIO 05'||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_COSTI_0705', TRUNC(SYSDATE), 'RET_COSTI_0705', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- RETTIFICA IL COSTO CON UNA SCRITTURA IN AVERE 2003

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, Aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_COSTI_0705', TRUNC(SYSDATE), 'RET_COSTI_0705', 1, saldi.ti_istituz_commerc);

        -- STORNATO CON STESSO CONTO NEL 2004

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_COSTI_0705', TRUNC(SYSDATE), 'RET_COSTI_0705', 1, saldi.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_COSTI_0705', TRUNC(SYSDATE), 'RET_COSTI_0705', 1, saldi.ti_istituz_commerc);

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_COSTI_0705', TRUNC(SYSDATE), 'RET_COSTI_0705', 1, saldi.ti_istituz_commerc);

END IF;

END LOOP;

--commit;

end loop;

END;



PROCEDURE Popola_Sp_Per_Conto_Uo
(INTIPO         IN VARCHAR2, -- SP / CE
 inEs           IN NUMBER,   -- obbligatorio
 INDATA		IN VARCHAR2, -- obbligatorio
 IS_CO          IN CHAR) IS  -- obbligatorio

 DARE           NUMBER(20,3);
 AVERE          NUMBER(20,3);

 CONTO_AVANZO   VOCE_EP.CD_VOCE_EP%TYPE;
 STATO_PATR     VOCE_EP.CD_VOCE_EP%TYPE;

 PROF_PERD      VOCE_EP.CD_VOCE_EP%TYPE;

BEGIN

IF INTIPO IS NOT NULL AND inEs IS NOT NULL AND IS_CO IS NOT NULL THEN

 DELETE CE_SP_PER_CONTO
 WHERE  TIPO = INTIPO AND
        ESERCIZIO = ines AND
        i_c = is_co AND
	DATA_ESTR = INDATA;

 COMMIT;

 SELECT VAL01
 INTO   CONTO_AVANZO
 FROM   CONFIGURAZIONE_CNR
 WHERE  ESERCIZIO = INES AND
        CD_UNITA_FUNZIONALE = '*' AND
        CD_CHIAVE_PRIMARIA   = 'VOCEEP_SPECIALE' AND
        CD_CHIAVE_SECONDARIA = 'UTILE_PERDITA_ESERCIZIO';

 SELECT VAL01
 INTO   STATO_PATR
 FROM   CONFIGURAZIONE_CNR
 WHERE  ESERCIZIO = INES AND
        CD_UNITA_FUNZIONALE = '*' AND
        CD_CHIAVE_PRIMARIA   = 'VOCEEP_SPECIALE' AND
        CD_CHIAVE_SECONDARIA = 'STATO_PATRIMONIALE';

 SELECT VAL01
 INTO   PROF_PERD
 FROM   CONFIGURAZIONE_CNR
 WHERE  ESERCIZIO = INES AND
        CD_UNITA_FUNZIONALE = '*' AND
        CD_CHIAVE_PRIMARIA   = 'VOCEEP_SPECIALE' AND
        CD_CHIAVE_SECONDARIA = 'CONTO_ECONOMICO';

IF INTIPO = 'SP' THEN

FOR CONTI IN (SELECT ASS.ESERCIZIO, ASS.CD_VOCE_EP
              FROM CNR_ASS_CONTO_GRUPPO_EP ASS
              WHERE ASS.ESERCIZIO = INES AND
                    CD_PIANO_GRUPPI IN ('SPATT', 'SPPAS')) LOOP

  FOR UO IN (SELECT CD_UNITA_ORGANIZZATIVA
             FROM   UNITA_ORGANIZZATIVA
             WHERE  FL_CDS = 'N') LOOP

   IF CONTI.CD_VOCE_EP = CONTO_AVANZO THEN

        SELECT NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0),
               NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)
        INTO   DARE, AVERE
        FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
        WHERE  T.CD_CDS  = D.CD_CDS   AND
               T.ESERCIZIO = D.ESERCIZIO AND
               T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
               T.PG_SCRITTURA = D.PG_SCRITTURA AND
               T.ATTIVA = 'Y' AND
             ((T.CD_CAUSALE_COGE IS NULL) OR
              (T.CD_CAUSALE_COGE = 'DETERMINAZIONE_UTILE_PERDITA' AND CONTI.CD_VOCE_EP = CONTO_AVANZO)) AND
               T.ESERCIZIO  = INES                 AND
               T.CD_UNITA_ORGANIZZATIVA = UO.CD_UNITA_ORGANIZZATIVA AND
               D.CD_VOCE_EP = CONTI.CD_VOCE_EP AND
              (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES) OR
               NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES)) AND
               D.TI_ISTITUZ_COMMERC = IS_CO
               AND EXISTS
                (SELECT 1
                 FROM MOVIMENTO_COGE M2
                 WHERE M2.CD_CDS                  = D.CD_CDS                 AND
                       M2.ESERCIZIO               = D.ESERCIZIO              AND
                       M2.CD_UNITA_ORGANIZZATIVA  = D.CD_UNITA_ORGANIZZATIVA AND
                       M2.PG_SCRITTURA            = D.PG_SCRITTURA AND
                       M2.cd_voce_ep = STATO_PATR);

  ELSE

        SELECT NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0),
               NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)
        INTO   DARE, AVERE
        FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
        WHERE  T.CD_CDS  = D.CD_CDS   AND
               T.ESERCIZIO = D.ESERCIZIO AND
               T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
               T.PG_SCRITTURA = D.PG_SCRITTURA AND
               T.ATTIVA = 'Y' AND
             ((T.CD_CAUSALE_COGE IS NULL) OR
              (T.CD_CAUSALE_COGE != 'CHIUSURA_CONTO_ECONOMICO' AND
               T.CD_CAUSALE_COGE != 'CHIUSURA_STATO_PATRIMONIALE' AND
               T.CD_CAUSALE_COGE != 'DETERMINAZIONE_UTILE_PERDITA')) AND
               T.ESERCIZIO  = INES                 AND
               T.CD_UNITA_ORGANIZZATIVA = UO.CD_UNITA_ORGANIZZATIVA AND
               D.CD_VOCE_EP = CONTI.CD_VOCE_EP AND
               D.TI_ISTITUZ_COMMERC = IS_CO;

  END IF;

  INSERT INTO CE_SP_PER_CONTO (ESERCIZIO, TIPO, CD_VOCE_EP, UO, I_C, SALDO_DARE, SALDO_AVERE, SALDO_FINALE, DATA_ESTR)
  VALUES (Ines, 'SP', CONTI.CD_VOCE_EP, UO.CD_UNITA_ORGANIZZATIVA, IS_CO, DARE, AVERE, DECODE(SUBSTR(CONTI.CD_VOCE_EP, 1, 1), 'A', DARE-AVERE, AVERE-DARE),  INDATA);

END LOOP; -- UO SP

COMMIT;

END LOOP; -- CONTO SP

ELSIF INTIPO = 'CE' THEN

FOR CONTI IN (SELECT ASS.ESERCIZIO, ASS.CD_VOCE_EP
              FROM CNR_ASS_CONTO_GRUPPO_EP ASS
              WHERE ASS.ESERCIZIO = INES AND
                    CD_PIANO_GRUPPI = 'CE') LOOP

  FOR UO IN (SELECT CD_UNITA_ORGANIZZATIVA
             FROM   V_UNITA_ORGANIZZATIVA_VALIDA
             WHERE  ESERCIZIO = Ines AND
                    FL_CDS = 'N') LOOP

    IF CONTI.CD_VOCE_EP = CONTO_AVANZO THEN

                SELECT NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0),
                       NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)
                INTO   DARE, AVERE
                FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
                WHERE  T.CD_CDS  = D.CD_CDS   AND
                       T.ESERCIZIO = D.ESERCIZIO AND
                       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
                       T.PG_SCRITTURA = D.PG_SCRITTURA AND
                       T.ATTIVA = 'Y' AND
                     ((T.CD_CAUSALE_COGE IS NULL) OR
                      (T.CD_CAUSALE_COGE = 'DETERMINAZIONE_UTILE_PERDITA' AND CONTI.CD_VOCE_EP = CONTO_AVANZO)) AND
                       T.ESERCIZIO  = INES                 AND
                       T.CD_UNITA_ORGANIZZATIVA = UO.CD_UNITA_ORGANIZZATIVA AND
                       D.CD_VOCE_EP = CONTI.CD_VOCE_EP AND
        	      (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES) OR
         	       NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES)) AND
                       D.TI_ISTITUZ_COMMERC = IS_CO
                       AND EXISTS
                        (SELECT 1
                         FROM MOVIMENTO_COGE M2
                         WHERE M2.CD_CDS                  = D.CD_CDS                 AND
                               M2.ESERCIZIO               = D.ESERCIZIO              AND
                               M2.CD_UNITA_ORGANIZZATIVA  = D.CD_UNITA_ORGANIZZATIVA AND
                               M2.PG_SCRITTURA            = D.PG_SCRITTURA AND
                               M2.cd_voce_ep = PROF_PERD);

    ELSE

        -- PER CONTI NORMALI

                SELECT NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0),
                       NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)
                INTO   DARE, AVERE
                FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
                WHERE  T.CD_CDS  = D.CD_CDS   AND
                       T.ESERCIZIO = D.ESERCIZIO AND
                       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
                       T.PG_SCRITTURA = D.PG_SCRITTURA AND
                       T.ATTIVA = 'Y' AND
                      ((T.CD_CAUSALE_COGE IS NULL) OR
                      (T.CD_CAUSALE_COGE != 'CHIUSURA_CONTO_ECONOMICO' AND
                       T.CD_CAUSALE_COGE != 'CHIUSURA_STATO_PATRIMONIALE' AND
                       T.CD_CAUSALE_COGE != 'DETERMINAZIONE_UTILE_PERDITA')) AND
                       T.ESERCIZIO  = INES                 AND
                       T.CD_UNITA_ORGANIZZATIVA = UO.CD_UNITA_ORGANIZZATIVA AND
                       D.CD_VOCE_EP = CONTI.CD_VOCE_EP AND
        -- ANNO IN CORSO (SOLA COMPETENZA)
        ((NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES) AND NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES)) OR
        -- A CAVALLO TRA ANNO PRECEDENTE ED ANNO ATTUALE
         (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES-1) AND NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES)) OR
        -- A CAVALLO TRA ANNO ATTUALE ED ANNO SUCCESSIVO (TANTO CI SONO I RISCONTI)
         (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES) AND NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES+1)) OR
        -- O COMPLETAMENTE IN ESERCIZIO SUCCESSIVO (TANTO CI SONO I RISCONTI)
         (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES+1) AND NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES+1)) ) AND
                       D.TI_ISTITUZ_COMMERC = IS_CO;

    END IF;

  INSERT INTO CE_SP_PER_CONTO (ESERCIZIO, TIPO, CD_VOCE_EP, UO, I_C, SALDO_DARE, SALDO_AVERE, SALDO_FINALE, DATA_ESTR)
  VALUES (Ines, 'CE', CONTI.CD_VOCE_EP, UO.CD_UNITA_ORGANIZZATIVA, IS_CO, DARE, AVERE, DECODE(SUBSTR(CONTI.CD_VOCE_EP, 1, 1), 'C', DARE-AVERE, AVERE-DARE),  INDATA);

END LOOP; -- UO CE

COMMIT;

END LOOP; -- CONTO COSTO


END IF;

END IF; -- PARAMETRI PIENI

END;



PROCEDURE Popola_Sp_Per_Conto_TOT
(INTIPO         IN VARCHAR2, -- SP / CE
 inEs           IN NUMBER,  -- obbligatorio
 INDATA		IN VARCHAR2,  -- obbligatorio
 IS_CO          IN CHAR) IS -- obbligatorio C/I/*

 DARE           NUMBER(20,3);
 AVERE          NUMBER(20,3);

 CONTO_AVANZO   VOCE_EP.CD_VOCE_EP%TYPE;
 STATO_PATR     VOCE_EP.CD_VOCE_EP%TYPE;

 PROF_PERD      VOCE_EP.CD_VOCE_EP%TYPE;

BEGIN

IF INTIPO IS NOT NULL AND inEs IS NOT NULL AND IS_CO IS NOT NULL THEN

 DELETE CE_SP_PER_CONTO_TOT
 WHERE  TIPO = INTIPO AND
        ESERCIZIO = ines AND
        i_c = is_co AND
	DATA_ESTR = INDATA;

 COMMIT;

 SELECT VAL01
 INTO   CONTO_AVANZO
 FROM   CONFIGURAZIONE_CNR
 WHERE  ESERCIZIO = INES AND
        CD_UNITA_FUNZIONALE = '*' AND
        CD_CHIAVE_PRIMARIA   = 'VOCEEP_SPECIALE' AND
        CD_CHIAVE_SECONDARIA = 'UTILE_PERDITA_ESERCIZIO';

 SELECT VAL01
 INTO   STATO_PATR
 FROM   CONFIGURAZIONE_CNR
 WHERE  ESERCIZIO = INES AND
        CD_UNITA_FUNZIONALE = '*' AND
        CD_CHIAVE_PRIMARIA   = 'VOCEEP_SPECIALE' AND
        CD_CHIAVE_SECONDARIA = 'STATO_PATRIMONIALE';

 SELECT VAL01
 INTO   PROF_PERD
 FROM   CONFIGURAZIONE_CNR
 WHERE  ESERCIZIO = INES AND
        CD_UNITA_FUNZIONALE = '*' AND
        CD_CHIAVE_PRIMARIA   = 'VOCEEP_SPECIALE' AND
        CD_CHIAVE_SECONDARIA = 'CONTO_ECONOMICO';

IF INTIPO = 'SP' THEN

FOR CONTI IN (SELECT ASS.ESERCIZIO, ASS.CD_VOCE_EP
              FROM CNR_ASS_CONTO_GRUPPO_EP ASS
              WHERE ASS.ESERCIZIO = INES AND
                    CD_PIANO_GRUPPI IN ('SPATT', 'SPPAS')) LOOP

  FOR UO IN (SELECT CD_UNITA_ORGANIZZATIVA
             FROM   V_UNITA_ORGANIZZATIVA_VALIDA
             WHERE  ESERCIZIO = Ines AND
                    FL_CDS = 'N') LOOP

   IF CONTI.CD_VOCE_EP = CONTO_AVANZO THEN

        SELECT NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0),
               NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)
        INTO   DARE, AVERE
        FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
        WHERE  T.CD_CDS  = D.CD_CDS   AND
               T.ESERCIZIO = D.ESERCIZIO AND
               T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
               T.PG_SCRITTURA = D.PG_SCRITTURA AND
               T.ATTIVA = 'Y' AND
             ((T.CD_CAUSALE_COGE IS NULL) OR
              (T.CD_CAUSALE_COGE = 'DETERMINAZIONE_UTILE_PERDITA' AND CONTI.CD_VOCE_EP = CONTO_AVANZO)) AND
               T.ESERCIZIO  = INES                 AND
               T.CD_UNITA_ORGANIZZATIVA = UO.CD_UNITA_ORGANIZZATIVA AND
               D.CD_VOCE_EP = CONTI.CD_VOCE_EP AND
              (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES) OR
               NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES)) AND
               D.TI_ISTITUZ_COMMERC = DECODE(IS_CO, '*', D.TI_ISTITUZ_COMMERC, IS_CO)
               AND EXISTS
                (SELECT 1
                 FROM MOVIMENTO_COGE M2
                 WHERE M2.CD_CDS                  = D.CD_CDS                 AND
                       M2.ESERCIZIO               = D.ESERCIZIO              AND
                       M2.CD_UNITA_ORGANIZZATIVA  = D.CD_UNITA_ORGANIZZATIVA AND
                       M2.PG_SCRITTURA            = D.PG_SCRITTURA AND
                       M2.cd_voce_ep = STATO_PATR);

  ELSE

        SELECT NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0),
               NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)
        INTO   DARE, AVERE
        FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
        WHERE  T.CD_CDS  = D.CD_CDS   AND
               T.ESERCIZIO = D.ESERCIZIO AND
               T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
               T.PG_SCRITTURA = D.PG_SCRITTURA AND
               T.ATTIVA = 'Y' AND
             ((T.CD_CAUSALE_COGE IS NULL) OR
              (T.CD_CAUSALE_COGE != 'CHIUSURA_CONTO_ECONOMICO' AND
               T.CD_CAUSALE_COGE != 'CHIUSURA_STATO_PATRIMONIALE' AND
               T.CD_CAUSALE_COGE != 'DETERMINAZIONE_UTILE_PERDITA')) AND
               T.ESERCIZIO  = INES                 AND
               T.CD_UNITA_ORGANIZZATIVA = UO.CD_UNITA_ORGANIZZATIVA AND
               D.CD_VOCE_EP = CONTI.CD_VOCE_EP AND
               D.TI_ISTITUZ_COMMERC = DECODE(IS_CO, '*', D.TI_ISTITUZ_COMMERC, IS_CO);

  END IF;

  INSERT INTO CE_SP_PER_CONTO_TOT (ESERCIZIO, TIPO, CD_VOCE_EP, UO, I_C, SALDO_DARE, SALDO_AVERE, SALDO_FINALE, DATA_ESTR)
  VALUES (Ines, 'SP', CONTI.CD_VOCE_EP, UO.CD_UNITA_ORGANIZZATIVA, IS_CO, DARE, AVERE, DECODE(SUBSTR(CONTI.CD_VOCE_EP, 1, 1), 'A', DARE-AVERE, AVERE-DARE),  INDATA);

End LOOP; -- UO SP

COMMIT;

END LOOP; -- CONTO SP

ELSIF INTIPO = 'CE' THEN

FOR CONTI IN (SELECT ASS.ESERCIZIO, ASS.CD_VOCE_EP
              FROM CNR_ASS_CONTO_GRUPPO_EP ASS
              WHERE ASS.ESERCIZIO = INES AND
                    CD_PIANO_GRUPPI = 'CE') LOOP

  FOR UO IN (SELECT CD_UNITA_ORGANIZZATIVA
             FROM   V_UNITA_ORGANIZZATIVA_VALIDA
             WHERE  ESERCIZIO = Ines AND
                    FL_CDS = 'N') LOOP

    IF CONTI.CD_VOCE_EP = CONTO_AVANZO THEN

                SELECT NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0),
                       NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)
                INTO   DARE, AVERE
                FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
                WHERE  T.CD_CDS  = D.CD_CDS   AND
                       T.ESERCIZIO = D.ESERCIZIO AND
                       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
                       T.PG_SCRITTURA = D.PG_SCRITTURA AND
                       T.ATTIVA = 'Y' AND
                     ((T.CD_CAUSALE_COGE IS NULL) OR
                      (T.CD_CAUSALE_COGE = 'DETERMINAZIONE_UTILE_PERDITA' AND CONTI.CD_VOCE_EP = CONTO_AVANZO)) AND
                       T.ESERCIZIO  = INES                 AND
                       T.CD_UNITA_ORGANIZZATIVA = UO.CD_UNITA_ORGANIZZATIVA AND
                       D.CD_VOCE_EP = CONTI.CD_VOCE_EP AND
        	      (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES) OR
         	       NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES)) AND
                       D.TI_ISTITUZ_COMMERC = DECODE(IS_CO, '*', D.TI_ISTITUZ_COMMERC, IS_CO)
                       AND EXISTS
                        (SELECT 1
                         FROM MOVIMENTO_COGE M2
                         WHERE M2.CD_CDS                  = D.CD_CDS                 AND
                               M2.ESERCIZIO               = D.ESERCIZIO              AND
                               M2.CD_UNITA_ORGANIZZATIVA  = D.CD_UNITA_ORGANIZZATIVA AND
                               M2.PG_SCRITTURA            = D.PG_SCRITTURA AND
                               M2.cd_voce_ep = PROF_PERD);

    ELSE

        -- PER CONTI NORMALI

                SELECT NVL(SUM(DECODE(D.SEZIONE, 'D', D.im_movimento)), 0),
                       NVL(SUM(DECODE(D.SEZIONE, 'A', D.im_movimento)), 0)
                INTO   DARE, AVERE
                FROM   MOVIMENTO_COGE D, SCRITTURA_PARTITA_DOPPIA T
                WHERE  T.CD_CDS  = D.CD_CDS   AND
                       T.ESERCIZIO = D.ESERCIZIO AND
                       T.CD_UNITA_ORGANIZZATIVA = D.CD_UNITA_ORGANIZZATIVA AND
                       T.PG_SCRITTURA = D.PG_SCRITTURA AND
                       T.ATTIVA = 'Y' AND
                      ((T.CD_CAUSALE_COGE IS NULL) OR
                      (T.CD_CAUSALE_COGE != 'CHIUSURA_CONTO_ECONOMICO' AND
                       T.CD_CAUSALE_COGE != 'CHIUSURA_STATO_PATRIMONIALE' AND
                       T.CD_CAUSALE_COGE != 'DETERMINAZIONE_UTILE_PERDITA')) AND
                       T.ESERCIZIO  = INES                 AND
                       T.CD_UNITA_ORGANIZZATIVA = UO.CD_UNITA_ORGANIZZATIVA AND
                       D.CD_VOCE_EP = CONTI.CD_VOCE_EP AND
        -- ANNO IN CORSO (SOLA COMPETENZA)
        ((NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES) AND NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES)) OR
        -- A CAVALLO TRA ANNO PRECEDENTE ED ANNO ATTUALE
         (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES-1) AND NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES)) OR
        -- A CAVALLO TRA ANNO ATTUALE ED ANNO SUCCESSIVO (TANTO CI SONO I RISCONTI)
         (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES) AND NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES+1)) OR
        -- O COMPLETAMENTE IN ESERCIZIO SUCCESSIVO (TANTO CI SONO I RISCONTI)
         (NVL(TO_CHAR(D.DT_DA_COMPETENZA_COGE, 'YYYY'), D.ESERCIZIO) = TO_CHAR(INES+1) AND NVL(TO_CHAR(D.DT_A_COMPETENZA_COGE,  'YYYY'), D.ESERCIZIO) = TO_CHAR(INES+1)) ) AND
               D.TI_ISTITUZ_COMMERC = DECODE(IS_CO, '*', D.TI_ISTITUZ_COMMERC, IS_CO);

    END IF;

  INSERT INTO CE_SP_PER_CONTO_TOT (ESERCIZIO, TIPO, CD_VOCE_EP, UO, I_C, SALDO_DARE, SALDO_AVERE, SALDO_FINALE, DATA_ESTR)
  VALUES (Ines, 'CE', CONTI.CD_VOCE_EP, UO.CD_UNITA_ORGANIZZATIVA, IS_CO, DARE, AVERE, DECODE(SUBSTR(CONTI.CD_VOCE_EP, 1, 1), 'C', DARE-AVERE, AVERE-DARE),  INDATA);

End LOOP; -- UO CE

COMMIT;

END LOOP; -- CONTO COSTO

END IF;

END IF; -- PARAMETRI PIENI

END;



PROCEDURE Setta_A_X_Nuovi_Cds IS

BEGIN

FOR DOC IN (SELECT *
            FROM  V_DOC_AMM_COGE_TSTA
            WHERE ESERCIZIO = 2006 AND
                  CD_CDS_ORIGINE IN ('110', '111', '112') AND
                  TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY') < 2006 AND
                 (STATO_COGE IN ('N', 'R') OR STATO_COAN IN ('N', 'R'))) LOOP

IF doc.CD_TIPO_DOCUMENTO = 'ANTICIPO' THEN

        NULL;

ELSIF doc.CD_TIPO_DOCUMENTO = 'COMPENSO' THEN

        UPDATE COMPENSO
        SET    stato_coge = 'X', STATO_COAN = 'X'
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_COMPENSO            = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO = 'FATTURA_P' THEN

        UPDATE FATTURA_PASSIVA
        SET    stato_coge = 'X', STATO_COAN = 'X'
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_FATTURA_PASSIVA     = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO IN ('GENERICO_E', 'GENERICO_S', 'GEN_AP_FON', 'GEN_CORA_E', 'GEN_CORA_S', 'GEN_CORV_E',
                                'GEN_CORV_S', 'GEN_IVA_E', 'TRASF_E', 'TRASF_S') THEN

        UPDATE DOCUMENTO_GENERICO
        SET    stato_coge = 'X', STATO_COAN = 'X'
        WHERE  CD_TIPO_DOCUMENTO_AMM  = DOC.CD_TIPO_DOCUMENTO AND
               CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_DOCUMENTO_GENERICO  = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO = 'MISSIONE' THEN

        UPDATE MISSIONE
        SET    stato_coge = 'X', STATO_COAN = 'X'
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_MISSIONE            = DOC.PG_NUMERO_DOCUMENTO;

END IF;

--COMMIT;

END LOOP;

END;



PROCEDURE Rettifiche_Ricavi_comp_es_prec (aes IN NUMBER, inCds IN VARCHAR2, i_c IN CHAR) IS
NUMERO NUMBER;

BEGIN

FOR aCDS IN (SELECT CD_UNITA_ORGANIZZATIVA FROM v_unita_organizzativa_valida
             WHERE ESERCIZIO = aEs AND
                   CD_UNITA_ORGANIZZATIVA = NVL(inCds, CD_UNITA_ORGANIZZATIVA) AND
                   fl_cds = 'Y'
                   ORDER BY cd_unita_organizzativa) LOOP

------------------ RICAVI 2004 CON COMPETENZA 2003

FOR SALDI IN
(SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc,
         NVL(SUM(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(SUM(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(SUM(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) - NVL(SUM(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) SALDO
 FROM    MOVIMENTO_COGE m, SCRITTURA_PARTITA_DOPPIA t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = acds.cd_unita_organizzativa AND
         t.CD_CDS                  = m.CD_CDS                  AND
         t.ESERCIZIO               = m.ESERCIZIO               AND
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  AND
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y'                                        AND
         M.TI_ISTITUZ_COMMERC = NVL(i_c, M.TI_ISTITUZ_COMMERC) AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM CNR_ASS_CONTO_GRUPPO_EP
          WHERE ESERCIZIO = aes AND
                CD_PIANO_GRUPPI = 'CE') AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM VOCE_EP
          WHERE ESERCIZIO = aes AND
                NATURA_VOCE IN ('EER', 'EPR')) AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc
 HAVING NVL(SUM(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) - NVL(SUM(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) != 0) LOOP

NUMERO := Cnrctb200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'RET_RICAVI_0905',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2005', 'DD/MM/YYYY'),
'D', 'Rettifica Ricavi da esercizio precedente Terzo '||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_RICAVI_0905', TRUNC(SYSDATE), 'RET_RICAVI_0905', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- RETTIFICA IL RICAVO CON UNA SCRITTURA IN DARE 2003

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2004', 'DD/MM/YYYY'), TO_DATE('31/12/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_RICAVI_0905', TRUNC(SYSDATE), 'RET_RICAVI_0905', 1, saldi.ti_istituz_commerc);

        -- NUOVO RICAVO AVERE MA 2004

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_RICAVI_0905', TRUNC(SYSDATE), 'RET_RICAVI_0905', 1, saldi.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2004', 'DD/MM/YYYY'), TO_DATE('31/12/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_RICAVI_0905', TRUNC(SYSDATE), 'RET_RICAVI_0905', 1, saldi.ti_istituz_commerc);

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2005', 'DD/MM/YYYY'), TO_DATE('01/01/2005', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_RICAVI_0905', TRUNC(SYSDATE), 'RET_RICAVI_0905', 1, saldi.ti_istituz_commerc);

END IF;

END LOOP;

--commit;

END LOOP;
END;



PROCEDURE rettifiche_ricavi (aes in number) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
--             CD_UNITA_ORGANIZZATIVA = '005' And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

------------------ RICAVI 2004 CON COMPETENZA 2003

For SALDI IN
(SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) SALDO
 FROM    movimento_coge m, scrittura_partita_doppia t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = acds.cd_unita_organizzativa AND
         t.CD_CDS                  = m.CD_CDS                  and
         t.ESERCIZIO               = m.ESERCIZIO               and
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  and
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y'                                        And
         M.TI_ISTITUZ_COMMERC = 'I'                            AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM CNR_ASS_CONTO_GRUPPO_EP
          WHERE ESERCIZIO = aes AND
                CD_PIANO_GRUPPI = 'CE') AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM VOCE_EP
          WHERE ESERCIZIO = aes AND
                NATURA_VOCE IN ('EER', 'EPR')) AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc
 Having NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) != 0) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'RET_RICAVI_0705',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2004', 'DD/MM/YYYY'),
'D', 'Rettifica Ricavi da esercizio precedente Terzo LUGLIO 05'||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_RICAVI_0705', TRUNC(SYSDATE), 'RET_RICAVI_0705', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- RETTIFICA IL RICAVO CON UNA SCRITTURA IN DARE 2003

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_RICAVI_0705', TRUNC(SYSDATE), 'RET_RICAVI_0705', 1, saldi.ti_istituz_commerc);

        -- NUOVO RICAVO AVERE MA 2004

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', Trunc(SYSDATE), 'RET_RICAVI_0705', TRUNC(SYSDATE), 'RET_RICAVI_0705', 1, saldi.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_RICAVI_0705', TRUNC(SYSDATE), 'RET_RICAVI_0705', 1, saldi.ti_istituz_commerc);

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_RICAVI_0705', TRUNC(SYSDATE), 'RET_RICAVI_0705', 1, saldi.ti_istituz_commerc);

END IF;

end loop;

--commit;

END LOOP;
END;



PROCEDURE rettifiche_passivita (aes in number) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

------------------ PASSIVITA' 2004 CON COMPETENZA 2003
FOR SALDI IN
(SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) SALDO
 FROM    movimento_coge m, scrittura_partita_doppia t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = '070' AND
 --        M.CD_UNITA_ORGANIZZATIVA = '019.001' AND
         t.CD_CDS                  = m.CD_CDS                  and
         t.ESERCIZIO               = m.ESERCIZIO               and
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  and
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y' AND
--         M.TI_ISTITUZ_COMMERC = 'C'                            AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM CNR_ASS_CONTO_GRUPPO_EP
          WHERE ESERCIZIO = aes AND
                CD_PIANO_GRUPPI = 'SPPAS') AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM VOCE_EP
          WHERE ESERCIZIO = aes AND
          NATURA_VOCE IN ('NUA', 'NUP', 'EEC', 'EPC')) AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'RET_PASSIVITA',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2004', 'DD/MM/YYYY'),
'D', 'Rettifica PASSIVITA da esercizio precedente Terzo '||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_PASSIVITA', TRUNC(SYSDATE), 'RET_PASSIVITA', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- RETTIFICA LA PASSIVITA' CON UNA SCRITTURA IN AVERE 2004

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_PASSIVITA', TRUNC(SYSDATE), 'RET_PASSIVITA', 1, saldi.ti_istituz_commerc);

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_PASSIVITA', TRUNC(SYSDATE), 'RET_PASSIVITA', 1, saldi.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        -- RETTIFICA LA PASSIVITA' CON UNA SCRITTURA IN DARE 2004

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_PASSIVITA', TRUNC(SYSDATE), 'RET_PASSIVITA', 1, saldi.ti_istituz_commerc);

        -- STORNATO CON STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_PASSIVITA', TRUNC(SYSDATE), 'RET_PASSIVITA', 1, saldi.ti_istituz_commerc);

END IF;

end loop;

commit;

END LOOP;
END;



PROCEDURE rettifiche_iva_debito (aes in number) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

------------------ IVA DEBITO 2004 CON COMPETENZA 2003
FOR SALDI IN
(SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_TERZO, m.ti_istituz_commerc,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) SALDO
 FROM    movimento_coge m, scrittura_partita_doppia t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = acds.cd_unita_organizzativa AND
 --        M.CD_UNITA_ORGANIZZATIVA = '019.001' AND
         t.CD_CDS                  = m.CD_CDS                  and
         t.ESERCIZIO               = m.ESERCIZIO               and
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  and
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y' AND
--         M.TI_ISTITUZ_COMMERC = 'C'                            AND
         M.CD_VOCE_EP = 'P.05.011' AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_TERZO, m.ti_istituz_commerc) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'RET_IVA_DEB',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2004', 'DD/MM/YYYY'),
'D', 'Rettifica IVA DEBITO da esercizio precedente Terzo '||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_IVA_DEB', TRUNC(SYSDATE), 'RET_IVA_DEB', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- NUOVO DEBITO 2004 IN AVERE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, 'P.05.011',
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_IVA_DEB', TRUNC(SYSDATE), 'RET_IVA_DEB', 1, saldi.ti_istituz_commerc);

        -- ATTUALE DEBITO (SPORCO) AVERE 2003 DA CHIUDERE IN DARE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, 'P.05.011',
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_IVA_DEB', TRUNC(SYSDATE), 'RET_IVA_DEB', 1, saldi.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        -- NUOVO MINOR DEBITO IN DARE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, 'P.05.011',
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_IVA_DEB', TRUNC(SYSDATE), 'RET_IVA_DEB', 1, saldi.ti_istituz_commerc);

        -- ATTUALE MINOR DEBITO (SPORCO) DARE 2003 DA CHIUDERE IN AVERE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, 'P.05.011',
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_IVA_DEB', TRUNC(SYSDATE), 'RET_IVA_DEB', 1, saldi.ti_istituz_commerc);

END IF;

end loop;

commit;

END LOOP;
END;



PROCEDURE rettifiche_iva_credito (aes in number) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

------------------ IVA CREDITO 2004 CON COMPETENZA 2003

FOR SALDI IN
(SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_TERZO, m.ti_istituz_commerc,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) SALDO
 FROM    movimento_coge m, scrittura_partita_doppia t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = ACDS.CD_UNITA_ORGANIZZATIVA AND
 --        M.CD_UNITA_ORGANIZZATIVA = '019.001' AND
         t.CD_CDS                  = m.CD_CDS                  and
         t.ESERCIZIO               = m.ESERCIZIO               and
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  and
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y' AND
--         M.TI_ISTITUZ_COMMERC = 'C'                            AND
         M.CD_VOCE_EP = 'A.06.007' AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_TERZO, m.ti_istituz_commerc) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'RET_IVA_CRE',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2004', 'DD/MM/YYYY'),
'D', 'Rettifica IVA CREDITO da esercizio precedente Terzo '||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_IVA_CRE', TRUNC(SYSDATE), 'RET_IVA_CRE', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- NUOVO CREDITO 2004 IN DARE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, 'A.06.007',
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_IVA_CRE', TRUNC(SYSDATE), 'RET_IVA_CRE', 1, saldi.ti_istituz_commerc);

        -- ATTUALE CREDITO DA CHIUDERE IN AVERE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, 'A.06.007',
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_IVA_CRE', TRUNC(SYSDATE), 'RET_IVA_CRE', 1, saldi.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        -- NUOVO MINOR CREDITO IN AVERE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, 'A.06.007',
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_IVA_CRE', TRUNC(SYSDATE), 'RET_IVA_CRE', 1, saldi.ti_istituz_commerc);

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, 'A.06.007',
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_IVA_CRE', TRUNC(SYSDATE), 'RET_IVA_CRE', 1, saldi.ti_istituz_commerc);

END IF;

end loop;
commit;

END LOOP;
END;



PROCEDURE rettifiche_debiti_fornitori (aes in number) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

------------------ IVA DEBITO 2004 CON COMPETENZA 2003
FOR SALDI In (SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_TERZO, M.CD_VOCE_EP, m.ti_istituz_commerc,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) SALDO
 FROM    movimento_coge m, scrittura_partita_doppia t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = ACDS.CD_UNITA_ORGANIZZATIVA AND
 --        M.CD_UNITA_ORGANIZZATIVA = '019.001' AND
         t.CD_CDS                  = m.CD_CDS                  and
         t.ESERCIZIO               = m.ESERCIZIO               and
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  and
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y' AND
--         M.TI_ISTITUZ_COMMERC = 'C'                            AND
         M.CD_VOCE_EP In ('P.05.005', 'P.05.012') AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_TERZO, M.CD_VOCE_EP, m.ti_istituz_commerc) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE',
          'RET_DEBITI', TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2004', 'DD/MM/YYYY'),
'D', 'Rettifica DEBITI da esercizio precedente Terzo '||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_DEBITI', TRUNC(SYSDATE), 'RET_DEBITI', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- NUOVO DEBITO 2004 IN AVERE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_DEBITI', TRUNC(SYSDATE), 'RET_DEBITI', 1, saldi.ti_istituz_commerc);

        -- ATTUALE DEBITO (SPORCO) AVERE 2003 DA CHIUDERE IN DARE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_DEBITI', TRUNC(SYSDATE), 'RET_DEBITI', 1, saldi.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        -- NUOVO MINOR DEBITO IN DARE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_DEBITI', TRUNC(SYSDATE), 'RET_DEBITI', 1, saldi.ti_istituz_commerc);

        -- ATTUALE MINOR DEBITO (SPORCO) DARE 2003 DA CHIUDERE IN AVERE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_DEBITI', TRUNC(SYSDATE), 'RET_DEBITI', 1, saldi.ti_istituz_commerc);

END IF;

end loop;

commit;

END LOOP;
END;



PROCEDURE rettifiche_attivita (aes in number) is
NUMERO NUMBER;

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

------------------ COSTI 2004 CON COMPETENZA 2003
FOR SALDI IN
(SELECT  M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) DARE,
         NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) AVERE,
         NVL(sum(DECODE(M.SEZIONE, 'D', m.im_movimento)), 0) - NVL(sum(DECODE(M.SEZIONE, 'A', m.im_movimento)), 0) SALDO
 FROM    movimento_coge m, scrittura_partita_doppia t
 WHERE   M.ESERCIZIO = aes AND
         M.CD_CDS = acds.cd_unita_organizzativa And
 --        M.CD_UNITA_ORGANIZZATIVA = '019.001' AND
         t.CD_CDS                  = m.CD_CDS                  and
         t.ESERCIZIO               = m.ESERCIZIO               and
         t.CD_UNITA_ORGANIZZATIVA  = m.CD_UNITA_ORGANIZZATIVA  and
         t.PG_SCRITTURA            = m.PG_SCRITTURA            AND
         t.attiva = 'Y' AND
--         M.TI_ISTITUZ_COMMERC = 'C'                            AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM CNR_ASS_CONTO_GRUPPO_EP
          WHERE ESERCIZIO = aes AND
                CD_PIANO_GRUPPI = 'SPATT') AND
         (M.ESERCIZIO, M.CD_VOCE_EP) IN
         (SELECT ESERCIZIO, CD_VOCE_EP
          FROM VOCE_EP
          WHERE ESERCIZIO = aes AND
          NATURA_VOCE IN ('NUA', 'NUP', 'EEC', 'EPC')) AND
         NVL(TO_CHAR(DT_DA_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO AND
         NVL(TO_CHAR(DT_A_COMPETENZA_COGE, 'YYYY'), M.ESERCIZIO) < M.ESERCIZIO
 GROUP BY M.CD_CDS, M.CD_UNITA_ORGANIZZATIVA, M.CD_VOCE_EP, M.CD_TERZO, m.ti_istituz_commerc) LOOP

NUMERO := CNRCTB200.getNextProgressivo(aes, SALDI.CD_Cds, SALDI.Cd_Unita_Organizzativa, 'COGE', 'RET_ATTIVITA',
                             TRUNC(SYSDATE));

INSERT INTO SCRITTURA_PARTITA_DOPPIA
(CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA , PG_SCRITTURA, ORIGINE_SCRITTURA, CD_TERZO,
IM_SCRITTURA, TI_SCRITTURA, DT_CONTABILIZZAZIONE, STATO, DS_SCRITTURA, ATTIVA,
DACR, UTCR, DUVA, UTUV, PG_VER_REC, CD_CDS_DOCUMENTO, CD_UO_DOCUMENTO)
VALUES
(SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO,
'CAUSALE', SALDI.CD_TERZO, ABS(SALDI.SALDO), 'P', TO_DATE('31/12/2004', 'DD/MM/YYYY'),
'D', 'Rettifica Costi da esercizio precedente Terzo '||TO_CHAR(SALDI.CD_TERZO),
'Y', TRUNC(SYSDATE), 'RET_ATTIVITA', TRUNC(SYSDATE), 'RET_ATTIVITA', 1, SALDI.CD_CDS, SALDI.CD_UNITA_ORGANIZZATIVA);

IF SALDI.SALDO > 0 THEN

        -- RETTIFICA L'ATTIVITA' CON UNA SCRITTURA IN DARE 2004

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_ATTIVITA', TRUNC(SYSDATE), 'RET_ATTIVITA', 1, SALDI.ti_istituz_commerc);

        -- STORNATO CON STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_ATTIVITA', TRUNC(SYSDATE), 'RET_ATTIVITA', 1, SALDI.ti_istituz_commerc);

ELSIF SALDI.SALDO < 0 THEN

        -- RETTIFICA L'ATTIVITA' CON UNA SCRITTURA IN AVERE 2004

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 1, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'A', TO_DATE('01/01/2004', 'DD/MM/YYYY'), TO_DATE('01/01/2004', 'DD/MM/YYYY'),
        'D', TRUNC(SYSDATE), 'RET_ATTIVITA', TRUNC(SYSDATE), 'RET_ATTIVITA', 1, SALDI.ti_istituz_commerc);

        -- STORNATO CON STATO PATRIMONIALE INIZIALE

        INSERT INTO MOVIMENTO_COGE
        (CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, PG_SCRITTURA, PG_MOVIMENTO, CD_TERZO, CD_VOCE_EP,
        IM_MOVIMENTO, SEZIONE, DT_DA_COMPETENZA_COGE, DT_A_COMPETENZA_COGE, STATO,
        DACR, UTCR, DUVA, UTUV, PG_VER_REC, TI_ISTITUZ_COMMERC)
        VALUES
        (SALDI.CD_CDS, aes, SALDI.CD_UNITA_ORGANIZZATIVA, NUMERO , 2, SALDI.CD_TERZO, SALDI.CD_VOCE_EP,
        ABS(SALDI.SALDO), 'D', TO_DATE('31/12/2003', 'DD/MM/YYYY'), TO_DATE('31/12/2003', 'DD/MM/YYYY'), 'D',
        TRUNC(SYSDATE), 'RET_ATTIVITA', TRUNC(SYSDATE), 'RET_ATTIVITA', 1, SALDI.ti_istituz_commerc);

END IF;

End Loop;

Commit;

END LOOP;
END;



PROCEDURE Annulla_Chiusura_Gruppo (aes IN NUMBER) IS
pg_exec  NUMBER;
job          NUMBER:=NULL;
next_date       DATE:=SYSDATE;
BEGIN
FOR aCDS IN (SELECT CD_UNITA_ORGANIZZATIVA FROM v_unita_organizzativa_valida
             WHERE ESERCIZIO = aEs AND
                   fl_cds = 'Y' AND
                   CD_UNITA_ORGANIZZATIVA IN (
'002',
'003',
'010',
'016',
'016',
'020',
'021',
'027',
'033',
'036',
'043',
'044',
'046',
'053',
'055',
'056',
'057',
'057',
'059',
'066',
'066',
'067',
'069',
'069',
'074',
'075',
'079',
'080',
'080',
'082',
'087',
'094',
'096',
'097',
'103',
'103',
'104',
'107')
                   ORDER BY cd_unita_organizzativa) LOOP

BEGIN
  pg_exec:=Ibmutl210.logStartExecution(job,'$$$$$TESTECONOM$$$$$');
  Cnrctb206.JOB_ANNULLACHIUSURACOGECOAN(job,pg_exec,next_date,aes,ACDS.CD_UNITA_ORGANIZZATIVA);
EXCEPTION WHEN OTHERS THEN
  ROLLBACK;
  Ibmutl200.logErr(pg_exec, SQLERRM(SQLCODE),DBMS_UTILITY.FORMAT_ERROR_STACK,
  '$$$$$DEFAULT_HANDLER_ERRORI$$$$$');
END;

END LOOP;
END;



PROCEDURE Annulla_Chiusura_Cds (ines in number, ACDS IN VARCHAR2) IS
  pg_exec NUMBER;
  job NUMBER:=NULL;
  next_date DATE:=SYSDATE;
BEGIN
  pg_exec:=Ibmutl210.logStartExecution(job,'$$$$$TESTECONOM$$$$$');
  Cnrctb206.JOB_ANNULLACHIUSURACOGECOAN(job,pg_exec,next_date,ines,ACDS);
EXCEPTION WHEN OTHERS THEN
  ROLLBACK;
  Ibmutl200.logErr(pg_exec, SQLERRM(SQLCODE),DBMS_UTILITY.FORMAT_ERROR_STACK,
  '$$$$$DEFAULT_HANDLER_ERRORI$$$$$');
END;



PROCEDURE Annulla_All_Chiusure (aes IN NUMBER) IS
pg_exec  NUMBER;
job          NUMBER:=NULL;
next_date       DATE:=SYSDATE;
BEGIN
FOR aCDS IN (SELECT CD_CDS FROM CHIUSURA_COEP
             WHERE ESERCIZIO = aEs AND
                   STATO != 'A'
                   ORDER BY cd_CDS) LOOP

BEGIN
  pg_exec:=Ibmutl210.logStartExecution(job,'$$$$$TESTECONOM$$$$$');
  Cnrctb206.JOB_ANNULLACHIUSURACOGECOAN(job,pg_exec,next_date,aEs,ACDS.CD_CDS);
EXCEPTION WHEN OTHERS THEN
  ROLLBACK;
  Ibmutl200.logErr(pg_exec, SQLERRM(SQLCODE),DBMS_UTILITY.FORMAT_ERROR_STACK,
  '$$$$$DEFAULT_HANDLER_ERRORI$$$$$');
END;

END LOOP;
END;



PROCEDURE AGGIORNA_STATO_COGE_DOC_2006 IS

BEGIN

FOR DOC IN (Select t.*
From   V_DOC_AMM_COGE_TSTA t
Where  t.ESERCIZIO = 2006 And
       t.STATO_COGE = 'C') LOOP

IF doc.CD_TIPO_DOCUMENTO = 'ANTICIPO' THEN

        NULL;

ELSIF doc.CD_TIPO_DOCUMENTO = 'COMPENSO' THEN

        UPDATE COMPENSO
        SET    stato_coge = 'N', STATO_COAN = 'N'
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_COMPENSO            = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO = 'FATTURA_P' THEN

        UPDATE FATTURA_PASSIVA
        SET    stato_coge = 'N', STATO_COAN = 'N'
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_FATTURA_PASSIVA     = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO = 'FATTURA_A' THEN

        UPDATE FATTURA_ATTIVA
        SET    stato_coge = 'N', STATO_COAN = 'N'
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_FATTURA_ATTIVA     = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO IN ('GENERICO_E', 'GENERICO_S', 'GEN_AP_FON', 'GEN_CORA_E', 'GEN_CORA_S', 'GEN_CORV_E',
                                'GEN_CORV_S', 'GEN_IVA_E', 'TRASF_E', 'TRASF_S') THEN

        UPDATE DOCUMENTO_GENERICO
        SET    stato_coge = 'N', STATO_COAN = 'N'
        WHERE  CD_TIPO_DOCUMENTO_AMM  = DOC.CD_TIPO_DOCUMENTO AND
               CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_DOCUMENTO_GENERICO  = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO = 'MISSIONE' THEN

        UPDATE MISSIONE
        SET    stato_coge = 'N', STATO_COAN = 'N'
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_MISSIONE            = DOC.PG_NUMERO_DOCUMENTO;

END IF;

--COMMIT;

END LOOP;

END;



PROCEDURE AGGIORNA_SALDI_GRUPPO IS

BEGIN

FOR SALDI IN (SELECT CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP,
         CD_TERZO, TI_ISTITUZ_COMMERC,
                     SUM(DECODE(SEZIONE, 'D', IM_MOVIMENTO, 0)) DARE,
                     SUM(DECODE(SEZIONE, 'A', IM_MOVIMENTO, 0)) AVERE
              FROM   MOVIMENTO_COGE
              WHERE  ESERCIZIO = 2004 AND
                     CD_CDS IN (
'000',
'002',
'003',
'007',
'014',
'016',
'018',
'019',
'020',
'022',
'023',
'024',
'026',
'028',
'029',
'032',
'036',
'041',
'042',
'043',
'044',
'045',
'046',
'048',
'051',
'052',
'053',
'055',
'056',
'057',
'059',
'063',
'064',
'066',
'067',
'068',
'071',
'073',
'074',
'075',
'077',
'078',
'080',
'091',
'094',
'096',
'097',
'099',
'100',
'101',
'102',
'103',
'104',
'106',
'107',
'317'     )
              GROUP BY CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, CD_TERZO, TI_ISTITUZ_COMMERC) LOOP

INSERT INTO SALDO_COGE VALUES
(SALDI.CD_CDS, SALDI.ESERCIZIO, SALDI.CD_UNITA_ORGANIZZATIVA, SALDI.CD_VOCE_EP,
SALDI.CD_TERZO, SALDI.DARE, SALDI.AVERE, TRUNC(SYSDATE), 'CED_SF',
TRUNC(SYSDATE), 'CED_SF', 1, SALDI.TI_ISTITUZ_COMMERC);

END LOOP;
COMMIT;

END;



PROCEDURE Aggiorna_Saldi (AES IN NUMBER, IN_CDS IN VARCHAR2) IS

BEGIN

FOR SALDI IN (SELECT CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP,
		  	 		 CD_TERZO, TI_ISTITUZ_COMMERC,
                     SUM(DECODE(SEZIONE, 'D', IM_MOVIMENTO, 0)) DARE,
                     SUM(DECODE(SEZIONE, 'A', IM_MOVIMENTO, 0)) AVERE
              FROM   MOVIMENTO_COGE
              WHERE  ESERCIZIO = AES AND
                     CD_CDS = IN_CDS
              GROUP BY CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, CD_TERZO, TI_ISTITUZ_COMMERC) LOOP

INSERT INTO SALDO_COGE VALUES
(SALDI.CD_CDS, SALDI.ESERCIZIO, SALDI.CD_UNITA_ORGANIZZATIVA, SALDI.CD_VOCE_EP,
SALDI.CD_TERZO, SALDI.DARE, SALDI.AVERE, TRUNC(SYSDATE), 'CED_SF',
TRUNC(SYSDATE), 'CED_SF', 1, SALDI.TI_ISTITUZ_COMMERC);

END LOOP;
--COMMIT;

END;



PROCEDURE AGGIORNA_COMPETENZA_DOC_2006 IS

BEGIN

FOR DOC IN (Select t.*
From   V_DOC_AMM_COGE_TSTA t, V_DOC_AMM_COGE_riga r
Where  t.ESERCIZIO = 2006 And
       t.STATO_COGE = 'C' And
       r.CD_TIPO_DOCUMENTO      = t.CD_TIPO_DOCUMENTO      and
       r.CD_CDS                 = t.CD_CDS                 and
       r.CD_UNITA_ORGANIZZATIVA = t.CD_UNITA_ORGANIZZATIVA and
       r.ESERCIZIO              = t.ESERCIZIO              and
       r.PG_NUMERO_DOCUMENTO    = t.PG_NUMERO_DOCUMENTO    And
       (r.ESERCIZIO_EV, r.TI_APPARTENENZA_EV, r.TI_GESTIONE_EV, r.CD_ELEMENTO_VOCE_EV) In
       (Select ESERCIZIO, TI_APPARTENENZA, TI_GESTIONE, CD_ELEMENTO_VOCE
        From CATEGORIA_GRUPPO_VOCE)) LOOP

IF doc.CD_TIPO_DOCUMENTO = 'ANTICIPO' THEN

        UPDATE ANTICIPO
        SET    DT_DA_COMPETENZA_COGE = DOC.DT_REGISTRAZIONE,
               DT_A_COMPETENZA_COGE   = DOC.DT_REGISTRAZIONE
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_ANTICIPO            = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO = 'COMPENSO' THEN

        UPDATE COMPENSO
        SET    DT_DA_COMPETENZA_COGE = DOC.DT_REGISTRAZIONE,
               DT_A_COMPETENZA_COGE   = DOC.DT_REGISTRAZIONE
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_COMPENSO            = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO = 'FATTURA_P' THEN

        UPDATE FATTURA_PASSIVA
        SET    DT_DA_COMPETENZA_COGE = DOC.DT_REGISTRAZIONE,
               DT_A_COMPETENZA_COGE   = DOC.DT_REGISTRAZIONE
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_FATTURA_PASSIVA     = DOC.PG_NUMERO_DOCUMENTO;

        UPDATE FATTURA_PASSIVA_RIGA
        SET    DT_DA_COMPETENZA_COGE = DOC.DT_REGISTRAZIONE,
               DT_A_COMPETENZA_COGE   = DOC.DT_REGISTRAZIONE
        WHERE  CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_FATTURA_PASSIVA     = DOC.PG_NUMERO_DOCUMENTO;

ELSIF doc.CD_TIPO_DOCUMENTO IN ('GENERICO_E', 'GENERICO_S', 'GEN_AP_FON', 'GEN_CORA_E', 'GEN_CORA_S', 'GEN_CORV_E',
                                'GEN_CORV_S', 'GEN_IVA_E', 'TRASF_E', 'TRASF_S') THEN

        UPDATE DOCUMENTO_GENERICO
        SET    DT_DA_COMPETENZA_COGE = DOC.DT_REGISTRAZIONE,
               DT_A_COMPETENZA_COGE   = DOC.DT_REGISTRAZIONE
        WHERE  CD_TIPO_DOCUMENTO_AMM  = DOC.CD_TIPO_DOCUMENTO AND
               CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_DOCUMENTO_GENERICO  = DOC.PG_NUMERO_DOCUMENTO;

        UPDATE DOCUMENTO_GENERICO_RIGA
        SET    DT_DA_COMPETENZA_COGE = DOC.DT_REGISTRAZIONE,
               DT_A_COMPETENZA_COGE   = DOC.DT_REGISTRAZIONE
        WHERE  CD_TIPO_DOCUMENTO_AMM  = DOC.CD_TIPO_DOCUMENTO AND
               CD_CDS                 = DOC.CD_CDS AND
               CD_UNITA_ORGANIZZATIVA = DOC.CD_UNITA_ORGANIZZATIVA AND
               ESERCIZIO              = DOC.ESERCIZIO AND
               PG_DOCUMENTO_GENERICO  = DOC.PG_NUMERO_DOCUMENTO;

END IF;

--COMMIT;

END LOOP;

END;


PROCEDURE AGGIORNA_ALL_SALDI (AES IN NUMBER) IS

BEGIN

For aCDS in (select CD_UNITA_ORGANIZZATIVA from v_unita_organizzativa_valida
             Where esercizio = aEs And
                   fl_cds = 'Y'
                   Order by cd_unita_organizzativa) loop

FOR SALDI IN (SELECT CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP,
		  	 		 CD_TERZO, TI_ISTITUZ_COMMERC,
                     SUM(DECODE(SEZIONE, 'D', IM_MOVIMENTO, 0)) DARE,
                     SUM(DECODE(SEZIONE, 'A', IM_MOVIMENTO, 0)) AVERE
              FROM   MOVIMENTO_COGE
              WHERE  ESERCIZIO = AES AND
                     CD_CDS = ACDS.CD_UNITA_ORGANIZZATIVA
              GROUP BY CD_CDS, ESERCIZIO, CD_UNITA_ORGANIZZATIVA, CD_VOCE_EP, CD_TERZO, TI_ISTITUZ_COMMERC) LOOP

INSERT INTO SALDO_COGE VALUES
(SALDI.CD_CDS, SALDI.ESERCIZIO, SALDI.CD_UNITA_ORGANIZZATIVA, SALDI.CD_VOCE_EP,
SALDI.CD_TERZO, SALDI.DARE, SALDI.AVERE, TRUNC(SYSDATE), 'CED_SF',
TRUNC(SYSDATE), 'CED_SF', 1, SALDI.TI_ISTITUZ_COMMERC);

END LOOP;
COMMIT;

End Loop;

END;


end;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy