Leave Trigger

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

CREATE OR REPLACE TRIGGER NAVANA_ERP.UPD_LEAVE_TAKEN_DAYS AFTER UPDATE OF IS_APPROVED ON NAVANA_ERP.

HR_EMPLOYEE_LEAVE REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW DECLARE TOTAL_LEAVE_DAYS NUMBER; BEGIN IF :NEW.IS_APPROVED = 'Y' THEN TOTAL_LEAVE_DAYS := 1 + :NEW.TO_DATE - :NEW.FROM_DATE; UPDATE SET WHERE HR_EMPLOYEE_YEARLY_LEAVE TAKEN_DAYS = NVL (TAKEN_DAYS, 0) + TOTAL_LEAVE_DAYS COMPANY_ID = :NEW.COMPANY_ID AND EMPLOYEE_ID = :NEW.EMPLOYEE_ID AND LEAVE_ID = :NEW.LEAVE_ID AND LEAVE_YEAR = TO_CHAR (SYSDATE, 'RRRR');

END IF; END; /

CREATE OR REPLACE TRIGGER NAVANA_ERP."HR_EMPLOYEE_LEAVE_B_U" BEFORE UPDATE OF IS_APPROVED ON NAVANA_ERP.HR_EMPLOYEE_LEAVE REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW DECLARE V_FORM_NAME VARCHAR2 (30); BEGIN IF :NEW.IS_APPROVED = '0' AND (:OLD.IS_APPROVED IS NULL or :OLD.IS_APPROVED='D') THEN -SELECT FORM_NAME INTO V_FORM_NAME FROM ALL_FORM_PARAMETER WHERE FORM_ID ='015'; -:NEW.REFERENCE_NO := APPROVAL.APPROVAL_COMPLETE_TRG (V_FORM_NAME, :new.LEAVE_APPL_NO, :new.EMPLOYEE_ID); END IF; END; /

CREATE OR REPLACE TRIGGER NAVANA_ERP.leave_regis_after_insert AFTER INSERT ON NAVANA_ERP.HR_EMPLOYEE_LEAVE FOR EACH ROW

DECLARE cnt number; v_total number; v_date date; v_leave_id varchar2 (10); v_palce varchar2 (100); VV NUMBER; BEGIN cnt := v_total; V_TOTAL := (:NEW.TO_DATE - :NEW.FROM_DATE) + 1; V_DATE := :NEW.FROM_DATE; SELECT INTO FROM WHERE SELECT INTO FROM WHERE IF VV > 0 THEN UPDATE SET place_of_work v_palce hr_employee employee_id = :NEW.EMPLOYEE_ID AND place_of_work IN ('PRO-000286', 'PRO-000122'); COUNT ( * ) VV ACCESS_CONTROL.ATTENDENCE ATTEND_DATE = :NEW.FROM_DATE AND emp_id = :NEW.EMPLOYEE_ID;

WHERE ELSE IF v_palce IN ('PRO-000286', 'PRO-000122') THEN FOR i IN 1 .. v_total LOOP INSERT INTO ACCESS_CONTROL.ATTENDENCE (

ACCESS_CONTROL.ATTENDENCE FIRST_STATUS = DECODE (:NEW.LEAVE_ID, 'L-01', '5', 'L-02', '6', 'L-03', '7', 'L-04', '8') ATTEND_DATE = :NEW.FROM_DATE AND emp_id = :NEW.EMPLOYEE_ID;

EMP_ID, ATTEND_DATE, FIRST_STATUS VALUES ) (:NEW.EMPLOYEE_ID, V_DATE, DECODE (:NEW.LEAVE_ID, 'L-01', '5', 'L-02', '6', 'L-03', '7', 'L-04',

'8')); v_date := v_date + 1; END LOOP; ELSE NULL; END IF; -- COMMIT; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / CREATE OR REPLACE TRIGGER NAVANA_ERP.auto_appr_del_23 BEFORE DELETE ON NAVANA_ERP.HR_EMPLOYEE_LEAVE REFERENCING NEW AS New OLD AS Old FOR EACH ROW BEGIN IF :OLD.IS_APPROVED IN ('1', 'Y') THEN RAISE_APPLICATION_ERROR ( -20188, 'ERROR MACKX PERTIAL/APPROVED CAN NOT BE DROPPED. REF:' || :OLD.REFERENCE_NO ); ELSIF :OLD.IS_APPROVED IN ('0', 'D') AND :OLD.REFERENCE_NO IS NOT NULL THEN DELETE FROM NAVANA_ERP.APPROVAL_QUEUE WHERE REFERENCE_NO = :OLD.REFERENCE_NO; DELETE FROM WHERE END IF;END; NAVANA_ERP.APPROVAL_MASTER REFERENCE_NO = :OLD.REFERENCE_NO;

You might also like