Files correlati : Ricompilazione Demo : [ ] Commento : Personalizzazione CRPA git-svn-id: svn://10.65.10.50/trunk@12246 c028cbd2-c16b-5b4b-a496-9718f37d4682
614 lines
22 KiB
MySQL
Executable File
614 lines
22 KiB
MySQL
Executable File
CREATE TABLE PRACTOR_LOG (
|
||
LOG_ID NUMBER (10) NOT NULL,
|
||
TIPO VARCHAR2 (25) NOT NULL,
|
||
DATA DATE NOT NULL,
|
||
UTENTE VARCHAR2 (240) NOT NULL,
|
||
TESTO VARCHAR2 (240),
|
||
CONSTRAINT PRACTOR_LOGXP
|
||
PRIMARY KEY ( LOG_ID ) )
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE prcLog (vMessage PRACTOR_LOG.testo%TYPE) IS vErrMsg VARCHAR2(100);
|
||
BEGIN
|
||
INSERT INTO PRACTOR_LOG VALUES (note_seq.NEXTVAL, '-', SYSDATE, USER, vMessage);
|
||
-- dbms_output.put_line(vMessage);
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
vErrMsg := SQLERRM(SQLCODE);
|
||
INSERT INTO PRACTOR_LOG VALUES (note_seq.NEXTVAL, '-', SYSDATE, USER, vErrMsg);
|
||
END prcLog;
|
||
/
|
||
|
||
CREATE TABLE SMC_PRJDOC_T146 (
|
||
UNICO NUMBER,
|
||
ARCH VARCHAR2 (10) NOT NULL,
|
||
UNICARCH NUMBER NOT NULL,
|
||
DTATRASF DATE,
|
||
TIPDOC VARCHAR2 (2),
|
||
DESDOC VARCHAR2 (100),
|
||
NUMDOC VARCHAR2 (20),
|
||
DTADOC DATE,
|
||
NUMDOCFIS VARCHAR2 (20),
|
||
DTADOCFIS DATE,
|
||
DTAPERT DATE,
|
||
AZIENDA VARCHAR2 (3),
|
||
TIPANA VARCHAR2 (1),
|
||
CODCF VARCHAR2 (10),
|
||
CODVAL VARCHAR2 (3),
|
||
CONSTRAINT T146XP
|
||
PRIMARY KEY ( ARCH, UNICARCH ) )
|
||
/
|
||
|
||
ALTER TABLE SMC_PRJDOC_T146 ADD CONSTRAINT R011146
|
||
FOREIGN KEY (CODVAL)
|
||
REFERENCES PMC.VL_T011 (C_VL)
|
||
/
|
||
|
||
CREATE TABLE SMC_PRJDET_T147 (
|
||
UNICO NUMBER,
|
||
ARCH VARCHAR2 (10) NOT NULL,
|
||
UNICARCH NUMBER NOT NULL,
|
||
UNICRIGA NUMBER NOT NULL,
|
||
CODART VARCHAR2 (15),
|
||
DESART VARCHAR2 (70),
|
||
QUANT NUMBER,
|
||
UNMIS VARCHAR2 (3),
|
||
CONSAL VARCHAR2 (1),
|
||
IMPVAL NUMBER,
|
||
NUMCOMM VARCHAR2 (15),
|
||
CODATTCM VARCHAR2 (10),
|
||
ELSPESA VARCHAR2 (10),
|
||
CENTCOST VARCHAR2 (6),
|
||
DTACONS DATE,
|
||
RIFRICH VARCHAR2 (20),
|
||
RIFORD VARCHAR2 (20),
|
||
RIFBOL VARCHAR2 (20),
|
||
CODVAL VARCHAR2 (3),
|
||
STATO_IMP VARCHAR2 (1),
|
||
SEGNO VARCHAR2 (1),
|
||
CONSTRAINT T147XP
|
||
PRIMARY KEY ( ARCH, UNICARCH, UNICRIGA ) )
|
||
|
||
/
|
||
|
||
ALTER TABLE SMC_PRJDET_T147 ADD CONSTRAINT C146147
|
||
FOREIGN KEY (ARCH, UNICARCH)
|
||
REFERENCES PMC.SMC_PRJDOC_T146 (ARCH, UNICARCH) ON DELETE CASCADE
|
||
|
||
/
|
||
|
||
ALTER TABLE SMC_PRJDET_T147 ADD CONSTRAINT R011147
|
||
FOREIGN KEY (CODVAL)
|
||
REFERENCES PMC.VL_T011 (C_VL)
|
||
|
||
/
|
||
|
||
CREATE OR REPLACE TRIGGER SMC_PRJDET_G147_01 BEFORE INSERT ON SMC_PRJDET_T147 FOR EACH ROW
|
||
DECLARE
|
||
TIPO SMC_PRJDOC_T146.TIPDOC%TYPE;
|
||
ATTIVITA SMC_PRJDET_T147.CODATTCM%TYPE;
|
||
PROJ PROG_T056.C_PROG%TYPE;
|
||
COSTO COSTO_AGRT_T022.P_COSTO%TYPE;
|
||
CAMBIORIF VL_T011.I_CB_CONS%TYPE;
|
||
CAMBIOPRJ VL_T011.I_CB_CONS%TYPE;
|
||
VALPRJ VL_T011.C_VL%TYPE;
|
||
ERRMSG PRACTOR_LOG.TESTO%TYPE;
|
||
baseERRMSG PRACTOR_LOG.TESTO%TYPE;
|
||
TCLASSE COSTO_AGRT_T022.T_CLASSE%TYPE;
|
||
numcosti NUMERIC;
|
||
CODCURVA CRV_DSBN_T013.C_CRV%TYPE;
|
||
|
||
DESSPESA CLASSE_DI_COSTO_T043.S_CLASSE%TYPE;
|
||
BASEINI DATE;
|
||
BASEFIN DATE;
|
||
FORINI DATE;
|
||
FORFIN DATE;
|
||
PELMNT STRU_T087.P_ELMNT%TYPE;
|
||
CBS PROG_T056.C_STRU%TYPE;
|
||
STIMA COSTO_AGRT_T022.I_STIMA_CMPL%TYPE;
|
||
BDG_REV COSTO_AGRT_T022.I_BDG_REV%TYPE;
|
||
COMM COSTO_AGRT_T022.I_COMM%TYPE;
|
||
ACEM COSTO_AGRT_T022.I_ACEM%TYPE;
|
||
CONS COSTO_AGRT_T022.I_CONS%TYPE;
|
||
CNTBZ COSTO_AGRT_T022.I_CNTBZ%TYPE;
|
||
|
||
BEGIN
|
||
Prclog('-- Nuovo documento -----------------------------------------------------------------------------------');
|
||
Prclog('-- ARCH: '||:NEW.ARCH);
|
||
Prclog('-- UNICARCH: '||:NEW.UNICARCH);
|
||
Prclog('-- RIGA: '||:NEW.UNICRIGA);
|
||
-- Tipo documento
|
||
SELECT NVL(TIPDOC,'XX') INTO TIPO FROM SMC_PRJDOC_T146
|
||
WHERE
|
||
ARCH = :NEW.ARCH
|
||
AND UNICARCH = :NEW.UNICARCH;
|
||
Prclog('Tipo documento: '||TIPO);
|
||
|
||
IF TIPO <> 'XX' THEN
|
||
-- Ottengo il codice interno del progetto, il codice della valuta e il codice della
|
||
-- CBS di progetto. Il campo NUMCOMM del documento contiene il nome
|
||
-- del progetto (campo S_PROG_NOM della tabella PROG_T056).
|
||
-- Il nome <20> univoco.
|
||
SELECT
|
||
C_PROG, NVL(C_VL, 'EUR'), C_STRU
|
||
INTO
|
||
PROJ, VALPRJ, CBS
|
||
FROM
|
||
PROG_T056
|
||
WHERE
|
||
S_PROG_NOM = :NEW.NUMCOMM;
|
||
-- log
|
||
Prclog('Codice progetto: '||PROJ);
|
||
Prclog('Codice valuta: '||VALPRJ);
|
||
Prclog('Codice CBS: '||CBS);
|
||
|
||
IF PROJ >= 0 THEN
|
||
-- CODICE COSTO
|
||
-- Controllo l'esistenza di un costo che abbia l'incrocio
|
||
-- corretto fra voce di spesa e attivit<69>
|
||
-- ELSPESA <--> S_NOME (voce dispesa ovvero nome del costo)
|
||
-- CODATTCM <--> TASK_UID (codice attivit<69>)
|
||
SELECT
|
||
NVL(COUNT(*),0)
|
||
INTO
|
||
NUMCOSTI
|
||
FROM
|
||
COSTO_AGRT_T022
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND S_NOME = :NEW.ELSPESA
|
||
AND TASK_UID = :NEW.CODATTCM;
|
||
-- 'SELECT NVL(P_COSTO,-1) INTO COSTO FROM COSTO_AGRT_T022 WHERE C_PROG = '||PROJ||' AND S_NOME = '||:NEW.ELSPESA||' AND TASK_UID = '||:NEW.CODATTCM||';';
|
||
|
||
IF NUMCOSTI = 0 THEN
|
||
-- Valori del costo
|
||
STIMA := 0;
|
||
BDG_REV := 0;
|
||
COMM := 0;
|
||
ACEM := 0;
|
||
CONS := 0;
|
||
CNTBZ := 0;
|
||
Prclog('Manca il costo ('||:NEW.ELSPESA||'), procedo all''inserimento.');
|
||
-- Codice costo
|
||
SELECT S022_P_COSTO.NEXTVAL INTO COSTO FROM dual;
|
||
Prclog('Nuovo codice costo: '||COSTO);
|
||
-- CODICE CURVA LINEARE (di default uso la curva lineare del progetto)
|
||
-- Il campo A_CRV_SIS indica il tipo di curva di sistema.
|
||
SELECT NVL(C_CRV, -1) INTO CODCURVA FROM CRV_DSBN_T013
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND A_CRV_SIS = 4;
|
||
Prclog('Codice curva lineare: '||CODCURVA);
|
||
-- DESCRIZIONE VOCE DI COSTO
|
||
-- Il campo nome contiene il codice della classe di costo,
|
||
-- Il campo descrizione contiene la descrizione della classe di costo
|
||
SELECT
|
||
NVL(S_CLASSE,'<Descrizione classe di costo>') INTO DESSPESA
|
||
FROM
|
||
CLASSE_DI_COSTO_T043
|
||
WHERE
|
||
C_CLASSE = :NEW.elspesa;
|
||
Prclog('Descrizione classe di costo: '||DESSPESA);
|
||
-- DATE RELATIVI ALL'ATTIVITA DI PROJECT
|
||
SELECT
|
||
NVL(TASK_BASE_START, SYSDATE()), NVL(TASK_BASE_FINISH, SYSDATE()), NVL(TASK_START_DATE, SYSDATE()), NVL(TASK_FINISH_DATE, SYSDATE())
|
||
INTO
|
||
BASEINI, BASEFIN, FORINI, FORFIN
|
||
FROM
|
||
MSP_TASKS
|
||
WHERE
|
||
PROJ_ID = PROJ
|
||
AND TASK_UID = :NEW.CODATTCM;
|
||
Prclog('Inizio: '||BASEINI||' Fine: '||BASEFIN||' Inizio forecast: '||FORINI||' Fine forecast: '||FORFIN);
|
||
-- CAMBIO DEL PROGETTO
|
||
SELECT NVL(I_CB_CONS, 1) INTO CAMBIOPRJ FROM VL_T011 WHERE C_VL = VALPRJ;
|
||
Prclog('Cambio: '||CAMBIOPRJ);
|
||
|
||
-- NODO CBS
|
||
-- Seleziono il nodo della CBS a cui associare il costo.
|
||
-- I nodi della CBS sono stati strutturati in modo che
|
||
-- rappresentino le voci di spesa del piano dei costi.
|
||
-- I primi due caratteri del nome del costo coincidono
|
||
-- con il nome della classe di costo inserita nella CBS.
|
||
-- es. voce di spesa (ELSPESA): 211 -- Emolumenti amministratori
|
||
-- Nella CBS andr<64> agganciata al nodo (C_ELMNT) 21 -- Stipendi
|
||
-- Si suppone che C_ELMNT sia univoco nella CBS. Non esiste per<65>
|
||
-- un indice nel database.
|
||
SELECT NVL(P_ELMNT,-1), NVL(T_CLASSE, 'C') INTO PELMNT, TCLASSE FROM
|
||
STRU_T087
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND C_STRU = CBS
|
||
AND C_ELMNT = SUBSTR(:NEW.ELSPESA,1,2);
|
||
--PRCLOG('SELECT NVL(P_ELMNT,-1) INTO PELMNT FROM STRU_T087 WHERE C_PROG = '||PROJ||' AND C_STRU = '''||CBS||''' AND C_ELMNT = SUBSTR('''||:NEW.ELSPESA||''',1,2);');
|
||
Prclog('Nodo ('||SUBSTR(:NEW.ELSPESA,1,2)||'): '||PELMNT);
|
||
IF PELMNT = -1 THEN
|
||
-- ATTACCO IL COSTO ALLA ROOT
|
||
SELECT NVL(P_ELMNT,-1) INTO PELMNT FROM
|
||
STRU_T087
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND C_STRU = CBS
|
||
AND P_ELMNT_PDR IS NULL;
|
||
TCLASSE := 'C';
|
||
Prclog('Nodo ('||SUBSTR(:NEW.ELSPESA,1,2)||') non trovato. Root: '||PELMNT);
|
||
|
||
END IF;
|
||
IF PELMNT >= 0 THEN
|
||
-- Inserimento
|
||
INSERT INTO COSTO_AGRT_T022
|
||
(C_PROG, P_COSTO, S_DES, C_VL, C_CRV, D_INI_ORIG, D_FIN_ORIG, D_INI_REVIS, D_FIN_REVIS, PROJ_UID, TASK_UID, F_EARNED, S_NOME, T_CLASSE)
|
||
VALUES
|
||
(PROJ, COSTO, DESSPESA, VALPRJ, CODCURVA, BASEINI, BASEFIN, FORINI, FORFIN, PROJ, :NEW.CODATTCM, 0, :NEW.ELSPESA, TCLASSE);
|
||
-- ASSOCIAZIONE ALLA CBS
|
||
INSERT INTO ASCN_STRU_T021
|
||
(C_PROG, P_ELMNT, P_COSTO)
|
||
VALUES
|
||
(PROJ, PELMNT, COSTO);
|
||
ELSE
|
||
Prclog('Impossibile trovare un nodo nella CBS per il costo ('||SUBSTR(:NEW.ELSPESA,1,2)||').');
|
||
END IF; -- pelmnt >= 0
|
||
|
||
ELSE -- NUMCOSTI = 0
|
||
|
||
-- il costo esiste: ottengo il codice, il tipo e la stima a completamento
|
||
SELECT
|
||
NVL(P_COSTO, -1), NVL(T_CLASSE,'C'), NVL(I_STIMA_CMPL, 0), NVL(I_BDG_REV, 0),
|
||
NVL(I_COMM, 0), NVL(I_ACEM, 0), NVL(I_CONS, 0), NVL(CNTBZ, 0)
|
||
INTO
|
||
COSTO, TCLASSE, STIMA, BDG_REV,
|
||
COMM, ACEM, CONS, CNTBZ
|
||
FROM
|
||
COSTO_AGRT_T022
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND S_NOME = :NEW.ELSPESA
|
||
AND TASK_UID = :NEW.CODATTCM;
|
||
Prclog('Codice costo: '||COSTO);
|
||
END IF;
|
||
|
||
IF COSTO >= 0 THEN
|
||
Prclog('Aggiornamento valori del costo ('||COSTO||').');
|
||
-- CAMBIO DEL PROGETTO
|
||
SELECT NVL(I_CB_CONS, 0) INTO CAMBIOPRJ FROM VL_T011 WHERE C_VL = VALPRJ;
|
||
Prclog('Valore cambio: '||CAMBIOPRJ );
|
||
IF CAMBIOPRJ > 0 THEN
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
-- ORDINE DI ACQUISTO
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
IF TIPO = 'OA' THEN
|
||
Prclog ('Tipo documento: OA');
|
||
Prclog ('Importo: '||NVL(:NEW.IMPVAL, 0));
|
||
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_COMM = NVL(I_COMM,0) + NVL(:NEW.IMPVAL, 0),
|
||
I_COMM_VL = NVL(I_COMM_VL,0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_COMM_CURR = NVL(I_COMM_CURR,0) + NVL(:NEW.IMPVAL, 0),
|
||
I_COMM_CURR_VL = NVL(I_COMM_CURR_VL,0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
|
||
COMM := COMM + NVL(:NEW.IMPVAL, 0);
|
||
Prclog('Impeganto: '||COMM||' Budget: '||BDG_REV||' Stima a completamento: '||STIMA );
|
||
|
||
-- Se l'impegnato supera il budget aumento la stima a finire
|
||
IF COMM > STIMA THEN
|
||
Prclog('Aggiorno la stima a completamento.');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_STIMA_CMPL = COMM,
|
||
I_STIMA_CMPL_VL = COMM * CAMBIOPRJ
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
END IF;
|
||
|
||
:NEW.STATO_IMP := 'I';
|
||
END IF;
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
-- BOLLA DI ENTRATA
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
IF TIPO = 'BA' THEN
|
||
Prclog ('Tipo documento: BA');
|
||
Prclog ('Importo: '||NVL(:NEW.IMPVAL, 0));
|
||
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_ACEM = NVL(I_ACEM, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_VL = NVL(I_ACEM_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_ACEM_CURR = NVL(I_ACEM_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_CURR_VL = NVL(I_ACEM_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
|
||
ACEM := ACEM + NVL(:NEW.IMPVAL, 0);
|
||
Prclog('Maturato: '||ACEM||' Budget: '||BDG_REV||' Stima a completamento: '||STIMA );
|
||
|
||
-- Se l'impegnato supera il budget aumento la stima a finire
|
||
IF ACEM > STIMA THEN
|
||
Prclog('Aggiorno la stima a completamento.');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_STIMA_CMPL = ACEM,
|
||
I_STIMA_CMPL_VL = ACEM * CAMBIOPRJ
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
END IF;
|
||
|
||
:NEW.STATO_IMP := 'I';
|
||
END IF;
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
-- FATTURA DI ACQUISTO
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
IF TIPO = 'FA' THEN
|
||
Prclog ('FA');
|
||
Prclog ('IMPORTO: '||NVL(:NEW.IMPVAL, 0));
|
||
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CONS = NVL(I_CONS, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CONS_VL = NVL(I_CONS_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CONS_CURR = NVL(I_CONS_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CONS_CURR_VL = NVL(I_CONS_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
|
||
CONS := CONS + NVL(:NEW.IMPVAL, 0);
|
||
Prclog('Fatturato: '||CONS||' Budget: '||BDG_REV||' Stima a completamento: '||STIMA );
|
||
|
||
-- Se l'impegnato supera il budget aumento la stima a finire
|
||
IF CONS > STIMA THEN
|
||
Prclog('Aggiorno la stima a completamento.');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_STIMA_CMPL = CONS,
|
||
I_STIMA_CMPL_VL = CONS * CAMBIOPRJ
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
END IF;
|
||
|
||
:NEW.STATO_IMP := 'I';
|
||
END IF;
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
-- Movimento dalla contabilit<69> analitica
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
IF TIPO = 'AN' THEN
|
||
Prclog ('Movimento dalla contabilit<69> analitica.');
|
||
Prclog ('Importo: '||NVL(:NEW.IMPVAL, 0));
|
||
Prclog ('Segno: '||NVL(:NEW.IMPVAL, 0));
|
||
Prclog ('Classe: '||TCLASSE);
|
||
IF TCLASSE = 'C' THEN
|
||
-- Costo
|
||
IF NVL(:NEW.SEGNO, 'D') = 'D' THEN
|
||
-- Dare
|
||
Prclog ('Operazione: sommo contabilizzato e maturato.');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CNTBZ = NVL(I_CNTBZ, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_VL = NVL(I_CNTBZ_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CNTBZ_CURR = NVL(I_CNTBZ_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_CURR_VL = NVL(I_CNTBZ_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_ACEM = NVL(I_ACEM, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_VL = NVL(I_ACEM_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_ACEM_CURR = NVL(I_ACEM_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_CURR_VL = NVL(I_ACEM_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_STIMA_CMPL = NVL(I_STIMA_CMPL, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_STIMA_CMPL_VL = NVL(I_STIMA_CMPL_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
ELSE
|
||
-- Avere
|
||
Prclog ('Operazione: sottraggo contabilizzato e maturato.');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CNTBZ = NVL(I_CNTBZ, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_VL = NVL(I_CNTBZ_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CNTBZ_CURR = NVL(I_CNTBZ_CURR, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_CURR_VL = NVL(I_CNTBZ_CURR_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_ACEM = NVL(I_ACEM, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_VL = NVL(I_ACEM_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_ACEM_CURR = NVL(I_ACEM_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_CURR_VL = NVL(I_ACEM_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_STIMA_CMPL = NVL(I_STIMA_CMPL, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_STIMA_CMPL_VL = NVL(I_STIMA_CMPL_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
|
||
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
END IF;
|
||
ELSE
|
||
-- Ricavo
|
||
IF NVL(:NEW.SEGNO, 'D') = 'D' THEN
|
||
-- Dare
|
||
Prclog ('Operazione: sottraggo contabilizzato e maturato.');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CNTBZ = NVL(I_CNTBZ, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_VL = NVL(I_CNTBZ_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CNTBZ_CURR = NVL(I_CNTBZ_CURR, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_CURR_VL = NVL(I_CNTBZ_CURR_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_ACEM = NVL(I_ACEM, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_VL = NVL(I_ACEM_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_ACEM_CURR = NVL(I_ACEM_CURR, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_CURR_VL = NVL(I_ACEM_CURR_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_STIMA_CMPL = NVL(I_STIMA_CMPL, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_STIMA_CMPL_VL = NVL(I_STIMA_CMPL_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
ELSE
|
||
-- Avere
|
||
Prclog ('Operazione: sommo contabilizzato e maturato.');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CNTBZ = NVL(I_CNTBZ, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_VL = NVL(I_CNTBZ_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CNTBZ_CURR = NVL(I_CNTBZ_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_CURR_VL = NVL(I_CNTBZ_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_ACEM = NVL(I_ACEM, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_VL = NVL(I_ACEM_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_ACEM_CURR = NVL(I_ACEM_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_ACEM_CURR_VL = NVL(I_ACEM_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_STIMA_CMPL = NVL(I_STIMA_CMPL, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_STIMA_CMPL_VL = NVL(I_STIMA_CMPL_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
END IF;
|
||
END IF; -- T_CLASSE = 'C'
|
||
|
||
-- CNTBZ := CNTBZ + NVL(:NEW.IMPVAL, 0);
|
||
-- ACEM := ACEM + NVL(:NEW.IMPVAL, 0);
|
||
-- Prclog('Contabilizzato: '||CNTBZ||' Maturato: '||ACEM||' Budget: '||BDG_REV||' Stima a completamento: '||STIMA );
|
||
-- -- Se il maturato o il contabilizzato superano il budget aumento la stima a finire
|
||
-- IF CNTBZ < ACEM THEN
|
||
-- CNTBZ := ACEM;
|
||
-- END IF;
|
||
-- IF (CNTBZ > STIMA) THEN
|
||
-- Prclog('Aggiorno la stima a completamento.');
|
||
-- UPDATE COSTO_AGRT_T022
|
||
-- SET
|
||
-- I_STIMA_CMPL = CNTBZ,
|
||
-- I_STIMA_CMPL_VL = CNTBZ * CAMBIOPRJ
|
||
-- WHERE
|
||
-- C_PROG = PROJ
|
||
-- AND P_COSTO = COSTO;
|
||
-- END IF;
|
||
|
||
:NEW.STATO_IMP := 'I';
|
||
|
||
END IF;
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
-- Movimento dalla contabilit<69> analitica derivante da un documento.
|
||
-- ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
|
||
IF TIPO = 'FM' THEN
|
||
Prclog ('Movimento dalla contabilit<69> analitica derivante da un documento.');
|
||
Prclog ('Importo: '||NVL(:NEW.IMPVAL, 0));
|
||
Prclog ('Segno: '||NVL(:NEW.IMPVAL, 0));
|
||
Prclog ('Classe: '||TCLASSE);
|
||
|
||
IF TCLASSE = 'C' THEN
|
||
-- Costo
|
||
IF NVL(:NEW.SEGNO, 'D') = 'D' THEN
|
||
-- Dare
|
||
Prclog ('Contabilit<EFBFBD> analitica, Costo, Dare (+).');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CNTBZ = NVL(I_CNTBZ, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_VL = NVL(I_CNTBZ_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CNTBZ_CURR = NVL(I_CNTBZ_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_CURR_VL = NVL(I_CNTBZ_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_STIMA_CMPL = NVL(I_STIMA_CMPL, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_STIMA_CMPL_VL = NVL(I_STIMA_CMPL_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
ELSE
|
||
-- Avere
|
||
Prclog ('Contabilit<EFBFBD> analitica, Costo, Avere (-).');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CNTBZ = NVL(I_CNTBZ, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_VL = NVL(I_CNTBZ_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CNTBZ_CURR = NVL(I_CNTBZ_CURR, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_CURR_VL = NVL(I_CNTBZ_CURR_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_STIMA_CMPL = NVL(I_STIMA_CMPL, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_STIMA_CMPL_VL = NVL(I_STIMA_CMPL_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
END IF;
|
||
ELSE
|
||
-- Ricavo
|
||
IF NVL(:NEW.SEGNO, 'D') = 'D' THEN
|
||
-- Dare
|
||
Prclog ('Contabilit<EFBFBD> analitica, Ricavo, Dare (-).');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CNTBZ = NVL(I_CNTBZ, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_VL = NVL(I_CNTBZ_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CNTBZ_CURR = NVL(I_CNTBZ_CURR, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_CURR_VL = NVL(I_CNTBZ_CURR_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_STIMA_CMPL = NVL(I_STIMA_CMPL, 0) - NVL(:NEW.IMPVAL, 0),
|
||
I_STIMA_CMPL_VL = NVL(I_STIMA_CMPL_VL, 0) - NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
ELSE
|
||
-- Avere
|
||
Prclog ('Contabilit<EFBFBD> analitica, Ricavo, Avere (+).');
|
||
UPDATE COSTO_AGRT_T022
|
||
SET
|
||
I_CNTBZ = NVL(I_CNTBZ, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_VL = NVL(I_CNTBZ_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
I_CNTBZ_CURR = NVL(I_CNTBZ_CURR, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_CNTBZ_CURR_VL = NVL(I_CNTBZ_CURR_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ,
|
||
|
||
I_STIMA_CMPL = NVL(I_STIMA_CMPL, 0) + NVL(:NEW.IMPVAL, 0),
|
||
I_STIMA_CMPL_VL = NVL(I_STIMA_CMPL_VL, 0) + NVL(:NEW.IMPVAL, 0) * CAMBIOPRJ
|
||
|
||
WHERE
|
||
C_PROG = PROJ
|
||
AND P_COSTO = COSTO;
|
||
END IF;
|
||
END IF; -- T_CLASSE = 'C'
|
||
|
||
-- CNTBZ := CNTBZ + NVL(:NEW.IMPVAL, 0);
|
||
--
|
||
-- Prclog('Contabilizzato: '||CNTBZ||' Budget: '||BDG_REV||' Stima a completamento: '||STIMA );
|
||
-- -- Se il maturato o il contabilizzato superano il budget aumento la stima a finire
|
||
-- IF (CNTBZ > STIMA) THEN
|
||
-- Prclog('Aggiorno la stima a completamento.');
|
||
-- UPDATE COSTO_AGRT_T022
|
||
-- SET
|
||
-- I_STIMA_CMPL = CNTBZ,
|
||
-- I_STIMA_CMPL_VL = CNTBZ * CAMBIOPRJ
|
||
-- WHERE
|
||
-- C_PROG = PROJ
|
||
-- AND P_COSTO = COSTO;
|
||
-- END IF;
|
||
|
||
:NEW.STATO_IMP := 'I';
|
||
END IF; -- TIPO = 'FM
|
||
ELSE
|
||
PrcLog('Cambio non trovato ('||VALPRJ||').');
|
||
END IF; -- CAMBIOPRJ > 0
|
||
END IF;
|
||
ELSE
|
||
Prclog ('Il nome del progetto ('||:NEW.NUMCOMM||') non <20> stato trovato.');
|
||
END IF; -- PROJ > 0
|
||
else -- Tipo documento
|
||
Prclog ('Manca il tipo documento.');
|
||
END IF; -- Tipo documento
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
Prclog ('ERRORE: '|| SQLERRM(SQLCODE));
|
||
|
||
END;
|
||
/
|