DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_RE_GEN_003

Source


1 PACKAGE BODY IGS_RE_GEN_003 AS
2 /* $Header: IGSRE03B.pls 120.0 2005/06/01 21:35:49 appldev noship $ */
3 -- modified procedures resp_ins_tex_tri and resp_ins_tpm_tri to
4 --add 3 new fields in the tbh calls to IGS_TR_ITEM and IGS_TR_STEP
5 -- for tracking dld nov 2001 release bug#1837257
6 
7   PROCEDURE RESP_INS_MIL_HIST(
8     p_person_id IN NUMBER ,
9     p_ca_sequence_number IN NUMBER ,
10     p_sequence_number IN NUMBER ,
11     p_old_milestone_type IN VARCHAR2 ,
12     p_new_milestone_type IN VARCHAR2 ,
13     p_old_milestone_status IN VARCHAR2 ,
14     p_new_milestone_status IN VARCHAR2 ,
15     p_old_due_dt IN DATE ,
16     p_new_due_dt IN DATE ,
17     p_old_description IN VARCHAR2 ,
18     p_new_description IN VARCHAR2 ,
19     p_old_actual_reached_dt IN DATE ,
20     p_new_actual_reached_dt IN DATE ,
21     p_old_preced_sequence_number IN NUMBER ,
22     p_new_preced_sequence_number IN NUMBER ,
23     p_old_ovrd_ntfctn_immnnt_days IN NUMBER ,
24     p_new_ovrd_ntfctn_immnnt_days IN NUMBER ,
25     p_old_ovrd_ntfctn_rmndr_days IN NUMBER ,
26     p_new_ovrd_ntfctn_rmndr_days IN NUMBER ,
27     p_old_re_reminder_days IN NUMBER ,
28     p_new_re_reminder_days IN NUMBER ,
29     p_old_comments IN VARCHAR2 ,
30     p_new_comments IN VARCHAR2 ,
31     p_old_update_who IN NUMBER ,
32     p_new_update_who IN NUMBER ,
33     p_old_update_on IN DATE ,
34     p_new_update_on IN DATE )
35   AS
36     gv_other_detail		VARCHAR2(255);
37     lv_rowid			VARCHAR2(25);
38     v_org_id IGS_PR_MILESTONE_HST.ORG_ID%TYPE := IGS_GE_GEN_003.Get_Org_Id;
39 
40   BEGIN	-- resp_ins_mil_hist
41     -- Insert IGS_PR_MILESTONE history(IGS_PR_MILESTONE_HST)
42     DECLARE
43       v_mil_rec		IGS_PR_MILESTONE_HST%ROWTYPE;
44       v_create_history	BOOLEAN := FALSE;
45     BEGIN
46       -- If any of the old values (p_old_<column_name>) are
47       -- different from the associated new values (p_new_<column_name>)
48       -- (with the exception of the last_update_date and last_updated_by columns)
49       -- then create a IGS_PR_MILESTONE_HST history record with the old values
50       -- (p_old_<column_name>).  Do not set the last_updated_by and last_update_date
51       -- columns when creating the history record.
52       IF p_new_milestone_type <> p_old_milestone_type THEN
53  	v_mil_rec.milestone_type := p_old_milestone_type;
54 	v_create_history := TRUE;
55       END IF;
56       IF p_new_milestone_status <> p_old_milestone_status THEN
57 	v_mil_rec.milestone_status := p_old_milestone_status;
58 	v_create_history := TRUE;
59       END IF;
60       IF p_new_due_dt <> p_old_due_dt THEN
61 	v_mil_rec.due_dt := p_old_due_dt;
62 	v_create_history := TRUE;
63       END IF;
64       IF NVL(p_new_description,'NULL') <> NVL(p_old_description,'NULL') THEN
65 	v_mil_rec.description := p_old_description;
66 	v_create_history := TRUE;
67       END IF;
68       IF NVL(p_new_actual_reached_dt,IGS_GE_DATE.IGSDATE('1900/01/01')) <>
69  	NVL(p_old_actual_reached_dt,IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
70 	v_mil_rec.actual_reached_dt := p_old_actual_reached_dt;
71 	v_create_history := TRUE;
72       END IF;
73       IF NVL(p_new_preced_sequence_number,0) <>
74 	NVL(p_old_preced_sequence_number,0) THEN
75 	v_mil_rec.preced_sequence_number := p_old_preced_sequence_number;
76 	v_create_history := TRUE;
77       END IF;
78       IF NVL(p_new_ovrd_ntfctn_immnnt_days,0) <>
79 	NVL(p_old_ovrd_ntfctn_immnnt_days,0) THEN
80 	v_mil_rec.ovrd_ntfctn_imminent_days := p_old_ovrd_ntfctn_immnnt_days;
81 	v_create_history := TRUE;
82       END IF;
83       IF NVL(p_new_ovrd_ntfctn_rmndr_days,0) <>
84  	NVL(p_old_ovrd_ntfctn_rmndr_days,0) THEN
85 	v_mil_rec.ovrd_ntfctn_reminder_days := p_old_ovrd_ntfctn_rmndr_days;
86 	v_create_history := TRUE;
87       END IF;
88       IF NVL(p_new_re_reminder_days,0) <>
89  	NVL(p_old_re_reminder_days,0) THEN
90 	v_mil_rec.ovrd_ntfctn_re_reminder_days := p_old_re_reminder_days;
91 	v_create_history := TRUE;
92       END IF;
93       IF NVL(p_new_comments,'NULL') <> NVL(p_old_comments,'NULL') THEN
94  	v_mil_rec.comments := p_old_comments;
95 	v_create_history := TRUE;
96       END IF;
97       IF v_create_history THEN
98 	v_mil_rec.person_id := p_person_id;
99 	v_mil_rec.ca_sequence_number := p_ca_sequence_number;
100 	v_mil_rec.sequence_number := p_sequence_number;
101 	v_mil_rec.hist_start_dt := p_old_update_on;
102 	v_mil_rec.hist_end_dt := p_new_update_on;
103 	v_mil_rec.hist_who := p_old_update_who;
104         IGS_PR_MILESTONE_HST_PKG.INSERT_ROW(
105           X_ROWID =>   LV_ROWID,
106 	  X_person_id => v_mil_rec.person_id,
107 	  X_ca_sequence_number => v_mil_rec.ca_sequence_number,
108 	  X_sequence_number => v_mil_rec.sequence_number,
109 	  X_hist_start_dt => v_mil_rec.hist_start_dt,
110 	  X_hist_end_dt => v_mil_rec.hist_end_dt,
111 	  X_hist_who => v_mil_rec.hist_who,
112 	  X_milestone_type => v_mil_rec.milestone_type,
113 	  X_milestone_status => v_mil_rec.milestone_status,
114 	  X_due_dt => v_mil_rec.due_dt,
115 	  X_description => v_mil_rec.description,
116 	  X_actual_reached_dt => v_mil_rec.actual_reached_dt,
117 	  X_preced_sequence_number=> v_mil_rec.preced_sequence_number,
118 	  X_ovrd_ntfctn_imminent_days => v_mil_rec.ovrd_ntfctn_imminent_days,
119 	  X_ovrd_ntfctn_reminder_days => v_mil_rec.ovrd_ntfctn_reminder_days,
120 	  X_ovrd_ntfctn_re_reminder_days => v_mil_rec.ovrd_ntfctn_re_reminder_days,
121 	  X_comments => v_mil_rec.comments,
122 	  X_Org_Id => v_org_id,
123 	  X_MODE  => 'R');
124       END IF;
125     END;
126   EXCEPTION
127     WHEN OTHERS THEN
128       Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
129       IGS_GE_MSG_STACK.ADD;
130       app_Exception.Raise_Exception;
131   END resp_ins_mil_hist;
132 
133 
134   PROCEDURE RESP_INS_TEX_HIST(
135     P_PERSON_ID IN NUMBER ,
136     P_CA_SEQUENCE_NUMBER IN NUMBER ,
137     P_THE_SEQUENCE_NUMBER IN NUMBER ,
138     P_CREATION_DT IN DATE ,
139     P_OLD_SUBMISSION_DT IN DATE ,
140     P_NEW_SUBMISSION_DT IN DATE ,
141     P_OLD_THESIS_EXAM_TYPE IN VARCHAR2 ,
142     P_NEW_THESIS_EXAM_TYPE IN VARCHAR2 ,
143     p_old_thesis_panel_type IN VARCHAR2 ,
144     p_new_thesis_panel_type IN VARCHAR2 ,
145     p_old_thesis_result_cd IN VARCHAR2 ,
146     p_new_thesis_result_cd IN VARCHAR2 ,
147     p_old_tracking_id IN NUMBER ,
148     p_new_tracking_id  NUMBER ,
149     p_old_update_who IN NUMBER ,
150     p_new_update_who IN NUMBER ,
151     p_old_update_on IN DATE ,
152     p_new_update_on IN DATE )
153   AS
154     gv_other_detail		VARCHAR2(255);
155     LV_ROWID			VARCHAR2(25);
156     v_org_id IGS_PR_MILESTONE_HST.ORG_ID%TYPE := IGS_GE_GEN_003.Get_Org_Id;
157   BEGIN	-- resp_ins_tex_hist
158 	-- Insert IGS_RE_THESIS_EXAM history (IGS_RE_THS_EXAM_HIST)
159     DECLARE
160       v_teh_rec			IGS_RE_THS_EXAM_HIST%ROWTYPE;
161       v_create_history		BOOLEAN := FALSE;
162       v_hist_start_dt			IGS_RE_THESIS_EXAM.last_update_date%TYPE;
163       v_hist_end_dt			IGS_RE_THESIS_EXAM.last_update_date%TYPE;
164       v_hist_who			IGS_RE_THESIS_EXAM.last_updated_by%TYPE;
165     BEGIN
166 	-- If any of the old values (p_old_<column_name>) are different from the
167 	-- associated new  values (p_new_<column_name>)  (with the exception the
168 	-- last_updated_by and last_update_date columns) then create an IGS_RE_THS_EXAM_HIST history
169 	-- record with the old values (p_old_<column_name>).  Do not set the
170 	-- last_updated_by and last_update_date columns when creating the history record.
171       IF NVL(p_new_submission_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
172  	NVL(p_old_submission_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
173 	v_teh_rec.submission_dt := p_old_submission_dt;
174 	v_create_history := TRUE;
175       END IF;
176       IF p_new_thesis_exam_type <> p_old_thesis_exam_type THEN
177 	v_teh_rec.thesis_exam_type := p_old_thesis_exam_type;
178 	v_create_history := TRUE;
179       END IF;
180       IF p_new_thesis_panel_type <> p_old_thesis_panel_type THEN
181 	v_teh_rec.thesis_panel_type := p_old_thesis_panel_type;
182 	v_create_history := TRUE;
183       END IF;
184       IF NVL(p_new_tracking_id, -1) <> NVL(p_old_tracking_id, -1) THEN
185 	v_teh_rec.tracking_id := p_old_tracking_id;
186 	v_create_history := TRUE;
187       END IF;
188       IF NVL(p_new_thesis_result_cd, 'NULL') <>
189 		 NVL(p_old_thesis_result_cd,'NULL') THEN
190 	v_teh_rec.thesis_result_cd := NVL(p_old_thesis_result_cd,' ');
191 	v_create_history := TRUE;
192       END IF;
193       -- create a history record if any column has changed
194       IF v_create_history = TRUE THEN
195 	v_teh_rec.person_id		:= p_person_id;
196 	v_teh_rec.ca_sequence_number 	:= p_ca_sequence_number;
197 	v_teh_rec.the_sequence_number 	:= p_the_sequence_number;
198 	v_teh_rec.creation_dt	 	:= p_creation_dt;
199 	v_teh_rec.hist_start_dt 	:= p_old_update_on;
200 	v_teh_rec.hist_end_dt 		:= NVL(p_new_update_on,SYSDATE);
201 	v_teh_rec.hist_who 		:= p_old_update_who;
202         IGS_RE_THS_EXAM_HIST_PKG.INSERT_ROW(
203   	  X_ROWID   => LV_ROWID,
204 	  X_person_id =>  v_teh_rec.person_id,
205 	  X_ca_sequence_number => v_teh_rec.ca_sequence_number,
206 	  X_the_sequence_number => v_teh_rec.the_sequence_number,
207 	  X_creation_dt => v_teh_rec.creation_dt,
208 	  X_hist_start_dt => v_teh_rec.hist_start_dt,
209 	  X_hist_end_dt => v_teh_rec.hist_end_dt,
210 	  X_hist_who => v_teh_rec.hist_who,
211 	  X_submission_dt => v_teh_rec.submission_dt,
212 	  X_thesis_exam_type => v_teh_rec.thesis_exam_type,
213 	  X_thesis_panel_type => v_teh_rec.thesis_panel_type,
214 	  X_tracking_id => v_teh_rec.tracking_id,
215 	  X_thesis_result_cd => v_teh_rec.thesis_result_cd,
216 	  X_Org_Id => v_org_id,
217 	  X_MODE => 'R');
218       END IF;
219     END;
220   EXCEPTION
221     WHEN OTHERS THEN
222       Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
223      IGS_GE_MSG_STACK.ADD;
224      App_Exception.Raise_Exception;
225   END resp_ins_tex_hist;
226 
227   FUNCTION RESP_INS_TEX_TRI(
228     p_person_id IN NUMBER ,
229     p_ca_sequence_number IN NUMBER ,
230     p_the_sequence_number IN NUMBER ,
231     p_creation_dt IN DATE ,
232     p_thesis_panel_type IN VARCHAR2 ,
233     p_message_name OUT NOCOPY VARCHAR2 )
234   --add 3 new fields in the tbh calls to IGS_TR_ITEM and IGS_TR_STEP
235   --for tracking dld nov 2001 release bug#1837257
236 /*-----------------------------------------------------------------------
237 who           when           what
238 svanukur      07-sep-2004   modified cursor c_pe for performance bug 3866423
239 --------------------------------------------------------------------------*/
240   RETURN NUMBER AS
241     gv_other_detail		VARCHAR2(255);
242   BEGIN	-- resp_ins_tex_tri
243 	-- Insert tracking item for a thesis_examination_record.
244 	-- The routine returns the tracking ID of the item created.
245 	-- IGS_GE_NOTE: A commit is not done from this routine as it is done as part of the
246 	-- calling routine
247     DECLARE
248       cst_s_tracking_type	CONSTANT
249 					IGS_TR_TYPE.s_tracking_type%TYPE := 'RES_TEX';
250       cst_stst_principal	CONSTANT
251 					IGS_TR_STEP.s_tracking_step_type%TYPE := 'RES_TEX_PR';
252       cst_stst_student	CONSTANT
253 					IGS_TR_STEP.s_tracking_step_type%TYPE := 'RES_TEX_ST';
254       cst_stst_originator	CONSTANT
255 					IGS_TR_STEP.s_tracking_step_type%TYPE := 'RES_TEX_OR';
256       cst_stst_chair		CONSTANT
257 					IGS_TR_STEP.s_tracking_step_type%TYPE	:= 'RES_TEX_CH';
258       cst_active		CONSTANT	IGS_TR_STATUS.s_tracking_status%TYPE := 'ACTIVE';
259       v_message_name		VARCHAR2(30);
260       v_originator_id		IGS_RE_THS_PNL_MBR.person_id%TYPE;
261       v_recipient_id		IGS_TR_STEP.recipient_id%TYPE;
262       v_tts_recipient_id		IGS_TR_TYPE_STEP.recipient_id%TYPE;
263       v_principal_id		IGS_PE_PERSON.person_id%TYPE;
264       v_chair_id			IGS_PE_PERSON.person_id%TYPE;
265       v_tracking_id		IGS_TR_ITEM.tracking_id%TYPE;
266       v_target_days		NUMBER;
267       v_tracking_type		IGS_TR_TYPE.tracking_type%TYPE;
268       v_tracking_status	IGS_TR_STATUS.tracking_status%TYPE;
269       v_person_id		IGS_RE_SPRVSR.person_id%TYPE;
270       v_start_dt		IGS_TR_ITEM.start_dt%TYPE;
271       v_business_days_ind	IGS_TR_ITEM.business_days_ind%TYPE;
272       v_action_dt		IGS_TR_STEP_V.action_dt%TYPE;
273       v_current_person_id	IGS_PE_PERSON.person_id%TYPE;
274 
275       CURSOR c_pe IS
276         SELECT	PERSON_PARTY_ID
277         FROM fnd_user
278         WHERE user_id = fnd_global.user_id;
279       CURSOR c_rst_rsup IS
280 	SELECT	rsup.person_id
281 	FROM	IGS_RE_SPRVSR		rsup,
282 		IGS_RE_SPRVSR_TYPE	rst
283 	WHERE	rsup.ca_person_id		= p_person_id AND
284          	rsup.ca_sequence_number		= p_ca_sequence_number AND
285 		rst.research_supervisor_type	= rsup.research_supervisor_type AND
286 		rst.principal_supervisor_ind	= 'Y'
287 	ORDER BY rsup.supervision_percentage DESC;
288       CURSOR c_tpt (
289 		cp_thesis_panel_type	IGS_RE_THS_PNL_TYPE.thesis_panel_type%TYPE) IS
290 	SELECT	tpt.tracking_type
291 	FROM	IGS_RE_THS_PNL_TYPE	tpt
292 	WHERE	tpt.thesis_panel_type  	= cp_thesis_panel_type;
293       CURSOR c_ts IS
294 	SELECT	ts.tracking_status
295 	FROM	IGS_TR_STATUS		ts
296 	WHERE	ts.s_tracking_status	= cst_active AND
297 		ts.closed_ind		= 'N'
298 	ORDER BY ts.tracking_status ASC;
299       CURSOR c_tri (
300 		cp_tracking_id	IGS_TR_ITEM.tracking_id%TYPE) IS
301 	SELECT	tri.start_dt,
302 		tri.business_days_ind
303 	FROM	IGS_TR_ITEM		tri
304 	WHERE	tri.tracking_id		= cp_tracking_id;
305       CURSOR c_tsdv (
306  		cp_tracking_id		IGS_TR_ITEM.tracking_id%TYPE) IS
307 	SELECT	MAX(tsdv.action_dt)
308 	FROM	IGS_TR_STEP_V	tsdv
309 	WHERE	tsdv.tracking_id	= cp_tracking_id;
310       CURSOR c_trs (
311 	            cp_tracking_id  IGS_TR_ITEM.tracking_id%TYPE) IS
312 	SELECT	trs.tracking_step_id,
313 		trs.s_tracking_step_type
314 	FROM	IGS_TR_STEP trs
315 	WHERE	trs.tracking_id = cp_tracking_id;
316       CURSOR	c_tts (
317 		cp_tracking_type	IGS_TR_TYPE_STEP.tracking_type%TYPE,
318 		cp_tracking_type_step_id	IGS_TR_TYPE_STEP.tracking_type_step_id%TYPE) IS
319 	SELECT	tts.recipient_id
320 	FROM	IGS_TR_TYPE_STEP tts
321 	WHERE	tracking_type = cp_tracking_type	AND
322 		tracking_type_step_id = cp_tracking_type_step_id;
323       CURSOR c_tpm (
324 		cp_person_id	IGS_RE_THS_PNL_MBR.ca_person_id%TYPE,
325 		cp_ca_sequence_number	IGS_RE_THS_PNL_MBR.ca_sequence_number%TYPE,
326 		cp_the_sequence_number	IGS_RE_THS_PNL_MBR.the_sequence_number%TYPE,
327 		cp_creation_dt			IGS_RE_THS_PNL_MBR.creation_dt%TYPE) IS
328 	SELECT	tpm.person_id
329 	FROM	IGS_RE_THS_PNL_MBR	tpm,
330 			IGS_RE_THS_PNL_MR_TP tpmt
331 	WHERE	tpm.ca_person_id = cp_person_id	AND
332 		tpm.ca_sequence_number = cp_ca_sequence_number	AND
333 		tpm.the_sequence_number = cp_the_sequence_number	AND
334 		tpm.creation_dt = cp_creation_dt	AND
335 		tpm.confirmed_dt IS NOT NULL AND
336 		tpmt.panel_member_type = tpm.panel_member_type	AND
337 		tpmt.panel_chair_ind = 'Y';
338       CURSOR   CUR_IGS_TR_STEP  ( cp_tracking_id  IGS_TR_STEP.tracking_id%TYPE,
339                            cp_tracking_STEP_id  IGS_TR_STEP.tracking_STEP_id%TYPE)  IS
340         SELECT rowid , IGS_TR_STEP.*
341         FROM    IGS_TR_STEP
342         WHERE tracking_id = CP_tracking_id	AND
343 		 tracking_step_id = CP_tracking_step_id;
344       CURSOR CUR_IGS_TR_ITEM ( cp_tracking_id  IGS_TR_ITEM.tracking_id%TYPE)IS
345                      	    SELECT   rowid , IGS_TR_ITEM.*
346         FROM      IGS_TR_ITEM
347         WHERE  tracking_id	= CP_tracking_id;
348 
349     BEGIN
350       -- Set the default message number and issue a savepoint
351       p_message_name := NULL;
352       SAVEPOINT	s_before_insert;
353       -- Retrieve the principal supervisor ID
354       OPEN c_rst_rsup;
355       FETCH c_rst_rsup INTO v_person_id;
356       IF c_rst_rsup%NOTFOUND THEN
357         v_principal_id := NULL;
358       ELSE
359         v_principal_id := v_person_id;
360       END IF;
361       CLOSE c_rst_rsup;
362       -- Retrieve the ID of the IGS_PS_UNIT chair
363       OPEN c_tpm (p_person_id, p_ca_sequence_number,
364 		 p_the_sequence_number, p_creation_dt);
365       FETCH c_tpm INTO v_person_id;
366       IF c_tpm%NOTFOUND THEN
367         v_chair_id := NULL;
368       ELSE
369         v_chair_id := v_person_id;
370       END IF;
371       CLOSE c_tpm;
372       -- Set the originator id.
373 
374       OPEN c_pe;
375       FETCH c_pe INTO v_current_person_id;
376 
377       IF c_pe%FOUND THEN
378         CLOSE c_pe;
379         v_originator_id := v_current_person_id;
380       ELSE
381         CLOSE c_pe;
382         IF v_principal_id IS NOT NULL THEN
383 		v_originator_id := v_principal_id;
384         ELSE
385  	  v_originator_id := p_person_id;
386         END IF;
387       END IF;
388       -- Determine the tracking type from the system type.
389       OPEN c_tpt (p_thesis_panel_type);
390       FETCH c_tpt INTO v_tracking_type;
391       IF c_tpt%NOTFOUND THEN
392         CLOSE c_tpt;
393         RETURN NULL;
394       ELSIF v_tracking_type IS NULL THEN
395         CLOSE c_tpt;
396         p_message_name := 'IGS_RE_CANT_LOC_TRK_TYPE_THES';
397         RETURN NULL;
398       END IF;
399       CLOSE c_tpt;
400       -- Determine the active tracking status.
401       OPEN c_ts;
402       FETCH c_ts INTO v_tracking_status;
403       IF c_ts%NOTFOUND THEN
404         CLOSE c_ts;
405         p_message_name := 'IGS_RE_CANT_FIND_TRK_STATUS';
406         RETURN NULL;
407       END IF;
408       CLOSE c_ts;
409       -- Call routine to insert a tracking item of the appropriate type.
410       IGS_TR_GEN_002.trkp_ins_trk_item (
411 			v_tracking_status,
412 			v_tracking_type,
413 			p_person_id,
414 			SYSDATE,		-- tracking start date
415 			NULL,			-- target days
416 			NULL,			-- sequence indicator
417 			NULL,			-- business days
418 			v_originator_id,	-- originator
419 			'Y',			-- s_created_ind
420 			v_tracking_id,		-- OUT NOCOPY
421 			v_message_name);
422       IF v_message_name IS NOT NULL THEN
423 	ROLLBACK TO s_before_insert;
424 	p_message_name := v_message_name;
425 	RETURN NULL;
426       END IF;
427       -- Update the recipient IDs for the tracking steps.
428       FOR v_trs_rec IN c_trs (v_tracking_id)
429       LOOP
430         IF v_trs_rec.s_tracking_step_type = cst_stst_principal THEN
431 	  v_recipient_id := NVL(v_principal_id,v_originator_id);
432         ELSIF v_trs_rec.s_tracking_step_type = cst_stst_student THEN
433 	  v_recipient_id := p_person_id;
434         ELSIF v_trs_rec.s_tracking_step_type = cst_stst_originator THEN
435 	  v_recipient_id := v_originator_id;
436         ELSIF v_trs_rec.s_tracking_step_type = cst_stst_chair THEN
437 	  v_recipient_id := v_chair_id;
438         ELSE
439 	  v_recipient_id := NULL;
440         END IF;
441         IF v_recipient_id IS NULL THEN
442 	  OPEN c_tts(	v_tracking_type,
443          	v_trs_rec.tracking_step_id);
444   	  FETCH c_tts INTO v_tts_recipient_id;
445 	  IF c_tts%FOUND THEN
446 	    v_recipient_id := v_tts_recipient_id;
447 	  END IF;
448 	  CLOSE c_tts;
449         END IF;
450         IF v_recipient_id IS NOT NULL THEN
451 	  -- Call routine to update the current step.
452 	  IF NOT IGS_TR_GEN_002.trkp_upd_trst (
453   		v_tracking_id,
454 		v_trs_rec.tracking_step_id,			-- tracking step ID
455 		v_trs_rec.s_tracking_step_type, -- system tracking step type
456 		NULL,			-- action date
457 		NULL,			-- completion date
458 		NULL,			-- step completion indicator
459 		NULL,			-- by pass indicator
460 		v_recipient_id,	-- recipient_id
461 		v_message_name) THEN
462 	    ROLLBACK TO s_before_insert;
463 	    p_message_name := v_message_name;
464 	    RETURN NULL;
465 	  END IF;
466         ELSE
467 	  -- Clear the recipient ID (IGS_GE_NOTE: no locking check as the record has been
468 	  -- created by this routine.
469           BEGIN
470             FOR IGS_TR_STEP_REC IN CUR_IGS_TR_STEP(V_TRACKING_ID, v_trs_rec.tracking_step_id)
471             LOOP
472               IGS_TR_STEP_PKG.UPDATE_ROW(
473 		X_ROWID => IGS_TR_STEP_REC.ROWID,
474 		X_TRACKING_ID => IGS_TR_STEP_REC.TRACKING_ID,
475 		X_TRACKING_STEP_ID => IGS_TR_STEP_REC.TRACKING_STEP_ID,
476 		X_TRACKING_STEP_NUMBER => IGS_TR_STEP_REC.TRACKING_STEP_NUMBER,
477 		X_DESCRIPTION  => IGS_TR_STEP_REC.DESCRIPTION,
478 		X_S_TRACKING_STEP_TYPE => IGS_TR_STEP_REC.S_TRACKING_STEP_TYPE ,
479 		X_COMPLETION_DT  => IGS_TR_STEP_REC.COMPLETION_DT,
480 		X_ACTION_DAYS  => IGS_TR_STEP_REC.ACTION_DAYS,
481 		X_STEP_COMPLETION_IND  => IGS_TR_STEP_REC.STEP_COMPLETION_IND  ,
482 		X_BY_PASS_IND  => IGS_TR_STEP_REC.BY_PASS_IND ,
483 		X_RECIPIENT_ID  => NULL,
484 		--add 3 new fields in the tbh call
485                 -- for tracking dld nov 2001 release bug#1837257
486 		X_STEP_GROUP_ID => IGS_TR_STEP_REC.STEP_GROUP_ID,
487 		X_PUBLISH_IND   => IGS_TR_STEP_REC.PUBLISH_IND,
488 		X_STEP_CATALOG_CD => IGS_TR_STEP_REC.STEP_CATALOG_CD,
489 		X_MODE  => 'R');
490             END LOOP;
491           END;
492 	END IF;
493       END LOOP;
494 	-- Update the target days of the item. This is done in two separate queries
495 	-- as the view does quite a bit of processing and this is considered to be
496 	-- the most efficient approach.
497       OPEN c_tri (
498 	v_tracking_id);
499       FETCH c_tri INTO v_start_dt,
500 		 v_business_days_ind;
501       CLOSE c_tri;
502       OPEN c_tsdv (
503 	v_tracking_id);
504       FETCH c_tsdv INTO v_action_dt;
505       CLOSE c_tsdv;
506       v_target_days := IGS_TR_GEN_001.trkp_clc_days_ovrdue (
507 						v_start_dt,
508 						v_action_dt,
509 						v_business_days_ind);
510       BEGIN
511         FOR IGS_TR_ITEM_REC IN CUR_IGS_TR_ITEM (V_TRACKING_ID)
512         LOOP
513           IGS_TR_ITEM_REC.TARGET_DAYS := v_target_days;
514           IGS_TR_ITEM_PKG.UPDATE_ROW(
515 	    X_ROWID  => IGS_TR_ITEM_REC.ROWID,
516 	    X_TRACKING_ID => IGS_TR_ITEM_REC.TRACKING_ID,
517 	    X_TRACKING_STATUS => IGS_TR_ITEM_REC.TRACKING_STATUS,
518 	    X_TRACKING_TYPE =>  IGS_TR_ITEM_REC.TRACKING_TYPE,
519 	    X_SOURCE_PERSON_ID  => IGS_TR_ITEM_REC.SOURCE_PERSON_ID,
520             X_START_DT => IGS_TR_ITEM_REC.START_DT,
521   	    X_TARGET_DAYS  =>  IGS_TR_ITEM_REC.TARGET_DAYS,
522 	    X_SEQUENCE_IND =>  IGS_TR_ITEM_REC.SEQUENCE_IND,
523 	    X_BUSINESS_DAYS_IND =>  IGS_TR_ITEM_REC.BUSINESS_DAYS_IND,
524 	    X_ORIGINATOR_PERSON_ID =>IGS_TR_ITEM_REC.ORIGINATOR_PERSON_ID  ,
525 	    X_S_CREATED_IND =>  IGS_TR_ITEM_REC.S_CREATED_IND,
526 	   --add 3 new fields in the tbh call
527            -- for tracking dld nov 2001 release bug#1837257
528 	    X_COMPLETION_DUE_DT => IGS_TR_ITEM_REC.COMPLETION_DUE_DT,
529 	    X_OVERRIDE_OFFSET_CLC_IND => IGS_TR_ITEM_REC.OVERRIDE_OFFSET_CLC_IND ,
530 	    X_PUBLISH_IND  => IGS_TR_ITEM_REC.PUBLISH_IND,
531 	    X_MODE => 'R');
532         END LOOP;
533       END;
534       RETURN v_tracking_id;
535     EXCEPTION
536       WHEN OTHERS THEN
537 	IF c_pe%ISOPEN THEN
538   	  CLOSE c_pe;
539 	END IF;
540 	IF c_rst_rsup%ISOPEN THEN
541 	  CLOSE c_rst_rsup;
542 	END IF;
543 	IF c_tpt%ISOPEN THEN
544 	  CLOSE c_tpt;
545 	END IF;
546 	IF c_tpm%ISOPEN THEN
547 	  CLOSE c_tpm;
548 	END IF;
549 	IF c_ts%ISOPEN THEN
550 	  CLOSE c_ts;
551 	END IF;
552 	IF c_tri%ISOPEN THEN
553 	  CLOSE c_tri;
554 	END IF;
555 	IF c_tsdv%ISOPEN THEN
556 	   CLOSE c_tsdv;
557 	END IF;
558 	IF c_tts%ISOPEN THEN
559 	  CLOSE c_tts;
560 	END IF;
561 	RAISE;
562     END;
563   EXCEPTION
564     WHEN OTHERS THEN
565 	Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
566 	IGS_GE_MSG_STACK.ADD;
567 	App_Exception.Raise_Exception;
568   END resp_ins_tex_tri;
569 
570 
571   PROCEDURE RESP_INS_THE_HIST(
572     p_person_id IN NUMBER ,
573     p_ca_sequence_number IN NUMBER ,
574     p_sequence_number IN NUMBER ,
575     p_old_title IN VARCHAR2 ,
576     p_new_title IN VARCHAR2 ,
577     p_old_final_title_ind IN VARCHAR2 ,
578     p_new_final_title_ind IN VARCHAR2 ,
579     p_old_short_title IN VARCHAR2 ,
580     p_new_short_title IN VARCHAR2 ,
581     p_old_abbreviated_title IN VARCHAR2 ,
582     p_new_abbreviated_title IN VARCHAR2 ,
583     p_old_thesis_result_cd IN VARCHAR2 ,
584     p_new_thesis_result_cd IN VARCHAR2 ,
585     p_old_expected_submission_dt IN DATE ,
586     p_new_expected_submission_dt IN DATE ,
587     p_old_library_lodgement_dt IN DATE ,
588     p_new_library_lodgement_dt IN DATE ,
589     p_old_library_catalogue_number IN VARCHAR2 ,
590     p_new_library_catalogue_number IN VARCHAR2 ,
591     p_old_embargo_expiry_dt IN DATE ,
592     p_new_embargo_expiry_dt IN DATE ,
593     p_old_thesis_format IN VARCHAR2 ,
594     p_new_thesis_format IN VARCHAR2 ,
595     p_old_logical_delete_dt IN DATE ,
596     p_new_logical_delete_dt IN DATE ,
597     p_old_embargo_details IN VARCHAR2 ,
598     p_new_embargo_details IN VARCHAR2 ,
599     p_old_thesis_topic IN VARCHAR2 ,
600     p_new_thesis_topic IN VARCHAR2 ,
601     p_old_citation IN VARCHAR2 ,
602     p_new_citation IN VARCHAR2 ,
603     p_old_comments IN VARCHAR2 ,
604     p_new_comments IN VARCHAR2 ,
605     p_old_update_who IN NUMBER ,
606     p_new_update_who IN NUMBER ,
607     p_old_update_on IN DATE ,
608     p_new_update_on IN DATE )
609   AS
610     gv_other_detail		VARCHAR2(255);
611     LV_ROWID			VARCHAR2(25);
612     v_org_id IGS_PR_MILESTONE_HST.ORG_ID%TYPE := IGS_GE_GEN_003.Get_Org_Id;
613 
614   BEGIN	-- resp_ins_the_hist
615 	-- Insert IGS_RE_THESIS history (IGS_RE_THESIS_HIST)
616     DECLARE
617 	v_th_rec			IGS_RE_THESIS_HIST%ROWTYPE;
618 	v_create_history		BOOLEAN := FALSE;
619 	v_hist_start_dt			IGS_RE_THESIS.last_update_date%TYPE;
620 	v_hist_end_dt			IGS_RE_THESIS.last_update_date%TYPE;
621 	v_hist_who			IGS_RE_THESIS.last_updated_by%TYPE;
622     BEGIN
623 	-- If any of the old values (p_old_<column_name>) are different from the
624 	-- associated new  values (p_new_<column_name>)  (with the exception the
625 	-- last_updated_by and last_update_date columns) then create an IGS_RE_THESIS_HIST history
626 	-- record with the old values (p_old_<column_name>).  Do not set the
627 	-- last_updated_by and last_update_date columns when creating the history record.
628 	IF p_new_title <> p_old_title THEN
629 		v_th_rec.title := p_old_title;
630 		v_create_history := TRUE;
631 	END IF;
632 	IF p_new_final_title_ind <> p_old_final_title_ind THEN
633 		v_th_rec.final_title_ind := p_old_final_title_ind;
634 		v_create_history := TRUE;
635 	END IF;
636 	IF NVL(p_new_short_title, 'NULL') <> NVL(p_old_short_title, 'NULL') THEN
637 		v_th_rec.short_title := p_old_short_title;
638 		v_create_history := TRUE;
639 	END IF;
640 	IF NVL(p_new_abbreviated_title, 'NULL') <>
641 					NVL(p_old_abbreviated_title, 'NULL')  THEN
642 		v_th_rec.abbreviated_title := p_old_abbreviated_title;
643 		v_create_history := TRUE;
644 	END IF;
645 	IF NVL(p_new_thesis_result_cd, 'NULL') <>
646 					NVL(p_old_thesis_result_cd, 'NULL') THEN
647 		v_th_rec.thesis_result_cd := NVL(p_old_thesis_result_cd,' ');
648 		v_create_history := TRUE;
649 	END IF;
650 	IF NVL(p_new_expected_submission_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
651 			NVL(p_old_expected_submission_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
652 		v_th_rec.expected_submission_dt := p_old_expected_submission_dt;
653 		v_create_history := TRUE;
654 	END IF;
655 	IF NVL(p_new_library_lodgement_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
656 			NVL(p_old_library_lodgement_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
657 		v_th_rec.date_of_library_lodgement := p_old_library_lodgement_dt;
658 		v_create_history := TRUE;
659 	END IF;
660 	IF NVL(p_new_library_catalogue_number, 'NULL') <>
661 					 NVL(p_old_library_catalogue_number, 'NULL') THEN
662 		v_th_rec.library_catalogue_number := p_old_library_catalogue_number;
663 		v_create_history := TRUE;
664 	END IF;
665 	IF NVL(p_new_embargo_expiry_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
666 			NVL(p_old_embargo_expiry_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
667 		v_th_rec.embargo_expiry_dt := p_old_embargo_expiry_dt;
668 		v_create_history := TRUE;
669 	END IF;
670 	IF NVL(p_new_thesis_format, 'NULL') <> NVL(p_old_thesis_format, 'NULL') THEN
671 		v_th_rec.thesis_format := p_old_thesis_format;
672 		v_create_history := TRUE;
673 	END IF;
674 	IF NVL(p_new_logical_delete_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
675 			NVL(p_old_logical_delete_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
676 		v_th_rec.logical_delete_dt := p_old_logical_delete_dt;
677 		v_create_history := TRUE;
678 	END IF;
679 	IF NVL(p_new_embargo_details, 'NULL') <>
680 						 NVL(p_old_embargo_details, 'NULL') THEN
681 		v_th_rec.embargo_details := p_old_embargo_details;
682 		v_create_history := TRUE;
683 	END IF;
684 	IF NVL(p_new_thesis_topic, 'NULL') <> NVL(p_old_thesis_topic, 'NULL') THEN
685 		v_th_rec.thesis_topic := p_old_thesis_topic;
686 		v_create_history := TRUE;
687 	END IF;
688 	IF NVL(p_new_citation, 'NULL') <> NVL(p_old_citation, 'NULL') THEN
689 		v_th_rec.citation := p_old_citation;
690 		v_create_history := TRUE;
691 	END IF;
692 	IF NVL(p_new_comments, 'NULL') <> NVL(p_old_comments, 'NULL') THEN
693 		v_th_rec.comments := p_old_comments;
694 		v_create_history := TRUE;
695 	END IF;
696 	IF v_create_history = TRUE THEN
697 		v_th_rec.person_id		:= p_person_id;
698 		v_th_rec.ca_sequence_number 	:= p_ca_sequence_number;
699 		v_th_rec.sequence_number 	:= p_sequence_number;
700 		v_th_rec.hist_start_dt 		:= p_old_update_on;
701 		v_th_rec.hist_end_dt 		:= NVL(p_new_update_on,SYSDATE);
702 		v_th_rec.hist_who 		:= p_old_update_who;
703                 IGS_RE_THESIS_HIST_PKG.INSERT_ROW(
704 			X_ROWID  => LV_ROWID,
705 			X_person_id => v_th_rec.person_id,
706 			X_ca_sequence_number => v_th_rec.ca_sequence_number,
707 			X_sequence_number => v_th_rec.sequence_number,
708 			X_hist_start_dt => v_th_rec.hist_start_dt,
709 			X_hist_end_dt => v_th_rec.hist_end_dt,
710 			X_hist_who => v_th_rec.hist_who,
711 			X_title => v_th_rec.title,
712 			X_final_title_ind => v_th_rec.final_title_ind,
713 			X_short_title => v_th_rec.short_title,
714 			X_abbreviated_title => v_th_rec.abbreviated_title,
715 			X_thesis_result_cd => v_th_rec.thesis_result_cd,
716 			X_expected_submission_dt => v_th_rec.expected_submission_dt,
717 			X_date_of_library_lodgement => v_th_rec.date_of_library_lodgement,
718 			X_library_catalogue_number => v_th_rec.library_catalogue_number,
719 			X_embargo_expiry_dt => v_th_rec.embargo_expiry_dt,
720 			X_thesis_format => v_th_rec.thesis_format,
721 			X_logical_delete_dt => v_th_rec.logical_delete_dt,
722 			X_embargo_details => v_th_rec.embargo_details,
723 			X_thesis_topic => v_th_rec.thesis_topic,
724 			X_citation => v_th_rec.citation,
725 			X_comments => v_th_rec.comments,
726 			X_Org_Id => v_org_id,
727                   X_MODE => 'R');
728 	END IF;
729     END;
730   EXCEPTION
731     WHEN OTHERS THEN
732 	Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
733 	IGS_GE_MSG_STACK.ADD;
734 	App_Exception.Raise_Exception;
735   END resp_ins_the_hist;
736 
737 
738   PROCEDURE RESP_INS_TPM_HIST(
739     p_ca_person_id IN NUMBER ,
740     p_ca_sequence_number IN NUMBER ,
741     p_the_sequence_number IN NUMBER ,
742     p_creation_dt IN DATE ,
743     p_person_id IN NUMBER ,
744     p_old_panel_member_type IN VARCHAR2 ,
745     p_new_panel_member_type IN VARCHAR2 ,
746     p_old_confirmed_dt IN DATE ,
747     p_new_confirmed_dt IN DATE ,
748     p_old_declined_dt IN DATE ,
749     p_new_declined_dt IN DATE ,
750     p_old_anonymity_ind IN VARCHAR2 ,
751     p_new_anonymity_ind IN VARCHAR2 ,
752     p_old_thesis_result_cd IN VARCHAR2 ,
753     p_new_thesis_result_cd IN VARCHAR2 ,
754     p_old_paid_dt IN DATE ,
755     p_new_paid_dt IN DATE ,
756     p_old_tracking_id IN NUMBER ,
757     p_new_tracking_id IN NUMBER ,
758     p_old_recommendation_summary IN VARCHAR2 ,
759     p_new_recommendation_summary IN VARCHAR2 ,
760     p_old_update_who IN NUMBER ,
761     p_new_update_who IN NUMBER ,
762     p_old_update_on IN DATE ,
763     p_new_update_on IN DATE )
764   AS
765     gv_other_detail		VARCHAR2(255);
766     LV_ROWID			VARCHAR2(25);
767     v_org_id IGS_PR_MILESTONE_HST.ORG_ID%TYPE := IGS_GE_GEN_003.Get_Org_Id;
768   BEGIN	-- resp_ins_tpm_hist
769 	-- Insert IGS_RE_THS_PNL_MBR history (IGS_RE_THS_PNL_MR_HS)
770     DECLARE
771       v_tpmh_rec			IGS_RE_THS_PNL_MR_HS%ROWTYPE;
772       v_create_history		BOOLEAN := FALSE;
773       v_hist_start_dt			IGS_RE_THS_PNL_MBR.last_update_date%TYPE;
774       v_hist_end_dt			IGS_RE_THS_PNL_MBR.last_update_date%TYPE;
775       v_hist_who			IGS_RE_THS_PNL_MBR.last_updated_by%TYPE;
776     BEGIN
777         -- If any of the old values (p_old_<column_name>) are different from the
778 	-- associated new  values (p_new_<column_name>)  (with the exception the
779 	-- last_updated_by and last_update_date columns) then create an IGS_RE_THS_EXAM_HIST history
780 	-- record with the old values (p_old_<column_name>).  Do not set the
781 	-- last_updated_by and last_update_date columns when creating the history record.
782       IF p_new_panel_member_type <> p_old_panel_member_type THEN
783 	v_tpmh_rec.panel_member_type := p_old_panel_member_type;
784 	v_create_history := TRUE;
785       END IF;
786       IF NVL(p_new_confirmed_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
787   	NVL(p_old_confirmed_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
788 	v_tpmh_rec.confirmed_dt := p_old_confirmed_dt;
789 	v_create_history := TRUE;
790       END IF;
791       IF NVL(p_new_declined_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
792 		NVL(p_old_declined_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
793 	v_tpmh_rec.declined_dt := p_old_declined_dt;
794 	v_create_history := TRUE;
795       END IF;
796       IF NVL(p_new_anonymity_ind, 'NULL') <> NVL(p_old_anonymity_ind, 'NULL') THEN
797  	v_tpmh_rec.anonymity_ind := p_old_anonymity_ind;
798 	v_create_history := TRUE;
799       END IF;
800      IF NVL(p_new_thesis_result_cd, 'NULL') <>
801 			 NVL(p_old_thesis_result_cd, 'NULL') THEN
802 	v_tpmh_rec.thesis_result_cd := NVL(p_old_thesis_result_cd, ' ');
803 	v_create_history := TRUE;
804       END IF;
805       IF NVL(p_new_paid_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
806 		NVL(p_old_paid_dt, IGS_GE_DATE.IGSDATE('1900/01/01' )) THEN
807 	v_tpmh_rec.paid_dt := p_old_paid_dt;
808 	v_create_history := TRUE;
809       END IF;
810       IF NVL(p_new_tracking_id, -1) <> NVL(p_old_tracking_id, -1) THEN
811 	v_tpmh_rec.tracking_id := p_old_tracking_id;
812 	v_create_history := TRUE;
813       END IF;
814       IF NVL(p_new_recommendation_summary, 'NULL') <>
815 			NVL(p_old_recommendation_summary, 'NULL') THEN
816 	v_tpmh_rec.recommendation_summary := p_old_recommendation_summary;
817 	v_create_history := TRUE;
818       END IF;
819       -- create a history record if any column has changed
820       IF v_create_history = TRUE THEN
821 	v_tpmh_rec.ca_person_id		:= p_ca_person_id;
822 	v_tpmh_rec.ca_sequence_number 	:= p_ca_sequence_number;
823 	v_tpmh_rec.the_sequence_number 	:= p_the_sequence_number;
824 	v_tpmh_rec.creation_dt	 	:= p_creation_dt;
825 	v_tpmh_rec.person_id		:= p_person_id;
826 	v_tpmh_rec.hist_start_dt 	:= p_old_update_on;
827 	v_tpmh_rec.hist_end_dt 		:= NVL(p_new_update_on,SYSDATE);
828 	v_tpmh_rec.hist_who 		:= p_old_update_who;
829          IGS_RE_THS_PNL_MR_HS_PKG.INSERT_ROW(
830 			X_ROWID  => LV_ROWID,
831 			X_ca_person_id => v_tpmh_rec.ca_person_id,
832 			X_ca_sequence_number => v_tpmh_rec.ca_sequence_number,
833 			X_the_sequence_number => v_tpmh_rec.the_sequence_number,
834 			X_creation_dt => v_tpmh_rec.creation_dt,
835 			X_person_id => v_tpmh_rec.person_id,
836 			X_hist_start_dt => v_tpmh_rec.hist_start_dt,
837 			X_hist_end_dt => v_tpmh_rec.hist_end_dt,
838 			X_hist_who => v_tpmh_rec.hist_who,
839 			X_panel_member_type => v_tpmh_rec.panel_member_type,
840 			X_confirmed_dt => v_tpmh_rec.confirmed_dt,
841 			X_declined_dt => v_tpmh_rec.declined_dt,
842 			X_anonymity_ind => v_tpmh_rec.anonymity_ind,
843 			X_thesis_result_cd => v_tpmh_rec.thesis_result_cd,
844 			X_paid_dt => v_tpmh_rec.paid_dt,
845 			X_tracking_id => v_tpmh_rec.tracking_id,
846 			X_recommendation_summary => v_tpmh_rec.recommendation_summary,
847 			X_Org_Id => v_org_id,
848 			X_MODE => 'R');
849 
850       END IF;
851     END;
852   EXCEPTION
853     WHEN OTHERS THEN
854 	Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
855 	IGS_GE_MSG_STACK.ADD;
856 	App_Exception.Raise_Exception;
857   END resp_ins_tpm_hist;
858 
859 
860   FUNCTION RESP_INS_TPM_TRI(
861     p_ca_person_id IN NUMBER ,
862     p_ca_sequence_number IN NUMBER ,
863     p_person_id IN NUMBER ,
864     p_panel_member_type IN VARCHAR2 ,
865     p_message_name OUT NOCOPY VARCHAR2 )
866   --add 3 new fields in the tbh calls to IGS_TR_ITEM and IGS_TR_STEP
867   -- for tracking dld nov 2001 release bug#1837257
868 /*-----------------------------------------------------------------------
869 who           when           what
870 svanukur      07-sep-2004   modified cursor c_pe for performance bug 3866423
871 --------------------------------------------------------------------------*/
872   RETURN NUMBER AS
873 	gv_other_detail		VARCHAR2(255);
874   BEGIN 	-- resp_ins_tpm_tri
875 	-- Insert tracking item for a IGS_RE_THS_PNL_MBR.
876 	-- The routine returns the tracking ID of the item created.
877 	-- IGS_GE_NOTE: A commit is not done from this routine as it is done as part of
878 	-- the calling routine.
879     DECLARE
880 	cst_s_tracking_type		CONSTANT	VARCHAR2(10) := 'RES_TPM';
881 	cst_stst_person			CONSTANT	VARCHAR2(10) := 'RES_TPM_PE';
882 	cst_stst_originator		CONSTANT	VARCHAR2(10) := 'RES_TPM_OR';
883 	v_message_name		VARCHAR2(30);
884 	 v_current_person_id IGS_PE_PERSON.person_id%TYPE;
885 	v_originator_id		IGS_RE_THS_PNL_MBR.person_id%TYPE;
886 	v_recipient_id		IGS_TR_STEP.recipient_id%TYPE;
887 	v_tts_recipient_id		IGS_TR_TYPE_STEP.recipient_id%TYPE;
888 	v_tracking_id		IGS_TR_ITEM.tracking_id%TYPE;
889 	v_target_days		NUMBER;
890 	v_tracking_type		IGS_TR_TYPE.tracking_type%TYPE;
891 	v_tracking_status	IGS_TR_STATUS.tracking_status%TYPE;
892 	v_person_id		IGS_RE_SPRVSR.person_id%TYPE;
893 	v_start_dt		IGS_TR_ITEM.start_dt%TYPE;
894 	v_business_days_ind	IGS_TR_ITEM.business_days_ind%TYPE;
895 	v_action_dt		IGS_TR_STEP_V.action_dt%TYPE;
896 	CURSOR c_pe IS
897 	SELECT	PERSON_PARTY_ID
898         FROM fnd_user
899         WHERE user_id = fnd_global.user_id;
900 	CURSOR c_rst_rsup IS
901 		SELECT	rsup.person_id
902 		FROM	IGS_RE_SPRVSR		rsup,
903 			IGS_RE_SPRVSR_TYPE	rst
904 		WHERE	rsup.ca_person_id		= p_ca_person_id AND
905 			rsup.ca_sequence_number		= p_ca_sequence_number AND
906 			rst.research_supervisor_type	= rsup.research_supervisor_type AND
907 			rst.principal_supervisor_ind	= 'Y'
908 		ORDER BY rsup.supervision_percentage DESC;
909 	CURSOR c_tmpt (
910 			cp_panel_member_type    IGS_RE_THS_PNL_MR_TP.panel_member_type%TYPE) IS
911 		SELECT	tmpt.tracking_type
912 		FROM	IGS_RE_THS_PNL_MR_TP		tmpt
913 		WHERE	tmpt.panel_member_type = cp_panel_member_type;
914 	CURSOR c_ts IS
915 		SELECT	ts.tracking_status
916 		FROM	IGS_TR_STATUS		ts
917 		WHERE	ts.s_tracking_status	= 'ACTIVE' AND
918 			ts.closed_ind		= 'N'
919 		ORDER BY ts.tracking_status ASC;
920 	CURSOR c_tri (
921 			cp_tracking_id	IGS_TR_ITEM.tracking_id%TYPE) IS
922 		SELECT	tri.start_dt,
923 			tri.business_days_ind
924 		FROM	IGS_TR_ITEM		tri
925 		WHERE	tri.tracking_id		= cp_tracking_id;
926 	CURSOR c_tsdv (
927 			cp_tracking_id	IGS_TR_ITEM.tracking_id%TYPE) IS
928 		SELECT	MAX(tsdv.action_dt)
929 		FROM	IGS_TR_STEP_V	tsdv
930 		WHERE	tsdv.tracking_id	= cp_tracking_id;
931 	CURSOR c_trs (
932 			cp_tracking_id  IGS_TR_ITEM.tracking_id%TYPE) IS
933 		SELECT  trs.tracking_step_id,
934 				trs.s_tracking_step_type
935 		FROM	IGS_TR_STEP trs
936 		WHERE	trs.tracking_id = cp_tracking_id;
937 	CURSOR	c_tts (
938 			cp_tracking_type	IGS_TR_TYPE_STEP.tracking_type%TYPE,
939 			cp_tracking_type_step_id	IGS_TR_TYPE_STEP.tracking_type_step_id%TYPE) IS
940 		SELECT	tts.recipient_id
941 		FROM	IGS_TR_TYPE_STEP tts
942 		WHERE	tracking_type = cp_tracking_type	AND
943 			tracking_type_step_id = cp_tracking_type_step_id;
944 	 CURSOR   CUR_IGS_TR_STEP  ( cp_tracking_id  IGS_TR_STEP.tracking_id%TYPE,
945                             cp_tracking_STEP_id  IGS_TR_STEP.tracking_STEP_id%TYPE)  IS
946                                    SELECT rowid , IGS_TR_STEP.*
947 		   FROM    IGS_TR_STEP
948 		   WHERE tracking_id = CP_tracking_id	AND
949 			 tracking_step_id = CP_tracking_step_id;
950        CURSOR CUR_IGS_TR_ITEM ( cp_tracking_id  IGS_TR_ITEM.tracking_id%TYPE)IS
951                      	    SELECT   rowid , IGS_TR_ITEM.*
952 		   FROM      IGS_TR_ITEM
953                                    WHERE  tracking_id	= CP_tracking_id;
954 
955 
956 
957     BEGIN
958 	p_message_name := NULL;
959 	SAVEPOINT s_before_update;
960 	-- Get the originator IGS_PE_PERSON ID, being the principal supervisor with the
961 	-- greatest supervising load. If multiple principal supervisors exist, then
962 	-- use the first.
963 
964         OPEN c_pe;
965 	FETCH c_pe INTO v_current_person_id;
966 	IF c_pe%FOUND THEN
967 		CLOSE c_pe;
968 		v_originator_id := v_current_person_id;
969 	ELSE
970 		CLOSE c_pe;
971 		OPEN c_rst_rsup;
972 		FETCH c_rst_rsup INTO v_person_id;
973 		IF c_rst_rsup%NOTFOUND THEN
974 			CLOSE c_rst_rsup;
975 			v_originator_id := p_ca_person_id;
976 		ELSE
977 			CLOSE c_rst_rsup;
978 			v_originator_id := v_person_id;
979 		END IF;
980 	END IF;
981 	-- Determine the tracking type from the system type.
982 	OPEN c_tmpt (p_panel_member_type);
983 	FETCH c_tmpt INTO v_tracking_type;
984 	IF c_tmpt%NOTFOUND THEN
985 		CLOSE c_tmpt;
986 		RETURN NULL;
987 	ELSIF v_tracking_type IS NULL THEN
988 		CLOSE c_tmpt;
989 		p_message_name := 'IGS_RE_CANT_LOC_TRK_TYPE_MEM';
990 		RETURN NULL;
991 	END IF;
992 	CLOSE c_tmpt;
993 	-- Determine the active tracking status.
994 	OPEN c_ts;
995 	FETCH c_ts INTO v_tracking_status;
996 	IF c_ts%NOTFOUND THEN
997 		CLOSE c_ts;
998 		p_message_name := 'IGS_RE_CANT_FIND_TRK_STATUS';
999 		RETURN NULL;
1000 	END IF;
1001 	CLOSE c_ts;
1002 	-- Call routine to insert a tracking item of the appropriate type.
1003 	IGS_TR_GEN_002.trkp_ins_trk_item (
1004 			v_tracking_status,
1005 			v_tracking_type,
1006 			p_person_id,
1007 			SYSDATE,		-- tracking start date
1008 			NULL,			-- target days
1009 			NULL,			-- sequence indicator
1010 			NULL,			-- business days
1011 			v_originator_id,	-- originator
1012 			'Y',			-- s_created_ind
1013 			v_tracking_id,		-- OUT NOCOPY
1014 			v_message_name);
1015 	IF v_message_name IS NOT NULL THEN
1016 		ROLLBACK TO s_before_update;
1017 		p_message_name := v_message_name;
1018 		RETURN NULL;
1019 	END IF;
1020 	FOR v_trs_rec IN c_trs (v_tracking_id)
1021 	LOOP
1022 		IF v_trs_rec.s_tracking_step_type = cst_stst_person THEN
1023 				v_recipient_id := p_person_id;
1024 		ELSIF v_trs_rec.s_tracking_step_type = cst_stst_originator THEN
1025 				v_recipient_id := v_originator_id;
1026 		ELSE
1027 				v_recipient_id := NULL;
1028 		END IF;
1029 		IF v_recipient_id IS NULL THEN
1030 			OPEN c_tts(	v_tracking_type,
1031 					v_trs_rec.tracking_step_id);
1032 			FETCH c_tts INTO v_tts_recipient_id;
1033 			IF c_tts%FOUND THEN
1034 				v_recipient_id := v_tts_recipient_id;
1035 			END IF;
1036 			CLOSE c_tts;
1037 		END IF;
1038 		IF v_recipient_id IS NOT NULL THEN
1039 			-- Update the recipient ID to the panel member for steps linked to the
1040 			-- appropriate s_tracking_step_type.
1041 			IF NOT IGS_TR_GEN_002.trkp_upd_trst (
1042 					v_tracking_id,
1043 					v_trs_rec.tracking_step_id,	-- tracking step ID
1044 					v_trs_rec.s_tracking_step_type, -- system tracking step type
1045 					NULL,			-- action date
1046 					NULL,			-- completion date
1047 					NULL,			-- step completion indicator
1048 					NULL,			-- by pass indicator
1049 					v_recipient_id,	-- recipient_id
1050 					v_message_name) THEN
1051 				ROLLBACK TO s_before_update;
1052 				p_message_name := v_message_name;
1053 				RETURN NULL;
1054 			END IF;
1055 		ELSE
1056 			-- Clear the recipient ID.
1057                   BEGIN
1058                      FOR IGS_TR_STEP_REC IN CUR_IGS_TR_STEP (v_tracking_id, v_trs_rec.tracking_step_id)
1059                      LOOP
1060 
1061                        IGS_TR_STEP_PKG.UPDATE_ROW(
1062 				X_ROWID => IGS_TR_STEP_REC.ROWID,
1063 				X_TRACKING_ID => IGS_TR_STEP_REC.TRACKING_ID,
1064 				X_TRACKING_STEP_ID => IGS_TR_STEP_REC.TRACKING_STEP_ID,
1065 				X_TRACKING_STEP_NUMBER => IGS_TR_STEP_REC.TRACKING_STEP_NUMBER,
1066 				X_DESCRIPTION  => IGS_TR_STEP_REC.DESCRIPTION,
1067 				X_S_TRACKING_STEP_TYPE => IGS_TR_STEP_REC.S_TRACKING_STEP_TYPE ,
1068 				X_COMPLETION_DT  => IGS_TR_STEP_REC.COMPLETION_DT        ,
1069 				X_ACTION_DAYS  => IGS_TR_STEP_REC.ACTION_DAYS,
1070 				X_STEP_COMPLETION_IND  => IGS_TR_STEP_REC.STEP_COMPLETION_IND  ,
1071 				X_BY_PASS_IND  => IGS_TR_STEP_REC.BY_PASS_IND ,
1072 				X_RECIPIENT_ID  => NULL,
1073 				--add 3 new fields in the tbh call
1074                                 -- for tracking dld nov 2001 release bug#1837257
1075 				X_STEP_GROUP_ID => IGS_TR_STEP_REC.STEP_GROUP_ID,
1076 				X_PUBLISH_IND   => IGS_TR_STEP_REC.PUBLISH_IND,
1077 				X_STEP_CATALOG_CD => IGS_TR_STEP_REC.STEP_CATALOG_CD,
1078 				X_MODE  => 'R');
1079                      END LOOP;
1080                    END;
1081 		END IF;
1082 	END LOOP;
1083 	-- Update the target days of the item. This is done in two separate queries
1084 	-- as the view does quite a bit of processing and this is considered to be
1085 	-- the most efficient approach.
1086 	OPEN c_tri (
1087 		v_tracking_id);
1088 	FETCH c_tri INTO v_start_dt,
1089 			 v_business_days_ind;
1090 	CLOSE c_tri;
1091 	OPEN c_tsdv (
1092 		v_tracking_id);
1093 	FETCH c_tsdv INTO v_action_dt;
1094 	CLOSE c_tsdv;
1095 	v_target_days := IGS_TR_GEN_001.trkp_clc_days_ovrdue (
1096 						v_start_dt,
1097 						v_action_dt,
1098 						v_business_days_ind);
1099         BEGIN
1100           FOR IGS_TR_ITEM_REC IN CUR_IGS_TR_ITEM (V_TRACKING_ID)
1101           LOOP
1102                                                   IGS_TR_ITEM_REC.TARGET_DAYS := v_target_days;
1103               IGS_TR_ITEM_PKG.UPDATE_ROW(
1104 			X_ROWID  => IGS_TR_ITEM_REC.ROWID,
1105 			X_TRACKING_ID => IGS_TR_ITEM_REC.TRACKING_ID,
1106 			X_TRACKING_STATUS => IGS_TR_ITEM_REC.TRACKING_STATUS,
1107 			X_TRACKING_TYPE =>  IGS_TR_ITEM_REC.TRACKING_TYPE,
1108 			X_SOURCE_PERSON_ID  => IGS_TR_ITEM_REC.SOURCE_PERSON_ID,
1109 			X_START_DT => IGS_TR_ITEM_REC.START_DT,
1110 			X_TARGET_DAYS  =>  IGS_TR_ITEM_REC.TARGET_DAYS,
1111 			X_SEQUENCE_IND =>  IGS_TR_ITEM_REC.SEQUENCE_IND,
1112 			X_BUSINESS_DAYS_IND =>  IGS_TR_ITEM_REC.BUSINESS_DAYS_IND,
1113 			X_ORIGINATOR_PERSON_ID =>IGS_TR_ITEM_REC.ORIGINATOR_PERSON_ID  ,
1114 			X_S_CREATED_IND =>  IGS_TR_ITEM_REC.S_CREATED_IND,
1115 			--add 3 new fields in the tbh call
1116                         -- for tracking dld nov 2001 release bug#1837257
1117 			X_COMPLETION_DUE_DT => IGS_TR_ITEM_REC.COMPLETION_DUE_DT,
1118 			X_OVERRIDE_OFFSET_CLC_IND => IGS_TR_ITEM_REC.OVERRIDE_OFFSET_CLC_IND ,
1119 			X_PUBLISH_IND  => IGS_TR_ITEM_REC.PUBLISH_IND,
1120 			X_MODE => 'R');
1121             END LOOP;
1122       END;
1123       RETURN v_tracking_id;
1124     EXCEPTION
1125       WHEN OTHERS THEN
1126         IF c_pe%ISOPEN THEN
1127           CLOSE c_pe;
1128         END IF;
1129 	IF c_rst_rsup%ISOPEN THEN
1130 	  CLOSE c_rst_rsup;
1131 	END IF;
1132 	IF c_tmpt%ISOPEN THEN
1133           CLOSE c_tmpt;
1134 	END IF;
1135 	IF c_ts%ISOPEN THEN
1136 	  CLOSE c_ts;
1137 	END IF;
1138 	IF c_tri%ISOPEN THEN
1139 	  CLOSE c_tri;
1140 	END IF;
1141 	IF c_tsdv%ISOPEN THEN
1142 	  CLOSE c_tsdv;
1143 	END IF;
1144 	IF c_tts%ISOPEN THEN
1145 	  CLOSE c_tts;
1146 	END IF;
1147 	RAISE;
1148     END;
1149   EXCEPTION
1150     WHEN OTHERS THEN
1151       Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
1152       IGS_GE_MSG_STACK.ADD;
1153       App_Exception.Raise_Exception;
1154   END resp_ins_tpm_tri;
1155 
1156 
1157 END IGS_RE_GEN_003 ;