1: PACKAGE BODY igs_re_sprvsr_lgcy_pub AS
2: /* $Header: IGSRE19B.pls 120.4 2006/02/15 01:45:32 bdeviset noship $ */
3:
4: /*------------------------------------------------------------------------------+
5: | Copyright (c) 1994, 1996 Oracle Corp. Redwood Shores, California, USA |
6: | All rights reserved. |
7: +==============================================================================+
8: | |
9: | DESCRIPTION |
10: | PL/SQL body for package: igs_re_sprvsr_lgcy_pub |
11: | |
12: | NOTES : Research Supervisor Legacy API. This API imports supervisor |
13: | information against the specified program attempt / candidature. |
14: | Created as part of Enrollment Legacy build. Bug# 2661533 |
21: | Previously it was fetching replaced_sequence_number by comparing replaced_person_id; |
22: | This is to fix bug# 2725852. |
23: *==============================================================================*/
24:
25: g_pkg_name CONSTANT VARCHAR2(30) := 'IGS_RE_SPRVSR_LGCY_PUB';
26:
27: FUNCTION validate_parameters
28: (
29: p_sprvsr_dtls_rec IN sprvsr_dtls_rec_type
65: END IF;
66:
67: -- Check whether the research supervisor type is null or not
68: IF p_sprvsr_dtls_rec.research_supervisor_type IS NULL THEN
69: FND_MESSAGE.SET_NAME('IGS','IGS_RE_SPRVSR_TYP_NULL');
70: FND_MSG_PUB.Add;
71: l_sprvsr_status := 'INVALID';
72: ELSE
73: BEGIN
75: -- If research supervisor is specified then validate it by calling the check constraints. Incase if there is
76: -- any error it will log an error message "IGS_GE_INVALID_VALUE", which doesn't give much info. to the user.
77: -- So we delete that message and add a meaningful message to the stack.
78:
79: igs_re_sprvsr_pkg.check_constraints ('RESEARCH_SUPERVISOR_TYPE', p_sprvsr_dtls_rec.research_supervisor_type);
80:
81: EXCEPTION
82: WHEN OTHERS THEN
83: FND_MSG_PUB.COUNT_AND_GET( p_count => l_msg_count,
86: -- Delete the message 'IGS_GE_INVALID_VALUE'
87: FND_MSG_PUB.DELETE_MSG (l_msg_count);
88:
89: -- set the customized message
90: FND_MESSAGE.Set_Name('IGS','IGS_RE_SPRVSR_TYPE_VAL');
91: FND_MSG_PUB.Add;
92: l_sprvsr_status := 'INVALID';
93: END;
94: END IF;
95:
96:
97: IF p_sprvsr_dtls_rec.supervision_percentage IS NOT NULL THEN
98: BEGIN
99: igs_re_sprvsr_pkg.check_constraints ('SUPERVISION_PERCENTAGE', p_sprvsr_dtls_rec.supervision_percentage);
100: EXCEPTION
101: WHEN OTHERS THEN
102: FND_MSG_PUB.COUNT_AND_GET( p_count => l_msg_count,
103: p_data => l_msg_data);
111:
112:
113: IF p_sprvsr_dtls_rec.funding_percentage IS NOT NULL THEN
114: BEGIN
115: igs_re_sprvsr_pkg.check_constraints ('FUNDING_PERCENTAGE', p_sprvsr_dtls_rec.funding_percentage);
116: EXCEPTION
117: WHEN OTHERS THEN
118: FND_MSG_PUB.COUNT_AND_GET( p_count => l_msg_count,
119: p_data => l_msg_data);
127:
128:
129: IF p_sprvsr_dtls_rec.org_unit_cd IS NOT NULL THEN
130: BEGIN
131: igs_re_sprvsr_pkg.check_constraints ('ORG_UNIT_CD', p_sprvsr_dtls_rec.org_unit_cd);
132: EXCEPTION
133: WHEN OTHERS THEN
134: FND_MSG_PUB.COUNT_AND_GET( p_count => l_msg_count,
135: p_data => l_msg_data);
147:
148:
149: FUNCTION validate_sprvsr
150: (
151: p_person_id IN igs_re_sprvsr.person_id%TYPE,
152: p_sprvsr_dtls_rec IN sprvsr_dtls_rec_type,
153: p_ca_person_id IN igs_re_sprvsr.ca_person_id%TYPE,
154: p_ca_sequence_number IN igs_re_sprvsr.ca_sequence_number%TYPE,
155: p_ou_start_dt IN igs_re_sprvsr.ou_start_dt%TYPE
149: FUNCTION validate_sprvsr
150: (
151: p_person_id IN igs_re_sprvsr.person_id%TYPE,
152: p_sprvsr_dtls_rec IN sprvsr_dtls_rec_type,
153: p_ca_person_id IN igs_re_sprvsr.ca_person_id%TYPE,
154: p_ca_sequence_number IN igs_re_sprvsr.ca_sequence_number%TYPE,
155: p_ou_start_dt IN igs_re_sprvsr.ou_start_dt%TYPE
156: ) RETURN VARCHAR2 AS
157:
150: (
151: p_person_id IN igs_re_sprvsr.person_id%TYPE,
152: p_sprvsr_dtls_rec IN sprvsr_dtls_rec_type,
153: p_ca_person_id IN igs_re_sprvsr.ca_person_id%TYPE,
154: p_ca_sequence_number IN igs_re_sprvsr.ca_sequence_number%TYPE,
155: p_ou_start_dt IN igs_re_sprvsr.ou_start_dt%TYPE
156: ) RETURN VARCHAR2 AS
157:
158: /**********************************************************************************************
151: p_person_id IN igs_re_sprvsr.person_id%TYPE,
152: p_sprvsr_dtls_rec IN sprvsr_dtls_rec_type,
153: p_ca_person_id IN igs_re_sprvsr.ca_person_id%TYPE,
154: p_ca_sequence_number IN igs_re_sprvsr.ca_sequence_number%TYPE,
155: p_ou_start_dt IN igs_re_sprvsr.ou_start_dt%TYPE
156: ) RETURN VARCHAR2 AS
157:
158: /**********************************************************************************************
159: Created By : pradhakr
170:
171:
172:
173: -- Cursor to get the sequence number of the person
174: CURSOR c_person_dtls ( l_person_id igs_re_sprvsr.person_id%TYPE, l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE,
175: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE ) IS
176: SELECT sequence_number
177: FROM igs_re_sprvsr
178: WHERE person_id = l_person_id
171:
172:
173: -- Cursor to get the sequence number of the person
174: CURSOR c_person_dtls ( l_person_id igs_re_sprvsr.person_id%TYPE, l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE,
175: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE ) IS
176: SELECT sequence_number
177: FROM igs_re_sprvsr
178: WHERE person_id = l_person_id
179: AND ca_person_id = l_ca_person_id
173: -- Cursor to get the sequence number of the person
174: CURSOR c_person_dtls ( l_person_id igs_re_sprvsr.person_id%TYPE, l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE,
175: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE ) IS
176: SELECT sequence_number
177: FROM igs_re_sprvsr
178: WHERE person_id = l_person_id
179: AND ca_person_id = l_ca_person_id
180: AND ca_sequence_number = l_ca_sequence_number;
181:
179: AND ca_person_id = l_ca_person_id
180: AND ca_sequence_number = l_ca_sequence_number;
181:
182: -- Cursor to get the replaced sequence number of the person
183: CURSOR c_repl_person_dtls ( l_repl_person_id igs_re_sprvsr.replaced_person_id%TYPE ) IS
184: SELECT replaced_sequence_number
185: FROM igs_re_sprvsr
186: WHERE replaced_person_id = l_repl_person_id;
187:
181:
182: -- Cursor to get the replaced sequence number of the person
183: CURSOR c_repl_person_dtls ( l_repl_person_id igs_re_sprvsr.replaced_person_id%TYPE ) IS
184: SELECT replaced_sequence_number
185: FROM igs_re_sprvsr
186: WHERE replaced_person_id = l_repl_person_id;
187:
188: CURSOR c_date_ovrlp (l_sequence_number IN NUMBER ) IS
189: SELECT 'x'
186: WHERE replaced_person_id = l_repl_person_id;
187:
188: CURSOR c_date_ovrlp (l_sequence_number IN NUMBER ) IS
189: SELECT 'x'
190: FROM igs_re_sprvsr rsup, igs_pe_person_base_v pdv
191: WHERE rsup.ca_person_id = p_ca_person_id
192: AND rsup.ca_sequence_number = p_ca_sequence_number
193: AND rsup.person_id = p_person_id
194: AND rsup.sequence_number = l_sequence_number
208: l_where_clause VARCHAR2(450);
209: c_org_cur c_ref_cur ;
210: curr_stat VARCHAR2(500);
211: l_rec_found varchar2(1);
212: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
213: l_legacy VARCHAR2(1) DEFAULT 'Y';
214: l_sprvsr_status VARCHAR2(10) DEFAULT 'VALID';
215: l_sequence_number igs_re_sprvsr.sequence_number%TYPE;
216: l_replaced_person_id igs_re_sprvsr.replaced_person_id%TYPE;
211: l_rec_found varchar2(1);
212: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
213: l_legacy VARCHAR2(1) DEFAULT 'Y';
214: l_sprvsr_status VARCHAR2(10) DEFAULT 'VALID';
215: l_sequence_number igs_re_sprvsr.sequence_number%TYPE;
216: l_replaced_person_id igs_re_sprvsr.replaced_person_id%TYPE;
217: l_replaced_sequence_number igs_re_sprvsr.replaced_sequence_number%TYPE;
218: l_date_ovrlp c_date_ovrlp%ROWTYPE;
219: l_message_text fnd_new_messages.message_text%TYPE;
212: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
213: l_legacy VARCHAR2(1) DEFAULT 'Y';
214: l_sprvsr_status VARCHAR2(10) DEFAULT 'VALID';
215: l_sequence_number igs_re_sprvsr.sequence_number%TYPE;
216: l_replaced_person_id igs_re_sprvsr.replaced_person_id%TYPE;
217: l_replaced_sequence_number igs_re_sprvsr.replaced_sequence_number%TYPE;
218: l_date_ovrlp c_date_ovrlp%ROWTYPE;
219: l_message_text fnd_new_messages.message_text%TYPE;
220:
213: l_legacy VARCHAR2(1) DEFAULT 'Y';
214: l_sprvsr_status VARCHAR2(10) DEFAULT 'VALID';
215: l_sequence_number igs_re_sprvsr.sequence_number%TYPE;
216: l_replaced_person_id igs_re_sprvsr.replaced_person_id%TYPE;
217: l_replaced_sequence_number igs_re_sprvsr.replaced_sequence_number%TYPE;
218: l_date_ovrlp c_date_ovrlp%ROWTYPE;
219: l_message_text fnd_new_messages.message_text%TYPE;
220:
221: BEGIN
385:
386:
387: FUNCTION validate_sprvsr_db_cons
388: (
389: p_person_id IN igs_re_sprvsr.person_id%TYPE,
390: p_sprvsr_dtls_rec IN sprvsr_dtls_rec_type,
391: p_ca_person_id IN igs_re_sprvsr.ca_person_id%TYPE,
392: p_ca_sequence_number IN igs_re_sprvsr.ca_sequence_number%TYPE,
393: p_sprvsr_status OUT NOCOPY VARCHAR2
387: FUNCTION validate_sprvsr_db_cons
388: (
389: p_person_id IN igs_re_sprvsr.person_id%TYPE,
390: p_sprvsr_dtls_rec IN sprvsr_dtls_rec_type,
391: p_ca_person_id IN igs_re_sprvsr.ca_person_id%TYPE,
392: p_ca_sequence_number IN igs_re_sprvsr.ca_sequence_number%TYPE,
393: p_sprvsr_status OUT NOCOPY VARCHAR2
394: ) RETURN VARCHAR2 AS
395:
388: (
389: p_person_id IN igs_re_sprvsr.person_id%TYPE,
390: p_sprvsr_dtls_rec IN sprvsr_dtls_rec_type,
391: p_ca_person_id IN igs_re_sprvsr.ca_person_id%TYPE,
392: p_ca_sequence_number IN igs_re_sprvsr.ca_sequence_number%TYPE,
393: p_sprvsr_status OUT NOCOPY VARCHAR2
394: ) RETURN VARCHAR2 AS
395:
396: /**********************************************************************************************
401: Change History
402: Who When What
403: ***********************************************************************************************/
404:
405: CURSOR c_person_dtls ( l_person_id igs_re_sprvsr.person_id%TYPE, l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE,
406: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE ) IS
407: SELECT sequence_number, start_dt
408: FROM igs_re_sprvsr
409: WHERE person_id = l_person_id
402: Who When What
403: ***********************************************************************************************/
404:
405: CURSOR c_person_dtls ( l_person_id igs_re_sprvsr.person_id%TYPE, l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE,
406: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE ) IS
407: SELECT sequence_number, start_dt
408: FROM igs_re_sprvsr
409: WHERE person_id = l_person_id
410: AND ca_person_id = l_ca_person_id
404:
405: CURSOR c_person_dtls ( l_person_id igs_re_sprvsr.person_id%TYPE, l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE,
406: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE ) IS
407: SELECT sequence_number, start_dt
408: FROM igs_re_sprvsr
409: WHERE person_id = l_person_id
410: AND ca_person_id = l_ca_person_id
411: AND ca_sequence_number = l_ca_sequence_number;
412:
411: AND ca_sequence_number = l_ca_sequence_number;
412:
413: l_person_dtls c_person_dtls%ROWTYPE;
414: l_ret_value VARCHAR2(1) := 'S';
415: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
416: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE;
417: l_result BOOLEAN;
418:
419: BEGIN
412:
413: l_person_dtls c_person_dtls%ROWTYPE;
414: l_ret_value VARCHAR2(1) := 'S';
415: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
416: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE;
417: l_result BOOLEAN;
418:
419: BEGIN
420:
426:
427: -- Check for Unique Key validation. If validation fails, stop the processing and return back
428: -- to the calling procedure.
429:
430: IF igs_re_sprvsr_pkg.get_uk1_for_validation ( p_ca_person_id, p_ca_sequence_number,
431: p_person_id, p_sprvsr_dtls_rec.start_dt ) THEN
432: FND_MESSAGE.Set_Name('IGS','IGS_RE_SPRVSR_EXTS');
433: FND_MSG_PUB.Add;
434: p_sprvsr_status := 'INVALID';
428: -- to the calling procedure.
429:
430: IF igs_re_sprvsr_pkg.get_uk1_for_validation ( p_ca_person_id, p_ca_sequence_number,
431: p_person_id, p_sprvsr_dtls_rec.start_dt ) THEN
432: FND_MESSAGE.Set_Name('IGS','IGS_RE_SPRVSR_EXTS');
433: FND_MSG_PUB.Add;
434: p_sprvsr_status := 'INVALID';
435: l_ret_value := 'W';
436: RETURN l_ret_value;
442: p_sprvsr_status := 'INVALID';
443: l_ret_value := 'E';
444: END IF;
445:
446: IF NOT igs_re_sprvsr_type_pkg.get_pk_for_validation (p_sprvsr_dtls_rec.research_supervisor_type) THEN
447: FND_MESSAGE.Set_Name('IGS','IGS_RE_SPRVSR_TYP_NT_EXTS');
448: fnd_message.set_token('TYPE',p_sprvsr_dtls_rec.research_supervisor_type);
449: FND_MSG_PUB.Add;
450: p_sprvsr_status := 'INVALID';
443: l_ret_value := 'E';
444: END IF;
445:
446: IF NOT igs_re_sprvsr_type_pkg.get_pk_for_validation (p_sprvsr_dtls_rec.research_supervisor_type) THEN
447: FND_MESSAGE.Set_Name('IGS','IGS_RE_SPRVSR_TYP_NT_EXTS');
448: fnd_message.set_token('TYPE',p_sprvsr_dtls_rec.research_supervisor_type);
449: FND_MSG_PUB.Add;
450: p_sprvsr_status := 'INVALID';
451: l_ret_value := 'E';
482: This is to fix bug# 2725852.
483: ***********************************************************************************************/
484:
485: CURSOR c_next_val IS
486: SELECT igs_re_sprvsr_seq_num_s.nextval
487: FROM dual;
488:
489: CURSOR c_repl_person_dtls (l_repl_person_id igs_re_sprvsr.replaced_person_id%TYPE) IS
490: SELECT sequence_number
485: CURSOR c_next_val IS
486: SELECT igs_re_sprvsr_seq_num_s.nextval
487: FROM dual;
488:
489: CURSOR c_repl_person_dtls (l_repl_person_id igs_re_sprvsr.replaced_person_id%TYPE) IS
490: SELECT sequence_number
491: FROM igs_re_sprvsr
492: WHERE person_id = l_repl_person_id;
493:
487: FROM dual;
488:
489: CURSOR c_repl_person_dtls (l_repl_person_id igs_re_sprvsr.replaced_person_id%TYPE) IS
490: SELECT sequence_number
491: FROM igs_re_sprvsr
492: WHERE person_id = l_repl_person_id;
493:
494:
495: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE;
491: FROM igs_re_sprvsr
492: WHERE person_id = l_repl_person_id;
493:
494:
495: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE;
496: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
497: l_person_id igs_re_sprvsr.person_id%TYPE;
498: l_replaced_person_id igs_re_sprvsr.replaced_person_id%TYPE;
499: l_ou_start_dt DATE;
492: WHERE person_id = l_repl_person_id;
493:
494:
495: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE;
496: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
497: l_person_id igs_re_sprvsr.person_id%TYPE;
498: l_replaced_person_id igs_re_sprvsr.replaced_person_id%TYPE;
499: l_ou_start_dt DATE;
500: l_result BOOLEAN;
493:
494:
495: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE;
496: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
497: l_person_id igs_re_sprvsr.person_id%TYPE;
498: l_replaced_person_id igs_re_sprvsr.replaced_person_id%TYPE;
499: l_ou_start_dt DATE;
500: l_result BOOLEAN;
501: l_api_name CONSTANT VARCHAR2(30) := 'Create_Sprvsr';
494:
495: l_ca_sequence_number igs_re_sprvsr.ca_sequence_number%TYPE;
496: l_ca_person_id igs_re_sprvsr.ca_person_id%TYPE;
497: l_person_id igs_re_sprvsr.person_id%TYPE;
498: l_replaced_person_id igs_re_sprvsr.replaced_person_id%TYPE;
499: l_ou_start_dt DATE;
500: l_result BOOLEAN;
501: l_api_name CONSTANT VARCHAR2(30) := 'Create_Sprvsr';
502: l_api_version CONSTANT NUMBER := 1.0;
501: l_api_name CONSTANT VARCHAR2(30) := 'Create_Sprvsr';
502: l_api_version CONSTANT NUMBER := 1.0;
503: p_sprvsr_status VARCHAR2(10) DEFAULT 'VALID';
504: l_sequence_number NUMBER;
505: l_replaced_sequence_number igs_re_sprvsr.replaced_sequence_number%TYPE;
506:
507: l_creation_date DATE;
508: l_last_update_date DATE;
509: l_created_by NUMBER;
646: OPEN c_next_val;
647: FETCH c_next_val INTO l_sequence_number;
648: CLOSE c_next_val;
649:
650: -- Insert the record in IGS_RE_SPRVSR table
651: INSERT INTO igs_re_sprvsr (
652: ca_person_id,
653: ca_sequence_number,
654: person_id,
647: FETCH c_next_val INTO l_sequence_number;
648: CLOSE c_next_val;
649:
650: -- Insert the record in IGS_RE_SPRVSR table
651: INSERT INTO igs_re_sprvsr (
652: ca_person_id,
653: ca_sequence_number,
654: person_id,
655: sequence_number,
733: p_data => x_msg_data);
734:
735: END create_sprvsr;
736:
737: END igs_re_sprvsr_lgcy_pub;