1 PACKAGE BODY IGS_RE_VAL_TPM AS
2 /* $Header: IGSRE17B.pls 120.1 2006/01/24 01:32:59 bdeviset noship $ */
3 -------------------------------------------------------------------------------------------
4 --Change History:
5 --Who When What
6 --smadathi 25-AUG-2001 Bug No. 1956374 .The function GENP_VAL_SDTT_SESS removed
7 --msrinivi 25-Aug-2001 Bug No. 1956374. the func genp_val_pe_deceased removed
8 -- smaddali 11-may-04 Bug#3577988 - EN302 build, corrected message name IGS_RE_ CANT_UNCNFRM_PAID_DT to remove the space
9 -- bdeviset 24-JAN-06 Removed the cursor c_pe in RESP_VAL_TPM_PE procedure and used igs_en_gen_003.get_staff_ind call
10 -- for bug# 4991049
11 -------------------------------------------------------------------------------------------
12 -- To validate thesis panel member minimum panel size
13 FUNCTION RESP_VAL_TPM_MIN(
14 p_person_id IN NUMBER ,
15 p_ca_sequence_number IN NUMBER ,
16 p_the_sequence_number IN NUMBER ,
17 p_creation_dt IN DATE ,
18 p_thesis_panel_type IN VARCHAR2 ,
19 p_message_name OUT NOCOPY VARCHAR2 )
20 RETURN BOOLEAN AS
21 BEGIN -- func_module
22 DECLARE
23 v_tpt_recommended_panel_size IGS_RE_THS_PNL_TYPE.recommended_panel_size%TYPE;
24 v_panel_cnt NUMBER;
25 CURSOR c_tpt IS
26 SELECT tpt.recommended_panel_size
27 FROM IGS_RE_THS_PNL_TYPE tpt
28 WHERE thesis_panel_type = p_thesis_panel_type;
29 CURSOR c_tpm IS
30 SELECT count('x')
31 FROM IGS_RE_THS_PNL_MBR tpm
32 WHERE ca_person_id = p_person_id AND
33 ca_sequence_number = p_ca_sequence_number AND
34 the_sequence_number = p_the_sequence_number AND
35 creation_dt = p_creation_dt AND
36 confirmed_dt IS NOT NULL;
37 BEGIN
38 -- Set the default message number
39 p_message_name := NULL;
40 --1. Select panel size from thesis panel type
41 OPEN c_tpt;
42 FETCH c_tpt INTO v_tpt_recommended_panel_size;
43 IF c_tpt%NOTFOUND THEN
44 CLOSE c_tpt;
45 --Invalid parameters - return true
46 RETURN TRUE;
47 END IF;
48 CLOSE c_tpt;
49 IF v_tpt_recommended_panel_size IS NULL OR
50 v_tpt_recommended_panel_size =0 THEN
51 --No panel size specified - warning not applicable.
52 RETURN TRUE;
53 END IF;
54 OPEN c_tpm;
55 FETCH c_tpm INTO v_panel_cnt;
56 IF c_tpm%NOTFOUND THEN
57 CLOSE c_tpm;
58 RAISE NO_DATA_FOUND;
59 END IF;
60 CLOSE c_tpm;
61 If v_panel_cnt >= v_tpt_recommended_panel_size then
62 p_message_name := 'IGS_RE_RECOM_PANEL_SIZE_REACH';
63 Return TRUE; -- Warning Only
64 End IF;
65 -- Return the default value
66 RETURN TRUE;
67 EXCEPTION
68 WHEN OTHERS THEN
69 IF c_tpt %ISOPEN THEN
70 CLOSE c_tpt;
71 END IF;
72 IF c_tpm %ISOPEN THEN
73 CLOSE c_tpm;
74 END IF;
75 RAISE;
76 END;
77 EXCEPTION
78 WHEN OTHERS THEN
79 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
80 IGS_GE_MSG_STACK.ADD;
81 App_Exception.Raise_Exception;
82 END RESP_VAL_TPM_MIN;
83 --
84
85 -- To validate the thesis panel member chair indicator
86 FUNCTION RESP_VAL_TPM_CHAIR(
87 p_ca_person_id IN NUMBER ,
88 p_ca_sequence_number IN NUMBER ,
89 p_the_sequence_number IN NUMBER ,
90 p_creation_dt IN DATE ,
91 p_message_name OUT NOCOPY VARCHAR2 )
92 RETURN BOOLEAN AS
93 BEGIN -- resp_val_tpm_chair
94 -- Description: Validate that there is only one confirmed
95 -- chairperson on the panel.
96 DECLARE
97 v_loop_bool BOOLEAN DEFAULT FALSE;
98 CURSOR c_tpm_tpmpt IS
99 SELECT 'X'
100 FROM IGS_RE_THS_PNL_MBR tpm,
101 IGS_RE_THS_PNL_MR_TP tpmpt
102 WHERE tpm.ca_person_id = p_ca_person_id AND
103 tpm.ca_sequence_number = p_ca_sequence_number AND
104 tpm.the_sequence_number = p_the_sequence_number AND
105 tpm.creation_dt = p_creation_dt AND
106 tpm.confirmed_dt IS NOT NULL AND
107 tpmpt.panel_member_type = tpm.panel_member_type AND
108 tpmpt.panel_chair_ind = 'Y';
109 v_dummy VARCHAR2(1);
110 BEGIN
111 p_message_name := NULL;
112 FOR v_tpm_tpmpt_dummy IN c_tpm_tpmpt
113 LOOP
114 IF((c_tpm_tpmpt%ROWCOUNT) > 1) THEN
115 p_message_name := 'IGS_RE_ONLY_ONE_CHAIRPERSON';
116 v_loop_bool := TRUE;
117 EXIT;
118 END IF;
119 END LOOP;
120 IF (v_loop_bool = TRUE) THEN
121 RETURN FALSE;
122 END IF;
123 RETURN TRUE;
124 EXCEPTION
125 WHEN OTHERS THEN
126 IF (c_tpm_tpmpt%ISOPEN) THEN
127 CLOSE c_tpm_tpmpt;
128 END IF;
129 RAISE;
130 END;
131 EXCEPTION
132 WHEN OTHERS THEN
133 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
134 IGS_GE_MSG_STACK.ADD;
135 App_Exception.Raise_Exception;
136 END resp_val_tpm_chair;
137 --
138 -- To validate thesis panel member paid date
139 FUNCTION RESP_VAL_TPM_PAID(
140 p_paid_dt IN DATE ,
141 p_confirmed_dt IN DATE ,
142 p_message_name OUT NOCOPY VARCHAR2 )
143 RETURN BOOLEAN AS
144 BEGIN -- resp_val_tpm_paid
145 -- Description: Validate the IGS_RE_THS_PNL_MBR.paid_dt, checking for:
146 -- * Cannot set if confirmed_dt is null
147 -- * Cannot be a future date
148 -- * Cannot be prior to confirmed_dt
149 DECLARE
150 BEGIN
151 p_message_name := NULL;
152 IF p_paid_dt IS NOT NULL THEN
153 --1. Can only be set when confirmed panel member
154 IF p_confirmed_dt IS NULL THEN
155 p_message_name := 'IGS_RE_CANT_SET_PAID_DATE';
156 RETURN FALSE;
157 END IF;
158 --2. Cannot be a future date and must be after the confirmed date
159 IF p_paid_dt NOT BETWEEN p_confirmed_dt
160 AND SYSDATE THEN
161 p_message_name := 'IGS_RE_CHK_PAID_DATE';
162 RETURN FALSE;
163 END IF;
164 END IF;
165 RETURN TRUE;
166 END;
167 EXCEPTION
168 WHEN OTHERS THEN
169 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
170 IGS_GE_MSG_STACK.ADD;
171 App_Exception.Raise_Exception;
172 END resp_val_tpm_paid;
173 --
174 -- To validate the thesis panel member confirmed date
175 FUNCTION RESP_VAL_TPM_CNFRM(
176 p_confirmed_dt IN DATE ,
177 p_thesis_result_cd IN VARCHAR2 ,
178 p_paid_dt IN DATE ,
179 p_declined_dt IN DATE ,
180 p_message_name OUT NOCOPY VARCHAR2 )
181 RETURN BOOLEAN AS
182 BEGIN -- resp_val_tpm_cnfrm
183 -- Validate the IGS_RE_THS_PNL_MBR.confirmed_dt, checking for :
184 -- Cannot unset if thesis_result_cd has been set
185 -- Cannot unset if paid_dt has been set
186 -- Cannot be a future date
187 -- Cannot set if declined_dt is set
188 BEGIN
189 -- set default value
190 p_message_name := NULL;
191 IF p_confirmed_dt IS NULL THEN
192 -- 1. Cannot unset if result has been entered
193 IF p_thesis_result_cd IS NOT NULL THEN
194 p_message_name := 'IGS_RE_CANT_UNCNFRM_RES_ENTER';
195 RETURN FALSE;
196 END IF;
197 -- 2. Cannot unset if paid date has been entered
198 IF p_paid_dt IS NOT NULL THEN
199 p_message_name := 'IGS_RE_CANT_UNCNFRM_PAID_DT';
200 RETURN FALSE;
201 END IF;
202 ELSE
203 -- 1. Cannot set if member has declined.
204 IF p_declined_dt IS NOT NULL THEN
205 p_message_name := 'IGS_RE_CANT_SET_MEM_CONFIRM';
206 RETURN FALSE;
207 END IF;
208 -- 2. Cannot be a future date
209 IF p_confirmed_dt > SYSDATE THEN
210 p_message_name := 'IGS_RE_CNFRM_DT_CANT_BE_FUTUR';
211 RETURN FALSE;
212 END IF;
213 END IF;
214 RETURN TRUE;
215 END;
216 EXCEPTION
217 WHEN OTHERS THEN
218 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
219 IGS_GE_MSG_STACK.ADD;
220 App_Exception.Raise_Exception;
221 END resp_val_tpm_cnfrm; -- resp_val_tpm_cnfrm
222 --
223 -- To validate thesis panel member declined date
224 FUNCTION RESP_VAL_TPM_DCLN(
225 p_declined_dt IN DATE ,
226 p_confirmed_dt IN DATE ,
227 p_message_name OUT NOCOPY VARCHAR2 )
228 RETURN BOOLEAN AS
229 BEGIN -- resp_val_tpm_dcln
230 -- Validate the IGS_RE_THS_PNL_MBR.declined_dt, checking for :
231 -- Cannot be set if the confirmed_dt is set
232 -- Cannot be a future date
233 DECLARE
234 BEGIN
235 IF p_declined_dt IS NOT NULL THEN
236 -- 1. Cannot be set if confirmed date is set
237 IF p_confirmed_dt IS NOT NULL THEN
238 p_message_name := 'IGS_RE_CANT_SET_DECLINED_DATE';
239 RETURN FALSE;
240 END IF;
241 --2. Cannot be a future date
242 IF p_declined_dt > SYSDATE THEN
243 p_message_name := 'IGS_RE_DECL_DT_CANT_BE_FUTURE';
244 RETURN FALSE;
245 END IF;
246 END IF;
247 p_message_name := NULL;
248 RETURN TRUE;
249 END;
250 EXCEPTION
251 WHEN OTHERS THEN
252 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
253 IGS_GE_MSG_STACK.ADD;
254 App_Exception.Raise_Exception;
255 END resp_val_tpm_dcln;
256 --
257 -- To validate the thesis panel member person ID
258 FUNCTION RESP_VAL_TPM_PE(
259 p_ca_person_id IN NUMBER ,
260 p_ca_sequence_number IN NUMBER ,
261 p_person_id IN NUMBER ,
262 p_message_name OUT NOCOPY VARCHAR2 )
263 RETURN BOOLEAN AS
264 BEGIN -- resp_val_tpm_pe
265 -- Validate the IGS_RE_THS_PNL_MBR.person_id, checking for :
266 -- Warn if the person is a current student
267 -- person cannot be a panel member for themselves
268 -- Warn if the person is a supervisor of the candidate
269 DECLARE
270 cst_enrolled CONSTANT VARCHAR2(10) := 'ENROLLED';
271 cst_inactive CONSTANT VARCHAR2(10) := 'INACTIVE';
272 cst_lapsed CONSTANT VARCHAR2(10) := 'LAPSED';
273 cst_intermit CONSTANT VARCHAR2(10) := 'INTERMIT';
274 v_dummy VARCHAR2(1);
275 v_message_name VARCHAR2(30);
276 CURSOR c_sca IS
277 SELECT 'x'
278 FROM IGS_EN_STDNT_PS_ATT sca
279 WHERE sca.person_id = p_person_id AND
280 sca.course_attempt_status IN (
281 cst_enrolled,
282 cst_inactive,
283 cst_lapsed,
284 cst_intermit);
285 CURSOR c_rsup IS
286 SELECT 'x'
287 FROM IGS_RE_SPRVSR rsup
288 WHERE rsup.ca_person_id = p_ca_person_id AND
289 rsup.ca_sequence_number = p_ca_sequence_number AND
290 rsup.person_id = p_person_id AND
291 rsup.start_dt <= SYSDATE AND
292 (rsup.end_dt IS NULL OR
293 rsup.end_dt > SYSDATE);
294
295 BEGIN
296 p_message_name := NULL;
297 -- Check whether person is deceased.
298 IF IGS_RE_VAL_TEX.genp_val_pe_deceased( p_person_id,
299 'ERROR',
300 v_message_name) = FALSE THEN
301 p_message_name := v_message_name;
302 RETURN FALSE;
303 END IF;
304 --1. Check that person is not a panel member for themselves
305 IF p_ca_person_id = p_person_id THEN
306 p_message_name := 'IGS_RE_PERS_CANT_BE_EXAMINER';
307 RETURN FALSE;
308 END IF;
309 --2. Warn if person is a current student.
310 OPEN c_sca;
311 FETCH c_sca INTO v_dummy;
312 IF c_sca%FOUND THEN
313 CLOSE c_sca;
314 p_message_name := 'IGS_RE_EXAMINER_IS_CUR_STUDEN';
315 RETURN TRUE; --(Warning Only)
316 END IF;
317 CLOSE c_sca;
318 -- Warn if person is a staff member.
319 IF IGS_EN_GEN_003.Get_Staff_Ind(p_person_id) = 'Y' THEN
320 p_message_name := 'IGS_RE_EXAMINAR_IS_STAFF_MEM';
321 RETURN TRUE; -- (Warning Only)
322 END IF;
323
324 -- 3. Warn if person is a supervisor of the candidate
325 OPEN c_rsup;
326 FETCH c_rsup INTO v_dummy;
327 IF c_rsup%FOUND THEN
328 CLOSE c_rsup;
329 p_message_name := 'IGS_RE_PERS_CUR_SUPERVIOR';
330 RETURN TRUE; -- (Warning Only)
331 END IF;
332 CLOSE c_rsup;
333 p_message_name := NULL;
334 RETURN TRUE;
335 EXCEPTION
336 WHEN OTHERS THEN
337 IF (c_sca%ISOPEN) THEN
338 CLOSE c_sca;
339 END IF;
340 IF (c_rsup%ISOPEN) THEN
341 CLOSE c_rsup;
342 END IF;
343 RAISE;
344 END;
345 EXCEPTION
346 WHEN OTHERS THEN
347 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
348 IGS_GE_MSG_STACK.ADD;
349 App_Exception.Raise_Exception;
350 END resp_val_tpm_pe;
351 --
352 -- To validate the thesis panel member IGS_RE_THESIS result code
353 FUNCTION RESP_VAL_TPM_THR(
354 p_ca_person_id IN NUMBER ,
355 p_ca_sequence_number IN NUMBER ,
356 p_the_sequence_number IN NUMBER ,
357 p_creation_dt IN DATE ,
358 p_thesis_result_cd IN VARCHAR2 ,
359 p_recommendation_summary IN VARCHAR2 ,
360 p_confirmed_dt IN DATE ,
361 p_message_name OUT NOCOPY VARCHAR2 )
362 RETURN BOOLEAN AS
363 BEGIN -- resp_val_tpm_thr
364 -- Description: Validate the IGS_RE_THS_PNL_MBR.thesis_result_cd
365 -- recommendation_summary fields, checking for :
366 -- * Cannot be a closed IGS_RE_THESIS result code
367 -- * Cannot set if parent thesis_examination has not been submitted
368 -- * Cannot set if panel member has not confirmed
369 DECLARE
370 v_tex_rec IGS_RE_THESIS_EXAM.submission_dt%TYPE;
371 v_thr_rec IGS_RE_THESIS_RESULT.closed_ind%TYPE;
372 CURSOR c_tex IS
373 SELECT tex.submission_dt
374 FROM IGS_RE_THESIS_EXAM tex
375 WHERE tex.person_id = p_ca_person_id AND
376 tex.ca_sequence_number = p_ca_sequence_number AND
377 tex.the_sequence_number = p_the_sequence_number AND
378 tex.creation_dt = p_creation_dt;
379 CURSOR c_thr IS
380 SELECT thr.closed_ind
381 FROM IGS_RE_THESIS_RESULT thr
382 WHERE thr.thesis_result_cd = p_thesis_result_cd;
383 BEGIN
384 p_message_name := NULL;
385 IF p_thesis_result_cd IS NOT NULL OR
386 p_recommendation_summary IS NOT NULL THEN
387 --Check that person has been confirmed
388 IF p_confirmed_dt IS NULL THEN
389 p_message_name := 'IGS_RE_CANT_ENT_RES_UNCNF_MEM';
390 RETURN FALSE;
391 END IF;
392 OPEN c_tex;
393 FETCH c_tex INTO v_tex_rec;
394 CLOSE c_tex;
395 --Check that IGS_RE_THESIS has been submitted
396 IF v_tex_rec IS NULL THEN
397 p_message_name := 'IGS_RE_CANT_ENT_RES_FOR_THESI';
398 RETURN FALSE;
399 END IF;
400 IF p_thesis_result_cd IS NOT NULL THEN
401 --Check for closed result code
402 OPEN c_thr;
403 FETCH c_thr INTO v_thr_rec;
404 --Invalid date ; to be picked up by calling routine
405 IF (c_thr%NOTFOUND) THEN
406 CLOSE c_thr;
407 RETURN TRUE;
408 END IF;
409 CLOSE c_thr;
410 IF v_thr_rec = 'Y' THEN
411 p_message_name := 'IGS_RE_THESIS_RESUILT_CLOSED';
412 RETURN FALSE;
413 END IF;
414 END IF;
415 END IF;
416 RETURN TRUE;
417 EXCEPTION
418 WHEN OTHERS THEN
419 IF (c_tex%ISOPEN) THEN
420 CLOSE c_thr;
421 END IF;
422 IF (c_thr%ISOPEN) THEN
423 CLOSE c_thr;
424 END IF;
425 RAISE;
426 END;
427 EXCEPTION
428 WHEN OTHERS THEN
429 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
430 IGS_GE_MSG_STACK.ADD;
431 App_Exception.Raise_Exception;
432 END resp_val_tpm_thr;
433 --
434 -- To validate IGS_RE_THESIS panel member panel type
435 FUNCTION RESP_VAL_TPM_TPMT(
436 p_panel_member_type IN VARCHAR2 ,
437 p_message_name OUT NOCOPY VARCHAR2 )
438 RETURN BOOLEAN AS
439 BEGIN -- resp_val_tpm_tpmt
440 -- Description: Validate the IGS_RE_THS_PNL_MBR.panel_member_type, checking
441 -- for: Closed type.
442 DECLARE
443 v_tpmt_rec IGS_RE_THS_PNL_MR_TP.closed_ind%TYPE;
444 CURSOR c_tpmt IS
445 SELECT tpmt.closed_ind
446 FROM IGS_RE_THS_PNL_MR_TP tpmt
447 WHERE tpmt.panel_member_type = p_panel_member_type;
448 BEGIN
449 p_message_name := NULL;
450 OPEN c_tpmt;
451 FETCH c_tpmt INTO v_tpmt_rec;
452 IF (c_tpmt%NOTFOUND) THEN
453 CLOSE c_tpmt;
454 RETURN TRUE;
455 END IF;
456 CLOSE c_tpmt;
457 IF v_tpmt_rec = 'Y' THEN
458 p_message_name := 'IGS_RE_THESIS_PANEL_TYPE_CLOS';
459 RETURN FALSE;
460 END IF;
461 RETURN TRUE;
462 EXCEPTION
463 WHEN OTHERS THEN
464 IF (c_tpmt%ISOPEN) THEN
465 CLOSE c_tpmt;
466 END IF;
467 RAISE;
468 END;
469 EXCEPTION
470 WHEN OTHERS THEN
471 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
472 IGS_GE_MSG_STACK.ADD;
473 App_Exception.Raise_Exception;
474 END resp_val_tpm_tpmt;
475 --
476 -- To validate thesis panel member updates
477 FUNCTION RESP_VAL_TPM_UPD(
478 p_ca_person_id IN NUMBER ,
479 p_ca_sequence_number IN NUMBER ,
480 p_the_sequence_number IN NUMBER ,
481 p_creation_dt IN DATE ,
482 p_transaction_type IN VARCHAR2 ,
483 p_old_thesis_result_cd IN VARCHAR2 ,
484 p_new_thesis_result_cd IN VARCHAR2 ,
485 p_old_panel_member_type IN VARCHAR2 ,
486 p_new_panel_member_type IN VARCHAR2 ,
487 p_old_confirmed_dt IN DATE ,
488 p_new_confirmed_dt IN DATE ,
489 p_message_name OUT NOCOPY VARCHAR2 )
490 RETURN BOOLEAN AS
491 BEGIN -- resp_val_tpm_upd
492 -- Validate whether IGS_RE_THS_PNL_MBR update transactions are possible
493 -- (insert,update and delete), checking for :
494 -- Can only insert or delete records when parent
495 -- thesis_examination.thesis_result_cd is not set
496 -- Cannot update thesis_result_cd, panel_member_type, confirmed_dt if parent
497 -- examination result has been entered.
498 DECLARE
499 cst_insert CONSTANT VARCHAR2(10) := 'INSERT';
500 cst_delete CONSTANT VARCHAR2(10) := 'DELETE';
501 cst_update CONSTANT VARCHAR2(10) := 'UPDATE';
502 v_thesis_result_cd IGS_RE_THESIS_EXAM.thesis_result_cd%TYPE;
503 CURSOR c_tex IS
504 SELECT tex.thesis_result_cd
505 FROM IGS_RE_THESIS_EXAM tex
506 WHERE tex.person_id = p_ca_person_id AND
507 tex.ca_sequence_number = p_ca_sequence_number AND
508 tex.the_sequence_number = p_the_sequence_number AND
509 tex.creation_dt = p_creation_dt;
510 BEGIN
511 p_message_name := NULL;
512 -- 1. Get the result code from the parent thesis examination.
513 OPEN c_tex;
514 FETCH c_tex INTO v_thesis_result_cd;
515 IF c_tex%NOTFOUND THEN
516 --Invalid parameters ; will be picked up be the calling routine.
517 CLOSE c_tex;
518 RETURN TRUE;
519 END IF;
520 CLOSE c_tex;
521 IF p_transaction_type IN (cst_insert, cst_delete) THEN
522 -- 2. If the parent result code is set then insert and delete
523 -- are not possible.
524 IF v_thesis_result_cd IS NOT NULL THEN
525 p_message_name := 'IGS_RE_CANT_ID_PANEL_MEMBERS';
526 RETURN FALSE;
527 END IF;
528 END IF;
529 IF p_transaction_type = cst_update THEN
530 -- 3. If specified fields have changed and the parent result has
531 -- been entered then fail.
532 IF v_thesis_result_cd IS NOT NULL THEN
533 IF NVL(p_old_thesis_result_cd, 'NULL') <>
534 NVL(p_new_thesis_result_cd, 'NULL') OR
535 NVL(p_old_panel_member_type, 'NULL') <>
536 NVL(p_new_panel_member_type, 'NULL') OR
537 NVL(p_old_confirmed_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
538 NVL(p_new_confirmed_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) THEN
539 p_message_name := 'IGS_RE_CANT_UPD_PAN_MEM_TYPE';
540 RETURN FALSE;
541 END IF;
542 END IF;
543 END IF;
544 RETURN TRUE;
545 EXCEPTION
546 WHEN OTHERS THEN
547 IF (c_tex%ISOPEN) THEN
548 CLOSE c_tex;
549 END IF;
550 RAISE;
551 END;
552 EXCEPTION
553 WHEN OTHERS THEN
554 Fnd_Message.Set_Name ('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
555 IGS_GE_MSG_STACK.ADD;
556 App_Exception.Raise_Exception;
557 END resp_val_tpm_upd;
558 END IGS_RE_VAL_TPM;