DBA Data[Home] [Help]

TRIGGER: APPS.GHR_PAY_ELEMENT_ENTRS_AFIUD

Source

Description
GHR_PAY_ELEMENT_ENTRS_AFIUD AFTER INSERT OR UPDATE OR DELETE ON PAY_ELEMENT_ENTRIES_F FOR EACH ROW
Type
AFTER EACH ROW
Event
INSERT OR UPDATE OR DELETE
Column
When
Referencing
REFERENCING NEW AS NEW OLD AS OLD
Body
DECLARE
	l_session_var		ghr_history_api.g_session_var_type;
	l_session_date		date;
	l_old_elmten_data		pay_element_entries_f%rowtype;
	l_old_elmten_hist_data	ghr_pa_history%rowtype;
	l_proc			varchar2(30):='pay_element_entries_f_afiud';

	PROCEDURE get_old_elmten_data( p_old_elmten_record in out pay_element_entries_f%rowtype) IS
	BEGIN
		ghr_history_conv_rg.conv_to_element_entry_rg (
		p_element_entry_id		=>	:old.element_entry_id,
		p_effective_start_date		=>	:old.effective_start_date,
		p_effective_end_date		=>	:old.effective_end_date,
		p_cost_allocation_keyflex_id  =>  	:old.cost_allocation_keyflex_id,
		p_assignment_id               => 	:old.assignment_id,
		p_updating_action_id          =>	:old.updating_action_id,
		p_element_link_id             =>	:old.element_link_id,
		p_original_entry_id           =>	:old.original_entry_id,
		p_creator_type                =>	:old.creator_type,
		p_entry_type                  =>	:old.entry_type,
		p_comment_id                  =>	:old.comment_id,
		p_creator_id                  =>	:old.creator_id,
		p_reason                      =>	:old.reason,
		p_target_entry_id             =>	:old.target_entry_id,
		p_attribute_category          =>	:old.attribute_category,
		p_attribute1                  =>	:old.attribute1,
		p_attribute2                  =>	:old.attribute2,
		p_attribute3                  =>	:old.attribute3,
		p_attribute4                  =>	:old.attribute4,
		p_attribute5                  =>	:old.attribute5,
		p_attribute6                  =>	:old.attribute6,
		p_attribute7                  =>	:old.attribute7,
		p_attribute8                  =>	:old.attribute8,
		p_attribute9                  =>	:old.attribute9,
		p_attribute10                 =>	:old.attribute10,
		p_attribute11                 =>	:old.attribute11,
		p_attribute12                 =>	:old.attribute12,
		p_attribute13                 =>	:old.attribute13,
		p_attribute14                 =>	:old.attribute14,
		p_attribute15                 =>	:old.attribute15,
		p_attribute16                 =>	:old.attribute16,
		p_attribute17                 =>	:old.attribute17,
		p_attribute18                 =>	:old.attribute18,
		p_attribute19                 =>	:old.attribute19,
		p_attribute20                 =>	:old.attribute20,
		p_subpriority                 =>	:old.subpriority,
		p_personal_payment_method_id  =>	:old.personal_payment_method_id,
		p_date_earned                 =>	:old.date_earned,
		p_element_entry_data	    	=>	p_old_elmten_record);
		END get_old_elmten_data;

BEGIN
      hr_utility.set_location('Entering:'|| l_proc , 1);
	ghr_history_api.get_g_session_var( l_session_var);

	hr_utility.set_location('Program Name : ' || l_session_var.program_name, 1);
	hr_utility.set_location('Fire Trigger : ' || l_session_var.fire_trigger, 1);



	IF l_session_var.fire_trigger = 'Y' THEN
		if l_session_var.assignment_id is null then
			l_session_var.assignment_id := :new.assignment_id;
		end if;
		ghr_history_api.set_g_session_var( l_session_var);

		IF lower(l_session_var.program_name) = 'core' THEN
			hr_utility.set_location( l_proc , 180);
			ghr_history_api.get_session_date( l_session_date);

			IF inserting THEN
				hr_utility.set_location( l_proc , 170);
				IF :new.effective_start_date >= l_session_date THEN
					hr_utility.set_location( l_proc , 160);
					-- For core forms effective date must be set to effective start date.
					-- Currently this is not set correctly thru core form. As it sets the
					-- effective date to session date.
					l_session_var.date_effective := :new.effective_start_date;
					ghr_history_api.set_g_session_var( l_session_var);

					ghr_history_api.set_operation_info(
					  p_table_name 		=> lower(ghr_history_api.g_eleent_table),
					  p_program_name  	=> l_session_var.program_name,
					  p_date_effective 	=> l_session_var.date_effective,
					  p_table_pk_id		=> :new.element_entry_id,
					  p_operation		=> 'insert',
					  p_old_record_data     => l_old_elmten_hist_data,
					  p_row_id			=> :new.rowid
					  );
				ELSE
				hr_utility.set_location( l_proc , 150);
					/* As core form creates a new record for the old record and
					end dates it. This is not the record which needs to be
					considered for history.
					*/
					NULL;
				END IF;
			ELSIF updating THEN
				IF l_session_date between :new.effective_start_date and
                                                  :new.effective_end_date       THEN

					hr_utility.set_location( l_proc , 140);
					get_old_elmten_data( l_old_elmten_data);
					ghr_history_conv_rg.conv_element_entry_rg_to_hist( p_element_entries_data  => l_old_elmten_data,
									   p_history_data => l_old_elmten_hist_data);

					-- For core forms effective date must be set to effective start date.
					-- Currently this is not set correctly thru core form. As it sets the
					-- effective date to session date.
					l_session_var.date_effective := :new.effective_start_date;
					ghr_history_api.set_g_session_var( l_session_var);
					ghr_history_api.set_operation_info(
						p_table_name 		=> lower(ghr_history_api.g_eleent_table),
						p_program_name		=> l_session_var.program_name,
						p_date_Effective 		=> l_session_var.date_effective,
						p_table_pk_id		=> :new.element_entry_id,
						p_operation			=> 'update',
						p_old_record_data       => l_old_elmten_hist_data,
						p_row_id			=> :new.rowid
						);
				ELSE
				hr_utility.set_location( l_proc , 130);
					/* This is the case when a record is end dated. No need to
					maintain History for this record
					*/
					NULL;
				END IF;
			ELSE /* ie deleting */
				hr_utility.set_location( l_proc , 120);
				ghr_history_api.get_g_session_var( l_session_var);
				/* Should we allow deletes from core. How should it be handled?? */
				NULL;
			END IF;
		ELSIF lower(l_session_var.program_name) = 'sf50' THEN
			IF inserting THEN
				hr_utility.set_location( l_proc , 110);
				ghr_history_api.set_operation_info(
				p_program_name	=> l_session_var.program_name,
				p_date_effective 	=> l_session_var.date_effective,
				p_table_name	=> lower(ghr_history_api.g_eleent_table),
				p_table_pk_id	=> :new.element_entry_id,
				p_operation		=> 'insert',
				p_old_record_data => l_old_elmten_hist_data,
				p_row_id 		=> :new.rowid);
			ELSIF updating THEN
				IF (:new.effective_end_date <> :old.effective_end_date) THEN
				hr_utility.set_location( l_proc , 100);
					NULL;
				ELSE
				hr_utility.set_location('sf50 Updating '|| l_proc , 20);
					get_old_elmten_data (	l_old_elmten_data);
					ghr_history_conv_rg.conv_element_entry_rg_to_hist(
					p_element_entries_data 	=> l_old_elmten_data,
					p_history_data		=> l_old_elmten_hist_data);
					ghr_history_api.set_operation_info(
					p_program_name	=> l_session_var.program_name,
					p_date_effective 	=> l_session_var.date_effective,
					p_table_name	=> lower(ghr_history_api.g_eleent_table),
					p_table_pk_id	=> :new.element_entry_id,
					p_operation		=> 'update',
					p_old_record_data => l_old_elmten_hist_data,
					p_row_id 		=> :new.rowid);

				END IF;
			END IF;
		ELSE /* Not a known type */
		      hr_utility.set_location('Unknown Program Name - ' || l_session_var.program_name ||' :' || l_proc , 10);
			hr_utility.set_message( 8301, 'GHR_UNKNOWN_PGM_TYPE');
			fnd_message.set_token('PROGRAM_TYPE', l_session_var.program_name);
			hr_utility.raise_error;
			/* History not maintained */
		END IF;
	END IF;
      hr_utility.set_location('Leaving:'|| l_proc , 1);
END GHR_PAY_ELEMENT_ENTRS_AFIUD;