-- scl chile 02/12/2005 -- tTabla Original datos (insert/update/delete/select to users Client )*/*// -- is tablename_original CREATE TABLE M4T_VAL_FASE_ALTA ( ID_SOCIEDAD VARCHAR(2) CONSTRAINT NN_VFASALT_IDSOC NOT NULL , ID_EMPLEADO VARCHAR(10) CONSTRAINT NN_VFASALT_IDEMP NOT NULL , FEC_ALTA_EMPLEADO DATE CONSTRAINT NN_VFASALT_FALTEMP NOT NULL , ID_CONCEPTO NUMBER(4) CONSTRAINT NN_VFASALT_IDCONCE NOT NULL , FEC_INICIO DATE CONSTRAINT NN_VFASALT_FECINI NOT NULL , FEC_FIN DATE NULL , VALOR NUMBER(14, 4) NULL , ID_TIPO_APLICACION NUMBER(2) CONSTRAINT NN_VFASALT_IDTIAPL NOT NULL , ID_USUARIO VARCHAR(40) DEFAULT USER NULL , FEC_ULT_ACTUALIZACION DATE DEFAULT SYSDATE NULL , COMENT VARCHAR(2000) NULL , CONSTRAINT PK_VFASALT PRIMARY KEY (ID_SOCIEDAD, ID_EMPLEADO, FEC_ALTA_EMPLEADO, ID_CONCEPTO, FEC_INICIO), CONSTRAINT FK_TIPAPLI_VFASALT FOREIGN KEY (ID_TIPO_APLICACION) REFERENCES M4T_TIPOS_APLICAC, CONSTRAINT FK_FASALT_VFASALT FOREIGN KEY (ID_SOCIEDAD, ID_EMPLEADO, FEC_ALTA_EMPLEADO) REFERENCES M4T_FASES_ALTA ON DELETE CASCADE, CONSTRAINT FK_CONCEP_VFASALT FOREIGN KEY (ID_CONCEPTO) REFERENCES M4SYS_CONCEPTOS ); /*/*/*/ AUDITORIA MOVIMEINTOS -----> LOG */*/*///* DROP TABLE M4T_AUDIT_VALFASEALTA; CREATE TABLE M4T_AUDIT_VALFASEALTA ( ID_SOCIEDAD VARCHAR(2) CONSTRAINT NN_AUDIT_VALFASEALTA_IDSOC NOT NULL, ID_EMPLEADO VARCHAR(10) CONSTRAINT NN_AUDIT_VALFASEALTA_IDEMP NOT NULL, FEC_ALTA_EMPLEADO DATE CONSTRAINT NN_AUDIT_VALFASEALTA_FALTA NOT NULL, ID_CONCEPTO NUMBER(4) CONSTRAINT NN_AUDIT_VALFASEALTA_IDHAB NOT NULL, FEC_INICIO DATE CONSTRAINT NN_AUDIT_VALFASEALTA_FEINI NOT NULL, FEC_PAGO DATE CONSTRAINT NN_AUDIT_VALFASEALTA_FPAGO NOT NULL, ID_TIPOAUDI VARCHAR(10) NOT NULL, ID_ORDINAL NUMBER(10) NULL, FEC_FIN DATE NULL, VALOR NUMBER(14) NULL, ID_TIPO_APLICACION NUMBER(2) NULL, ID_USUARIO VARCHAR(40) DEFAULT USER NULL, FEC_ULT_M DATE DEFAULT SYSDATE NULL, COMENT_SYS VARCHAR(2000) NULL, CONSTRAINT PK_AUDIT_VALFASEALTA_ID PRIMARY KEY (ID_SOCIEDAD,ID_EMPLEADO,FEC_ALTA_EMPLEADO,ID_CONCEPTO,FEC_INICIO,FEC_PAGO,ID_TIPOAUDI,ID_ORDINAL) ); CREATE OR REPLACE VIEW M4_AUDIT_VALFASEALTA AS SELECT * FROM M4T_AUDIT_VALFASEALTA WITH CHECK OPTION; CREATE OR REPLACE TRIGGER M4TG_AUDIT_VALFASEALTA BEFORE UPDATE OR INSERT ON M4T_AUDIT_VALFASEALTA FOR EACH ROW BEGIN IF INSERTING THEN SELECT NVL( MAX( ID_ORDINAL ), 0 ) + 1 INTO :NEW.ID_ORDINAL FROM M4T_AUDIT_VALFASEALTA WHERE ID_SOCIEDAD = :NEW.ID_SOCIEDAD AND ID_EMPLEADO = :NEW.ID_EMPLEADO AND FEC_ALTA_EMPLEADO = :NEW.FEC_ALTA_EMPLEADO AND ID_CONCEPTO = :NEW.ID_CONCEPTO AND FEC_INICIO = :NEW.FEC_INICIO AND FEC_PAGO = :NEW.FEC_PAGO AND ID_TIPOAUDI = :NEW.ID_TIPOAUDI; END IF; :NEW.FEC_ULT_M := SYSDATE; :NEW.ID_USUARIO := USER; END; / DROP PROCEDURE M4PR_INS_AUDIT_VALFASEALTA; CREATE OR REPLACE PROCEDURE M4PR_INS_AUDIT_VALFASEALTA ( IN_SOCIEDAD IN VARCHAR, IN_EMPLEADO IN VARCHAR, IN_FECALTA IN DATE, IN_CONCEPTO IN NUMBER, IN_FECNICIO IN DATE, IN_TIPMOV IN VARCHAR, IN_FECFIN IN DATE, IN_VALOR IN NUMBER, IN_TIPOAPLI IN NUMBER, IN_COMENTSYS IN VARCHAR ) IS BEGIN DECLARE /* Working storage Procedure */ V_FECPAGO DATE; BEGIN /* Construimos Siempre la Fecha de Pago representativa del Mes "### 25/mes/aņo ###"*/ SELECT TO_DATE(SYSDATE,'DD/MM/YY') INTO V_FECPAGO FROM DUAL; V_FECPAGO := TO_DATE('25/'||TO_CHAR(V_FECPAGO,'MM/YYYY'),'DD/MM/YYYY'); BEGIN INSERT INTO M4_AUDIT_VALFASEALTA (ID_SOCIEDAD,ID_EMPLEADO, FEC_ALTA_EMPLEADO,ID_CONCEPTO,FEC_INICIO,FEC_PAGO,ID_TIPOAUDI ,FEC_FIN,VALOR,ID_TIPO_APLICACION,COMENT_SYS) VALUES (IN_SOCIEDAD,IN_EMPLEADO,IN_FECALTA,IN_CONCEPTO,IN_FECNICIO,V_FECPAGO,IN_TIPMOV,IN_FECFIN,IN_VALOR,IN_TIPOAPLI,IN_COMENTSYS); EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR (-20303, '..........UPPSS, caramba no audite registro........'); END; END; END M4PR_INS_AUDIT_VALFASEALTA; / DROP PUBLIC SYNONYM M4_AUDIT_VALFASEALTA; DROP PUBLIC SYNONYM M4PR_INS_AUDIT_VALFASEALTA; CREATE PUBLIC SYNONYM M4_AUDIT_VALFASEALTA FOR M4_AUDIT_VALFASEALTA; CREATE PUBLIC SYNONYM M4PR_INS_AUDIT_VALFASEALTA FOR M4PR_INS_AUDIT_VALFASEALTA; GRANT SELECT,UPDATE,DELETE,INSERT ON M4_AUDIT_VALFASEALTA TO CLIENTE_META4; GRANT EXECUTE ON M4PR_INS_AUDIT_VALFASEALTA TO CLIENTE_META4; -- TRIGGER TABLA MABRE DE DATOS ---- CREATE OR REPLACE TRIGGER M4TG_UPD_VAL_FASES_ALTA BEFORE INSERT OR UPDATE ON M4T_VAL_FASE_ALTA FOR EACH ROW DECLARE VCOMENT VARCHAR(100):= NULL; VOFECFIN DATE := NULL; VNFECFIN DATE := NULL; BEGIN IF INSERTING THEN M4PR_INS_AUDIT_VALFASEALTA(:NEW.ID_SOCIEDAD,:NEW.ID_EMPLEADO,:NEW.FEC_ALTA_EMPLEADO,:NEW.ID_CONCEPTO,:NEW.FEC_INICIO,'Insert' ,:NEW.FEC_FIN,:NEW.VALOR,:NEW.ID_TIPO_APLICACION,''); END IF; VOFECFIN := NVL(:OLD.FEC_FIN,TO_DATE('01/01/1990','DD/MM/YYYY')); VNFECFIN := NVL(:NEW.FEC_FIN,TO_DATE('01/01/1990','DD/MM/YYYY')); IF UPDATING AND (VOFECFIN <> VNFECFIN OR :OLD.VALOR <> :NEW.VALOR OR :OLD.ID_TIPO_APLICACION <> :NEW.ID_TIPO_APLICACION)THEN IF VOFECFIN <> VNFECFIN THEN VCOMENT := VCOMENT||' -Se Movio ** Fecha de Fin ** '||to_char(:old.fec_fin,'dd/mm/yyyy')||' to '||to_char(:new.fec_fin,'dd/mm/yyyy'); END IF; IF :OLD.VALOR <> :NEW.VALOR THEN VCOMENT := VCOMENT||' -Se Movio ** el Valor ** $'||to_char(:old.VALOR)||' to $'||to_char(:new.VALOR); END IF; IF :OLD.ID_TIPO_APLICACION <> :NEW.ID_TIPO_APLICACION THEN VCOMENT := VCOMENT||' -Se Movio ** Tipo Aplicacion ** '||TO_CHAR(:old.ID_TIPO_APLICACION)||' to '||TO_CHAR(:new.ID_TIPO_APLICACION); END IF; M4PR_INS_AUDIT_VALFASEALTA(:NEW.ID_SOCIEDAD,:NEW.ID_EMPLEADO,:NEW.FEC_ALTA_EMPLEADO,:NEW.ID_CONCEPTO,:NEW.FEC_INICIO,'Update' ,:NEW.FEC_FIN,:NEW.VALOR,:NEW.ID_TIPO_APLICACION,VCOMENT); END IF; :NEW.FEC_ULT_ACTUALIZACION := SYSDATE; :NEW.ID_USUARIO := USER; END; / CREATE OR REPLACE TRIGGER M4TG_DEL_VAL_FASES_ALTA BEFORE DELETE ON M4T_VAL_FASE_ALTA FOR EACH ROW BEGIN IF DELETING THEN M4PR_INS_AUDIT_VALFASEALTA(:OLD.ID_SOCIEDAD,:OLD.ID_EMPLEADO,:OLD.FEC_ALTA_EMPLEADO,:OLD.ID_CONCEPTO,:OLD.FEC_INICIO,'Delete' ,:OLD.FEC_FIN,:OLD.VALOR,:OLD.ID_TIPO_APLICACION,''); END IF; END; / COMMIT;