--------------------------------------------------------
--  DDL for Trigger TRIG_UPD_DEP_SCH_DETAIL
--------------------------------------------------------

  CREATE OR REPLACE EDITIONABLE TRIGGER "ENVX_OPER"."TRIG_UPD_DEP_SCH_DETAIL" AFTER
UPDATE ON DEPLOYMENT_SCHEDULE_DETAIL
FOR EACH ROW
DECLARE
    v_job_accion VARCHAR2(4000);
    v_estado NUMBER := 0;
	v_nombre_job VARCHAR2(1000);
BEGIN


    CASE 
        WHEN :new.SCHEDULE_DET_STATUS = 1 THEN 

			--Elimina el job con nombre anterior--
			BEGIN

				v_nombre_job := :old.SCHEDULE_JOB_NAME;
				PKG_DEPLOY_COORDINATOR.p_elimina_job(
					pi_nombre_job => v_nombre_job
				);

			EXCEPTION 
				WHEN OTHERS THEN
					NULL;
			END;
			--Elimina el job con nombre anterior--

			--Genera le nuevo job--
            v_job_accion := 'BEGIN sicd.pkg_deploy_coordinator.first_dep_queue(pi_job_name => '''|| :new.SCHEDULE_JOB_NAME ||'''); END;';

            PKG_DEPLOY_COORDINATOR.p_genera_job(
                pi_job_nombre => :new.SCHEDULE_JOB_NAME,
                pi_job_accion => v_job_accion, 
                pi_job_tipo_frecuencia => :new.SCHEDULE_FEQUENCY,
                pi_job_fecha_inicio => to_timestamp(to_char(:new.SCHEDULE_INIT_DATE, 'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS'),
                po_estado     => v_estado
            );
			--Genera le nuevo job--

			--Actualiza los pedidos asignados al nuevo job--
			UPDATE deployment_request_queue drq
			   SET drq.job_name = :new.SCHEDULE_JOB_NAME,
				   drq.queue_date = to_date(to_char(schedule_next_date(:new.SCHEDULE_JOB_NAME),'DD/MM/YYYY')),
				   drq.queue_alias =   to_char(schedule_next_date(:new.SCHEDULE_JOB_NAME),'YYYYMMDDHHMISS')
										 || 'SC'
										 || :new.id_schedule_detail
			 WHERE drq.job_name = :old.SCHEDULE_JOB_NAME
			   AND drq.status_queue = 0;

			--Actualiza los pedidos asignados al nuevo job--

        WHEN :new.SCHEDULE_DET_STATUS = 0 THEN 

			--Elimina el job desactivado--
            BEGIN

				v_nombre_job := :old.SCHEDULE_JOB_NAME;
				PKG_DEPLOY_COORDINATOR.p_elimina_job(
					pi_nombre_job => v_nombre_job
				);

			EXCEPTION 
				WHEN OTHERS THEN
					NULL;
			END;
			--Elimina el job desactivado--

        ELSE 
            NULL;
    END CASE;

END;

/
ALTER TRIGGER "ENVX_OPER"."TRIG_UPD_DEP_SCH_DETAIL" ENABLE;
