[Home] [Help]
PACKAGE BODY: APPS.IGS_PS_UNIT_LGCY_PKG
Source
1 PACKAGE BODY igs_ps_unit_lgcy_pkg AS
2 /* $Header: IGSPS85B.pls 120.15 2006/08/02 11:47:44 sommukhe ship $ */
3
4 /***********************************************************************************************
5 Created By : Sanjeeb Rakshit, Shirish Tatiko, Saravana Kumar
6 Date Created By: 11-NOV-2002
7 Purpose : This package has the 8 sub processes, which will be called from
8 PSP Unit API.
9 process 1 : create_unit_version
10 Imports Unit Version and its associated Subtitle and Curriculum
11 process 2 : create_teach_resp
12 Imports Teaching Reponsibility.
13 process 3 : create_unit_discip
14 Imports Unit Discipline.
15 process 4 : create_unit_grd_sch
16 Imports Unit Grading Schema.
17 : validate_unit_dtls
18 Validations performed across different sub process at unil level.
19 process 5 : create_unit_section
20 Imports Unit Section and its associated Credits Point and Referrence
21 process 6 : create_usec_grd_sch
22 Imports Unit Section Grading Schema
23 process 7 : create_usec_occur
24 Imports Unit Section Occurrence
25 process 8 : create_unit_ref_code
26 Imports Unit / Unit Section / Unit Section Occurrence Referrences
27 process 9 : create_uso_ins
28 Imports Unit Section Occurrence instructors and creates unit
29 section teaching responsibilites record if current instructor
30 getting imported does not already exists.
31
32 Known limitations,enhancements,remarks:
33 Change History (in reverse chronological order)
34 Who When What
35 sommukhe 27-SEP-2005 BUG #4632652.FND logging included.
36 smvk 28-Jul-2004 Bug # 3793580. Allowing the user to import instructors for No Set Day USO.
37 Coded to call procedure get_uso_id to get USO ID. Removed cursors used to derive USO id.
38 smvk 07-Nov-2003 Bug # 3138353. Added new procedure validate_unit_dtls to do unit level cross subprocesses validation.
39 smvk 10-Oct-2003 Bug # 3052445. Modified the signature of igs_ps_validate_lgcy_pkg.validate_waitlist_allowed without org unit code.
40 smvk 23-Sep-2003 Bug # 3121311, Removed the call to procedures uso_effective_dates and validate_instructor.
41 sarakshi 02-sep-2003 Enh#3052452,removed the reference of the column sup_unit_allowed_ind and sub_unit_allowed_ind
42 vvutukur 05-Aug-2003 Enh#3045069.PSP Enh Build. Modified trim_values,create_uoo,validate_uoo_db_cons,
43 validate_derivations,validate_db_cons.
44 smvk 27-Jun-2003 Enh Bug # 2999888. Modified unit reference code process for importing
45 Unit requirements / Unit Sectin requirements reference codes.
46 smvk 25-jun-2003 Enh bug#2918094. Modified create_usec_occur process to add a column cancel_flag.
47 jbegum 02-June-2003 Bug # 2972950.
48 For the Legacy Enhancements TD:
49 Created Sub process create_uso_ins and Sub process create_usec_el as mentioned in TD.
50 Modified the code to use messages rather than lookup codes mentioned in TD, due to
51 Non Backward compatible changes in igslkups.ldt.
52 ********************************************************************************************** */
53
54 g_n_user_id igs_ps_unit_ver_all.created_by%TYPE := NVL(fnd_global.user_id,-1); -- Stores the User Id
55 g_n_login_id igs_ps_unit_ver_all.last_update_login%TYPE := NVL(fnd_global.login_id,-1); -- Stores the Login Id
56 TYPE uso_tbl_type IS TABLE OF igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE INDEX BY BINARY_INTEGER;
57 l_tbl_uso uso_tbl_type;
58
59
60
61 PROCEDURE create_unit_version(p_unit_ver_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ver_rec_type,
62 p_rec_status OUT NOCOPY VARCHAR2) AS
63 /***********************************************************************************************
64
65 Created By: sarakshi
66 Date Created By: 11-Nov-2002
67 Purpose: This procedure imports unit version data.
68
69 Known limitations,enhancements,remarks:
70
71 Change History
72
73 Who When What
74
75 sarakshi 04-May-2004 Enh#3568858,columns ovrd_wkld_val_flag, workload_val_code has been trimed and also included in the insert statement.
76 sarakshi 10-Nov-2003 Enh#3116171, added logic related to the newly introduced field BILLING_CREDIT_POINTS, modified trim values procedure and insert_row
77 ***********************************************************************************************/
78
79 CURSOR cur_check (cp_unit_cd igs_ps_unit.unit_cd%TYPE) IS
80 SELECT 'X'
81 FROM igs_ps_unit
82 WHERE unit_cd=cp_unit_cd;
83 l_c_var VARCHAR2(1);
84
85 l_n_coord_person_id igs_ps_unit_ver_all.coord_person_id%TYPE;
86 l_d_owner_ou_start_dt igs_ps_unit_ver_all.owner_ou_start_dt%TYPE;
87 l_n_subtitle_id igs_ps_unit_ver_all.subtitle_id%TYPE;
88 l_n_rpt_fmly_id igs_ps_rpt_fmly.rpt_fmly_id%TYPE;
89 l_n_unit_type_id igs_ps_unit_type_lvl.unit_type_id%TYPE;
90 l_c_cal_type_enrol_load_cal igs_ps_unit_ver_all.cal_type_enrol_load_cal%TYPE;
91 l_n_seq_num_enrol_load_cal igs_ps_unit_ver_all.sequence_num_enrol_load_cal%TYPE;
92 l_c_cal_type_offer_load_cal igs_ps_unit_ver_all.cal_type_offer_load_cal%TYPE;
93 l_n_seq_num_offer_load_cal igs_ps_unit_ver_all.sequence_num_offer_load_cal%TYPE;
94
95 PROCEDURE trim_values (p_unit_ver_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ver_rec_type) AS
96 BEGIN
97 p_unit_ver_rec.unit_cd := TRIM(p_unit_ver_rec.unit_cd);
98 p_unit_ver_rec.version_number := TRIM(p_unit_ver_rec.version_number);
99 p_unit_ver_rec.start_dt := TRUNC(p_unit_ver_rec.start_dt);
100 p_unit_ver_rec.review_dt := TRUNC(p_unit_ver_rec.review_dt);
101 p_unit_ver_rec.expiry_dt := TRUNC(p_unit_ver_rec.expiry_dt);
102 p_unit_ver_rec.end_dt := TRUNC(p_unit_ver_rec.end_dt);
103 p_unit_ver_rec.unit_status := TRIM(p_unit_ver_rec.unit_status);
104 p_unit_ver_rec.title := TRIM(p_unit_ver_rec.title);
105 p_unit_ver_rec.short_title := TRIM(p_unit_ver_rec.short_title);
106 p_unit_ver_rec.title_override_ind := TRIM(p_unit_ver_rec.title_override_ind);
107 p_unit_ver_rec.abbreviation := TRIM(p_unit_ver_rec.abbreviation);
108 p_unit_ver_rec.unit_level := TRIM(p_unit_ver_rec.unit_level);
109 p_unit_ver_rec.credit_point_descriptor := TRIM(p_unit_ver_rec.credit_point_descriptor);
110 p_unit_ver_rec.enrolled_credit_points := TRIM(p_unit_ver_rec.enrolled_credit_points);
111 p_unit_ver_rec.points_override_ind := TRIM(p_unit_ver_rec.points_override_ind);
112 p_unit_ver_rec.supp_exam_permitted_ind := TRIM(p_unit_ver_rec.supp_exam_permitted_ind);
113 p_unit_ver_rec.coord_person_number := TRIM(p_unit_ver_rec.coord_person_number);
114 p_unit_ver_rec.owner_org_unit_cd := TRIM(p_unit_ver_rec.owner_org_unit_cd);
115 p_unit_ver_rec.award_course_only_ind := TRIM(p_unit_ver_rec.award_course_only_ind);
116 p_unit_ver_rec.research_unit_ind := TRIM(p_unit_ver_rec.research_unit_ind);
117 p_unit_ver_rec.industrial_ind := TRIM(p_unit_ver_rec.industrial_ind);
118 p_unit_ver_rec.practical_ind := TRIM(p_unit_ver_rec.practical_ind);
119 p_unit_ver_rec.repeatable_ind := TRIM(p_unit_ver_rec.repeatable_ind);
120 p_unit_ver_rec.assessable_ind := TRIM(p_unit_ver_rec.assessable_ind);
121 p_unit_ver_rec.achievable_credit_points := TRIM(p_unit_ver_rec.achievable_credit_points);
122 p_unit_ver_rec.points_increment := TRIM(p_unit_ver_rec.points_increment);
123 p_unit_ver_rec.points_min := TRIM(p_unit_ver_rec.points_min);
124 p_unit_ver_rec.points_max := TRIM(p_unit_ver_rec.points_max);
125 p_unit_ver_rec.unit_int_course_level_cd := TRIM(p_unit_ver_rec.unit_int_course_level_cd);
126 p_unit_ver_rec.subtitle_modifiable_flag := TRIM(p_unit_ver_rec.subtitle_modifiable_flag);
127 p_unit_ver_rec.approval_date := TRUNC(p_unit_ver_rec.approval_date);
128 p_unit_ver_rec.lecture_credit_points := TRIM(p_unit_ver_rec.lecture_credit_points);
129 p_unit_ver_rec.lab_credit_points := TRIM(p_unit_ver_rec.lab_credit_points);
130 p_unit_ver_rec.other_credit_points := TRIM(p_unit_ver_rec.other_credit_points);
131 p_unit_ver_rec.clock_hours := TRIM(p_unit_ver_rec.clock_hours);
132 p_unit_ver_rec.work_load_cp_lecture := TRIM(p_unit_ver_rec.work_load_cp_lecture);
133 p_unit_ver_rec.work_load_cp_lab := TRIM(p_unit_ver_rec.work_load_cp_lab);
134 p_unit_ver_rec.continuing_education_units := TRIM(p_unit_ver_rec.continuing_education_units);
135 p_unit_ver_rec.enrollment_expected := TRIM(p_unit_ver_rec.enrollment_expected);
136 p_unit_ver_rec.enrollment_minimum := TRIM(p_unit_ver_rec.enrollment_minimum);
137 p_unit_ver_rec.enrollment_maximum := TRIM(p_unit_ver_rec.enrollment_maximum);
138 p_unit_ver_rec.advance_maximum := TRIM(p_unit_ver_rec.advance_maximum);
139 p_unit_ver_rec.state_financial_aid := TRIM(p_unit_ver_rec.state_financial_aid);
140 p_unit_ver_rec.federal_financial_aid := TRIM(p_unit_ver_rec.federal_financial_aid);
141 p_unit_ver_rec.institutional_financial_aid := TRIM(p_unit_ver_rec.institutional_financial_aid);
142 p_unit_ver_rec.same_teaching_period := TRIM(p_unit_ver_rec.same_teaching_period);
143 p_unit_ver_rec.max_repeats_for_credit := TRIM(p_unit_ver_rec.max_repeats_for_credit);
144 p_unit_ver_rec.max_repeats_for_funding := TRIM(p_unit_ver_rec.max_repeats_for_funding);
145 p_unit_ver_rec.max_repeat_credit_points := TRIM(p_unit_ver_rec.max_repeat_credit_points);
146 p_unit_ver_rec.same_teach_period_repeats := TRIM(p_unit_ver_rec.same_teach_period_repeats);
147 p_unit_ver_rec.same_teach_period_repeats_cp := TRIM(p_unit_ver_rec.same_teach_period_repeats_cp);
148 p_unit_ver_rec.attribute_category := TRIM(p_unit_ver_rec.attribute_category);
149 p_unit_ver_rec.attribute1 := TRIM(p_unit_ver_rec.attribute1);
150 p_unit_ver_rec.attribute2 := TRIM(p_unit_ver_rec.attribute2);
151 p_unit_ver_rec.attribute3 := TRIM(p_unit_ver_rec.attribute3);
152 p_unit_ver_rec.attribute4 := TRIM(p_unit_ver_rec.attribute4);
153 p_unit_ver_rec.attribute5 := TRIM(p_unit_ver_rec.attribute5);
154 p_unit_ver_rec.attribute6 := TRIM(p_unit_ver_rec.attribute6);
155 p_unit_ver_rec.attribute7 := TRIM(p_unit_ver_rec.attribute7);
156 p_unit_ver_rec.attribute8 := TRIM(p_unit_ver_rec.attribute8);
157 p_unit_ver_rec.attribute9 := TRIM(p_unit_ver_rec.attribute9);
158 p_unit_ver_rec.attribute10 := TRIM(p_unit_ver_rec.attribute10);
159 p_unit_ver_rec.attribute11 := TRIM(p_unit_ver_rec.attribute11);
160 p_unit_ver_rec.attribute12 := TRIM(p_unit_ver_rec.attribute12);
161 p_unit_ver_rec.attribute13 := TRIM(p_unit_ver_rec.attribute13);
162 p_unit_ver_rec.attribute14 := TRIM(p_unit_ver_rec.attribute14);
163 p_unit_ver_rec.attribute15 := TRIM(p_unit_ver_rec.attribute15);
164 p_unit_ver_rec.attribute16 := TRIM(p_unit_ver_rec.attribute16);
165 p_unit_ver_rec.attribute17 := TRIM(p_unit_ver_rec.attribute17);
166 p_unit_ver_rec.attribute18 := TRIM(p_unit_ver_rec.attribute18);
167 p_unit_ver_rec.attribute19 := TRIM(p_unit_ver_rec.attribute19);
168 p_unit_ver_rec.attribute20 := TRIM(p_unit_ver_rec.attribute20);
169 p_unit_ver_rec.ivr_enrol_ind := TRIM(p_unit_ver_rec.ivr_enrol_ind);
170 p_unit_ver_rec.ss_enrol_ind := TRIM(p_unit_ver_rec.ss_enrol_ind);
171 p_unit_ver_rec.work_load_other := TRIM(p_unit_ver_rec.work_load_other);
172 p_unit_ver_rec.contact_hrs_lecture := TRIM(p_unit_ver_rec.contact_hrs_lecture);
173 p_unit_ver_rec.contact_hrs_lab := TRIM(p_unit_ver_rec.contact_hrs_lab);
174 p_unit_ver_rec.contact_hrs_other := TRIM(p_unit_ver_rec.contact_hrs_other);
175 p_unit_ver_rec.non_schd_required_hrs := TRIM(p_unit_ver_rec.non_schd_required_hrs);
176 p_unit_ver_rec.exclude_from_max_cp_limit := TRIM(p_unit_ver_rec.exclude_from_max_cp_limit);
177 p_unit_ver_rec.record_exclusion_flag := TRIM(p_unit_ver_rec.record_exclusion_flag);
178 p_unit_ver_rec.ss_display_ind := TRIM(p_unit_ver_rec.ss_display_ind);
179 p_unit_ver_rec.enrol_load_alt_cd := TRIM(p_unit_ver_rec.enrol_load_alt_cd);
180 p_unit_ver_rec.offer_load_alt_cd := TRIM(p_unit_ver_rec.offer_load_alt_cd);
181 p_unit_ver_rec.override_enrollment_max := TRIM(p_unit_ver_rec.override_enrollment_max);
182 p_unit_ver_rec.repeat_code := TRIM(p_unit_ver_rec.repeat_code);
183 p_unit_ver_rec.level_code := TRIM(p_unit_ver_rec.level_code);
184 p_unit_ver_rec.special_permission_ind := TRIM(p_unit_ver_rec.special_permission_ind);
185 p_unit_ver_rec.rev_account_cd := TRIM(p_unit_ver_rec.rev_account_cd);
186 p_unit_ver_rec.claimable_hours := TRIM(p_unit_ver_rec.claimable_hours);
187 p_unit_ver_rec.anon_unit_grading_ind := TRIM(p_unit_ver_rec.anon_unit_grading_ind);
188 p_unit_ver_rec.anon_assess_grading_ind := TRIM(p_unit_ver_rec.anon_assess_grading_ind);
189 p_unit_ver_rec.subtitle := TRIM(p_unit_ver_rec.subtitle);
190 p_unit_ver_rec.subtitle_approved_ind := TRIM(p_unit_ver_rec.subtitle_approved_ind);
191 p_unit_ver_rec.subtitle_closed_ind := TRIM(p_unit_ver_rec.subtitle_closed_ind);
192 p_unit_ver_rec.curriculum_id := TRIM(p_unit_ver_rec.curriculum_id);
193 p_unit_ver_rec.curriculum_description := TRIM(p_unit_ver_rec.curriculum_description);
194 p_unit_ver_rec.curriculum_closed_ind := TRIM(p_unit_ver_rec.curriculum_closed_ind);
195 p_unit_ver_rec.auditable_ind := TRIM(p_unit_ver_rec.auditable_ind);
196 p_unit_ver_rec.audit_permission_ind := TRIM(p_unit_ver_rec.audit_permission_ind);
197 p_unit_ver_rec.max_auditors_allowed := TRIM(p_unit_ver_rec.max_auditors_allowed);
198 p_unit_ver_rec.billing_credit_points := TRIM(p_unit_ver_rec.billing_credit_points);
199 p_unit_ver_rec.ovrd_wkld_val_flag := TRIM(p_unit_ver_rec.ovrd_wkld_val_flag);
200 p_unit_ver_rec.workload_val_code := TRIM(p_unit_ver_rec.workload_val_code);
201 p_unit_ver_rec.billing_hrs := TRIM(p_unit_ver_rec.billing_hrs);
202 END trim_values ;
203
204 PROCEDURE validate_parameters(p_unit_ver_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ver_rec_type) AS
205 /***********************************************************************************************
206
207 Created By: sarakshi
208 Date Created By: 11-Nov-2002
209 Purpose: This procedure validates the parameters for the unit version record passed.
210
211 Known limitations,enhancements,remarks:
212 Change History
213 Who When What
214 sarakshi 12-dec-2002 MAndatory check for level code is added as a part of bug#2702240
215 ***********************************************************************************************/
216
217 BEGIN
218 p_unit_ver_rec.status:='S';
219
220 --Validate all mandatory parameter,which are required for subprocess to continue
221
222 IF p_unit_ver_rec.unit_cd IS NULL THEN
223 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
224 p_unit_ver_rec.status:='E';
225 END IF;
226
227 IF p_unit_ver_rec.version_number IS NULL THEN
228 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
229 p_unit_ver_rec.status:='E';
230 END IF;
231
232 IF p_unit_ver_rec.start_dt IS NULL THEN
233 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_START_DATE','LEGACY_TOKENS',FALSE);
234 p_unit_ver_rec.status:='E';
235 END IF;
236
237 IF p_unit_ver_rec.unit_status IS NULL THEN
238 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_STATUS','LEGACY_TOKENS',FALSE);
239 p_unit_ver_rec.status:='E';
240 END IF;
241
242 IF p_unit_ver_rec.title IS NULL THEN
243 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TITLE','LEGACY_TOKENS',FALSE);
244 p_unit_ver_rec.status:='E';
245 END IF;
246
247 IF p_unit_ver_rec.short_title IS NULL THEN
248 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','SHORT_TITLE','LEGACY_TOKENS',FALSE);
249 p_unit_ver_rec.status:='E';
250 END IF;
251
252 IF p_unit_ver_rec.credit_point_descriptor IS NULL THEN
253 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','CREDIT_POINT_DESCRIPTOR','LEGACY_TOKENS',FALSE);
254 p_unit_ver_rec.status:='E';
255 END IF;
256
257 IF p_unit_ver_rec.enrolled_credit_points IS NULL THEN
258 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','ENROL_CREDIT_PTS','LEGACY_TOKENS',FALSE);
259 p_unit_ver_rec.status:='E';
260 END IF;
261
262 IF p_unit_ver_rec.unit_level IS NULL THEN
263 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_LEVEL','LEGACY_TOKENS',FALSE);
264 p_unit_ver_rec.status:='E';
265 END IF;
266
267 IF p_unit_ver_rec.coord_person_number IS NULL THEN
268 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','CORD_PERSON_NUM','LEGACY_TOKENS',FALSE);
269 p_unit_ver_rec.status:='E';
270 END IF;
271
272 IF p_unit_ver_rec.owner_org_unit_cd IS NULL THEN
273 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','OWNER_ORG_UNIT_CD','LEGACY_TOKENS',FALSE);
274 p_unit_ver_rec.status:='E';
275 END IF;
276
277 IF p_unit_ver_rec.curriculum_id IS NULL AND
278 p_unit_ver_rec.curriculum_description IS NOT NULL AND
279 FND_PROFILE.VALUE('IGS_PS_CURRICULUM_ID')= 'Y' THEN
280 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','CURRICULUM_ID','LEGACY_TOKENS',FALSE);
281 p_unit_ver_rec.status:='E';
282 END IF;
283
284 --This validation is added as a part of bug#2702240
285 IF p_unit_ver_rec.level_code IS NULL THEN
286 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','LEVEL_CODE','LEGACY_TOKENS',FALSE);
287 p_unit_ver_rec.status:='E';
288 END IF;
289
290 END validate_parameters;
291
292
293 PROCEDURE validate_derivations(p_unit_ver_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ver_rec_type) AS
294 /***********************************************************************************************
295
296 Created By: sarakshi
297 Date Created By: 11-Nov-2002
298 Purpose: This procedure derives the values of certain fields that are compatible to OSS.
299
300 Known limitations,enhancements,remarks:
301 Change History
302 Who When What
303 sarakshi 04-May-2004 Enh#3568858,Added validation related to ovrd_wkld_val_flag
304 vvutukur 10-Aug-2003 Enh#3045069.PSP Enh Build.Assigned initial value 'X' for repeatable_ind instead of 'N'.
305 sarakshi 11-Dec-2002 Bug#2702240,derived values for state_financail_aid,federal_financial_aid,
306 institutional_financial_aid,same_teaching_period,exclude_from_cp_limit,
307 record_exclusion_flag,ss_display_ind,special_permission_ind
308 smvk 26-Dec-2002 Bug # 2721495. Calling the procedure igs_ps_validate_lgcy_pkg.get_party_id
309 instead of function igs_ge_gen_003.get_person_id to derive the person id.
310 ***********************************************************************************************/
311 CURSOR c_unit_lvl(cp_level_code igs_ps_unit_type_lvl.level_code%TYPE) IS
312 SELECT unit_type_id
313 FROM igs_ps_unit_type_lvl
314 WHERE level_code=cp_level_code;
315
316 CURSOR c_repeat_code(cp_repeat_code igs_ps_rpt_fmly.repeat_code%TYPE) IS
317 SELECT rpt_fmly_id
318 FROM igs_ps_rpt_fmly
319 WHERE repeat_code=cp_repeat_code;
320
321 CURSOR c_curriculum_seq_num IS
322 SELECT igs_ps_unt_crclm_all_s.NEXTVAL
323 FROM DUAL;
324
325
326 l_d_start_date DATE;
327 l_d_end_date DATE;
328 l_b_ret_status VARCHAR2(100);
329 BEGIN
330 IF p_unit_ver_rec.title_override_ind IS NULL THEN
331 p_unit_ver_rec.title_override_ind :='N';
332 END IF;
333
334 IF p_unit_ver_rec.abbreviation IS NULL THEN
335 p_unit_ver_rec.abbreviation :=UPPER(SUBSTR(p_unit_ver_rec.title,1,20));
336 END IF;
337
338 IF p_unit_ver_rec.points_override_ind IS NULL THEN
339 p_unit_ver_rec.points_override_ind :='N';
340 END IF;
341
342 IF p_unit_ver_rec.supp_exam_permitted_ind IS NULL THEN
343 p_unit_ver_rec.supp_exam_permitted_ind :='N';
344 END IF;
345
346 IF p_unit_ver_rec.award_course_only_ind IS NULL THEN
347 p_unit_ver_rec.award_course_only_ind :='N';
348 END IF;
349
350 IF p_unit_ver_rec.research_unit_ind IS NULL THEN
351 p_unit_ver_rec.research_unit_ind :='N';
352 END IF;
353
354 IF p_unit_ver_rec.industrial_ind IS NULL THEN
355 p_unit_ver_rec.industrial_ind :='N';
356 END IF;
357
358 IF p_unit_ver_rec.practical_ind IS NULL THEN
359 p_unit_ver_rec.practical_ind :='N';
360 END IF;
361
362 IF p_unit_ver_rec.repeatable_ind IS NULL THEN
363 p_unit_ver_rec.repeatable_ind :='X';
364 END IF;
365
366 IF p_unit_ver_rec.assessable_ind IS NULL THEN
367 p_unit_ver_rec.assessable_ind :='N';
368 END IF;
369
370 IF p_unit_ver_rec.ivr_enrol_ind IS NULL THEN
371 p_unit_ver_rec.ivr_enrol_ind :='N';
372 END IF;
373
374 IF p_unit_ver_rec.ss_enrol_ind IS NULL THEN
375 p_unit_ver_rec.ss_enrol_ind :='N';
376 END IF;
377
378 IF p_unit_ver_rec.anon_unit_grading_ind IS NULL THEN
379 p_unit_ver_rec.anon_unit_grading_ind :='N';
380 END IF;
381
382 IF p_unit_ver_rec.anon_assess_grading_ind IS NULL THEN
383 p_unit_ver_rec.anon_assess_grading_ind :='N';
384 END IF;
385
386 IF p_unit_ver_rec.subtitle_approved_ind IS NULL THEN
387 p_unit_ver_rec.subtitle_approved_ind :='N';
388 END IF;
389
390 IF p_unit_ver_rec.subtitle_closed_ind IS NULL THEN
391 p_unit_ver_rec.subtitle_closed_ind :='N';
392 END IF;
393
394 IF p_unit_ver_rec.curriculum_closed_ind IS NULL THEN
395 p_unit_ver_rec.curriculum_closed_ind :='N';
396 END IF;
397
398 IF p_unit_ver_rec.auditable_ind IS NULL THEN
399 p_unit_ver_rec.auditable_ind :='N';
400 END IF;
401
402 IF p_unit_ver_rec.audit_permission_ind IS NULL THEN
403 p_unit_ver_rec.audit_permission_ind :='N';
404 END IF;
405
406
407
408 --Following defaulting are done as a part of bug#2702240
409
410 IF p_unit_ver_rec.state_financial_aid IS NULL THEN
411 p_unit_ver_rec.state_financial_aid :='N';
412 END IF;
413
414 IF p_unit_ver_rec.federal_financial_aid IS NULL THEN
415 p_unit_ver_rec.federal_financial_aid :='N';
416 END IF;
417
418 IF p_unit_ver_rec.institutional_financial_aid IS NULL THEN
419 p_unit_ver_rec.institutional_financial_aid :='N';
420 END IF;
421
422 IF p_unit_ver_rec.same_teaching_period IS NULL THEN
423 p_unit_ver_rec.same_teaching_period :='N';
424 END IF;
425
426 IF p_unit_ver_rec.exclude_from_max_cp_limit IS NULL THEN
427 p_unit_ver_rec.exclude_from_max_cp_limit :='N';
428 END IF;
429
430 IF p_unit_ver_rec.record_exclusion_flag IS NULL THEN
431 p_unit_ver_rec.record_exclusion_flag :='N';
432 END IF;
433
434 IF p_unit_ver_rec.ss_display_ind IS NULL THEN
435 p_unit_ver_rec.ss_display_ind :='N';
436 END IF;
437
438 IF p_unit_ver_rec.special_permission_ind IS NULL THEN
439 p_unit_ver_rec.special_permission_ind :='N';
440 END IF;
441
442 -------------------------------------------------------
443
444 IF p_unit_ver_rec.review_dt IS NULL THEN
445 p_unit_ver_rec.review_dt := p_unit_ver_rec.start_dt;
446 END IF;
447
448 OPEN c_unit_lvl(p_unit_ver_rec.level_code);
449 FETCH c_unit_lvl INTO l_n_unit_type_id;
450 CLOSE c_unit_lvl;
451
452 OPEN c_repeat_code(p_unit_ver_rec.repeat_code);
453 FETCH c_repeat_code INTO l_n_rpt_fmly_id;
454 CLOSE c_repeat_code;
455
456 igs_ps_validate_lgcy_pkg.get_party_id(p_unit_ver_rec.coord_person_number,l_n_coord_person_id);
457 IF l_n_coord_person_id IS NULL THEN
458 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','CORD_PERSON_NUM','LEGACY_TOKENS',FALSE);
459 p_unit_ver_rec.status:='E';
460 END IF;
461
462 --derive cal type and seq number for enrol load alternate code
463 IF p_unit_ver_rec.enrol_load_alt_cd IS NOT NULL THEN
464 igs_ge_gen_003.get_calendar_instance(p_unit_ver_rec.enrol_load_alt_cd,
465 NULL,
466 l_c_cal_type_enrol_load_cal,
467 l_n_seq_num_enrol_load_cal,
468 l_d_start_date,
469 l_d_end_date,
470 l_b_ret_status);
471 IF l_b_ret_status <> 'SINGLE' THEN
472 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','ENROL_ALT_CODE','LEGACY_TOKENS',FALSE);
473 p_unit_ver_rec.status:='E';
474 END IF;
475 END IF;
476
477 --derive cal type and seq number for offer load alternate code
478 IF p_unit_ver_rec.offer_load_alt_cd IS NOT NULL THEN
479 igs_ge_gen_003.get_calendar_instance(p_unit_ver_rec.offer_load_alt_cd,
480 NULL,
481 l_c_cal_type_offer_load_cal,
482 l_n_seq_num_offer_load_cal,
483 l_d_start_date,
484 l_d_end_date,
485 l_b_ret_status);
486 IF l_b_ret_status <> 'SINGLE' THEN
487 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','OFFER_ALT_CODE','LEGACY_TOKENS',FALSE);
488 p_unit_ver_rec.status:='E';
489 END IF;
490 END IF;
491
492 --Derive the owner org unit start date
493 IF NOT igs_re_val_rsup.get_org_unit_dtls(p_unit_ver_rec.owner_org_unit_cd,l_d_owner_ou_start_dt) THEN
494 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','OWNER_ORG_UNIT_CD','LEGACY_TOKENS',FALSE);
495 p_unit_ver_rec.status:='E';
496 END IF;
497
498
499 IF FND_PROFILE.VALUE('IGS_PS_CURRICULUM_ID')= 'N' AND
500 p_unit_ver_rec.curriculum_description IS NOT NULL THEN
501
502 OPEN c_curriculum_seq_num;
503 FETCH c_curriculum_seq_num INTO p_unit_ver_rec.curriculum_id;
504 CLOSE c_curriculum_seq_num;
505 END IF;
506
507 IF p_unit_ver_rec.subtitle IS NOT NULL THEN
508 p_unit_ver_rec.subtitle_modifiable_flag := 'Y';
509 ELSE
510 p_unit_ver_rec.subtitle_modifiable_flag :='N';
511 END IF;
512
513 IF p_unit_ver_rec.ovrd_wkld_val_flag IS NULL THEN
514 p_unit_ver_rec.ovrd_wkld_val_flag :='N';
515 END IF;
516
517
518 END validate_derivations;
519
520 PROCEDURE validate_db_cons(p_unit_ver_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ver_rec_type) AS
521 /***********************************************************************************************
522
523 Created By: sarakshi
524 Date Created By: 12-Nov-2002
525 Purpose: This procedure validates database constraints.
526
527 Known limitations,enhancements,remarks:
528
529 Change History
530
531 Who When What
532 sarakshi 15-May-2006 Bug#3064563, modified the format mask(clock_hours,continuing_education_units,work_load_cp_lecture,work_load_cp_lab,contact_hrs_lab) as specified in the bug.
533 sarakshi 04-May-2004 Enh#3568858,Added validation related to columns ovrd_wkld_val_flag, workload_val_code
534 sarakshi 07-Nov-2003 Enh#3116171, added logic related to the newly introduced field BILLING_CREDIT_POINTS, check_constraint
535 vvutukur 19-Aug-2003 Enh#3045069.PSP Enh Build. Incorporated review comments.
536 smvk 09-Jan-2003 Bug # 2702263, Checking the range of values for columns claimable_hours,lecture_credit_points,
537 lab_credit_points,other_credit_points,clock_hours,continuing_education_units,
538 advance_maximum,enrollment_expected,enrollment_minimum,enrollment_maximum,
539 override_enrollment_max,max_auditors_allowed,work_load_cp_lecture,work_load_cp_lab,
540 max_repeat_credit_points,same_teach_period_repeats_cp,work_load_other,contact_hrs_lecture,
541 contact_hrs_lab,contact_hrs_other,non_schd_required_hrs,max_repeats_for_credit,
542 max_repeats_for_funding and same_teach_period_repeats.
543 sarakshi 11-Dec-2002 Bug#2702240,checking values for state_financial_aid,federal_financial_aid,
544 institutional_financial_aid,same_teaching_period,exclude_from_cp_limit,
545 record_exclusion_flag,ss_display_ind,special_permission_ind,IVR_enrol_ind,
546 ss_enrol_ind,anon_unit_grading_ind,anon_assess_grading_ind,auditable_ind,
547 audit_permission_ind
548 smvk 20-Dec-2002 Removed the IGS_PS_UNIT_VER_PKG.check_constraints call of owner_org_unit_cd.
549 As owner org unit code can have value in mixed case. Bug 2487149.
550 ***********************************************************************************************/
551
552 CURSOR cur_credit_point_des(cp_credit_point_descriptor igs_lookup_values.lookup_code%TYPE) IS
553 SELECT 'X'
554 FROM igs_lookup_values
555 WHERE lookup_type='CREDIT_POINT_DSCR'
556 AND lookup_code=cp_credit_point_descriptor;
557 l_var VARCHAR2(1);
558
559 BEGIN
560 --Check for Pk validations
561 IF igs_ps_unit_ver_pkg.get_pk_for_validation(p_unit_ver_rec.unit_cd,
562 p_unit_ver_rec.version_number) THEN
563 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS','UNIT_VERSION','LEGACY_TOKENS',FALSE);
564 p_unit_ver_rec.status:='W';
565 RETURN;
566 END IF;
567
568 IF FND_PROFILE.VALUE('IGS_PS_CURRICULUM_ID')= 'Y' AND p_unit_ver_rec.curriculum_description IS NOT NULL THEN
569 IF igs_ps_unt_crclm_pkg.get_pk_for_validation(p_unit_ver_rec.curriculum_id) THEN
570 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS','CURRICULUM_ID','LEGACY_TOKENS',FALSE);
571 p_unit_ver_rec.status:='W';
572 RETURN;
573 END IF;
574 END IF;
575
576 --Check UK for validations
577 IF igs_ps_unit_subtitle_pkg.get_uk_for_validation(p_unit_ver_rec.unit_cd,
578 p_unit_ver_rec.version_number,
579 p_unit_ver_rec.subtitle) THEN
580 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS','SUBTITLE','LEGACY_TOKENS',FALSE);
581 p_unit_ver_rec.status:='W';
582 RETURN;
583 END IF;
584
585 --Check constraint
586 BEGIN
587 igs_ps_unit_ver_pkg.check_constraints('UNIT_CD',p_unit_ver_rec.unit_cd);
588 EXCEPTION
589 WHEN OTHERS THEN
590 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','UNIT_CD','LEGACY_TOKENS',TRUE);
591 p_unit_ver_rec.status :='E';
592 END;
593
594 BEGIN
595 igs_ps_unit_ver_pkg.check_constraints('ABBREVIATION',p_unit_ver_rec.abbreviation);
596 EXCEPTION
597 WHEN OTHERS THEN
598 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','ABBREVIATION','LEGACY_TOKENS',TRUE);
599 p_unit_ver_rec.status :='E';
600 END;
601
602 BEGIN
603 igs_ps_unit_ver_pkg.check_constraints('ASSESSABLE_IND',p_unit_ver_rec.assessable_ind);
604 EXCEPTION
605 WHEN OTHERS THEN
606 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','ASSESSABLE_IND','LEGACY_TOKENS',TRUE);
607 p_unit_ver_rec.status :='E';
608 END;
609
610 BEGIN
611 igs_ps_unit_ver_pkg.check_constraints('AWARD_COURSE_ONLY_IND',p_unit_ver_rec.award_course_only_ind);
612 EXCEPTION
613 WHEN OTHERS THEN
614 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','AWARD_COURSE_ONLY_IND','LEGACY_TOKENS',TRUE);
615 p_unit_ver_rec.status :='E';
616 END;
617
618 BEGIN
619 igs_ps_unit_ver_pkg.check_constraints('CREDIT_POINT_DESCRIPTOR',p_unit_ver_rec.credit_point_descriptor);
620 EXCEPTION
621 WHEN OTHERS THEN
622 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','CREDIT_POINT_DESCRIPTOR','LEGACY_TOKENS',TRUE);
623 p_unit_ver_rec.status :='E';
624 END;
625
626 BEGIN
627 igs_ps_unit_ver_pkg.check_constraints('INDUSTRIAL_IND',p_unit_ver_rec.industrial_ind);
628 EXCEPTION
629 WHEN OTHERS THEN
630 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','INDUSTRIAL_IND','LEGACY_TOKENS',TRUE);
631 p_unit_ver_rec.status :='E';
632 END;
633
634 BEGIN
635 igs_ps_unit_ver_pkg.check_constraints('POINTS_OVERRIDE_IND',p_unit_ver_rec.points_override_ind);
636 EXCEPTION
637 WHEN OTHERS THEN
638 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','POINTS_OVERRIDE_IND','LEGACY_TOKENS',TRUE);
639 p_unit_ver_rec.status :='E';
640 END;
641
642 BEGIN
643 igs_ps_unit_ver_pkg.check_constraints('PRACTICAL_IND',p_unit_ver_rec.practical_ind);
644 EXCEPTION
645 WHEN OTHERS THEN
646 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','PRACTICAL_IND','LEGACY_TOKENS',TRUE);
647 p_unit_ver_rec.status :='E';
648 END;
649
650 BEGIN
651 igs_ps_unit_ver_pkg.check_constraints('REPEATABLE_IND',p_unit_ver_rec.repeatable_ind);
652 EXCEPTION
653 WHEN OTHERS THEN
654 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','REPEATABLE_IND','LEGACY_TOKENS',TRUE);
655 p_unit_ver_rec.status :='E';
656 END;
657
658 BEGIN
659 igs_ps_unit_ver_pkg.check_constraints('RESEARCH_UNIT_IND',p_unit_ver_rec.research_unit_ind);
660 EXCEPTION
661 WHEN OTHERS THEN
662 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','RESEARCH_UNIT_IND','LEGACY_TOKENS',TRUE);
663 p_unit_ver_rec.status :='E';
664 END;
665
666 BEGIN
667 igs_ps_unit_ver_pkg.check_constraints('SUPP_EXAM_PERMITTED_IND',p_unit_ver_rec.supp_exam_permitted_ind);
668 EXCEPTION
669 WHEN OTHERS THEN
670 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','SUPP_EXAM_PERMITTED_IND','LEGACY_TOKENS',TRUE);
671 p_unit_ver_rec.status :='E';
672 END;
673
674 BEGIN
675 igs_ps_unit_ver_pkg.check_constraints('TITLE_OVERRIDE_IND',p_unit_ver_rec.title_override_ind);
676 EXCEPTION
677 WHEN OTHERS THEN
678 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','TITLE_OVERRIDE_IND','LEGACY_TOKENS',TRUE);
679 p_unit_ver_rec.status :='E';
680 END;
681
682 -----------------------------------Following checks are done as a part of bug#2702240---------------
683
684 BEGIN
685 igs_ps_unit_ver_pkg.check_constraints('STATE_FINANCIAL_AID',p_unit_ver_rec.state_financial_aid);
686 EXCEPTION
687 WHEN OTHERS THEN
688 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','STATE_FINANCIAL_AID','LEGACY_TOKENS',TRUE);
689 p_unit_ver_rec.status :='E';
690 END;
691
692 BEGIN
693 igs_ps_unit_ver_pkg.check_constraints('FEDERAL_FINANCIAL_AID',p_unit_ver_rec.federal_financial_aid);
694 EXCEPTION
695 WHEN OTHERS THEN
696 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','FEDERAL_FINANCIAL_AID','LEGACY_TOKENS',TRUE);
697 p_unit_ver_rec.status :='E';
698 END;
699
700 BEGIN
701 igs_ps_unit_ver_pkg.check_constraints('INSTITUTIONAL_FINANCIAL_AID',p_unit_ver_rec.institutional_financial_aid);
702 EXCEPTION
703 WHEN OTHERS THEN
704 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','INSTITUTIONAL_FINANCIAL_AID','LEGACY_TOKENS',TRUE);
705 p_unit_ver_rec.status :='E';
706 END;
707
708 BEGIN
709 igs_ps_unit_ver_pkg.check_constraints('SAME_TEACHING_PERIOD',p_unit_ver_rec.same_teaching_period);
710 EXCEPTION
711 WHEN OTHERS THEN
712 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','SAME_TEACHING_PERIOD','LEGACY_TOKENS',TRUE);
713 p_unit_ver_rec.status :='E';
714 END;
715
716 BEGIN
717 igs_ps_unit_ver_pkg.check_constraints('EXCLUDE_FROM_MAX_CP_LIMIT',p_unit_ver_rec.exclude_from_max_cp_limit);
718 EXCEPTION
719 WHEN OTHERS THEN
720 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','EXCLUDE_FROM_MAX_CP_LIMIT','LEGACY_TOKENS',TRUE);
721 p_unit_ver_rec.status :='E';
722 END;
723
724 BEGIN
725 igs_ps_unit_ver_pkg.check_constraints('RECORD_EXCLUSION_FLAG',p_unit_ver_rec.record_exclusion_flag);
726 EXCEPTION
727 WHEN OTHERS THEN
728 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','RECORD_EXCLUSION_FLAG','LEGACY_TOKENS',TRUE);
729 p_unit_ver_rec.status :='E';
730 END;
731
732 BEGIN
733 igs_ps_unit_ver_pkg.check_constraints('SS_DISPLAY_IND',p_unit_ver_rec.ss_display_ind);
734 EXCEPTION
735 WHEN OTHERS THEN
736 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','SS_DISPLAY_IND','LEGACY_TOKENS',TRUE);
737 p_unit_ver_rec.status :='E';
738 END;
739
740 BEGIN
741 igs_ps_unit_ver_pkg.check_constraints('SPECIAL_PERMISSION_IND',p_unit_ver_rec.special_permission_ind);
742 EXCEPTION
743 WHEN OTHERS THEN
744 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','SPECIAL_PERMISSION_IND','LEGACY_TOKENS',TRUE);
745 p_unit_ver_rec.status :='E';
746 END;
747
748 --should not call the TBH chcek constraint as some other validation are also there
749 IF p_unit_ver_rec.ivr_enrol_ind NOT IN ('Y','N') THEN
750 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','IVR_ENROL_IND','LEGACY_TOKENS',FALSE);
751 p_unit_ver_rec.status :='E';
752 END IF;
753
754 --should not call the TBH chcek constraint as some other validation are also there
755 IF p_unit_ver_rec.ss_enrol_ind NOT IN ('Y','N') THEN
756 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','SS_ENROL_IND','LEGACY_TOKENS',FALSE);
757 p_unit_ver_rec.status :='E';
758 END IF;
759
760 IF p_unit_ver_rec.subtitle_approved_ind NOT IN ('Y','N') THEN
761 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','SUBTITLE_APPROVED_IND','LEGACY_TOKENS',FALSE);
762 p_unit_ver_rec.status :='E';
763 END IF;
764
765 IF p_unit_ver_rec.subtitle_closed_ind NOT IN ('Y','N') THEN
766 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','SUBTITLE_CLOSED_IND','LEGACY_TOKENS',FALSE);
767 p_unit_ver_rec.status :='E';
768 END IF;
769
770 IF p_unit_ver_rec.curriculum_closed_ind NOT IN ('Y','N') THEN
771 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','CURRICULUM_CLOSED_IND','LEGACY_TOKENS',FALSE);
772 p_unit_ver_rec.status :='E';
773 END IF;
774
775
776 BEGIN
777 igs_ps_unit_ver_pkg.check_constraints('ANON_UNIT_GRADING_IND',p_unit_ver_rec.anon_unit_grading_ind);
778 EXCEPTION
779 WHEN OTHERS THEN
780 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','ANON_UNIT_GRADING_IND','LEGACY_TOKENS',TRUE);
781 p_unit_ver_rec.status :='E';
782 END;
783
784 BEGIN
785 igs_ps_unit_ver_pkg.check_constraints('ANON_ASSESS_GRADING_IND',p_unit_ver_rec.anon_assess_grading_ind);
786 EXCEPTION
787 WHEN OTHERS THEN
788 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','ANON_ASSESS_GRADING_IND','LEGACY_TOKENS',TRUE);
789 p_unit_ver_rec.status :='E';
790 END;
791
792 BEGIN
793 igs_ps_unit_ver_pkg.check_constraints('AUDITABLE_IND',p_unit_ver_rec.auditable_ind);
794 EXCEPTION
795 WHEN OTHERS THEN
796 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','AUDITABLE_IND','LEGACY_TOKENS',TRUE);
797 p_unit_ver_rec.status :='E';
798 END;
799
800 BEGIN
801 igs_ps_unit_ver_pkg.check_constraints('AUDIT_PERMISSION_IND',p_unit_ver_rec.audit_permission_ind);
802 EXCEPTION
803 WHEN OTHERS THEN
804 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','AUDIT_PERMISSION_IND','LEGACY_TOKENS',TRUE);
805 p_unit_ver_rec.status :='E';
806 END;
807 -----------------------------------------------------------------------------------------------------
808
809 BEGIN
810 igs_ps_unit_ver_pkg.check_constraints('UNIT_INT_COURSE_LEVEL_CD',p_unit_ver_rec.unit_int_course_level_cd);
811 EXCEPTION
812 WHEN OTHERS THEN
813 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','UNIT_INT_COURSE_LEVEL_CD','LEGACY_TOKENS',TRUE);
814 p_unit_ver_rec.status :='E';
815 END;
816
817 BEGIN
818 igs_ps_unit_ver_pkg.check_constraints('UNIT_STATUS',p_unit_ver_rec.unit_status);
819 EXCEPTION
820 WHEN OTHERS THEN
821 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','UNIT_STATUS','LEGACY_TOKENS',TRUE);
822 p_unit_ver_rec.status :='E';
823 END;
824
825 BEGIN
826 igs_ps_unit_ver_pkg.check_constraints('UNIT_LEVEL',p_unit_ver_rec.unit_level);
827 EXCEPTION
828 WHEN OTHERS THEN
829 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','UNIT_LEVEL','LEGACY_TOKENS',TRUE);
830 p_unit_ver_rec.status :='E';
831 END;
832
833 BEGIN
834 igs_ps_unit_ver_pkg.check_constraints('ACHIEVABLE_CREDIT_POINTS',p_unit_ver_rec.achievable_credit_points);
835 EXCEPTION
836 WHEN OTHERS THEN
837 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','ACHIEVABLE_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
838 p_unit_ver_rec.status :='E';
839 END;
840
841 BEGIN
842 igs_ps_unit_ver_pkg.check_constraints('POINTS_INCREMENT',p_unit_ver_rec.points_increment);
843 EXCEPTION
844 WHEN OTHERS THEN
845 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','POINTS_INCREMENT','LEGACY_TOKENS',TRUE);
846 p_unit_ver_rec.status :='E';
847 END;
848
849 BEGIN
850 igs_ps_unit_ver_pkg.check_constraints('POINTS_MIN',p_unit_ver_rec.points_min);
851 EXCEPTION
852 WHEN OTHERS THEN
853 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','POINTS_MIN','LEGACY_TOKENS',TRUE);
854 p_unit_ver_rec.status :='E';
855 END;
856
857 BEGIN
858 igs_ps_unit_ver_pkg.check_constraints('POINTS_MAX',p_unit_ver_rec.points_max);
859 EXCEPTION
860 WHEN OTHERS THEN
861 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','POINTS_MAX','LEGACY_TOKENS',TRUE);
862 p_unit_ver_rec.status :='E';
863 END;
864
865 BEGIN
866 igs_ps_unit_ver_pkg.check_constraints('ENROLLED_CREDIT_POINTS',p_unit_ver_rec.enrolled_credit_points);
867 EXCEPTION
868 WHEN OTHERS THEN
869 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','ENROLLED_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
870 p_unit_ver_rec.status :='E';
871 END;
872
873 BEGIN
874 igs_ps_unit_ver_pkg.check_constraints('VERSION_NUMBER',p_unit_ver_rec.version_number);
875 EXCEPTION
876 WHEN OTHERS THEN
877 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VER_NUM_1_999',NULL,NULL,TRUE);
878 p_unit_ver_rec.status :='E';
879 END;
880
881 IF p_unit_ver_rec.billing_credit_points IS NOT NULL THEN
882 BEGIN
883 igs_ps_unit_ver_pkg.check_constraints ( 'BILLING_CREDIT_POINTS', p_unit_ver_rec.billing_credit_points);
884 EXCEPTION
885 WHEN OTHERS THEN
886 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999', 'BILLING_CREDIT_POINTS', 'LEGACY_TOKENS', TRUE);
887 p_unit_ver_rec.status := 'E';
888 END;
889 END IF;
890
891
892 --Fk validations
893 IF (NOT igs_ps_unit_stat_pkg.get_pk_for_validation(p_unit_ver_rec.unit_status)) THEN
894 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_STATUS','LEGACY_TOKENS',FALSE);
895 p_unit_ver_rec.status:='E';
896 END IF;
897
898 IF l_n_rpt_fmly_id IS NOT NULL THEN
899 IF (NOT igs_ps_rpt_fmly_pkg.get_pk_for_validation(l_n_rpt_fmly_id)) THEN
900 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_REPEAT','LEGACY_TOKENS',FALSE);
901 p_unit_ver_rec.status:='E';
902 END IF;
903 END IF;
904
905 IF (NOT igs_ps_unit_level_pkg.get_pk_for_validation(p_unit_ver_rec.unit_level)) THEN
906 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_LEVEL','LEGACY_TOKENS',FALSE);
907 p_unit_ver_rec.status:='E';
908 END IF;
909
910 IF p_unit_ver_rec.unit_int_course_level_cd IS NOT NULL THEN
911 IF (NOT igs_ps_unit_int_lvl_pkg.get_pk_for_validation(p_unit_ver_rec.unit_int_course_level_cd)) THEN
912 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_INT_COURSE_LEVEL_CD','LEGACY_TOKENS',FALSE);
913 p_unit_ver_rec.status:='E';
914 END IF;
915 END IF;
916
917 IF p_unit_ver_rec.rev_account_cd IS NOT NULL THEN
918 IF (NOT igs_fi_acc_pkg.get_pk_for_validation(p_unit_ver_rec.rev_account_cd)) THEN
919 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','REV_ACC_CD','LEGACY_TOKENS',FALSE);
920 p_unit_ver_rec.status:='E';
921 END IF;
922 END IF;
923
924 --Validating the credit point descriptor, bug#2702240
925 OPEN cur_credit_point_des(p_unit_ver_rec.credit_point_descriptor);
926 FETCH cur_credit_point_des INTO l_var;
927 IF cur_credit_point_des%NOTFOUND THEN
928 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','CREDIT_POINT_DESCRIPTOR','LEGACY_TOKENS',FALSE);
929 p_unit_ver_rec.status:='E';
930 END IF;
931
932 --validating the level_code passed is a valid one
933 IF l_n_unit_type_id IS NULL THEN
934 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','LEVEL_CODE','LEGACY_TOKENS',FALSE);
935 p_unit_ver_rec.status:='E';
936 END IF;
937
938 -- Added as a part of 2702263
939 IF p_unit_ver_rec.claimable_hours IS NOT NULL THEN
940 BEGIN
941 igs_ps_unit_ver_pkg.check_constraints('CLAIMABLE_HOURS',p_unit_ver_rec.claimable_hours);
942 EXCEPTION
943 WHEN OTHERS THEN
944 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','CLAIMABLE_HOURS','LEGACY_TOKENS',TRUE);
945 p_unit_ver_rec.status :='E';
946 END;
947 END IF;
948
949 IF p_unit_ver_rec.lecture_credit_points IS NOT NULL THEN
950 BEGIN
951 igs_ps_unit_ver_pkg.check_constraints('LECTURE_CREDIT_POINTS',p_unit_ver_rec.lecture_credit_points);
952 EXCEPTION
953 WHEN OTHERS THEN
954 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','LECTURE_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
955 p_unit_ver_rec.status :='E';
956 END;
957 END IF;
958
959 IF p_unit_ver_rec.lab_credit_points IS NOT NULL THEN
960 BEGIN
961 igs_ps_unit_ver_pkg.check_constraints('LAB_CREDIT_POINTS',p_unit_ver_rec.lab_credit_points);
962 EXCEPTION
963 WHEN OTHERS THEN
964 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','LAB_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
965 p_unit_ver_rec.status :='E';
966 END;
967 END IF;
968
969 IF p_unit_ver_rec.other_credit_points IS NOT NULL THEN
970 BEGIN
971 igs_ps_unit_ver_pkg.check_constraints('OTHER_CREDIT_POINTS',p_unit_ver_rec.other_credit_points);
972 EXCEPTION
973 WHEN OTHERS THEN
974 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','OTHER_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
975 p_unit_ver_rec.status :='E';
976 END;
977 END IF;
978
979 IF p_unit_ver_rec.clock_hours IS NOT NULL THEN
980 BEGIN
981 igs_ps_unit_ver_pkg.check_constraints('CLOCK_HOURS',p_unit_ver_rec.clock_hours);
982 EXCEPTION
983 WHEN OTHERS THEN
984 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','CLOCK_HOURS','LEGACY_TOKENS',TRUE);
985 p_unit_ver_rec.status :='E';
986 END;
987 END IF;
988
989 IF p_unit_ver_rec.continuing_education_units IS NOT NULL THEN
990 BEGIN
991 igs_ps_unit_ver_pkg.check_constraints('CONTINUING_EDUCATION_UNITS',p_unit_ver_rec.continuing_education_units);
992 EXCEPTION
993 WHEN OTHERS THEN
994 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','CONTINUING_EDUCATION_UNITS','LEGACY_TOKENS',TRUE);
995 p_unit_ver_rec.status :='E';
996 END;
997 END IF;
998
999 IF p_unit_ver_rec.advance_maximum IS NOT NULL THEN
1000 BEGIN
1001 igs_ps_unit_ver_pkg.check_constraints('ADVANCE_MAXIMUM',p_unit_ver_rec.advance_maximum);
1002 EXCEPTION
1003 WHEN OTHERS THEN
1004 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','ADVANCE_MAXIMUM','LEGACY_TOKENS',TRUE);
1005 p_unit_ver_rec.status :='E';
1006 END;
1007 END IF;
1008
1009 IF p_unit_ver_rec.enrollment_expected IS NOT NULL THEN
1010 BEGIN
1011 igs_ps_unit_ver_pkg.check_constraints('ENROLLMENT_EXPECTED',p_unit_ver_rec.enrollment_expected);
1012 EXCEPTION
1013 WHEN OTHERS THEN
1014 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','ENROLLMENT_EXPECTED','LEGACY_TOKENS',TRUE);
1015 p_unit_ver_rec.status :='E';
1016 END;
1017 END IF;
1018
1019 IF p_unit_ver_rec.enrollment_minimum IS NOT NULL THEN
1020 BEGIN
1021 igs_ps_unit_ver_pkg.check_constraints('ENROLLMENT_MINIMUM',p_unit_ver_rec.enrollment_minimum);
1022 EXCEPTION
1023 WHEN OTHERS THEN
1024 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','ENROLLMENT_MINIMUM','LEGACY_TOKENS',TRUE);
1025 p_unit_ver_rec.status :='E';
1026 END;
1027 END IF;
1028
1029 IF p_unit_ver_rec.enrollment_maximum IS NOT NULL THEN
1030 BEGIN
1031 igs_ps_unit_ver_pkg.check_constraints('ENROLLMENT_MAXIMUM',p_unit_ver_rec.enrollment_maximum);
1032 EXCEPTION
1033 WHEN OTHERS THEN
1034 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','ENROLLMENT_MAXIMUM','LEGACY_TOKENS',TRUE);
1035 p_unit_ver_rec.status :='E';
1036 END;
1037 END IF;
1038
1039 IF p_unit_ver_rec.override_enrollment_max IS NOT NULL THEN
1040 BEGIN
1041 igs_ps_unit_ver_pkg.check_constraints('OVERRIDE_ENROLLMENT_MAX',p_unit_ver_rec.override_enrollment_max);
1042 EXCEPTION
1043 WHEN OTHERS THEN
1044 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','OVERRIDE_ENROLLMENT_MAX','LEGACY_TOKENS',TRUE);
1045 p_unit_ver_rec.status :='E';
1046 END;
1047 END IF;
1048
1049 IF p_unit_ver_rec.max_auditors_allowed IS NOT NULL THEN
1050 BEGIN
1051 igs_ps_unit_ver_pkg.check_constraints('MAX_AUDITORS_ALLOWED',p_unit_ver_rec.max_auditors_allowed);
1052 EXCEPTION
1053 WHEN OTHERS THEN
1054 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999','MAX_AUDITORS_ALLOWED','LEGACY_TOKENS',TRUE);
1055 p_unit_ver_rec.status :='E';
1056 END;
1057 END IF;
1058
1059 IF p_unit_ver_rec.work_load_cp_lecture IS NOT NULL THEN
1060 BEGIN
1061 igs_ps_unit_ver_pkg.check_constraints('WORK_LOAD_CP_LECTURE',p_unit_ver_rec.work_load_cp_lecture);
1062 EXCEPTION
1063 WHEN OTHERS THEN
1064 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','WORK_LOAD_CP_LECTURE','LEGACY_TOKENS',TRUE);
1065 p_unit_ver_rec.status :='E';
1066 END;
1067 END IF;
1068
1069
1070 IF p_unit_ver_rec.work_load_cp_lab IS NOT NULL THEN
1071 BEGIN
1072 igs_ps_unit_ver_pkg.check_constraints('WORK_LOAD_CP_LAB',p_unit_ver_rec.work_load_cp_lab);
1073 EXCEPTION
1074 WHEN OTHERS THEN
1075 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','WORK_LOAD_CP_LAB','LEGACY_TOKENS',TRUE);
1076 p_unit_ver_rec.status :='E';
1077 END;
1078 END IF;
1079
1080 IF p_unit_ver_rec.max_repeat_credit_points IS NOT NULL THEN
1081 BEGIN
1082 igs_ps_unit_ver_pkg.check_constraints('MAX_REPEAT_CREDIT_POINTS',p_unit_ver_rec.max_repeat_credit_points);
1083 EXCEPTION
1084 WHEN OTHERS THEN
1085 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','MAX_REPEAT_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
1086 p_unit_ver_rec.status :='E';
1087 END;
1088 END IF;
1089
1090 IF p_unit_ver_rec.same_teach_period_repeats_cp IS NOT NULL THEN
1091 BEGIN
1092 igs_ps_unit_ver_pkg.check_constraints('SAME_TEACH_PERIOD_REPEATS_CP',p_unit_ver_rec.same_teach_period_repeats_cp);
1093 EXCEPTION
1094 WHEN OTHERS THEN
1095 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','SAME_TEACH_PERIOD_REPEATS_CP','LEGACY_TOKENS',TRUE);
1096 p_unit_ver_rec.status :='E';
1097 END;
1098 END IF;
1099
1100 IF p_unit_ver_rec.work_load_other IS NOT NULL THEN
1101 BEGIN
1102 igs_ps_unit_ver_pkg.check_constraints('WORK_LOAD_OTHER',p_unit_ver_rec.work_load_other);
1103 EXCEPTION
1104 WHEN OTHERS THEN
1105 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','WORK_LOAD_OTHER','LEGACY_TOKENS',TRUE);
1106 p_unit_ver_rec.status :='E';
1107 END;
1108 END IF;
1109
1110 IF p_unit_ver_rec.contact_hrs_lecture IS NOT NULL THEN
1111 BEGIN
1112 igs_ps_unit_ver_pkg.check_constraints('CONTACT_HRS_LECTURE',p_unit_ver_rec.contact_hrs_lecture);
1113 EXCEPTION
1114 WHEN OTHERS THEN
1115 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','CONTACT_HRS_LECTURE','LEGACY_TOKENS',TRUE);
1116 p_unit_ver_rec.status :='E';
1117 END;
1118 END IF;
1119
1120 IF p_unit_ver_rec.contact_hrs_lab IS NOT NULL THEN
1121 BEGIN
1122 igs_ps_unit_ver_pkg.check_constraints('CONTACT_HRS_LAB',p_unit_ver_rec.contact_hrs_lab);
1123 EXCEPTION
1124 WHEN OTHERS THEN
1125 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','CONTACT_HRS_LAB','LEGACY_TOKENS',TRUE);
1126 p_unit_ver_rec.status :='E';
1127 END;
1128 END IF;
1129
1130 IF p_unit_ver_rec.contact_hrs_other IS NOT NULL THEN
1131 BEGIN
1132 igs_ps_unit_ver_pkg.check_constraints('CONTACT_HRS_OTHER',p_unit_ver_rec.contact_hrs_other);
1133 EXCEPTION
1134 WHEN OTHERS THEN
1135 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','CONTACT_HRS_OTHER','LEGACY_TOKENS',TRUE);
1136 p_unit_ver_rec.status :='E';
1137 END;
1138 END IF;
1139
1140 IF p_unit_ver_rec.non_schd_required_hrs IS NOT NULL THEN
1141 BEGIN
1142 igs_ps_unit_ver_pkg.check_constraints('NON_SCHD_REQUIRED_HRS',p_unit_ver_rec.non_schd_required_hrs);
1143 EXCEPTION
1144 WHEN OTHERS THEN
1145 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','NON_SCHD_REQUIRED_HRS','LEGACY_TOKENS',TRUE);
1146 p_unit_ver_rec.status :='E';
1147 END;
1148 END IF;
1149
1150 IF p_unit_ver_rec.max_repeats_for_credit IS NOT NULL THEN
1151 BEGIN
1152 igs_ps_unit_ver_pkg.check_constraints('MAX_REPEATS_FOR_CREDIT',p_unit_ver_rec.max_repeats_for_credit);
1153 EXCEPTION
1154 WHEN OTHERS THEN
1155 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999','MAX_REPEATS_FOR_CREDIT','LEGACY_TOKENS',TRUE);
1156 p_unit_ver_rec.status :='E';
1157 END;
1158 END IF;
1159
1160 IF p_unit_ver_rec.max_repeats_for_funding IS NOT NULL THEN
1161 BEGIN
1162 igs_ps_unit_ver_pkg.check_constraints('MAX_REPEATS_FOR_FUNDING',p_unit_ver_rec.max_repeats_for_funding);
1163 EXCEPTION
1164 WHEN OTHERS THEN
1165 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999','MAX_REPEATS_FOR_FUNDING','LEGACY_TOKENS',TRUE);
1166 p_unit_ver_rec.status :='E';
1167 END;
1168 END IF;
1169
1170 IF p_unit_ver_rec.same_teach_period_repeats IS NOT NULL THEN
1171 BEGIN
1172 igs_ps_unit_ver_pkg.check_constraints('SAME_TEACH_PERIOD_REPEATS',p_unit_ver_rec.same_teach_period_repeats);
1173 EXCEPTION
1174 WHEN OTHERS THEN
1175 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999','SAME_TEACH_PERIOD_REPEATS','LEGACY_TOKENS',TRUE);
1176 p_unit_ver_rec.status :='E';
1177 END;
1178 END IF;
1179
1180
1181 BEGIN
1182 igs_ps_unit_ver_pkg.check_constraints('OVRD_WKLD_VAL_FLAG',p_unit_ver_rec.ovrd_wkld_val_flag);
1183 EXCEPTION
1184 WHEN OTHERS THEN
1185 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','OVRD_WKLD_VAL_FLAG','LEGACY_TOKENS',TRUE);
1186 p_unit_ver_rec.status :='E';
1187 END;
1188
1189 IF p_unit_ver_rec.workload_val_code IS NOT NULL THEN
1190 IF NOT igs_lookups_view_pkg.get_pk_for_validation('WKLD_VAL_TYPE',p_unit_ver_rec.workload_val_code) THEN
1191 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'WKLD_VAL_TYPE','LEGACY_TOKENS', FALSE);
1192 p_unit_ver_rec.status := 'E';
1193 END IF;
1194 END IF;
1195
1196 IF p_unit_ver_rec.billing_hrs IS NOT NULL THEN
1197 BEGIN
1198 igs_ps_unit_ver_pkg.check_constraints('BILLING_HRS',p_unit_ver_rec.billing_hrs);
1199 EXCEPTION
1200 WHEN OTHERS THEN
1201 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','BILLING_HRS','LEGACY_TOKENS',TRUE);
1202 p_unit_ver_rec.status :='E';
1203 END;
1204 END IF;
1205
1206
1207 END validate_db_cons;
1208
1209 BEGIN
1210
1211 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1212 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.start_logging_for','Unit Versions');
1213 END IF;
1214
1215 p_rec_status :='S';
1216 p_unit_ver_rec.msg_from := FND_MSG_PUB.COUNT_MSG;
1217 trim_values(p_unit_ver_rec);
1218 validate_parameters(p_unit_ver_rec);
1219
1220 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1221 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.status_after_validate_parameters',
1222 'Unit code:'||p_unit_ver_rec.unit_cd||' '||'Version number:'||p_unit_ver_rec.version_number||' '||
1223 'Status:'||p_unit_ver_rec.status);
1224 END IF;
1225
1226 IF p_unit_ver_rec.status = 'S' THEN
1227 validate_derivations(p_unit_ver_rec);
1228
1229 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1230 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.status_after_validate_derivations',
1231 'Unit code:'||p_unit_ver_rec.unit_cd||' '||'Version number:'||p_unit_ver_rec.version_number||' '||
1232 'Status:'||p_unit_ver_rec.status);
1233 END IF;
1234
1235 END IF;
1236
1237 IF p_unit_ver_rec.status = 'S' THEN
1238 validate_db_cons(p_unit_ver_rec);
1239
1240 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1241 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.status_after_validate_db_cons',
1242 'Unit code:'||p_unit_ver_rec.unit_cd||' '||'Version number:'||p_unit_ver_rec.version_number||' '||
1243 'Status:'||p_unit_ver_rec.status);
1244 END IF;
1245
1246 END IF;
1247
1248 IF p_unit_ver_rec.status = 'S' THEN
1249 igs_ps_validate_lgcy_pkg.unit_version(p_unit_ver_rec,l_n_coord_person_id);
1250
1251 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1252 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.status_after_Business_validation',
1253 'Unit code:'||p_unit_ver_rec.unit_cd||' '||'Version number:'||p_unit_ver_rec.version_number||' '||
1254 'Status:'||p_unit_ver_rec.status);
1255 END IF;
1256
1257 END IF;
1258
1259 IF p_unit_ver_rec.status ='S' THEN
1260
1261 --If for this unit entry is not there in igs_ps_unit then insert it
1262 OPEN cur_check(p_unit_ver_rec.unit_cd);
1263 FETCH cur_check INTO l_c_var;
1264 IF cur_check%NOTFOUND THEN
1265 INSERT INTO igs_ps_unit
1266 (
1267 unit_cd,
1268 creation_date,
1269 created_by,
1270 last_update_date,
1271 last_updated_by,
1272 last_update_login
1273 )
1274 VALUES
1275 (
1276 p_unit_ver_rec.unit_cd,
1277 SYSDATE,
1278 g_n_user_id,
1279 SYSDATE,
1280 g_n_user_id,
1281 g_n_login_id
1282 );
1283
1284 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1285 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.Record_created_igs_ps_unit',
1286 'Unit code:'||p_unit_ver_rec.unit_cd);
1287 END IF;
1288 END IF;
1289
1290 CLOSE cur_check;
1291
1292 --If subtitle is not null then insert a record into igs_ps_unit_subtitle
1293 IF p_unit_ver_rec.subtitle IS NOT NULL THEN
1294 INSERT INTO igs_ps_unit_subtitle
1295 (
1296 subtitle_id,
1297 unit_cd,
1298 version_number,
1299 subtitle,
1300 approved_ind,
1301 closed_ind,
1302 creation_date,
1303 created_by,
1304 last_update_date,
1305 last_updated_by,
1306 last_update_login
1307 )
1308 VALUES
1309 (
1310 igs_ps_unit_subtitle_s.NEXTVAL,
1311 p_unit_ver_rec.unit_cd,
1312 p_unit_ver_rec.version_number,
1313 p_unit_ver_rec.subtitle,
1314 p_unit_ver_rec.subtitle_approved_ind,
1315 p_unit_ver_rec.subtitle_closed_ind,
1316 SYSDATE,
1317 g_n_user_id,
1318 SYSDATE,
1319 g_n_user_id,
1320 g_n_login_id
1321 ) RETURNING subtitle_id INTO l_n_subtitle_id;
1322
1323 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1324 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.rec_inserted_igs_ps_unit_subtitle',
1325 'Unit code:'||p_unit_ver_rec.unit_cd||' '||'Version number:'||p_unit_ver_rec.version_number||' '||
1326 'Subtitle_id:'||l_n_subtitle_id||' '||'Status:'||p_unit_ver_rec.status);
1327 END IF;
1328
1329 END IF;
1330
1331
1332 --If curriculum description is not null then insert a record into igs_ps_unt_crclm_all
1333 IF p_unit_ver_rec.curriculum_description IS NOT NULL THEN
1334 INSERT INTO igs_ps_unt_crclm_all
1335 (
1336 curriculum_id,
1337 description,
1338 closed_ind,
1339 org_id,
1340 creation_date,
1341 created_by,
1342 last_update_date,
1343 last_updated_by,
1344 last_update_login
1345 )
1346 VALUES
1347 (
1348 p_unit_ver_rec.curriculum_id,
1349 p_unit_ver_rec.curriculum_description,
1350 p_unit_ver_rec.curriculum_closed_ind,
1351 igs_ge_gen_003.get_org_id,
1352 SYSDATE,
1353 g_n_user_id,
1354 SYSDATE,
1355 g_n_user_id,
1356 g_n_login_id
1357 );
1358
1359 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1360 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.rec_inserted_igs_ps_unt_crclm_all',
1361 'Unit code:'||p_unit_ver_rec.unit_cd||' '||'Version number:'||p_unit_ver_rec.version_number||' '||
1362 'curriculum_id:'||p_unit_ver_rec.curriculum_id||' '||'Status:'||p_unit_ver_rec.status);
1363 END IF;
1364 END IF;
1365
1366 --Enter the unit version record in igs_ps_unit_ver_all
1367 INSERT INTO igs_ps_unit_ver_all
1368 (
1369 unit_cd,
1370 version_number,
1371 start_dt,
1372 review_dt,
1373 expiry_dt,
1374 end_dt,
1375 unit_status,
1376 title,
1377 short_title,
1378 title_override_ind,
1379 abbreviation,
1380 unit_level,
1381 credit_point_descriptor,
1382 enrolled_credit_points,
1383 points_override_ind,
1384 supp_exam_permitted_ind,
1385 coord_person_id,
1386 owner_org_unit_cd,
1387 owner_ou_start_dt,
1388 award_course_only_ind,
1389 research_unit_ind,
1390 industrial_ind,
1391 practical_ind,
1392 repeatable_ind,
1393 assessable_ind,
1394 achievable_credit_points,
1395 points_increment,
1396 points_min,
1397 points_max,
1398 unit_int_course_level_cd,
1399 subtitle_modifiable_flag,
1400 approval_date,
1401 lecture_credit_points,
1402 lab_credit_points,
1403 other_credit_points,
1404 clock_hours,
1405 work_load_cp_lecture,
1406 work_load_cp_lab,
1407 continuing_education_units,
1408 enrollment_expected,
1409 enrollment_minimum,
1410 enrollment_maximum,
1411 advance_maximum,
1412 state_financial_aid,
1413 federal_financial_aid,
1414 institutional_financial_aid,
1415 same_teaching_period,
1416 max_repeats_for_credit,
1417 max_repeats_for_funding,
1418 max_repeat_credit_points,
1419 same_teach_period_repeats,
1420 same_teach_period_repeats_cp,
1421 attribute_category,
1422 attribute1,
1423 attribute2,
1424 attribute3,
1425 attribute4,
1426 attribute5,
1427 attribute6,
1428 attribute7,
1429 attribute8,
1430 attribute9,
1431 attribute10,
1432 attribute11,
1433 attribute12,
1434 attribute13,
1435 attribute14,
1436 attribute15,
1437 attribute16,
1438 attribute17,
1439 attribute18,
1440 attribute19,
1441 attribute20,
1442 subtitle_id,
1443 work_load_other,
1444 contact_hrs_lecture,
1445 contact_hrs_lab,
1446 contact_hrs_other,
1447 non_schd_required_hrs,
1448 exclude_from_max_cp_limit,
1449 record_exclusion_flag,
1450 ss_display_ind,
1451 cal_type_enrol_load_cal,
1452 sequence_num_enrol_load_cal,
1453 cal_type_offer_load_cal,
1454 sequence_num_offer_load_cal,
1455 curriculum_id,
1456 override_enrollment_max,
1457 rpt_fmly_id,
1458 unit_type_id,
1459 special_permission_ind,
1460 org_id,
1461 ss_enrol_ind,
1462 ivr_enrol_ind,
1463 rev_account_cd,
1464 claimable_hours,
1465 anon_unit_grading_ind,
1466 anon_assess_grading_ind,
1467 auditable_ind,
1468 audit_permission_ind,
1469 max_auditors_allowed,
1470 billing_credit_points,
1471 ovrd_wkld_val_flag,
1472 workload_val_code,
1473 billing_hrs,
1474 creation_date,
1475 created_by,
1476 last_update_date,
1477 last_updated_by,
1478 last_update_login
1479 )
1480 VALUES
1481 (
1482 p_unit_ver_rec.unit_cd,
1483 p_unit_ver_rec.version_number,
1484 p_unit_ver_rec.start_dt,
1485 p_unit_ver_rec.review_dt,
1486 p_unit_ver_rec.expiry_dt,
1487 p_unit_ver_rec.end_dt,
1488 p_unit_ver_rec.unit_status,
1489 p_unit_ver_rec.title,
1490 p_unit_ver_rec.short_title,
1491 p_unit_ver_rec.title_override_ind,
1492 p_unit_ver_rec.abbreviation,
1493 p_unit_ver_rec.unit_level,
1494 p_unit_ver_rec.credit_point_descriptor,
1495 p_unit_ver_rec.enrolled_credit_points,
1496 p_unit_ver_rec.points_override_ind,
1497 p_unit_ver_rec.supp_exam_permitted_ind,
1498 l_n_coord_person_id,
1499 p_unit_ver_rec.owner_org_unit_cd,
1500 l_d_owner_ou_start_dt,
1501 p_unit_ver_rec.award_course_only_ind,
1502 p_unit_ver_rec.research_unit_ind,
1503 p_unit_ver_rec.industrial_ind,
1504 p_unit_ver_rec.practical_ind,
1505 p_unit_ver_rec.repeatable_ind,
1506 p_unit_ver_rec.assessable_ind,
1507 p_unit_ver_rec.achievable_credit_points,
1508 p_unit_ver_rec.points_increment,
1509 p_unit_ver_rec.points_min,
1510 p_unit_ver_rec.points_max,
1511 p_unit_ver_rec.unit_int_course_level_cd,
1512 p_unit_ver_rec.subtitle_modifiable_flag,
1513 p_unit_ver_rec.approval_date,
1514 p_unit_ver_rec.lecture_credit_points,
1515 p_unit_ver_rec.lab_credit_points,
1516 p_unit_ver_rec.other_credit_points,
1517 p_unit_ver_rec.clock_hours,
1518 p_unit_ver_rec.work_load_cp_lecture,
1519 p_unit_ver_rec.work_load_cp_lab,
1520 p_unit_ver_rec.continuing_education_units,
1521 p_unit_ver_rec.enrollment_expected,
1522 p_unit_ver_rec.enrollment_minimum,
1523 p_unit_ver_rec.enrollment_maximum,
1524 p_unit_ver_rec.advance_maximum,
1525 p_unit_ver_rec.state_financial_aid,
1526 p_unit_ver_rec.federal_financial_aid,
1527 p_unit_ver_rec.institutional_financial_aid,
1528 p_unit_ver_rec.same_teaching_period,
1529 p_unit_ver_rec.max_repeats_for_credit,
1530 p_unit_ver_rec.max_repeats_for_funding,
1531 p_unit_ver_rec.max_repeat_credit_points,
1532 p_unit_ver_rec.same_teach_period_repeats,
1533 p_unit_ver_rec.same_teach_period_repeats_cp,
1534 p_unit_ver_rec.attribute_category,
1535 p_unit_ver_rec.attribute1,
1536 p_unit_ver_rec.attribute2,
1537 p_unit_ver_rec.attribute3,
1538 p_unit_ver_rec.attribute4,
1539 p_unit_ver_rec.attribute5,
1540 p_unit_ver_rec.attribute6,
1541 p_unit_ver_rec.attribute7,
1542 p_unit_ver_rec.attribute8,
1543 p_unit_ver_rec.attribute9,
1544 p_unit_ver_rec.attribute10,
1545 p_unit_ver_rec.attribute11,
1546 p_unit_ver_rec.attribute12,
1547 p_unit_ver_rec.attribute13,
1548 p_unit_ver_rec.attribute14,
1549 p_unit_ver_rec.attribute15,
1550 p_unit_ver_rec.attribute16,
1551 p_unit_ver_rec.attribute17,
1552 p_unit_ver_rec.attribute18,
1553 p_unit_ver_rec.attribute19,
1554 p_unit_ver_rec.attribute20,
1555 l_n_subtitle_id,
1556 p_unit_ver_rec.work_load_other,
1557 p_unit_ver_rec.contact_hrs_lecture,
1558 p_unit_ver_rec.contact_hrs_lab,
1559 p_unit_ver_rec.contact_hrs_other,
1560 p_unit_ver_rec.non_schd_required_hrs,
1561 p_unit_ver_rec.exclude_from_max_cp_limit,
1562 p_unit_ver_rec.record_exclusion_flag,
1563 p_unit_ver_rec.ss_display_ind,
1564 l_c_cal_type_enrol_load_cal,
1565 l_n_seq_num_enrol_load_cal,
1566 l_c_cal_type_offer_load_cal,
1567 l_n_seq_num_offer_load_cal,
1568 p_unit_ver_rec.curriculum_id,
1569 p_unit_ver_rec.override_enrollment_max,
1570 l_n_rpt_fmly_id,
1571 l_n_unit_type_id,
1572 p_unit_ver_rec.special_permission_ind,
1573 igs_ge_gen_003.get_org_id,
1574 p_unit_ver_rec.ss_enrol_ind,
1575 p_unit_ver_rec.ivr_enrol_ind,
1576 p_unit_ver_rec.rev_account_cd,
1577 p_unit_ver_rec.claimable_hours,
1578 p_unit_ver_rec.anon_unit_grading_ind,
1579 p_unit_ver_rec.anon_assess_grading_ind,
1580 p_unit_ver_rec.auditable_ind,
1581 p_unit_ver_rec.audit_permission_ind,
1582 p_unit_ver_rec.max_auditors_allowed,
1583 p_unit_ver_rec.billing_credit_points,
1584 p_unit_ver_rec.ovrd_wkld_val_flag,
1585 p_unit_ver_rec.workload_val_code,
1586 p_unit_ver_rec.billing_hrs,
1587 SYSDATE,
1588 g_n_user_id,
1589 SYSDATE,
1590 g_n_user_id,
1591 g_n_login_id
1592 );
1593
1594 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1595 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.Record_Inserted',
1596 'Unit code:'||p_unit_ver_rec.unit_cd||' '||'Version number:'||p_unit_ver_rec.version_number);
1597 END IF;
1598
1599 p_unit_ver_rec.msg_from := NULL;
1600 p_unit_ver_rec.msg_to := NULL;
1601 ELSE
1602 p_unit_ver_rec.msg_from := p_unit_ver_rec.msg_from + 1;
1603 p_unit_ver_rec.msg_to := FND_MSG_PUB.COUNT_MSG;
1604 END IF;
1605 p_rec_status:= p_unit_ver_rec.status;
1606
1607 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1608 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_version.after_import_status',p_rec_status);
1609 END IF;
1610
1611 END create_unit_version;
1612
1613 PROCEDURE create_teach_resp ( p_tab_teach_resp IN OUT NOCOPY igs_ps_generic_pub.unit_tr_tbl_type,
1614 p_c_rec_status OUT NOCOPY VARCHAR2 ) AS
1615
1616 /***********************************************************************************************
1617 Created By : shtatiko
1618 Date Created By: 11-NOV-2002
1619 Purpose : This procedure is a sub process to insert records of Teaching Responsibility.
1620
1621 Known limitations,enhancements,remarks:
1622 Change History (in reverse chronological order)
1623 Who When What
1624 smvk 12-Dec-2002 Added a boolean parameter to the function call igs_ps_val_tr.crsp_val_tr_perc.
1625 As a part of the Bug # 2696207
1626 smvk 20-Dec-2002 Removed the IGS_PS_TCH_RESP_PKG.check_constraints for org_unit_cd,
1627 as the org unit code can have value in mixed case. Bug # 2487149.
1628 ********************************************************************************************** */
1629
1630 l_d_ou_start_dt igs_ps_unit_ver_all.owner_ou_start_dt%TYPE;
1631 l_c_message_name VARCHAR2 (30);
1632 CURSOR c_org(cp_org_unit_cd igs_ps_tch_resp.org_unit_cd%TYPE) IS
1633 SELECT 'X'
1634 FROM igs_or_inst_org_base_v a, igs_or_status b
1635 WHERE a.party_number = cp_org_unit_cd
1636 AND a.org_status = b.org_status
1637 AND b.s_org_status <> 'INACTIVE';
1638 c_org_rec c_org%ROWTYPE;
1639
1640 /* Private Procedures for create_teach_resp */
1641 PROCEDURE trim_values ( p_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.unit_tr_rec_type ) AS
1642 BEGIN
1643 p_teach_resp_rec.unit_cd := trim(p_teach_resp_rec.unit_cd);
1644 p_teach_resp_rec.version_number := trim(p_teach_resp_rec.version_number);
1645 p_teach_resp_rec.org_unit_cd := trim(p_teach_resp_rec.org_unit_cd);
1646 p_teach_resp_rec.percentage := trim(p_teach_resp_rec.percentage);
1647
1648 END trim_values;
1649 -- validate parameters passed.
1650 PROCEDURE validate_parameters ( p_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.unit_tr_rec_type ) AS
1651 BEGIN
1652 /* Check for Mandatory Parameters */
1653 IF p_teach_resp_rec.unit_cd IS NULL THEN
1654 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
1655 p_teach_resp_rec.status := 'E';
1656 END IF;
1657 IF p_teach_resp_rec.version_number IS NULL THEN
1658 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
1659 p_teach_resp_rec.status := 'E';
1660 END IF;
1661 IF p_teach_resp_rec.org_unit_cd IS NULL THEN
1662 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'ORG_UNIT_CD', 'LEGACY_TOKENS', FALSE);
1663 p_teach_resp_rec.status := 'E';
1664 END IF;
1665 IF p_teach_resp_rec.percentage IS NULL THEN
1666 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PERCENTAGE', 'LEGACY_TOKENS', FALSE);
1667 p_teach_resp_rec.status := 'E';
1668 END IF;
1669 END validate_parameters;
1670
1671 -- Carry out derivations and validate them
1672 PROCEDURE validate_derivations ( p_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.unit_tr_rec_type ) AS
1673 BEGIN
1674 IF NOT igs_re_val_rsup.get_org_unit_dtls ( p_teach_resp_rec.org_unit_cd, l_d_ou_start_dt ) THEN
1675 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'ORG_UNIT_CD', 'LEGACY_TOKENS', FALSE);
1676 p_teach_resp_rec.status := 'E';
1677 END IF;
1678 END validate_derivations;
1679
1680 -- Validate Database Constraints
1681 PROCEDURE validate_db_cons ( p_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.unit_tr_rec_type ) AS
1682 BEGIN
1683
1684 /* Validate PK Constraints */
1685 IF igs_ps_tch_resp_pkg.get_pk_for_validation (
1686 x_unit_cd => p_teach_resp_rec.unit_cd,
1687 x_version_number => p_teach_resp_rec.version_number,
1688 x_org_unit_cd => p_teach_resp_rec.org_unit_cd,
1689 x_ou_start_dt => l_d_ou_start_dt ) THEN
1690 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_TEACH_RESP', 'LEGACY_TOKENS', FALSE);
1691 p_teach_resp_rec.status := 'W';
1692 RETURN;
1693 END IF;
1694
1695 /* Validate Check Constraints */
1696 BEGIN
1697 igs_ps_tch_resp_pkg.check_constraints ( 'UNIT_CD', p_teach_resp_rec.unit_cd );
1698 EXCEPTION
1699 WHEN OTHERS THEN
1700 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'UNIT_CD', 'LEGACY_TOKENS', TRUE);
1701 p_teach_resp_rec.status := 'E';
1702 END;
1703
1704 BEGIN
1705 igs_ps_tch_resp_pkg.check_constraints ( 'PERCENTAGE', p_teach_resp_rec.percentage );
1706 EXCEPTION
1707 WHEN OTHERS THEN
1708 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PER_0_100', null, null, TRUE);
1709 p_teach_resp_rec.status := 'E';
1710 END;
1711
1712 /* Validate FK Constraints */
1713 IF NOT igs_or_unit_pkg.get_pk_for_validation (
1714 p_teach_resp_rec.org_unit_cd,
1715 l_d_ou_start_dt ) THEN
1716 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ORG_UNIT_CD', 'LEGACY_TOKENS', FALSE);
1717 p_teach_resp_rec.status := 'E';
1718 END IF;
1719 IF NOT igs_ps_unit_ver_pkg.get_pk_for_validation (
1720 p_teach_resp_rec.unit_cd,
1721 p_teach_resp_rec.version_number ) THEN
1722 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_VERSION', 'LEGACY_TOKENS', FALSE);
1723 p_teach_resp_rec.status := 'E';
1724 END IF;
1725
1726 END validate_db_cons;
1727
1728 /* Main Teaching Responsibility Sub Process */
1729 BEGIN
1730 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1731 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_teach_resp.start_logging_for','Teaching Responsibility');
1732 END IF;
1733 p_c_rec_status := 'S';
1734
1735 FOR I in 1..p_tab_teach_resp.LAST LOOP
1736 IF ( p_tab_teach_resp.EXISTS(I) ) THEN
1737 p_tab_teach_resp(I).status := 'S';
1738 p_tab_teach_resp(I).msg_from := fnd_msg_pub.count_msg;
1739 trim_values(p_tab_teach_resp(I) );
1740 validate_parameters ( p_tab_teach_resp(I) );
1741
1742 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1743 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_teach_resp.status_after_validate_parameters',
1744 'Unit code:'||p_tab_teach_resp(I).unit_cd||' '||'Version number:'||p_tab_teach_resp(I).version_number||' '||
1745 'org_unit_cd:'||p_tab_teach_resp(I).org_unit_cd||' '||'Status:'||p_tab_teach_resp(I).status);
1746 END IF;
1747
1748 IF p_tab_teach_resp(I).status = 'S' THEN
1749 validate_derivations ( p_tab_teach_resp(I) );
1750
1751 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1752 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_teach_resp.status_after_validate_derivations',
1753 'Unit code:'||p_tab_teach_resp(I).unit_cd||' '||'Version number:'||p_tab_teach_resp(I).version_number||' '||
1754 'org_unit_cd:'||p_tab_teach_resp(I).org_unit_cd||' '||'ou_start_dt:'||l_d_ou_start_dt||' '||
1755 'Status:'||p_tab_teach_resp(I).status);
1756 END IF;
1757
1758 END IF;
1759
1760 IF p_tab_teach_resp(I).status = 'S' THEN
1761 validate_db_cons ( p_tab_teach_resp(I) );
1762
1763 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1764 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_teach_resp.status_after_validate_db_cons',
1765 'Unit code:'||p_tab_teach_resp(I).unit_cd||' '||'Version number:'||p_tab_teach_resp(I).version_number||' '||
1766 'org_unit_cd:'||p_tab_teach_resp(I).org_unit_cd||' '||'ou_start_dt:'||l_d_ou_start_dt||' '||
1767 'Status:'||p_tab_teach_resp(I).status);
1768 END IF;
1769
1770 END IF;
1771 IF p_tab_teach_resp(I).status = 'S' THEN
1772 OPEN c_org (p_tab_teach_resp(I).org_unit_cd);
1773 FETCH c_org INTO c_org_rec;
1774 IF c_org%NOTFOUND THEN
1775 fnd_message.set_name('IGS','IGS_PS_ORGUNIT_STATUS_INACTIV');
1776 fnd_msg_pub.add;
1777 p_tab_teach_resp(I).status := 'E';
1778 END IF;
1779 CLOSE c_org;
1780 END IF;
1781
1782 /* Business Validations */
1783 /* Proceed with business validations only if the status is Success, 'S' */
1784 IF p_tab_teach_resp(I).status = 'S' THEN
1785 /* Validation# 1: Check if the Teaching Responsibility Percentage adds upto 100 */
1786 IF igs_ps_val_tr.crsp_val_tr_perc (
1787 p_unit_cd => p_tab_teach_resp(I).unit_cd,
1788 p_version_number => p_tab_teach_resp(I).version_number,
1789 p_message_name => l_c_message_name ,
1790 p_b_lgcy_validator => TRUE) THEN
1791 fnd_message.set_name('IGS','IGS_PS_LGCY_TR_100_EXISTS');
1792 fnd_msg_pub.add;
1793 p_tab_teach_resp(I).status := 'W' ;
1794 END IF;
1795
1796 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1797 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_teach_resp.status_after_Business_validation',
1798 'Unit code:'||p_tab_teach_resp(I).unit_cd||' '||'Version number:'||p_tab_teach_resp(I).version_number||' '||
1799 'org_unit_cd:'||p_tab_teach_resp(I).org_unit_cd||' '||'ou_start_dt:'||l_d_ou_start_dt||' '||
1800 'Status:'||p_tab_teach_resp(I).status);
1801 END IF;
1802
1803 END IF;
1804
1805 IF p_tab_teach_resp(I).status = 'S' THEN
1806 /* Insert the Record */
1807 INSERT INTO igs_ps_tch_resp
1808 (unit_cd,
1809 version_number,
1810 org_unit_cd,
1811 ou_start_dt,
1812 percentage,
1813 created_by,
1814 creation_date,
1815 last_updated_by,
1816 last_update_date,
1817 last_update_login
1818 )
1819 VALUES
1820 (p_tab_teach_resp(I).unit_cd,
1821 p_tab_teach_resp(I).version_number,
1822 p_tab_teach_resp(I).org_unit_cd,
1823 l_d_ou_start_dt,
1824 p_tab_teach_resp(I).percentage,
1825 g_n_user_id,
1826 SYSDATE,
1827 g_n_user_id,
1828 SYSDATE,
1829 g_n_login_id
1830 );
1831
1832 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1833 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_teach_resp.Record_Inserted',
1834 'Unit code:'||p_tab_teach_resp(I).unit_cd||' '||'Version number:'||p_tab_teach_resp(I).version_number||' '||
1835 'org_unit_cd:'||p_tab_teach_resp(I).org_unit_cd||' '||'ou_start_dt:'||l_d_ou_start_dt);
1836 END IF;
1837
1838 p_tab_teach_resp(I).msg_from := NULL;
1839 p_tab_teach_resp(I).msg_to := NULL;
1840 ELSE
1841 p_c_rec_status := p_tab_teach_resp(I).status;
1842 p_tab_teach_resp(I).msg_from := p_tab_teach_resp(I).msg_from+1;
1843 p_tab_teach_resp(I).msg_to := fnd_msg_pub.count_msg;
1844 IF p_tab_teach_resp(I).status = 'E' THEN
1845 RETURN;
1846 END IF;
1847 END IF;
1848 END IF;
1849
1850 END LOOP;
1851
1852 /* Post Insert Validations */
1853 IF NOT igs_ps_validate_lgcy_pkg.post_teach_resp(p_tab_teach_resp) THEN
1854 p_c_rec_status := 'E';
1855 END IF;
1856
1857 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1858 fnd_log.string( fnd_log.level_statement,
1859 'igs.plsql.igs_ps_unit_lgcy_pkg.create_teach_resp.status_after_Post_insert_validation','Status:'||p_c_rec_status);
1860 END IF;
1861
1862 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1863 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_teach_resp.after_import_status',p_c_rec_status);
1864 END IF;
1865
1866 END create_teach_resp;
1867
1868
1869 PROCEDURE create_unit_discip ( p_tab_unit_dscp IN OUT NOCOPY igs_ps_generic_pub.unit_dscp_tbl_type,
1870 p_c_rec_status OUT NOCOPY VARCHAR2 ) AS
1871
1872 /***********************************************************************************************
1873 Created By : shtatiko
1874 Date Created By: 11-NOV-2002
1875 Purpose : This procedure is a sub process to insert records of Unit Disciplines.
1876
1877 Known limitations,enhancements,remarks:
1878 Change History (in reverse chronological order)
1879 Who When What
1880 smvk 12-Dec-2002 Added a boolean parameter to the function call igs_ps_val_ud.crsp_val_ud_perc.
1881 As a part of the Bug # 2696207
1882 ********************************************************************************************** */
1883
1884 l_c_message_name VARCHAR2(30);
1885
1886 /* Private Procedures for create_unit_dscp */
1887 PROCEDURE trim_values ( p_unit_dscp_rec IN OUT NOCOPY igs_ps_generic_pub.unit_dscp_rec_type ) AS
1888 BEGIN
1889 p_unit_dscp_rec.unit_cd := TRIM(p_unit_dscp_rec.unit_cd);
1890 p_unit_dscp_rec.version_number := TRIM(p_unit_dscp_rec.version_number);
1891 p_unit_dscp_rec.discipline_group_cd := TRIM(p_unit_dscp_rec.discipline_group_cd);
1892 p_unit_dscp_rec.percentage := TRIM(p_unit_dscp_rec.percentage);
1893 END trim_values;
1894
1895 -- validate parameters passed.
1896 PROCEDURE validate_parameters ( p_unit_dscp_rec IN OUT NOCOPY igs_ps_generic_pub.unit_dscp_rec_type ) AS
1897 BEGIN
1898 /* Check for Mandatory Parameters */
1899 IF p_unit_dscp_rec.unit_cd IS NULL THEN
1900 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
1901 p_unit_dscp_rec.status := 'E';
1902 END IF;
1903 IF p_unit_dscp_rec.version_number IS NULL THEN
1904 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
1905 p_unit_dscp_rec.status := 'E';
1906 END IF;
1907 IF p_unit_dscp_rec.discipline_group_cd IS NULL THEN
1908 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'DISCIPLINE_GROUP_CD', 'LEGACY_TOKENS', FALSE);
1909 p_unit_dscp_rec.status := 'E';
1910 END IF;
1911 IF p_unit_dscp_rec.percentage IS NULL THEN
1912 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PERCENTAGE', 'LEGACY_TOKENS', FALSE);
1913 p_unit_dscp_rec.status := 'E';
1914 END IF;
1915 END validate_parameters;
1916
1917 -- Validate Database Constraints
1918 PROCEDURE validate_db_cons ( p_unit_dscp_rec IN OUT NOCOPY igs_ps_generic_pub.unit_dscp_rec_type ) AS
1919 BEGIN
1920
1921 /* Validate PK Constraints */
1922 IF igs_ps_unit_dscp_pkg.get_pk_for_validation (
1923 x_unit_cd => p_unit_dscp_rec.unit_cd,
1924 x_version_number => p_unit_dscp_rec.version_number,
1925 x_discipline_group_cd => p_unit_dscp_rec.discipline_group_cd ) THEN
1926 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_DISCIPLINE', 'LEGACY_TOKENS', FALSE);
1927 p_unit_dscp_rec.status := 'W';
1928 RETURN;
1929 END IF;
1930
1931 /* Validate Check Constraints */
1932 BEGIN
1933 igs_ps_unit_dscp_pkg.check_constraints ( 'UNIT_CD', p_unit_dscp_rec.unit_cd );
1934 EXCEPTION
1935 WHEN OTHERS THEN
1936 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'UNIT_CD', 'LEGACY_TOKENS', TRUE);
1937 p_unit_dscp_rec.status := 'E';
1938 END;
1939
1940 BEGIN
1941 igs_ps_unit_dscp_pkg.check_constraints ( 'DISCIPLINE_GROUP_CD', p_unit_dscp_rec.discipline_group_cd );
1942 EXCEPTION
1943 WHEN OTHERS THEN
1944 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'DISCIPLINE_GROUP_CD', 'LEGACY_TOKENS', TRUE);
1945 p_unit_dscp_rec.status := 'E';
1946 END;
1947
1948 BEGIN
1949 igs_ps_unit_dscp_pkg.check_constraints ( 'PERCENTAGE', p_unit_dscp_rec.percentage );
1950 EXCEPTION
1951 WHEN OTHERS THEN
1952 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PER_0_100', null, null, TRUE);
1953 p_unit_dscp_rec.status := 'E';
1954 END;
1955
1956 /* Validate FK Constraints */
1957 IF NOT igs_ps_dscp_pkg.get_pk_for_validation (p_unit_dscp_rec.discipline_group_cd) THEN
1958 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'DISCIPLINE_GROUP_CD', 'LEGACY_TOKENS', FALSE);
1959 p_unit_dscp_rec.status := 'E';
1960 END IF;
1961
1962 IF NOT igs_ps_unit_ver_pkg.get_pk_for_validation (p_unit_dscp_rec.unit_cd, p_unit_dscp_rec.version_number) THEN
1963 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_VERSION', 'LEGACY_TOKENS', FALSE);
1964 p_unit_dscp_rec.status := 'E';
1965 END IF;
1966
1967 END validate_db_cons;
1968
1969 /* Main Unit Discipline Sub Process */
1970 BEGIN
1971
1972 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1973 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_discip.start_logging_for','Unit Discipline');
1974 END IF;
1975
1976 p_c_rec_status := 'S';
1977 FOR I in 1..p_tab_unit_dscp.LAST LOOP
1978 IF ( p_tab_unit_dscp.EXISTS(I) ) THEN
1979 p_tab_unit_dscp(I).status := 'S';
1980 p_tab_unit_dscp(I).msg_from := fnd_msg_pub.count_msg;
1981 trim_values(p_tab_unit_dscp(I) );
1982 validate_parameters ( p_tab_unit_dscp(I) );
1983
1984 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1985 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_discip.status_after_validate_parameters',
1986 'Unit code:'||p_tab_unit_dscp(I).unit_cd||' '||'Version number:'||p_tab_unit_dscp(I).version_number||' '||
1987 'discipline_group_cd:'||p_tab_unit_dscp(I).discipline_group_cd||' '||'Status:'||p_tab_unit_dscp(I).status);
1988 END IF;
1989
1990 IF p_tab_unit_dscp(I).status = 'S' THEN
1991 validate_db_cons ( p_tab_unit_dscp(I) );
1992
1993 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1994 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_discip.status_after_validate_db_cons',
1995 'Unit code:'||p_tab_unit_dscp(I).unit_cd||' '||'Version number:'||p_tab_unit_dscp(I).version_number||' '||
1996 'discipline_group_cd:'||p_tab_unit_dscp(I).discipline_group_cd||' '||'Status:'||p_tab_unit_dscp(I).status);
1997 END IF;
1998
1999 END IF;
2000
2001 /* Business Validations */
2002 /* Proceed with business validations only if the status is Success, 'S' */
2003 IF p_tab_unit_dscp(I).status = 'S' THEN
2004 /* Validation# 1: Check if the Unit Discipline Percentage adds upto 100 */
2005 IF igs_ps_val_ud.crsp_val_ud_perc ( p_tab_unit_dscp(I).unit_cd, p_tab_unit_dscp(I).version_number, l_c_message_name ,TRUE) THEN
2006 fnd_message.set_name('IGS','IGS_PS_LGCY_UD_100_EXISTS');
2007 fnd_msg_pub.add;
2008 p_tab_unit_dscp(I).status := 'W';
2009 END IF;
2010
2011 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2012 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_discip.status_after_Business_validation',
2013 'Unit code:'||p_tab_unit_dscp(I).unit_cd||' '||'Version number:'||p_tab_unit_dscp(I).version_number||' '||
2014 'discipline_group_cd:'||p_tab_unit_dscp(I).discipline_group_cd||' '||'Status:'||p_tab_unit_dscp(I).status);
2015 END IF;
2016
2017 END IF;
2018
2019 IF p_tab_unit_dscp(I).status = 'S' THEN
2020 /* Insert record */
2021 INSERT INTO igs_ps_unit_dscp
2022 (unit_cd,
2023 version_number,
2024 discipline_group_cd,
2025 percentage,
2026 created_by,
2027 creation_date,
2028 last_updated_by,
2029 last_update_date,
2030 last_update_login
2031 )
2032 VALUES
2033 (p_tab_unit_dscp(I).unit_cd,
2034 p_tab_unit_dscp(I).version_number,
2035 p_tab_unit_dscp(I).discipline_group_cd,
2036 p_tab_unit_dscp(I).percentage,
2037 g_n_user_id,
2038 SYSDATE,
2039 g_n_user_id,
2040 SYSDATE,
2041 g_n_login_id
2042 );
2043 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2044 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_discip.Record_Inserted',
2045 'Unit code:'||p_tab_unit_dscp(I).unit_cd||' '||'Version number:'||p_tab_unit_dscp(I).version_number||' '||
2046 'discipline_group_cd:'||p_tab_unit_dscp(I).discipline_group_cd);
2047 END IF;
2048
2049 p_tab_unit_dscp(I).msg_from := NULL;
2050 p_tab_unit_dscp(I).msg_to := NULL;
2051 ELSE
2052 p_c_rec_status := p_tab_unit_dscp(I).status;
2053 p_tab_unit_dscp(I).msg_from := p_tab_unit_dscp(I).msg_from+1;
2054 p_tab_unit_dscp(I).msg_to := fnd_msg_pub.count_msg;
2055 IF p_tab_unit_dscp(I).status = 'E' THEN
2056 RETURN;
2057 END IF;
2058 END IF;
2059 END IF;
2060 END LOOP;
2061
2062 /* Post Insert Checks */
2063 IF NOT igs_ps_validate_lgcy_pkg.post_unit_discip(p_tab_unit_dscp) THEN
2064 p_c_rec_status := 'E';
2065 END IF;
2066
2067 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2068 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_discip.Status_after_Post_insert_check',
2069 'Status:'||p_c_rec_status);
2070 END IF;
2071
2072 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
2073 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_discip.after_import_status',p_c_rec_status);
2074 END IF;
2075
2076 END create_unit_discip;
2077
2078 PROCEDURE create_unit_grd_sch ( p_tab_grd_sch IN OUT NOCOPY igs_ps_generic_pub.unit_gs_tbl_type,
2079 p_c_rec_status OUT NOCOPY VARCHAR2 ) AS
2080
2081 /***********************************************************************************************
2082 Created By : shtatiko
2083 Date Created By: 12-NOV-2002
2084 Purpose : This procedure is a sub process to insert records of Unit Grading Schema.
2085
2086 Known limitations,enhancements,remarks:
2087 Change History (in reverse chronological order)
2088 Who When What
2089 ********************************************************************************************** */
2090
2091 /* Private Procedures for create_unit_grd_sch */
2092 PROCEDURE trim_values ( p_grd_sch_rec IN OUT NOCOPY igs_ps_generic_pub.unit_gs_rec_type ) AS
2093 BEGIN
2094 p_grd_sch_rec.unit_cd := trim(p_grd_sch_rec.unit_cd);
2095 p_grd_sch_rec.version_number := trim(p_grd_sch_rec.version_number);
2096 p_grd_sch_rec.grading_schema_code := trim(p_grd_sch_rec.grading_schema_code);
2097 p_grd_sch_rec.grd_schm_version_number := trim(p_grd_sch_rec.grd_schm_version_number);
2098 p_grd_sch_rec.default_flag := trim(p_grd_sch_rec.default_flag);
2099 END trim_values;
2100
2101 -- Validation of Parameters passed.
2102 PROCEDURE validate_parameters ( p_grd_sch_rec IN OUT NOCOPY igs_ps_generic_pub.unit_gs_rec_type ) AS
2103 BEGIN
2104
2105 /* Check for Mandatory Parameters */
2106 IF p_grd_sch_rec.unit_cd IS NULL THEN
2107 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
2108 p_grd_sch_rec.status := 'E';
2109 END IF;
2110 IF p_grd_sch_rec.version_number IS NULL THEN
2111 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
2112 p_grd_sch_rec.status := 'E';
2113 END IF;
2114 IF p_grd_sch_rec.grading_schema_code IS NULL THEN
2115 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_GRADING_SCHM_CD', 'LEGACY_TOKENS', FALSE);
2116 p_grd_sch_rec.status := 'E';
2117 END IF;
2118 IF p_grd_sch_rec.grd_schm_version_number IS NULL THEN
2119 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_GRADING_SCHM_VER_NUM', 'LEGACY_TOKENS', FALSE);
2120 p_grd_sch_rec.status := 'E';
2121 END IF;
2122 IF p_grd_sch_rec.default_flag IS NULL THEN
2123 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'DEFAULT_FLAG', 'LEGACY_TOKENS', FALSE);
2124 p_grd_sch_rec.status := 'E';
2125 END IF;
2126
2127 END validate_parameters;
2128
2129 -- Validate Database Constraints.
2130 PROCEDURE validate_db_cons ( p_grd_sch_rec IN OUT NOCOPY igs_ps_generic_pub.unit_gs_rec_type ) AS
2131 BEGIN
2132
2133 /* Unique Key Validation */
2134 IF igs_ps_unit_grd_schm_pkg.get_uk_for_validation (
2135 x_unit_version_number => p_grd_sch_rec.version_number,
2136 x_grading_schema_code => p_grd_sch_rec.grading_schema_code,
2137 x_grd_schm_version_number => p_grd_sch_rec.grd_schm_version_number,
2138 x_unit_code => p_grd_sch_rec.unit_cd ) THEN
2139 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_GRADING_SCHM', 'LEGACY_TOKENS', FALSE);
2140 p_grd_sch_rec.status := 'W';
2141 RETURN;
2142 END IF;
2143
2144 /* Validate Check Constraints */
2145 BEGIN
2146 igs_ps_unit_grd_schm_pkg.check_constraints ( 'DEFAULT_FLAG', p_grd_sch_rec.default_flag );
2147 EXCEPTION
2148 WHEN OTHERS THEN
2149 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'DEFAULT_FLAG', 'LEGACY_TOKENS', TRUE);
2150 p_grd_sch_rec.status := 'E';
2151 END;
2152
2153 /* Validate FK Constraints */
2154 IF NOT igs_as_grd_schema_pkg.get_pk_for_validation ( p_grd_sch_rec.grading_schema_code, p_grd_sch_rec.grd_schm_version_number) THEN
2155 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_GRADING_SCHM', 'LEGACY_TOKENS', FALSE);
2156 p_grd_sch_rec.status := 'E';
2157 END IF;
2158
2159 IF NOT igs_ps_unit_ver_pkg.get_pk_for_validation ( p_grd_sch_rec.unit_cd, p_grd_sch_rec.version_number ) THEN
2160 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_VERSION', 'LEGACY_TOKENS', FALSE);
2161 p_grd_sch_rec.status := 'E';
2162 END IF;
2163 END validate_db_cons;
2164
2165 /* Main Grading Schema Sub Process */
2166 BEGIN
2167
2168 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
2169 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_grd_sch.start_logging_for','Unit Grading Schema');
2170 END IF;
2171
2172 p_c_rec_status := 'S';
2173 FOR I in 1..p_tab_grd_sch.LAST LOOP
2174 IF p_tab_grd_sch.EXISTS(I) THEN
2175 p_tab_grd_sch(I).status := 'S';
2176 p_tab_grd_sch(I).msg_from := fnd_msg_pub.count_msg;
2177 trim_values(p_tab_grd_sch(I));
2178 validate_parameters ( p_tab_grd_sch(I) );
2179
2180 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2181 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_grd_sch.status_after_validate_parameters',
2182 'Unit code:'||p_tab_grd_sch(I).unit_cd||' '||'Version number:'||p_tab_grd_sch(I).version_number||' '||
2183 'grading_schema_code:'||p_tab_grd_sch(I).grading_schema_code||' '||'grd_schm_version_number:'||
2184 p_tab_grd_sch(I).grd_schm_version_number||' '||'Status:'||p_tab_grd_sch(I).status);
2185 END IF;
2186
2187 IF p_tab_grd_sch(I).status = 'S' THEN
2188 validate_db_cons ( p_tab_grd_sch(I) );
2189
2190 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2191 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_grd_sch.status_after_validate_db_cons',
2192 'Unit code:'||p_tab_grd_sch(I).unit_cd||' '||'Version number:'||p_tab_grd_sch(I).version_number||' '||
2193 'grading_schema_code:'||p_tab_grd_sch(I).grading_schema_code||' '||'grd_schm_version_number:'||
2194 p_tab_grd_sch(I).grd_schm_version_number||' '||'Status:'||p_tab_grd_sch(I).status);
2195 END IF;
2196
2197 END IF;
2198
2199 /* Business Validations */
2200 /* Proceed with business validations only if the status is Success, 'S' */
2201 IF p_tab_grd_sch(I).status = 'S' THEN
2202 igs_ps_validate_lgcy_pkg.validate_unit_grd_sch ( p_tab_grd_sch(I) );
2203
2204 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2205 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_grd_sch.status_after_Business_Validation',
2206 'Unit code:'||p_tab_grd_sch(I).unit_cd||' '||'Version number:'||p_tab_grd_sch(I).version_number||' '||
2207 'grading_schema_code:'||p_tab_grd_sch(I).grading_schema_code||' '||'grd_schm_version_number:'||
2208 p_tab_grd_sch(I).grd_schm_version_number||' '||'Status:'||p_tab_grd_sch(I).status);
2209 END IF;
2210
2211 END IF;
2212
2213 IF p_tab_grd_sch(I).status = 'S' THEN
2214 /* Insert Record */
2215 INSERT INTO igs_ps_unit_grd_schm
2216 (unit_grading_schema_id,
2217 unit_code,
2218 unit_version_number,
2219 grading_schema_code,
2220 grd_schm_version_number,
2221 default_flag,
2222 created_by,
2223 creation_date,
2224 last_updated_by,
2225 last_update_date,
2226 last_update_login
2227 )
2228 VALUES
2229 (igs_ps_unit_grd_schm_s.NEXTVAL,
2230 p_tab_grd_sch(I).unit_cd,
2231 p_tab_grd_sch(I).version_number,
2232 p_tab_grd_sch(I).grading_schema_code,
2233 p_tab_grd_sch(I).grd_schm_version_number,
2234 p_tab_grd_sch(I).default_flag,
2235 g_n_user_id,
2236 SYSDATE,
2237 g_n_user_id,
2238 SYSDATE,
2239 g_n_login_id
2240 );
2241
2242 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2243 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_grd_sch.record_inserted',
2244 'Unit code:'||p_tab_grd_sch(I).unit_cd||' '||'Version number:'||p_tab_grd_sch(I).version_number||' '||
2245 'grading_schema_code:'||p_tab_grd_sch(I).grading_schema_code||' '||'grd_schm_version_number:'||
2246 p_tab_grd_sch(I).grd_schm_version_number);
2247 END IF;
2248
2249 p_tab_grd_sch(I).msg_from := NULL;
2250 p_tab_grd_sch(I).msg_to := NULL;
2251 ELSE
2252 p_c_rec_status := p_tab_grd_sch(I).status;
2253 p_tab_grd_sch(I).msg_from := p_tab_grd_sch(I).msg_from+1;
2254 p_tab_grd_sch(I).msg_to := fnd_msg_pub.count_msg;
2255 IF p_tab_grd_sch(I).status = 'E' THEN
2256 RETURN;
2257 END IF;
2258 END IF;
2259 END IF;
2260 END LOOP;
2261
2262 /* Post Insert Checks */
2263 IF NOT igs_ps_validate_lgcy_pkg.post_unit_grd_sch (p_tab_grd_sch) THEN
2264 p_c_rec_status := 'E';
2265 END IF;
2266
2267 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
2268 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_grd_sch.after_import_status',p_c_rec_status);
2269 END IF;
2270
2271
2272 END create_unit_grd_sch;
2273
2274 PROCEDURE validate_unit_dtls (
2275 p_unit_ver_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ver_rec_type,
2276 p_rec_status OUT NOCOPY VARCHAR2) AS
2277
2278 /***********************************************************************************************
2279 Created By : smvk
2280 Date Created By: 07-NOV-2003
2281 Purpose : To do validations across different sub process at unil level.
2282 Presently doing the following validations
2283 1) For active unit's the teaching responsibility percentage should total to 100
2284 2) For active unit's the unit discipline percentage should total to 100
2285
2286 Known limitations,enhancements,remarks:
2287 Change History (in reverse chronological order)
2288 Who When What
2289 ********************************************************************************************* */
2290
2291 CURSOR c_unit_status (cp_c_unit_status IN igs_ps_unit_stat.unit_status%TYPE) IS
2292 SELECT s_unit_status
2293 FROM igs_ps_unit_stat
2294 WHERE unit_status = cp_c_unit_status;
2295
2296 rec_unit_status c_unit_status%ROWTYPE;
2297 l_c_message VARCHAR2(30);
2298
2299 BEGIN
2300
2301 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
2302 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.validate_unit_dtls.start_logging_for','Unit Details Validations');
2303 END IF;
2304
2305 OPEN c_unit_status (p_unit_ver_rec.unit_status);
2306 FETCH c_unit_status INTO rec_unit_status;
2307 CLOSE c_unit_status;
2308
2309 IF rec_unit_status.s_unit_status = 'ACTIVE' THEN
2310 p_unit_ver_rec.msg_from := fnd_msg_pub.count_msg;
2311 p_rec_status := p_unit_ver_rec.status;
2312
2313 IF NOT igs_ps_val_tr.crsp_val_tr_perc ( p_unit_ver_rec.unit_cd, p_unit_ver_rec.version_number, l_c_message ,TRUE) THEN
2314 -- Adding more meaningful message rather then the message returned in the variable l_c_message
2315 fnd_message.set_name('IGS','IGS_PS_LGCY_ACT_UNT_WITHOUT_TR');
2316 fnd_msg_pub.add;
2317 p_unit_ver_rec.status := 'E';
2318 END IF;
2319
2320 IF NOT igs_ps_val_ud.crsp_val_ud_perc ( p_unit_ver_rec.unit_cd, p_unit_ver_rec.version_number, l_c_message ,TRUE) THEN
2321 -- Adding more meaningful message rather then the message returned in the variable l_c_message
2322 fnd_message.set_name('IGS','IGS_PS_LGCY_ACT_UNT_WITHOUT_UD');
2323 fnd_msg_pub.add;
2324 p_unit_ver_rec.status := 'E';
2325 END IF;
2326
2327 IF p_unit_ver_rec.status = 'S' THEN
2328 p_unit_ver_rec.msg_from := NULL;
2329 p_unit_ver_rec.msg_to := NULL;
2330 ELSE
2331 p_unit_ver_rec.msg_from := p_unit_ver_rec.msg_from + 1;
2332 p_unit_ver_rec.msg_to := fnd_msg_pub.count_msg;
2333 p_rec_status := p_unit_ver_rec.status;
2334 END IF;
2335 END IF;
2336
2337 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
2338 fnd_log.string( fnd_log.level_procedure,
2339 'igs.plsql.igs_ps_unit_lgcy_pkg.validate_unit_dtls.record_status_after_validation_of_unit_details',
2340 p_unit_ver_rec.status);
2341 END IF;
2342
2343
2344 END validate_unit_dtls;
2345
2346
2347 PROCEDURE create_unit_section ( p_usec_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_tbl_type,
2348 p_c_rec_status OUT NOCOPY VARCHAR2,
2349 p_calling_context IN VARCHAR2
2350 ) AS
2351
2352 l_insert_update VARCHAR2(1);
2353 l_conc_flag BOOLEAN;
2354 l_request_id NUMBER;
2355 l_message_name VARCHAR2(30);
2356
2357 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
2358 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
2359 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
2360 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
2361 l_c_org_unit_cd igs_ps_unit_ver_all.owner_org_unit_cd%TYPE;
2362 l_n_unit_contact_id igs_pe_person_base_v.person_id%TYPE;
2363 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
2364 l_n_sup_uoo_id igs_ps_unit_ofr_opt_all.sup_uoo_id%TYPE;
2365 l_c_relation_type igs_ps_unit_ofr_opt_all.relation_type%TYPE;
2366 l_n_subtitle_id igs_ps_unit_subtitle.subtitle_id%TYPE;
2367 l_b_uop_deleted BOOLEAN;
2368
2369
2370 /* Private Procedures for create_unit_section */
2371 PROCEDURE trim_values ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
2372 /***********************************************************************************************
2373 Created By :
2374 Date Created By:
2375 Purpose :
2376 Known limitations,enhancements,remarks:
2377 Change History (in reverse chronological order)
2378 Who When What
2379 sarakshi 10-Nov-2003 Enh#3116171, added code trim billing_credit_points field
2380 sarakshi 11-Sep-2003 ENh#3052452,added coe to trim the value of sup_unit_cd,sup_version_number,sup_teach_cal_alternate_code,sup_location_cd,sup_unit_class,default_enoll_flag
2381 vvutukur 05-Aug-2003 Enh#3045069.PSP Enh Build. Added code to trim the value of newly added column not_multiple_section_flag.
2382 ********************************************************************************************* */
2383 BEGIN
2384 p_usec_rec.unit_cd := trim(p_usec_rec.unit_cd);
2385 p_usec_rec.version_number := trim(p_usec_rec.version_number);
2386 p_usec_rec.teach_cal_alternate_code := trim(p_usec_rec.teach_cal_alternate_code);
2387 p_usec_rec.location_cd := trim(p_usec_rec.location_cd);
2388 p_usec_rec.unit_class := trim(p_usec_rec.unit_class);
2389 p_usec_rec.ivrs_available_ind := trim(p_usec_rec.ivrs_available_ind);
2390 p_usec_rec.call_number := trim(p_usec_rec.call_number);
2391 p_usec_rec.unit_section_status := trim(p_usec_rec.unit_section_status);
2392 p_usec_rec.unit_section_start_date := TRUNC(p_usec_rec.unit_section_start_date);
2393 p_usec_rec.unit_section_end_date := TRUNC(p_usec_rec.unit_section_end_date);
2394 p_usec_rec.offered_ind := trim(p_usec_rec.offered_ind);
2395 p_usec_rec.state_financial_aid := trim(p_usec_rec.state_financial_aid);
2396 p_usec_rec.grading_schema_prcdnce_ind := trim(p_usec_rec.grading_schema_prcdnce_ind);
2397 p_usec_rec.federal_financial_aid := trim(p_usec_rec.federal_financial_aid);
2398 p_usec_rec.unit_quota := trim(p_usec_rec.unit_quota);
2399 p_usec_rec.unit_quota_reserved_places := trim(p_usec_rec.unit_quota_reserved_places);
2400 p_usec_rec.institutional_financial_aid := trim(p_usec_rec.institutional_financial_aid);
2401 p_usec_rec.grading_schema_cd := trim(p_usec_rec.grading_schema_cd);
2402 p_usec_rec.gs_version_number := trim(p_usec_rec.gs_version_number);
2403 p_usec_rec.unit_contact_number := trim(p_usec_rec.unit_contact_number);
2404 p_usec_rec.ss_enrol_ind := trim(p_usec_rec.ss_enrol_ind);
2405 p_usec_rec.owner_org_unit_cd := trim(p_usec_rec.owner_org_unit_cd);
2406 p_usec_rec.attendance_required_ind := trim(p_usec_rec.attendance_required_ind);
2407 p_usec_rec.reserved_seating_allowed := trim(p_usec_rec.reserved_seating_allowed);
2408 p_usec_rec.special_permission_ind := trim(p_usec_rec.special_permission_ind);
2409 p_usec_rec.ss_display_ind := trim(p_usec_rec.ss_display_ind);
2410 p_usec_rec.rev_account_cd := trim(p_usec_rec.rev_account_cd);
2411 p_usec_rec.anon_unit_grading_ind := trim(p_usec_rec.anon_unit_grading_ind);
2412 p_usec_rec.anon_assess_grading_ind := trim(p_usec_rec.anon_assess_grading_ind);
2413 p_usec_rec.non_std_usec_ind := trim(p_usec_rec.non_std_usec_ind);
2414 p_usec_rec.auditable_ind := trim(p_usec_rec.auditable_ind);
2415 p_usec_rec.audit_permission_ind := trim(p_usec_rec.audit_permission_ind);
2416 p_usec_rec.waitlist_allowed := trim(p_usec_rec.waitlist_allowed);
2417 p_usec_rec.max_students_per_waitlist := trim(p_usec_rec.max_students_per_waitlist);
2418 p_usec_rec.minimum_credit_points := trim(p_usec_rec.minimum_credit_points);
2419 p_usec_rec.maximum_credit_points := trim(p_usec_rec.maximum_credit_points);
2420 p_usec_rec.variable_increment := trim(p_usec_rec.variable_increment);
2421 p_usec_rec.lecture_credit_points := trim(p_usec_rec.lecture_credit_points);
2422 p_usec_rec.lab_credit_points := trim(p_usec_rec.lab_credit_points);
2423 p_usec_rec.other_credit_points := trim(p_usec_rec.other_credit_points);
2424 p_usec_rec.clock_hours := trim(p_usec_rec.clock_hours);
2425 p_usec_rec.work_load_cp_lecture := trim(p_usec_rec.work_load_cp_lecture);
2426 p_usec_rec.work_load_cp_lab := trim(p_usec_rec.work_load_cp_lab);
2427 p_usec_rec.continuing_education_units := trim(p_usec_rec.continuing_education_units);
2428 p_usec_rec.work_load_other := trim(p_usec_rec.work_load_other);
2429 p_usec_rec.contact_hrs_lecture := trim(p_usec_rec.contact_hrs_lecture);
2430 p_usec_rec.contact_hrs_lab := trim(p_usec_rec.contact_hrs_lab);
2431 p_usec_rec.contact_hrs_other := trim(p_usec_rec.contact_hrs_other);
2432 p_usec_rec.non_schd_required_hrs := trim(p_usec_rec.non_schd_required_hrs);
2433 p_usec_rec.exclude_from_max_cp_limit := trim(p_usec_rec.exclude_from_max_cp_limit);
2434 p_usec_rec.claimable_hours := trim(p_usec_rec.claimable_hours);
2435 p_usec_rec.reference_subtitle := trim(p_usec_rec.reference_subtitle);
2436 p_usec_rec.reference_short_title := trim(p_usec_rec.reference_short_title);
2437 p_usec_rec.reference_subtitle_mod_flag := trim(p_usec_rec.reference_subtitle_mod_flag);
2438 p_usec_rec.reference_class_sch_excl_flag := trim(p_usec_rec.reference_class_sch_excl_flag);
2439 p_usec_rec.reference_rec_exclusion_flag := trim(p_usec_rec.reference_rec_exclusion_flag);
2440 p_usec_rec.reference_title := trim(p_usec_rec.reference_title);
2441 p_usec_rec.reference_attribute_category := trim(p_usec_rec.reference_attribute_category);
2442 p_usec_rec.reference_attribute1 := trim(p_usec_rec.reference_attribute1);
2443 p_usec_rec.reference_attribute2 := trim(p_usec_rec.reference_attribute2);
2444 p_usec_rec.reference_attribute3 := trim(p_usec_rec.reference_attribute3);
2445 p_usec_rec.reference_attribute4 := trim(p_usec_rec.reference_attribute4);
2446 p_usec_rec.reference_attribute5 := trim(p_usec_rec.reference_attribute5);
2447 p_usec_rec.reference_attribute6 := trim(p_usec_rec.reference_attribute6);
2448 p_usec_rec.reference_attribute7 := trim(p_usec_rec.reference_attribute7);
2449 p_usec_rec.reference_attribute8 := trim(p_usec_rec.reference_attribute8);
2450 p_usec_rec.reference_attribute9 := trim(p_usec_rec.reference_attribute9);
2451 p_usec_rec.reference_attribute10 := trim(p_usec_rec.reference_attribute10);
2452 p_usec_rec.reference_attribute11 := trim(p_usec_rec.reference_attribute11);
2453 p_usec_rec.reference_attribute12 := trim(p_usec_rec.reference_attribute12);
2454 p_usec_rec.reference_attribute13 := trim(p_usec_rec.reference_attribute13);
2455 p_usec_rec.reference_attribute14 := trim(p_usec_rec.reference_attribute14);
2456 p_usec_rec.reference_attribute15 := trim(p_usec_rec.reference_attribute15);
2457 p_usec_rec.reference_attribute16 := trim(p_usec_rec.reference_attribute16);
2458 p_usec_rec.reference_attribute17 := trim(p_usec_rec.reference_attribute17);
2459 p_usec_rec.reference_attribute18 := trim(p_usec_rec.reference_attribute18);
2460 p_usec_rec.reference_attribute19 := trim(p_usec_rec.reference_attribute19);
2461 p_usec_rec.reference_attribute20 := trim(p_usec_rec.reference_attribute20);
2462 p_usec_rec.enrollment_expected := trim(p_usec_rec.enrollment_expected);
2463 p_usec_rec.enrollment_minimum := trim(p_usec_rec.enrollment_minimum);
2464 p_usec_rec.enrollment_maximum := trim(p_usec_rec.enrollment_maximum);
2465 p_usec_rec.advance_maximum := trim(p_usec_rec.advance_maximum);
2466 p_usec_rec.usec_waitlist_allowed := trim(p_usec_rec.usec_waitlist_allowed);
2467 p_usec_rec.usec_max_students_per_waitlist := trim(p_usec_rec.usec_max_students_per_waitlist);
2468 p_usec_rec.override_enrollment_maximum := trim(p_usec_rec.override_enrollment_maximum);
2469 p_usec_rec.max_auditors_allowed := trim(p_usec_rec.max_auditors_allowed);
2470 p_usec_rec.not_multiple_section_flag := TRIM(p_usec_rec.not_multiple_section_flag);
2471 p_usec_rec.sup_unit_cd:=trim(p_usec_rec.sup_unit_cd);
2472 p_usec_rec.sup_version_number:=trim(p_usec_rec.sup_version_number);
2473 p_usec_rec.sup_teach_cal_alternate_code := trim(p_usec_rec.sup_teach_cal_alternate_code);
2474 p_usec_rec.sup_location_cd := trim(p_usec_rec.sup_location_cd);
2475 p_usec_rec.sup_unit_class := trim(p_usec_rec.sup_unit_class);
2476 p_usec_rec.default_enroll_flag:=trim(p_usec_rec.default_enroll_flag);
2477 p_usec_rec.billing_credit_points := TRIM(p_usec_rec.billing_credit_points);
2478 p_usec_rec.billing_hrs := TRIM(p_usec_rec.billing_hrs);
2479 END trim_values;
2480
2481 -- Private procedures for Unit Offering Records
2482
2483 -- This procedure validates UO parameter values in Unit Section record
2484 PROCEDURE validate_uo_parameters ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
2485 BEGIN
2486 /* Check for Mandatory Fields */
2487 IF p_usec_rec.unit_cd IS NULL OR p_usec_rec.unit_cd = FND_API.G_MISS_CHAR THEN
2488 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
2489 p_usec_rec.status := 'E';
2490 END IF;
2491 IF p_usec_rec.version_number IS NULL OR p_usec_rec.version_number = FND_API.G_MISS_NUM THEN
2492 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
2493 p_usec_rec.status := 'E';
2494 END IF;
2495 IF p_usec_rec.teach_cal_alternate_code IS NULL OR p_usec_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
2496 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
2497 p_usec_rec.status := 'E';
2498 END IF;
2499 END validate_uo_parameters;
2500
2501 -- This procedure will derive values required for Unit Offering.
2502 PROCEDURE validate_uo_derivations ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
2503 l_c_message VARCHAR2(30);
2504 BEGIN
2505 -- Derive Calander Type and Sequence Number
2506 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_rec.teach_cal_alternate_code,
2507 p_cal_type => l_c_cal_type,
2508 p_ci_sequence_number => l_n_seq_num,
2509 p_start_dt => l_d_start_dt,
2510 p_end_dt => l_d_end_dt,
2511 p_return_status => l_c_message );
2512 IF ( l_c_message <> 'SINGLE' ) THEN
2513 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
2514 p_usec_rec.status := 'E';
2515 END IF;
2516 l_c_message := NULL;
2517 END validate_uo_derivations;
2518
2519 -- Validate UO Database Constraints
2520 PROCEDURE validate_uo_db_cons ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
2521 /***********************************************************************************************
2522 Created By :
2523 Date Created By:
2524 Purpose :
2525 Known limitations,enhancements,remarks:
2526 Change History (in reverse chronological order)
2527 Who When What
2528 ********************************************************************************************* */
2529 BEGIN
2530
2531 /* Primary Key Validation */
2532 IF igs_ps_unit_ofr_pkg.get_pk_for_validation ( x_unit_cd => p_usec_rec.unit_cd,
2533 x_version_number => p_usec_rec.version_number,
2534 x_cal_type => l_c_cal_type ) THEN
2535 p_usec_rec.status := 'K';
2536 RETURN;
2537 END IF;
2538
2539 /* Validate Check Constraints */
2540 BEGIN
2541 igs_ps_unit_ofr_pkg.check_constraints ( 'UNIT_CD', p_usec_rec.unit_cd );
2542 EXCEPTION
2543 WHEN OTHERS THEN
2544 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'UNIT_CD', 'LEGACY_TOKENS', TRUE);
2545 p_usec_rec.status := 'E';
2546 END;
2547
2548 BEGIN
2549 igs_ps_unit_ofr_pkg.check_constraints ( 'CAL_TYPE', l_c_cal_type );
2550 EXCEPTION
2551 WHEN OTHERS THEN
2552 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'ALT_CODE', 'LEGACY_TOKENS', TRUE);
2553 p_usec_rec.status := 'E';
2554 END;
2555
2556 /* Validate FK Constraints */
2557 BEGIN
2558 IF NOT igs_ca_type_pkg.get_pk_for_validation ( l_c_cal_type ) THEN
2559 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'CAL_TYPE', 'LEGACY_TOKENS', FALSE);
2560 p_usec_rec.status := 'E';
2561 END IF;
2562 END;
2563
2564 BEGIN
2565 IF NOT igs_ps_unit_ver_pkg.get_pk_for_validation ( p_usec_rec.unit_cd, p_usec_rec.version_number ) THEN
2566 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_VERSION', 'LEGACY_TOKENS', FALSE);
2567 p_usec_rec.status := 'E';
2568 END IF;
2569 END;
2570 END validate_uo_db_cons;
2571
2572 -- Main private procedure to create records of Unit Offering.
2573
2574 PROCEDURE create_uo ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type )
2575 AS
2576 /***********************************************************************************************
2577 Created By :
2578 Date Created By:
2579 Purpose :
2580 Known limitations,enhancements,remarks:
2581 Change History (in reverse chronological order)
2582 Who When What
2583 sommukhe 14-NOV-2005 Bug # 4730169 addded column abort_flag in the insert to igs_ps_unit_ofr
2584 ********************************************************************************************* */
2585 BEGIN
2586
2587 validate_uo_parameters ( p_usec_rec );
2588 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2589 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.status_after_validate_uo_parameters',
2590 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2591 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2592 END IF;
2593
2594 IF ( p_usec_rec.status = 'S' ) THEN
2595 validate_uo_derivations ( p_usec_rec );
2596 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2597 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.status_after_validate_uo_derivations',
2598 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2599 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2600 END IF;
2601 END IF;
2602
2603 IF ( p_usec_rec.status = 'S' ) THEN
2604 validate_uo_db_cons ( p_usec_rec );
2605 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2606 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.status_after_validate_uo_db_cons',
2607 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2608 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2609 END IF;
2610 END IF;
2611
2612 IF ( p_usec_rec.status = 'K' ) THEN
2613 -- If the record is already existing update status as 'Success' and return
2614 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2615 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.record is already existing update status as Success and return',
2616 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2617 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2618 END IF;
2619 p_usec_rec.status := 'S';
2620 RETURN;
2621 END IF;
2622 IF p_calling_context IN ('G','S') THEN
2623 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2624 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.calling_context_G_or_S_return',
2625 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2626 ||p_usec_rec.teach_cal_alternate_code);
2627 END IF;
2628 RETURN ;
2629 ELSE
2630 /* Business validations */
2631 -- Check if the calendar category is 'TEACHING'
2632 IF ( p_usec_rec.status = 'S' ) THEN
2633 IF NOT igs_ps_validate_lgcy_pkg.validate_cal_cat ( l_c_cal_type, 'TEACHING' ) THEN
2634 fnd_message.set_name ( 'IGS', 'IGS_PS_CALTYPE_TEACHING_CAL' );
2635 fnd_msg_pub.add;
2636 p_usec_rec.status := 'E';
2637 END IF;
2638 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2639 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.status_after_Business_validation',
2640 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2641 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2642 END IF;
2643 END IF;
2644
2645 IF ( p_usec_rec.status = 'S' ) THEN
2646 INSERT INTO igs_ps_unit_ofr
2647 (unit_cd,
2648 version_number,
2649 cal_type,
2650 created_by,
2651 creation_date,
2652 last_updated_by,
2653 last_update_date,
2654 last_update_login
2655 )
2656 VALUES
2657 (p_usec_rec.unit_cd,
2658 p_usec_rec.version_number,
2659 l_c_cal_type,
2660 g_n_user_id,
2661 SYSDATE,
2662 g_n_user_id,
2663 SYSDATE,
2664 g_n_login_id
2665 );
2666 p_usec_rec.status := 'S';
2667 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2668 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.Record_Inserted',
2669 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2670 ||p_usec_rec.teach_cal_alternate_code);
2671 END IF;
2672 END IF;
2673 END IF;
2674
2675 END create_uo;
2676
2677 -- Private procedures for Unit Offering Pattern Record
2678 -- This procedure will derive values required for Unit Offering Pattern.
2679 PROCEDURE validate_uop_derivations ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
2680
2681 BEGIN
2682
2683 -- Default waitlist_allowed and max students per waitlist
2684 IF p_usec_rec.waitlist_allowed IS NULL THEN
2685 p_usec_rec.waitlist_allowed := 'N';
2686 END IF;
2687
2688 IF p_usec_rec.max_students_per_waitlist IS NULL THEN
2689 p_usec_rec.max_students_per_waitlist := 0;
2690 END IF;
2691
2692 END validate_uop_derivations;
2693
2694 -- Procedure to validate Database constraints for Unit Offering Pattern Records.
2695 PROCEDURE validate_uop_db_cons ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
2696
2697 CURSOR cur_rowid ( cp_c_unit_cd IN igs_ps_unit_ofr_pat.unit_cd%TYPE,
2698 cp_n_ver_num IN igs_ps_unit_ofr_pat.version_number%TYPE,
2699 cp_c_cal_type IN igs_ps_unit_ofr_pat.cal_type%TYPE,
2700 cp_n_ci_seq_num IN igs_ps_unit_ofr_pat.ci_sequence_number%TYPE) IS
2701 SELECT delete_flag
2702 FROM igs_ps_unit_ofr_pat_all
2703 WHERE unit_cd = cp_c_unit_cd AND
2704 version_number = cp_n_ver_num AND
2705 cal_type = cp_c_cal_type AND
2706 ci_sequence_number = cp_n_ci_seq_num;
2707 rec_rowid cur_rowid%ROWTYPE;
2708
2709 BEGIN
2710
2711 /* Pk validation for IGS_PS_UNIT_OFR_PAT , having delete_flag implementation*/
2712 l_b_uop_deleted := FALSE;
2713 OPEN cur_rowid( p_usec_rec.unit_cd,p_usec_rec.version_number,l_c_cal_type,l_n_seq_num);
2714 FETCH cur_rowid INTO rec_rowid;
2715 IF cur_rowid%FOUND THEN
2716 CLOSE cur_rowid;
2717 IF rec_rowid.delete_flag ='N' THEN
2718 p_usec_rec.status := 'K';
2719 RETURN;
2720 ELSE
2721 l_b_uop_deleted := TRUE;
2722 END IF;
2723 ELSE
2724 CLOSE cur_rowid;
2725 END IF;
2726
2727
2728 /* Check for Foreign Key Validations */
2729
2730 -- Check for existence of Calender Instance
2731 IF NOT igs_ca_inst_pkg.get_pk_for_validation ( x_cal_type => l_c_cal_type,
2732 x_sequence_number => l_n_seq_num ) THEN
2733 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
2734 p_usec_rec.status := 'E';
2735 END IF;
2736
2737 -- Check for existence of Unit Offering
2738 IF NOT igs_ps_unit_ofr_pkg.get_pk_for_validation ( x_unit_cd => p_usec_rec.unit_cd,
2739 x_version_number => p_usec_rec.version_number,
2740 x_cal_type => l_c_cal_type ) THEN
2741 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_OFR_PAT', 'LEGACY_TOKENS', FALSE);
2742 p_usec_rec.status := 'E';
2743 END IF;
2744
2745 -- Check Constraints checking.
2746 IF p_usec_rec.waitlist_allowed IS NOT NULL THEN
2747 BEGIN
2748 igs_ps_unit_ofr_pat_pkg.check_constraints ( 'WAITLIST_ALLOWED', p_usec_rec.waitlist_allowed);
2749 EXCEPTION
2750 WHEN OTHERS THEN
2751 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'WAITLIST_ALLOWED', 'LEGACY_TOKENS', TRUE);
2752 p_usec_rec.status := 'E';
2753 END;
2754 END IF;
2755
2756 IF p_usec_rec.max_students_per_waitlist IS NOT NULL THEN
2757 BEGIN
2758 igs_ps_unit_ofr_pat_pkg.check_constraints ( 'MAX_STUDENTS_PER_WAITLIST', p_usec_rec.max_students_per_waitlist);
2759 EXCEPTION
2760 WHEN OTHERS THEN
2761 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999', 'MAX_STUDENTS_PER_WAITLIST', 'LEGACY_TOKENS', TRUE);
2762 p_usec_rec.status := 'E';
2763 END;
2764 END IF;
2765
2766 END validate_uop_db_cons;
2767
2768 -- Main private procedure to create records of Unit Offering Pattern.
2769
2770 PROCEDURE create_uop ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type )
2771 AS
2772 BEGIN
2773
2774 validate_uop_derivations ( p_usec_rec );
2775 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2776 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.status_after_validate_uop_parameters',
2777 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2778 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2779 END IF;
2780
2781 IF ( p_usec_rec.status = 'S' ) THEN
2782 validate_uop_db_cons ( p_usec_rec );
2783 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2784 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.status_after_validate_uop_db_cons',
2785 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2786 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2787 END IF;
2788 END IF;
2789
2790
2791 IF ( p_usec_rec.status = 'K' ) THEN
2792 -- If the record is already existing update status as 'Success' and return
2793 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2794 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.record is already existing update status as Success and return',
2795 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2796 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2797 END IF;
2798 p_usec_rec.status := 'S';
2799 RETURN;
2800 END IF;
2801 IF p_calling_context IN ('G','S') THEN
2802 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2803 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.calling_context_G_or_S_return',
2804 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2805 ||p_usec_rec.teach_cal_alternate_code);
2806 END IF;
2807 RETURN ;
2808 ELSE
2809 /* Business validations */
2810 IF ( p_usec_rec.status = 'S' ) THEN
2811
2812 -- Check if waitlist_allowed is 'Y' then check if waitlisting is allowed at organization level.
2813 IF p_usec_rec.waitlist_allowed = 'Y' THEN
2814 IF NOT igs_ps_validate_lgcy_pkg.validate_waitlist_allowed ( l_c_cal_type, l_n_seq_num ) THEN
2815 fnd_message.set_name ( 'IGS', 'IGS_EN_WAIT_NOT_ALW' );
2816 fnd_msg_pub.add;
2817 p_usec_rec.status := 'E';
2818 END IF;
2819 ELSE
2820 -- default max_students_per_waitlist to 0
2821 p_usec_rec.max_students_per_waitlist := 0;
2822 END IF;
2823
2824 -- If Waitlist allowed is Yes and Max Students per waitlist is Zero then log a warning.
2825 IF ( p_usec_rec.waitlist_allowed = 'Y' AND p_usec_rec.max_students_per_waitlist = 0 ) THEN
2826 fnd_message.set_name ( 'IGS', 'IGS_PS_LGCY_MAX_STD_GT_0' );
2827 fnd_msg_pub.add;
2828 p_usec_rec.status := 'W';
2829 END IF;
2830
2831 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2832 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.status_after_Business_validation',
2833 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2834 ||p_usec_rec.teach_cal_alternate_code||' '||'Status:'||p_usec_rec.status);
2835 END IF;
2836
2837 END IF;
2838
2839 IF ( p_usec_rec.status = 'S' ) THEN
2840 IF l_b_uop_deleted THEN
2841 UPDATE igs_ps_unit_ofr_pat_all
2842 SET
2843 waitlist_allowed = p_usec_rec.waitlist_allowed,
2844 max_students_per_waitlist = p_usec_rec.max_students_per_waitlist,
2845 delete_flag = 'N',
2846 created_by = g_n_user_id,
2847 creation_date = SYSDATE,
2848 last_updated_by = g_n_user_id,
2849 last_update_date = SYSDATE,
2850 last_update_login = g_n_login_id
2851 WHERE unit_cd = p_usec_rec.unit_cd
2852 AND version_number = p_usec_rec.version_number
2853 AND cal_type = l_c_cal_type
2854 AND ci_sequence_number = l_n_seq_num;
2855 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2856 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.Record_updated_when_uop_deleted',
2857 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2858 ||p_usec_rec.teach_cal_alternate_code);
2859 END IF;
2860 ELSE
2861 INSERT INTO igs_ps_unit_ofr_pat_all
2862 (unit_cd,
2863 version_number,
2864 cal_type,
2865 ci_sequence_number,
2866 ci_start_dt,
2867 ci_end_dt,
2868 waitlist_allowed,
2869 max_students_per_waitlist,
2870 delete_flag,
2871 abort_flag,
2872 created_by,
2873 creation_date,
2874 last_updated_by,
2875 last_update_date,
2876 last_update_login
2877 )
2878 VALUES
2879 (p_usec_rec.unit_cd,
2880 p_usec_rec.version_number,
2881 l_c_cal_type,
2882 l_n_seq_num,
2883 l_d_start_dt,
2884 l_d_end_dt,
2885 p_usec_rec.waitlist_allowed,
2886 p_usec_rec.max_students_per_waitlist,
2887 'N',
2888 'N',
2889 g_n_user_id,
2890 SYSDATE,
2891 g_n_user_id,
2892 SYSDATE,
2893 g_n_login_id
2894 );
2895
2896 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2897 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.Record_Inserted',
2898 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
2899 ||p_usec_rec.teach_cal_alternate_code);
2900 END IF;
2901 END IF;
2902 p_usec_rec.status := 'S';
2903 END IF;
2904 END IF;
2905 END create_uop;
2906
2907 -- Private procedures for Unit Offering Option Records
2908
2909 -- This procedure validates UOO parameter values in Unit Section record
2910 PROCEDURE validate_uoo_parameters ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
2911 BEGIN
2912
2913 /* Check for Mandatory Fields */
2914 IF p_usec_rec.location_cd IS NULL OR p_usec_rec.location_cd = FND_API.G_MISS_CHAR THEN
2915 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
2916 p_usec_rec.status := 'E';
2917 END IF;
2918 IF p_usec_rec.unit_class IS NULL OR p_usec_rec.unit_class = FND_API.G_MISS_CHAR THEN
2919 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
2920 p_usec_rec.status := 'E';
2921 END IF;
2922
2923 END validate_uoo_parameters;
2924
2925 -- This procedure will derive values required for Unit Offering Option.
2926 PROCEDURE validate_uoo_derivations ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
2927
2928 /***********************************************************************************************
2929 Created By :
2930 Date Created By:
2931 Purpose :
2932 Known limitations,enhancements,remarks:
2933 Change History (in reverse chronological order)
2934 Who When What
2935 sarakshi 11-Sep-2003 Enh#3052452,dervied teh value of sup_uoo_id.
2936 sarakshi 22-Aug-2003 Bug#304509, defaulting the value of Not Multiple Unit Section Flag
2937 ********************************************************************************************* */
2938 l_c_sup_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
2939 l_n_sup_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
2940 l_d_sup_start_dt igs_ca_inst_all.start_dt%TYPE;
2941 l_d_sup_end_dt igs_ca_inst_all.end_dt%TYPE;
2942 l_c_message VARCHAR2(30);
2943
2944 BEGIN
2945
2946
2947 --Either all column values of sup_unit_cd,sup_version_number,sup_teach_cal_alternate_code,sup_location_cd,sup_unit_class neds to be passed or none
2948 l_n_sup_uoo_id :=NULL;
2949 l_c_relation_type := NULL;
2950
2951 IF (p_usec_rec.sup_unit_cd IS NOT NULL OR p_usec_rec.sup_version_number IS NOT NULL OR
2952 p_usec_rec.sup_teach_cal_alternate_code IS NOT NULL OR p_usec_rec.sup_location_cd IS NOT NULL OR p_usec_rec.sup_unit_class IS NOT NULL)
2953 AND
2954 (p_usec_rec.sup_unit_cd IS NULL OR p_usec_rec.sup_version_number IS NULL OR
2955 p_usec_rec.sup_teach_cal_alternate_code IS NULL OR p_usec_rec.sup_location_cd IS NULL OR
2956 p_usec_rec.sup_unit_class IS NULL) THEN
2957
2958 fnd_message.set_name ( 'IGS', 'IGS_PS_NO_SUFF_VAL_SUP');
2959 fnd_msg_pub.add;
2960 p_usec_rec.status := 'E';
2961 ELSIF p_usec_rec.sup_unit_cd IS NOT NULL THEN
2962
2963
2964 -- Derive Calander Type and Sequence Number for sup alternate code
2965 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_rec.sup_teach_cal_alternate_code,
2966 p_cal_type => l_c_sup_cal_type,
2967 p_ci_sequence_number => l_n_sup_seq_num,
2968 p_start_dt => l_d_sup_start_dt,
2969 p_end_dt => l_d_sup_end_dt,
2970 p_return_status => l_c_message );
2971 IF ( l_c_message <> 'SINGLE' ) THEN
2972 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'SUP_TEACH_CAL_ALT_CD', 'LEGACY_TOKENS', FALSE);
2973 p_usec_rec.status := 'E';
2974 END IF;
2975
2976
2977 -- Derive sup_uoo_id
2978 l_c_message := NULL;
2979 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_rec.sup_unit_cd,
2980 p_ver_num => p_usec_rec.sup_version_number,
2981 p_cal_type => l_c_sup_cal_type,
2982 p_seq_num => l_n_sup_seq_num,
2983 p_loc_cd => p_usec_rec.sup_location_cd,
2984 p_unit_class => p_usec_rec.sup_unit_class,
2985 p_uoo_id => l_n_sup_uoo_id,
2986 p_message => l_c_message );
2987 IF ( l_c_message IS NOT NULL ) THEN
2988 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
2989 p_usec_rec.status := 'E';
2990 END IF;
2991
2992 END IF;
2993
2994 END validate_uoo_derivations;
2995
2996 -- Procedure to validate Database constraints for Unit Offering Option Records.
2997 PROCEDURE validate_uoo_db_cons ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type,p_insert_update VARCHAR2 ) AS
2998 /***********************************************************************************************
2999 Created By :
3000 Date Created By:
3001 Purpose :
3002 Known limitations,enhancements,remarks:
3003 Change History (in reverse chronological order)
3004 Who When What
3005 sarakshi 11-Sep-2003 Enh#3052452, Added call to igs_ps_unit_ofr_opt_pkg.check_constraints
3006 for validating default_enroll_flag.
3007 vvutukur 19-Aug-2003 Enh#3045069.PSP Enh Build. Added call to igs_ps_unit_ofr_opt_pkg.check_constraints
3008 for validating not_multiple_section_flag.
3009 ********************************************************************************************* */
3010 BEGIN
3011
3012 IF p_insert_update = 'I' THEN
3013 /* Check for Unique Key Validation */
3014 IF igs_ps_unit_ofr_opt_pkg.get_pk_for_validation ( x_unit_cd => p_usec_rec.unit_cd,
3015 x_version_number => p_usec_rec.version_number,
3016 x_cal_type => l_c_cal_type,
3017 x_ci_sequence_number => l_n_seq_num,
3018 x_location_cd => p_usec_rec.location_cd,
3019 x_unit_class => p_usec_rec.unit_class ) THEN
3020 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
3021 p_usec_rec.status := 'W';
3022 RETURN;
3023 END IF;
3024 END IF;
3025
3026 /* Check for Check Constraints */
3027
3028 --Validate whether the column not_multiple_section_flag has value other than 'Y' or 'N'.
3029 BEGIN
3030 igs_ps_unit_ofr_opt_pkg.check_constraints('NOT_MULTIPLE_SECTION_FLAG',p_usec_rec.not_multiple_section_flag);
3031 EXCEPTION
3032 WHEN OTHERS THEN
3033 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N',
3034 'NOT_MULTIPLE_SECTION_FLAG',
3035 'LEGACY_TOKENS',
3036 TRUE);
3037 p_usec_rec.status :='E';
3038 END;
3039
3040 -- Unit Class should be in Upper Case
3041 BEGIN
3042 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'UNIT_CLASS', p_usec_rec.unit_class );
3043 EXCEPTION
3044 WHEN OTHERS THEN
3045 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'UNIT_CLASS', 'LEGACY_TOKENS', TRUE);
3046 p_usec_rec.status := 'E';
3047 END;
3048
3049 --call number cannot be negative
3050 IF p_usec_rec.call_number IS NOT NULL AND p_usec_rec.call_number < 1 THEN
3051 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'CALL_NUMBER', 'LEGACY_TOKENS', FALSE);
3052 p_usec_rec.status := 'E';
3053 END IF;
3054
3055 BEGIN
3056 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'GRADING_SCHEMA_CD', p_usec_rec.grading_schema_cd );
3057 EXCEPTION
3058 WHEN OTHERS THEN
3059 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'USEC_GRADING_SCHM_CD', 'LEGACY_TOKENS', TRUE);
3060 p_usec_rec.status := 'E';
3061 END;
3062
3063 BEGIN
3064 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'LOCATION_CD', p_usec_rec.location_cd );
3065 EXCEPTION
3066 WHEN OTHERS THEN
3067 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'LOCATION_CD', 'LEGACY_TOKENS', TRUE);
3068 p_usec_rec.status := 'E';
3069 END;
3070
3071 BEGIN
3072 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'UNIT_QUOTA', p_usec_rec.unit_quota );
3073 EXCEPTION
3074 WHEN OTHERS THEN
3075 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999', 'UNIT_QUOTA', 'LEGACY_TOKENS', TRUE);
3076 p_usec_rec.status := 'E';
3077 END;
3078
3079 IF p_usec_rec.unit_quota_reserved_places IS NOT NULL THEN
3080 BEGIN
3081 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'UNIT_QUOTA_RESERVED_PLACES', p_usec_rec.unit_quota_reserved_places );
3082 EXCEPTION
3083 WHEN OTHERS THEN
3084 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999', 'UNIT_QUOTA_RESERVED_PLACES', 'LEGACY_TOKENS', TRUE);
3085 p_usec_rec.status := 'E';
3086 END;
3087 END IF;
3088
3089 BEGIN
3090 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'CI_SEQUENCE_NUMBER', l_n_seq_num );
3091 EXCEPTION
3092 WHEN OTHERS THEN
3093 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999', 'CAL_SEQ_NUM', 'LEGACY_TOKENS', TRUE);
3094 p_usec_rec.status := 'E';
3095 END;
3096
3097 BEGIN
3098 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'GRADING_SCHEMA_PRCDNCE_IND', p_usec_rec.grading_schema_prcdnce_ind );
3099 EXCEPTION
3100 WHEN OTHERS THEN
3101 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'GRADING_SCHEMA_PRCDNCE_IND', 'LEGACY_TOKENS', TRUE);
3102 p_usec_rec.status := 'E';
3103 END;
3104
3105 BEGIN
3106 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'IVRS_AVAILABLE_IND', p_usec_rec.ivrs_available_ind );
3107 EXCEPTION
3108 WHEN OTHERS THEN
3109 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'IVRS_AVAILABLE_IND', 'LEGACY_TOKENS', TRUE);
3110 p_usec_rec.status := 'E';
3111 END;
3112
3113 BEGIN
3114 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'OFFERED_IND', p_usec_rec.offered_ind );
3115 EXCEPTION
3116 WHEN OTHERS THEN
3117 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'OFFERED_IND', 'LEGACY_TOKENS', TRUE);
3118 p_usec_rec.status := 'E';
3119 END;
3120
3121 BEGIN
3122 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'NON_STD_USEC_IND', p_usec_rec.non_std_usec_ind );
3123 EXCEPTION
3124 WHEN OTHERS THEN
3125 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'NON_STD_USEC_IND', 'LEGACY_TOKENS', TRUE);
3126 p_usec_rec.status := 'E';
3127 END;
3128
3129 BEGIN
3130 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'AUDITABLE_IND', p_usec_rec.auditable_ind );
3131 EXCEPTION
3132 WHEN OTHERS THEN
3133 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'AUDITABLE_IND', 'LEGACY_TOKENS', TRUE);
3134 p_usec_rec.status := 'E';
3135 END;
3136
3137 BEGIN
3138 igs_ps_unit_ofr_opt_pkg.check_constraints ( 'AUDIT_PERMISSION_IND', p_usec_rec.audit_permission_ind );
3139 EXCEPTION
3140 WHEN OTHERS THEN
3141 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'AUDIT_PERMISSION_IND', 'LEGACY_TOKENS', TRUE);
3142 p_usec_rec.status := 'E';
3143 END;
3144
3145 -- Check whether Owner Organization Unit Code is valid, if it is passed.
3146 IF ( p_usec_rec.owner_org_unit_cd IS NOT NULL ) THEN
3147 IF NOT igs_ps_validate_lgcy_pkg.validate_org_unit_cd ( p_usec_rec.owner_org_unit_cd, 'UNIT_SECTION_LGCY' ) THEN
3148 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'ORG_UNIT_CD', 'LEGACY_TOKENS', FALSE);
3149 p_usec_rec.status := 'E';
3150 END IF;
3151 END IF;
3152
3153 -- Check for existence of Revenue Account Code, if passed
3154 IF ( p_usec_rec.rev_account_cd IS NOT NULL ) THEN
3155 IF NOT igs_fi_acc_pkg.get_pk_for_validation ( x_account_cd => p_usec_rec.rev_account_cd ) THEN
3156 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'REV_ACC_CD', 'LEGACY_TOKENS', FALSE);
3157 p_usec_rec.status := 'E';
3158 END IF;
3159 END IF;
3160
3161 /* Check for Foreign Key Validations */
3162
3163 -- Check for existence of Unit Offering Pattern
3164 IF NOT igs_ps_unit_ofr_pat_pkg.get_pk_for_validation ( x_unit_cd => p_usec_rec.unit_cd,
3165 x_version_number => p_usec_rec.version_number,
3166 x_cal_type => l_c_cal_type,
3167 x_ci_sequence_number => l_n_seq_num ) THEN
3168 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_OFR_PAT', 'LEGACY_TOKENS', FALSE);
3169 p_usec_rec.status := 'E';
3170 END IF;
3171
3172 -- Check for existence of Location Code
3173 IF NOT igs_ad_location_pkg.get_pk_for_validation ( p_usec_rec.location_cd ) THEN
3174 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
3175 p_usec_rec.status := 'E';
3176 END IF;
3177
3178 -- Check for existence of Unit Status
3179 IF NOT igs_as_unit_class_pkg.get_pk_for_validation ( p_usec_rec.unit_class ) THEN
3180 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
3181 p_usec_rec.status := 'E';
3182 END IF;
3183
3184 -- Check for existence of Grading Schema
3185 IF NOT igs_as_grd_schema_pkg.get_pk_for_validation ( p_usec_rec.grading_schema_cd, p_usec_rec.gs_version_number ) THEN
3186 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'GRADINGS_SCHEMA_CD', 'LEGACY_TOKENS', FALSE);
3187 p_usec_rec.status := 'E';
3188 END IF;
3189
3190 -- Check the existence of Unit Contact Number, if passed
3191 IF p_usec_rec.unit_contact_number IS NOT NULL THEN
3192 IF NOT igs_pe_person_pkg.get_pk_for_validation ( l_n_unit_contact_id ) THEN
3193 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_CONT_NUM', 'LEGACY_TOKENS', FALSE);
3194 p_usec_rec.status := 'E';
3195 END IF;
3196 END IF;
3197
3198 -- Check the Unit Section Status
3199 IF NOT igs_lookups_view_pkg.get_pk_for_validation('UNIT_SECTION_STATUS',p_usec_rec.unit_section_status) THEN
3200 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'USEC_STATUS', 'LEGACY_TOKENS', FALSE);
3201 p_usec_rec.status := 'E';
3202 END IF;
3203
3204 --Validate default enroll flag
3205 BEGIN
3206 igs_ps_unit_ofr_opt_pkg.check_constraints('DEFAULT_ENROLL_FLAG',p_usec_rec.default_enroll_flag);
3207 EXCEPTION
3208 WHEN OTHERS THEN
3209 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','DEFAULT_ENROLL_FLAG','LEGACY_TOKENS',TRUE);
3210 p_usec_rec.status :='E';
3211 END;
3212
3213
3214 END validate_uoo_db_cons;
3215
3216
3217
3218 -- Main private procedure to create records of Unit Offering Option.
3219
3220 PROCEDURE create_uoo ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type )
3221 /***********************************************************************************************
3222 Created By :
3223 Date Created By:
3224 Purpose :
3225 Known limitations,enhancements,remarks:
3226 Change History (in reverse chronological order)
3227 Who When What
3228 sarakshi 31-Aug-2005 Bug#4543368, while creating cerdit points and limits record, checking whether all the values are null, if all
3229 the values are null then do no proceed with the insert/update for these two tables.
3230 sarakshi 12-Apr-2004 bug#3555871, Added code to populate the call_number field if teh profile option is AUTO
3231 sarakshi 11-Sep-2003 Enh#3052452,Added new column sup_uoo_id,relation_type,default_enroll_flag to the insert statement.
3232 Also updated the superior unit section record.
3233 vvutukur 05-Aug-2003 Enh#3045069.PSP Enh Build. Added new column not_multiple_section_flag while insertion.
3234 ********************************************************************************************* */
3235 AS
3236
3237 CURSOR c_usec_check(cp_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE) IS
3238 SELECT 'X'
3239 FROM igs_ps_unit_ofr_opt_all
3240 WHERE uoo_id=cp_uoo_id
3241 AND relation_type='SUPERIOR';
3242 l_c_var VARCHAR2(1);
3243
3244 CURSOR cur_int_pat(cp_unit_cd IN VARCHAR2,
3245 cp_version_number IN NUMBER,
3246 cp_cal_type IN VARCHAR2,
3247 cp_seq_num IN NUMBER) IS
3248 SELECT *
3249 FROM igs_ps_sch_pat_int
3250 WHERE unit_cd=cp_unit_cd
3251 AND version_number=cp_version_number
3252 AND calendar_type =cp_cal_type
3253 AND sequence_number= cp_seq_num
3254 AND abort_flag='N';
3255 l_cur_int_pat cur_int_pat%ROWTYPE;
3256
3257 CURSOR cur_int_usec(cp_unit_cd IN VARCHAR2,
3258 cp_version_number IN NUMBER,
3259 cp_cal_type IN VARCHAR2,
3260 cp_seq_num IN NUMBER,
3261 cp_location_cd IN VARCHAR2,
3262 cp_unit_class IN VARCHAR2) IS
3263 SELECT *
3264 FROM igs_ps_sch_usec_int_all
3265 WHERE unit_cd=cp_unit_cd
3266 AND version_number=cp_version_number
3267 AND calendar_type =cp_cal_type
3268 AND sequence_number= cp_seq_num
3269 AND location_cd=cp_location_cd
3270 AND unit_class=cp_unit_class
3271 AND abort_flag='N';
3272 l_cur_int_usec cur_int_usec%ROWTYPE;
3273
3274
3275 FUNCTION check_insert_update ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type) RETURN VARCHAR2 IS
3276 CURSOR c_usec(cp_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE,cp_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE) IS
3277 SELECT 'X'
3278 FROM igs_ps_unit_ofr_opt_all
3279 WHERE unit_cd = p_usec_rec.unit_cd
3280 AND version_number = p_usec_rec.version_number
3281 AND ci_sequence_number =cp_seq_num
3282 AND unit_class = p_usec_rec.unit_class
3283 AND location_cd = p_usec_rec.location_cd
3284 AND cal_type = cp_cal_type ;
3285 c_usec_rec c_usec%ROWTYPE;
3286
3287 BEGIN
3288 OPEN c_usec( l_c_cal_type,l_n_seq_num);
3289 FETCH c_usec INTO c_usec_rec;
3290 IF c_usec%NOTFOUND THEN
3291 CLOSE c_usec;
3292 RETURN 'I';
3293 ELSE
3294 CLOSE c_usec;
3295 RETURN 'U';
3296 END IF;
3297
3298 END check_insert_update;
3299
3300 PROCEDURE Assign_default( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type,p_insert_update VARCHAR2 ) AS
3301
3302 CURSOR c_usec(cp_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE,cp_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE) IS
3303 SELECT *
3304 FROM igs_ps_unit_ofr_opt_all
3305 WHERE unit_cd = p_usec_rec.unit_cd
3306 AND version_number = p_usec_rec.version_number
3307 AND ci_sequence_number =cp_seq_num
3308 AND unit_class = p_usec_rec.unit_class
3309 AND location_cd = p_usec_rec.location_cd
3310 AND cal_type = cp_cal_type ;
3311
3312 CURSOR c_audit_info ( cp_unit_cd igs_ps_unit_ver_all.unit_cd%TYPE,
3313 cp_version_number igs_ps_unit_ver_all.version_number%TYPE )IS
3314 SELECT auditable_ind, audit_permission_ind
3315 FROM igs_ps_unit_ver_all
3316 WHERE unit_cd = cp_unit_cd
3317 AND version_number = cp_version_number;
3318
3319 CURSOR c_grd_sch ( cp_unit_cd igs_ps_unit_ver_all.unit_cd%TYPE,
3320 cp_version_number igs_ps_unit_ver_all.version_number%TYPE )IS
3321 SELECT grading_schema_code, grd_schm_version_number
3322 FROM igs_ps_unit_grd_schm
3323 WHERE unit_code = cp_unit_cd
3324 AND unit_version_number = cp_version_number
3325 AND default_flag = 'Y';
3326
3327 CURSOR c_ivr_enrol_ind ( cp_unit_cd igs_ps_unit_ver_all.unit_cd%TYPE,
3328 cp_version_number igs_ps_unit_ver_all.version_number%TYPE )IS
3329 SELECT ivr_enrol_ind
3330 FROM igs_ps_unit_ver_all
3331 WHERE unit_cd = cp_unit_cd
3332 AND version_number = cp_version_number;
3333
3334 CURSOR c_ss_enrol_ind ( cp_unit_cd igs_ps_unit_ver_all.unit_cd%TYPE,
3335 cp_version_number igs_ps_unit_ver_all.version_number%TYPE )IS
3336 SELECT ss_enrol_ind
3337 FROM igs_ps_unit_ver_all
3338 WHERE unit_cd = cp_unit_cd
3339 AND version_number = cp_version_number;
3340
3341 CURSOR c_muiltiple_section_flag ( cp_unit_cd igs_ps_unit_ver_all.unit_cd%TYPE,
3342 cp_version_number igs_ps_unit_ver_all.version_number%TYPE )IS
3343 SELECT same_teaching_period
3344 FROM igs_ps_unit_ver_all
3345 WHERE unit_cd = cp_unit_cd
3346 AND version_number = cp_version_number;
3347
3348 CURSOR c_org_unit_cd ( cp_unit_cd igs_ps_unit_ver_all.unit_cd%TYPE,
3349 cp_version_number igs_ps_unit_ver_all.version_number%TYPE )IS
3350 SELECT owner_org_unit_cd
3351 FROM igs_ps_unit_ver_all
3352 WHERE unit_cd = cp_unit_cd
3353 AND version_number = cp_version_number;
3354
3355 c_usec_rec c_usec%ROWTYPE;
3356 l_same_teaching_period igs_ps_unit_ver_all.same_teaching_period%TYPE;
3357
3358 BEGIN
3359
3360 IF p_insert_update = 'I' THEN
3361 IF p_usec_rec.offered_ind IS NULL THEN
3362 p_usec_rec.offered_ind := 'Y';
3363 END IF;
3364
3365 IF p_usec_rec.state_financial_aid IS NULL THEN
3366 p_usec_rec.state_financial_aid := 'N';
3367 END IF;
3368
3369 IF p_usec_rec.grading_schema_prcdnce_ind IS NULL THEN
3370 p_usec_rec.grading_schema_prcdnce_ind := 'N';
3371 END IF;
3372
3373 IF p_usec_rec.federal_financial_aid IS NULL THEN
3374 p_usec_rec.federal_financial_aid := 'N';
3375 END IF;
3376
3377 IF p_usec_rec.ss_enrol_ind IS NULL THEN
3378 p_usec_rec.ss_enrol_ind := 'N';
3379 END IF;
3380
3381 IF p_usec_rec.attendance_required_ind IS NULL THEN
3382 p_usec_rec.attendance_required_ind := 'N';
3383 END IF;
3384
3385 IF p_usec_rec.reserved_seating_allowed IS NULL THEN
3386 p_usec_rec.reserved_seating_allowed := 'Y';
3387 END IF;
3388
3389 IF p_usec_rec.special_permission_ind IS NULL THEN
3390 p_usec_rec.special_permission_ind := 'N';
3391 END IF;
3392
3393 IF p_usec_rec.ss_display_ind IS NULL THEN
3394 p_usec_rec.ss_display_ind := 'N';
3395 END IF;
3396
3397 IF p_usec_rec.anon_unit_grading_ind IS NULL THEN
3398 p_usec_rec.anon_unit_grading_ind := 'N';
3399 END IF;
3400
3401 IF p_usec_rec.anon_assess_grading_ind IS NULL THEN
3402 p_usec_rec.anon_assess_grading_ind := 'N';
3403 END IF;
3404
3405 -- If ivrs_available_ind is null then default it to unit level
3406 IF p_usec_rec.ivrs_available_ind IS NULL THEN
3407 OPEN c_ivr_enrol_ind ( p_usec_rec.unit_cd, p_usec_rec.version_number );
3408 FETCH c_ivr_enrol_ind INTO p_usec_rec.ivrs_available_ind;
3409 CLOSE c_ivr_enrol_ind;
3410 END IF;
3411
3412 -- If ss_enrol_ind is null then default it to unit level
3413 IF p_usec_rec.ss_enrol_ind IS NULL THEN
3414 OPEN c_ss_enrol_ind ( p_usec_rec.unit_cd, p_usec_rec.version_number );
3415 FETCH c_ss_enrol_ind INTO p_usec_rec.ss_enrol_ind;
3416 CLOSE c_ivr_enrol_ind;
3417 END IF;
3418
3419 -- If unit contact number is not null the derive person id associated with it.
3420 IF p_usec_rec.unit_contact_number IS NOT NULL THEN
3421 igs_ps_validate_lgcy_pkg.get_party_id( p_usec_rec.unit_contact_number,l_n_unit_contact_id );
3422 IF l_n_unit_contact_id IS NULL THEN
3423 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'UNIT_CONT_NUM', 'LEGACY_TOKENS', FALSE);
3424 p_usec_rec.status := 'E';
3425 END IF;
3426 END IF;
3427
3428 -- If auditable_ind and audit_permission_ind are not passed then derive thier unit level values
3429 IF p_usec_rec.auditable_ind IS NULL AND p_usec_rec.audit_permission_ind IS NULL THEN
3430 OPEN c_audit_info ( p_usec_rec.unit_cd, p_usec_rec.version_number );
3431 FETCH c_audit_info INTO p_usec_rec.auditable_ind, p_usec_rec.audit_permission_ind;
3432 CLOSE c_audit_info;
3433 END IF;
3434
3435 -- Derive unit level default grading schema and version number if they are not passed at unit section level
3436 IF ( p_usec_rec.grading_schema_cd IS NULL AND p_usec_rec.gs_version_number IS NULL ) THEN
3437 OPEN c_grd_sch ( p_usec_rec.unit_cd, p_usec_rec.version_number );
3438 FETCH c_grd_sch into p_usec_rec.grading_schema_cd, p_usec_rec.gs_version_number;
3439 IF ( c_grd_sch%NOTFOUND ) THEN
3440 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'GRADINGS_SCHEMA_CD', 'LEGACY_TOKENS', FALSE);
3441 p_usec_rec.status := 'E';
3442 END IF;
3443 CLOSE c_grd_sch;
3444 END IF;
3445
3446 --Derive the value of Multiple Unit sections flag
3447 IF p_usec_rec.not_multiple_section_flag IS NULL THEN
3448 OPEN c_muiltiple_section_flag( p_usec_rec.unit_cd, p_usec_rec.version_number );
3449 FETCH c_muiltiple_section_flag INTO l_same_teaching_period;
3450 CLOSE c_muiltiple_section_flag;
3451 IF l_same_teaching_period = 'Y' THEN
3452 p_usec_rec.not_multiple_section_flag := 'N';
3453 ELSE
3454 p_usec_rec.not_multiple_section_flag := 'Y';
3455 END IF;
3456 END IF;
3457
3458 --Default the value of default_enrol_flag to N if not passed
3459 IF p_usec_rec.default_enroll_flag IS NULL THEN
3460 p_usec_rec.default_enroll_flag := 'N';
3461 END IF;
3462
3463 -- Derive Organization Unit Code from unit level if it is not provided at unit section.
3464 IF p_usec_rec.owner_org_unit_cd IS NULL THEN
3465 OPEN c_org_unit_cd ( p_usec_rec.unit_cd, p_usec_rec.version_number );
3466 FETCH c_org_unit_cd INTO l_c_org_unit_cd;
3467 CLOSE c_org_unit_cd;
3468 END IF;
3469
3470 END IF;
3471
3472 IF p_insert_update = 'U' THEN
3473 OPEN c_usec( l_c_cal_type,l_n_seq_num);
3474 FETCH c_usec INTO c_usec_rec;
3475 CLOSE c_usec;
3476
3477 IF p_usec_rec.ivrs_available_ind IS NULL THEN
3478 p_usec_rec.ivrs_available_ind := c_usec_rec.ivrs_available_ind ;
3479 ELSIF p_usec_rec.ivrs_available_ind = FND_API.G_MISS_CHAR THEN
3480 p_usec_rec.ivrs_available_ind :='N';
3481 END IF;
3482
3483 IF p_usec_rec.call_number IS NULL THEN
3484 p_usec_rec.call_number := c_usec_rec.call_number;
3485 ELSIF p_usec_rec.call_number = FND_API.G_MISS_NUM THEN
3486 IF fnd_profile.value('IGS_PS_CALL_NUMBER') = 'USER_DEFINED' THEN
3487 p_usec_rec.call_number :=NULL;
3488 ELSE
3489 p_usec_rec.call_number := c_usec_rec.call_number;
3490 END IF;
3491 ELSE
3492 IF (fnd_profile.value('IGS_PS_CALL_NUMBER') = 'AUTO' AND p_usec_rec.call_number IS NOT NULL) THEN
3493
3494 -- Profile is AUTO and values is passed to call_number so raise error
3495 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'CALL_NUMBER', 'LEGACY_TOKENS', FALSE);
3496 p_usec_rec.status := 'E';
3497 END IF;
3498 END IF;
3499
3500 IF p_usec_rec.unit_section_status IS NULL THEN
3501 p_usec_rec.unit_section_status :=c_usec_rec.unit_section_status;
3502 ELSIF p_usec_rec.unit_section_status = FND_API.G_MISS_CHAR THEN
3503 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'USEC_STATUS', 'LEGACY_TOKENS', FALSE);
3504 p_usec_rec.status := 'E';
3505 END IF;
3506
3507 IF p_usec_rec.unit_section_start_date IS NULL THEN
3508 p_usec_rec.unit_section_start_date :=c_usec_rec.unit_section_start_date;
3509 ELSIF p_usec_rec.unit_section_start_date = FND_API.G_MISS_DATE THEN
3510 p_usec_rec.unit_section_start_date :=NULL;
3511 END IF;
3512
3513 IF p_usec_rec.unit_section_end_date IS NULL THEN
3514 p_usec_rec.unit_section_end_date := c_usec_rec.unit_section_end_date;
3515 ELSIF p_usec_rec.unit_section_end_date = FND_API.G_MISS_DATE THEN
3516 p_usec_rec.unit_section_end_date :=NULL;
3517 END IF;
3518
3519 IF p_usec_rec.offered_ind IS NULL THEN
3520 p_usec_rec.offered_ind := c_usec_rec.offered_ind;
3521 ELSIF p_usec_rec.offered_ind = FND_API.G_MISS_CHAR THEN
3522 p_usec_rec.offered_ind :='N';
3523 END IF;
3524
3525 IF p_usec_rec.state_financial_aid IS NULL THEN
3526 p_usec_rec.state_financial_aid := c_usec_rec.state_financial_aid;
3527 ELSIF p_usec_rec.state_financial_aid = FND_API.G_MISS_CHAR THEN
3528 p_usec_rec.state_financial_aid :='N';
3529 END IF;
3530
3531 IF p_usec_rec.grading_schema_prcdnce_ind IS NULL THEN
3532 p_usec_rec.grading_schema_prcdnce_ind := c_usec_rec.grading_schema_prcdnce_ind;
3533 ELSIF p_usec_rec.grading_schema_prcdnce_ind = FND_API.G_MISS_CHAR THEN
3534 p_usec_rec.grading_schema_prcdnce_ind :='N';
3535 END IF;
3536
3537 IF p_usec_rec.federal_financial_aid IS NULL THEN
3538 p_usec_rec.federal_financial_aid := c_usec_rec.federal_financial_aid;
3539 ELSIF p_usec_rec.federal_financial_aid = FND_API.G_MISS_CHAR THEN
3540 p_usec_rec.federal_financial_aid :='N';
3541 END IF;
3542
3543 IF p_usec_rec.unit_quota IS NULL THEN
3544 p_usec_rec.unit_quota := c_usec_rec.unit_quota;
3545 ELSIF p_usec_rec.unit_quota = FND_API.G_MISS_NUM THEN
3546 p_usec_rec.unit_quota :=NULL;
3547 END IF;
3548
3549 IF p_usec_rec.unit_quota_reserved_places IS NULL THEN
3550 p_usec_rec.unit_quota_reserved_places := c_usec_rec.unit_quota_reserved_places;
3551 ELSIF p_usec_rec.unit_quota_reserved_places = FND_API.G_MISS_NUM THEN
3552 p_usec_rec.unit_quota_reserved_places :=NULL;
3553 END IF;
3554
3555 IF p_usec_rec.institutional_financial_aid IS NULL THEN
3556 p_usec_rec.institutional_financial_aid := c_usec_rec.institutional_financial_aid;
3557 ELSIF p_usec_rec.institutional_financial_aid = FND_API.G_MISS_CHAR THEN
3558 p_usec_rec.institutional_financial_aid :='N';
3559 END IF;
3560
3561 IF p_usec_rec.grading_schema_cd IS NULL THEN
3562 p_usec_rec.grading_schema_cd := c_usec_rec.grading_schema_cd;
3563 ELSIF p_usec_rec.grading_schema_cd = FND_API.G_MISS_CHAR THEN
3564 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'GRADINGS_SCHEMA_CD', 'LEGACY_TOKENS', FALSE);
3565 p_usec_rec.status := 'E';
3566 END IF;
3567
3568 IF p_usec_rec.gs_version_number IS NULL THEN
3569 p_usec_rec.gs_version_number := c_usec_rec.gs_version_number;
3570 ELSIF p_usec_rec.gs_version_number = FND_API.G_MISS_NUM THEN
3571 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'GS_VERSION_NUMBER', 'LEGACY_TOKENS', FALSE);
3572 p_usec_rec.status := 'E';
3573 END IF;
3574
3575 IF p_usec_rec.unit_contact_number IS NULL THEN
3576 p_usec_rec.unit_contact_number := c_usec_rec.unit_contact;
3577 ELSIF p_usec_rec.unit_contact_number = FND_API.G_MISS_NUM THEN
3578 p_usec_rec.unit_contact_number :=NULL;
3579 END IF;
3580
3581 IF p_usec_rec.ss_enrol_ind IS NULL THEN
3582 p_usec_rec.ss_enrol_ind := c_usec_rec.ss_enrol_ind;
3583 ELSIF p_usec_rec.ss_enrol_ind = FND_API.G_MISS_CHAR THEN
3584 p_usec_rec.ss_enrol_ind :='N';
3585 END IF;
3586
3587 IF p_usec_rec.owner_org_unit_cd IS NULL THEN
3588 p_usec_rec.owner_org_unit_cd := c_usec_rec.owner_org_unit_cd;
3589 ELSIF p_usec_rec.owner_org_unit_cd = FND_API.G_MISS_CHAR THEN
3590 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'OWNER_ORG_UNIT_CD', 'LEGACY_TOKENS', FALSE);
3591 p_usec_rec.status := 'E';
3592 END IF;
3593
3594 IF p_usec_rec.attendance_required_ind IS NULL THEN
3595 p_usec_rec.attendance_required_ind := c_usec_rec.attendance_required_ind;
3596 ELSIF p_usec_rec.attendance_required_ind = FND_API.G_MISS_CHAR THEN
3597 p_usec_rec.attendance_required_ind :='N';
3598 END IF;
3599
3600 IF p_usec_rec.reserved_seating_allowed IS NULL THEN
3601 p_usec_rec.reserved_seating_allowed := c_usec_rec.reserved_seating_allowed;
3602 ELSIF p_usec_rec.reserved_seating_allowed = FND_API.G_MISS_CHAR THEN
3603 p_usec_rec.reserved_seating_allowed :='N';
3604 END IF;
3605
3606 IF p_usec_rec.special_permission_ind IS NULL THEN
3607 p_usec_rec.special_permission_ind := c_usec_rec.special_permission_ind;
3608 ELSIF p_usec_rec.special_permission_ind = FND_API.G_MISS_CHAR THEN
3609 p_usec_rec.special_permission_ind :='N';
3610 END IF;
3611
3612 IF p_usec_rec.ss_display_ind IS NULL THEN
3613 p_usec_rec.ss_display_ind := c_usec_rec.ss_display_ind;
3614 ELSIF p_usec_rec.ss_display_ind = FND_API.G_MISS_CHAR THEN
3615 p_usec_rec.ss_display_ind :='N';
3616 END IF;
3617
3618 IF p_usec_rec.rev_account_cd IS NULL THEN
3619 p_usec_rec.rev_account_cd := c_usec_rec.rev_account_cd;
3620 ELSIF p_usec_rec.rev_account_cd = FND_API.G_MISS_CHAR THEN
3621 p_usec_rec.rev_account_cd :=NULL;
3622 END IF;
3623
3624 IF p_usec_rec.anon_unit_grading_ind IS NULL THEN
3625 p_usec_rec.anon_unit_grading_ind := c_usec_rec.anon_unit_grading_ind;
3626 ELSIF p_usec_rec.anon_unit_grading_ind = FND_API.G_MISS_CHAR THEN
3627 p_usec_rec.anon_unit_grading_ind :='N';
3628 END IF;
3629
3630 IF p_usec_rec.anon_assess_grading_ind IS NULL THEN
3631 p_usec_rec.anon_assess_grading_ind := c_usec_rec.anon_assess_grading_ind;
3632 ELSIF p_usec_rec.anon_assess_grading_ind = FND_API.G_MISS_CHAR THEN
3633 p_usec_rec.anon_assess_grading_ind :='N';
3634 END IF;
3635
3636 IF p_usec_rec.non_std_usec_ind IS NULL THEN
3637 p_usec_rec.non_std_usec_ind := c_usec_rec.non_std_usec_ind;
3638 ELSIF p_usec_rec.non_std_usec_ind = FND_API.G_MISS_CHAR THEN
3639 p_usec_rec.non_std_usec_ind :='N';
3640 END IF;
3641
3642 IF p_usec_rec.auditable_ind IS NULL THEN
3643 p_usec_rec.auditable_ind := c_usec_rec.auditable_ind;
3644 ELSIF p_usec_rec.auditable_ind = FND_API.G_MISS_CHAR THEN
3645 p_usec_rec.auditable_ind :='N';
3646 END IF;
3647
3648 IF p_usec_rec.audit_permission_ind IS NULL THEN
3649 p_usec_rec.audit_permission_ind := c_usec_rec.audit_permission_ind;
3650 ELSIF p_usec_rec.audit_permission_ind = FND_API.G_MISS_CHAR THEN
3651 p_usec_rec.audit_permission_ind :='N';
3652 END IF;
3653
3654 IF p_usec_rec.not_multiple_section_flag IS NULL THEN
3655 p_usec_rec.not_multiple_section_flag := c_usec_rec.not_multiple_section_flag;
3656 ELSIF p_usec_rec.not_multiple_section_flag = FND_API.G_MISS_CHAR THEN
3657 p_usec_rec.not_multiple_section_flag :='N';
3658 END IF;
3659
3660 IF p_usec_rec.default_enroll_flag IS NULL THEN
3661 p_usec_rec.default_enroll_flag := c_usec_rec.default_enroll_flag;
3662 ELSIF p_usec_rec.default_enroll_flag = FND_API.G_MISS_CHAR THEN
3663 p_usec_rec.default_enroll_flag :='N';
3664 END IF;
3665
3666 END IF;
3667
3668 END Assign_default;
3669
3670
3671 BEGIN
3672
3673 validate_uoo_parameters ( p_usec_rec );
3674
3675 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3676 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.status_after_validate_uoo_parameters',
3677 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3678 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3679 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
3680 END IF;
3681
3682 IF ( p_usec_rec.status = 'S' ) THEN
3683 validate_uoo_derivations ( p_usec_rec );
3684
3685
3686 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3687 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.status_after_validate_uoo_derivations',
3688 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3689 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3690 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
3691 END IF;
3692
3693 END IF;
3694
3695 --Find out whether it is insert/update of record
3696 l_insert_update:='I';
3697 IF p_usec_rec.status = 'S' AND p_calling_context IN ('G', 'S') THEN
3698 l_insert_update:= check_insert_update(p_usec_rec);
3699
3700 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3701 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.status_after_check_insert_update',
3702 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3703 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3704 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
3705 END IF;
3706
3707 END IF;
3708
3709 IF p_usec_rec.status = 'S' AND p_calling_context ='S' THEN
3710 IF igs_ps_validate_lgcy_pkg.check_import_allowed( p_unit_cd => p_usec_rec.unit_cd,
3711 p_version_number =>p_usec_rec.version_number,
3712 p_alternate_code =>p_usec_rec.teach_cal_alternate_code,
3713 p_location_cd => p_usec_rec.location_cd,
3714 p_unit_class => p_usec_rec.unit_class,
3715 p_uso_id =>NULL) = FALSE THEN
3716 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
3717 fnd_msg_pub.add;
3718 p_usec_rec.status := 'A';
3719 END IF;
3720
3721 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3722 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.status_after_check_import_allowed',
3723 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3724 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3725 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
3726 END IF;
3727
3728 END IF;
3729
3730 IF p_usec_rec.status = 'S' THEN
3731 Assign_default(p_usec_rec,l_insert_update);
3732
3733 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3734 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.status_after_Assign_default',
3735 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3736 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3737 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
3738 END IF;
3739
3740 END IF;
3741
3742 IF ( p_usec_rec.status = 'S' ) THEN
3743 validate_uoo_db_cons ( p_usec_rec,l_insert_update );
3744
3745 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3746 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.status_after_validate_uoo_db_cons',
3747 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3748 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3749 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
3750 END IF;
3751
3752 END IF;
3753
3754
3755
3756 /* Business validations */
3757 IF ( p_usec_rec.status = 'S' ) THEN
3758 -- Check for validation by calling validate_uoo
3759 igs_ps_validate_lgcy_pkg.validate_uoo ( p_usec_rec, l_c_cal_type, l_n_seq_num,l_n_sup_uoo_id,l_insert_update,l_conc_flag ) ;
3760
3761 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3762 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.status_after_Business validations',
3763 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3764 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3765 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
3766 END IF;
3767
3768 END IF;
3769
3770 IF ( p_usec_rec.status = 'S' ) THEN
3771
3772 --update the superior unit section if the current unit section is a subordinate.Also set the value of relation_type colunn
3773
3774 IF l_insert_update = 'I' THEN
3775 IF l_n_sup_uoo_id IS NOT NULL THEN
3776 OPEN c_usec_check(l_n_sup_uoo_id);
3777 FETCH c_usec_check INTO l_c_var;
3778 IF c_usec_check%NOTFOUND THEN
3779 UPDATE igs_ps_unit_ofr_opt_all SET relation_type = 'SUPERIOR'
3780 WHERE uoo_id = l_n_sup_uoo_id;
3781 END IF;
3782 CLOSE c_usec_check;
3783 l_c_relation_type := 'SUBORDINATE';
3784 ELSE
3785 l_c_relation_type := 'NONE';
3786 END IF;
3787 ELSE
3788 DECLARE
3789 CURSOR cur_usec(cp_unit_cd IN VARCHAR2,
3790 cp_version_number IN NUMBER,
3791 cp_cal_type IN VARCHAR2,
3792 cp_seq_num IN NUMBER,
3793 cp_location_cd IN VARCHAR2,
3794 cp_unit_class IN VARCHAR2
3795 ) IS
3796 SELECT relation_type,sup_uoo_id
3797 FROM igs_ps_unit_ofr_opt_all
3798 WHERE unit_cd = cp_unit_cd
3799 AND version_number = cp_version_number
3800 AND ci_sequence_number =cp_seq_num
3801 AND unit_class = cp_unit_class
3802 AND location_cd = cp_location_cd
3803 AND cal_type = cp_cal_type ;
3804 l_cur_usec cur_usec%ROWTYPE;
3805
3806 CURSOR c_count_sup(cp_uoo_id NUMBER) IS
3807 SELECT COUNT(*)
3808 FROM igs_ps_unit_ofr_opt_all
3809 WHERE sup_uoo_id= cp_uoo_id;
3810 l_c_count NUMBER;
3811 BEGIN
3812
3813 OPEN cur_usec(p_usec_rec.unit_cd,p_usec_rec.version_number,l_c_cal_type,l_n_seq_num,
3814 p_usec_rec.location_cd ,p_usec_rec.unit_class );
3815 FETCH cur_usec INTO l_cur_usec;
3816 CLOSE cur_usec;
3817
3818 IF l_n_sup_uoo_id IS NOT NULL THEN
3819 OPEN c_usec_check(l_n_sup_uoo_id);
3820 FETCH c_usec_check INTO l_c_var;
3821 IF c_usec_check%NOTFOUND THEN
3822 UPDATE igs_ps_unit_ofr_opt_all SET relation_type = 'SUPERIOR'
3823 WHERE uoo_id = l_n_sup_uoo_id;
3824 END IF;
3825 CLOSE c_usec_check;
3826 l_c_relation_type := 'SUBORDINATE';
3827
3828 --If existing usec is having one superior section and this time it is going for update of another
3829 -- value, then should set the earlier section's relation type as 'NONE' if this was the only subordinate
3830 IF l_cur_usec.sup_uoo_id IS NOT NULL AND l_cur_usec.sup_uoo_id <> l_n_sup_uoo_id THEN
3831 OPEN c_count_sup(l_cur_usec.sup_uoo_id);
3832 FETCH c_count_sup INTO l_c_count;
3833 IF c_count_sup%FOUND THEN
3834 IF l_c_count < 2 THEN
3835 UPDATE igs_ps_unit_ofr_opt_all SET relation_type = 'NONE'
3836 WHERE uoo_id = l_cur_usec.sup_uoo_id;
3837 END IF;
3838 END IF;
3839 CLOSE c_count_sup;
3840 END IF;
3841 ELSE
3842 --Keep the existing values if no values are passed
3843 l_c_relation_type :=l_cur_usec.relation_type;
3844 l_n_sup_uoo_id := l_cur_usec.sup_uoo_id;
3845 END IF;
3846 END;
3847 END IF;
3848
3849 --should not perform while update...
3850 --Set the value of the call_number if the profile option is AUTO
3851
3852 IF l_insert_update = 'I' THEN
3853 IF FND_PROFILE.VALUE('IGS_PS_CALL_NUMBER') = 'AUTO' THEN
3854 p_usec_rec.call_number := igs_ps_unit_ofr_opt_pkg.get_call_number( l_c_cal_type, l_n_seq_num);
3855 END IF;
3856
3857 INSERT INTO igs_ps_unit_ofr_opt_all
3858 (unit_cd,
3859 version_number,
3860 cal_type,
3861 ci_sequence_number,
3862 location_cd,
3863 unit_class,
3864 uoo_id,
3865 ivrs_available_ind,
3866 call_number,
3867 unit_section_status,
3868 unit_section_start_date,
3869 unit_section_end_date,
3870 offered_ind,
3871 state_financial_aid,
3872 grading_schema_prcdnce_ind,
3873 federal_financial_aid,
3874 unit_quota,
3875 unit_quota_reserved_places,
3876 institutional_financial_aid,
3877 grading_schema_cd,
3878 gs_version_number,
3879 unit_contact,
3880 created_by,
3881 creation_date,
3882 last_updated_by,
3883 last_update_date,
3884 last_update_login,
3885 ss_enrol_ind,
3886 owner_org_unit_cd,
3887 attendance_required_ind,
3888 reserved_seating_allowed,
3889 special_permission_ind,
3890 ss_display_ind,
3891 rev_account_cd,
3892 anon_unit_grading_ind,
3893 anon_assess_grading_ind,
3894 non_std_usec_ind,
3895 auditable_ind,
3896 audit_permission_ind,
3897 not_multiple_section_flag,
3898 sup_uoo_id,
3899 relation_type,
3900 default_enroll_flag,
3901 abort_flag
3902 )
3903 VALUES
3904 (p_usec_rec.unit_cd,
3905 p_usec_rec.version_number,
3906 l_c_cal_type,
3907 l_n_seq_num,
3908 p_usec_rec.location_cd,
3909 p_usec_rec.unit_class,
3910 igs_ps_unit_ofr_opt_uoo_id_s.NEXTVAL,
3911 p_usec_rec.ivrs_available_ind,
3912 p_usec_rec.call_number,
3913 p_usec_rec.unit_section_status,
3914 p_usec_rec.unit_section_start_date,
3915 p_usec_rec.unit_section_end_date,
3916 p_usec_rec.offered_ind,
3917 p_usec_rec.state_financial_aid,
3918 p_usec_rec.grading_schema_prcdnce_ind,
3919 p_usec_rec.federal_financial_aid,
3920 p_usec_rec.unit_quota,
3921 p_usec_rec.unit_quota_reserved_places,
3922 p_usec_rec.institutional_financial_aid,
3923 p_usec_rec.grading_schema_cd,
3924 p_usec_rec.gs_version_number,
3925 l_n_unit_contact_id,
3926 g_n_user_id,
3927 SYSDATE,
3928 g_n_user_id,
3929 SYSDATE,
3930 g_n_login_id,
3931 p_usec_rec.ss_enrol_ind,
3932 NVL(p_usec_rec.owner_org_unit_cd,l_c_org_unit_cd),
3933 p_usec_rec.attendance_required_ind,
3934 p_usec_rec.reserved_seating_allowed,
3935 p_usec_rec.special_permission_ind,
3936 p_usec_rec.ss_display_ind,
3937 p_usec_rec.rev_account_cd,
3938 p_usec_rec.anon_unit_grading_ind,
3939 p_usec_rec.anon_assess_grading_ind,
3940 p_usec_rec.non_std_usec_ind,
3941 p_usec_rec.auditable_ind,
3942 p_usec_rec.audit_permission_ind,
3943 p_usec_rec.not_multiple_section_flag,
3944 l_n_sup_uoo_id,
3945 l_c_relation_type,
3946 p_usec_rec.default_enroll_flag,
3947 'N'
3948 );
3949
3950 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3951 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.record_inserted',
3952 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3953 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3954 p_usec_rec.unit_class);
3955 END IF;
3956
3957 --If calling context is scheduling then update the interface table import done flag
3958 IF p_calling_context = 'S' THEN
3959 OPEN cur_int_pat(p_usec_rec.unit_cd,p_usec_rec.version_number,l_c_cal_type,l_n_seq_num);
3960 FETCH cur_int_pat INTO l_cur_int_pat;
3961 IF cur_int_pat%FOUND THEN
3962 UPDATE igs_ps_sch_pat_int set import_done_flag='Y' WHERE int_pat_id = l_cur_int_pat.int_pat_id;
3963 END IF;
3964 CLOSE cur_int_pat;
3965
3966 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3967 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.interface_table_updated',
3968 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
3969 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
3970 p_usec_rec.unit_class||' '||'int_pat_id:'||l_cur_int_pat.int_pat_id);
3971 END IF;
3972
3973 END IF;
3974
3975 ELSE --update
3976 UPDATE igs_ps_unit_ofr_opt_all SET
3977 ivrs_available_ind = p_usec_rec.ivrs_available_ind,
3978 call_number=p_usec_rec.call_number,
3979 unit_section_status=p_usec_rec.unit_section_status,
3980 unit_section_start_date=p_usec_rec.unit_section_start_date,
3981 unit_section_end_date=p_usec_rec.unit_section_end_date,
3982 offered_ind=p_usec_rec.offered_ind,
3983 state_financial_aid=p_usec_rec.state_financial_aid,
3984 grading_schema_prcdnce_ind=p_usec_rec.grading_schema_prcdnce_ind,
3985 federal_financial_aid=p_usec_rec.federal_financial_aid,
3986 unit_quota=p_usec_rec.unit_quota,
3987 unit_quota_reserved_places=p_usec_rec.unit_quota_reserved_places,
3988 institutional_financial_aid=p_usec_rec.institutional_financial_aid,
3989 grading_schema_cd=p_usec_rec.grading_schema_cd,
3990 gs_version_number=p_usec_rec.gs_version_number,
3991 unit_contact= l_n_unit_contact_id,
3992 ss_enrol_ind=p_usec_rec.ss_enrol_ind,
3993 owner_org_unit_cd=p_usec_rec.owner_org_unit_cd,
3994 attendance_required_ind=p_usec_rec.attendance_required_ind,
3995 reserved_seating_allowed=p_usec_rec.reserved_seating_allowed,
3996 special_permission_ind=p_usec_rec.special_permission_ind,
3997 ss_display_ind=p_usec_rec.ss_display_ind,
3998 rev_account_cd=p_usec_rec.rev_account_cd,
3999 anon_unit_grading_ind=p_usec_rec.anon_unit_grading_ind,
4000 anon_assess_grading_ind=p_usec_rec.anon_assess_grading_ind,
4001 non_std_usec_ind=p_usec_rec.non_std_usec_ind,
4002 auditable_ind=p_usec_rec.auditable_ind,
4003 audit_permission_ind=p_usec_rec.audit_permission_ind,
4004 not_multiple_section_flag=p_usec_rec.not_multiple_section_flag,
4005 sup_uoo_id = l_n_sup_uoo_id,
4006 relation_type=l_c_relation_type,
4007 default_enroll_flag=p_usec_rec.default_enroll_flag,
4008 last_updated_by = g_n_user_id,
4009 last_update_date= SYSDATE ,
4010 last_update_login= g_n_login_id
4011 WHERE unit_cd = p_usec_rec.unit_cd
4012 AND version_number = p_usec_rec.version_number
4013 AND ci_sequence_number =l_n_seq_num
4014 AND unit_class = p_usec_rec.unit_class
4015 AND location_cd = p_usec_rec.location_cd
4016 AND cal_type = l_c_cal_type ;
4017
4018 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4019 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.record_updated',
4020 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4021 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4022 p_usec_rec.unit_class);
4023 END IF;
4024
4025 --If calling context is scheduling then update the interface table import done flag
4026 IF p_calling_context = 'S' THEN
4027 OPEN cur_int_usec(p_usec_rec.unit_cd,p_usec_rec.version_number,l_c_cal_type,l_n_seq_num,p_usec_rec.location_cd, p_usec_rec.unit_class);
4028 FETCH cur_int_usec INTO l_cur_int_usec;
4029 IF cur_int_usec%FOUND THEN
4030 UPDATE igs_ps_sch_usec_int_all set import_done_flag='Y' WHERE int_usec_id = l_cur_int_usec.int_usec_id;
4031 UPDATE igs_ps_sch_pat_int set import_done_flag='Y' WHERE int_pat_id = l_cur_int_usec.int_pat_id;
4032 END IF;
4033
4034 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4035 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.interface_table_updated',
4036 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4037 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4038 p_usec_rec.unit_class||' '||'int_pat_id:'||l_cur_int_pat.int_pat_id);
4039 END IF;
4040
4041 CLOSE cur_int_usec;
4042 END IF;
4043
4044 END IF; --insert /update
4045 END IF;
4046
4047
4048 END create_uoo;
4049
4050 -- This procedure will derive values required for Unit Section Credit Points.
4051 PROCEDURE get_uoo_id ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type) AS
4052 l_c_message VARCHAR2(30);
4053 BEGIN
4054 -- Derive uoo_id
4055 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_rec.unit_cd,
4056 p_ver_num => p_usec_rec.version_number,
4057 p_cal_type => l_c_cal_type,
4058 p_seq_num => l_n_seq_num,
4059 p_loc_cd => p_usec_rec.location_cd,
4060 p_unit_class => p_usec_rec.unit_class,
4061 p_uoo_id => l_n_uoo_id,
4062 p_message => l_c_message );
4063 IF l_c_message IS NOT NULL THEN
4064 fnd_message.set_name ( 'IGS', l_c_message );
4065 fnd_msg_pub.add;
4066 p_usec_rec.status := 'E';
4067 END IF;
4068
4069
4070 END get_uoo_id;
4071
4072 -- Procedure to validate Database constraints for Unit Section Credit Points Records.
4073 PROCEDURE validate_cp_db_cons ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type,p_insert_update VARCHAR2 ) AS
4074 --sarakshi 15-May-2006 Bug#3064563, modified the format mask(clock_hours,continuing_education_units,work_load_cp_lecture,work_load_cp_lab,contact_hrs_lab) as specified in the bug.
4075 BEGIN
4076
4077 IF p_insert_update = 'I' THEN
4078 /* Check for Unique Key Constraints */
4079 IF igs_ps_usec_cps_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
4080 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_CPS', 'LEGACY_TOKENS', FALSE);
4081 p_usec_rec.status := 'W';
4082 RETURN;
4083 END IF;
4084 END IF;
4085
4086 /* Check for Foreign Key Constraints */
4087 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
4088 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
4089 p_usec_rec.status := 'E';
4090 END IF;
4091
4092 IF p_usec_rec.minimum_credit_points IS NOT NULL THEN
4093 BEGIN
4094 igs_ps_usec_cps_pkg.check_constraints('MINIMUM_CREDIT_POINTS',p_usec_rec.minimum_credit_points);
4095 EXCEPTION
4096 WHEN OTHERS THEN
4097 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','MINIMUM_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
4098 p_usec_rec.status :='E';
4099 END;
4100 END IF;
4101
4102 IF p_usec_rec.maximum_credit_points IS NOT NULL THEN
4103 BEGIN
4104 igs_ps_usec_cps_pkg.check_constraints('MAXIMUM_CREDIT_POINTS',p_usec_rec.maximum_credit_points);
4105 EXCEPTION
4106 WHEN OTHERS THEN
4107 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','MAXIMUM_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
4108 p_usec_rec.status :='E';
4109 END;
4110 END IF;
4111
4112 IF p_usec_rec.variable_increment IS NOT NULL THEN
4113 BEGIN
4114 igs_ps_usec_cps_pkg.check_constraints('VARIABLE_INCREMENT',p_usec_rec.variable_increment);
4115 EXCEPTION
4116 WHEN OTHERS THEN
4117 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','VARIABLE_INCREMENT','LEGACY_TOKENS',TRUE);
4118 p_usec_rec.status :='E';
4119 END;
4120 END IF;
4121
4122
4123 IF p_usec_rec.lecture_credit_points IS NOT NULL THEN
4124 BEGIN
4125 igs_ps_usec_cps_pkg.check_constraints('LECTURE_CREDIT_POINTS',p_usec_rec.lecture_credit_points);
4126 EXCEPTION
4127 WHEN OTHERS THEN
4128 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','LECTURE_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
4129 p_usec_rec.status :='E';
4130 END;
4131 END IF;
4132
4133 IF p_usec_rec.lab_credit_points IS NOT NULL THEN
4134 BEGIN
4135 igs_ps_usec_cps_pkg.check_constraints('LAB_CREDIT_POINTS',p_usec_rec.lab_credit_points);
4136 EXCEPTION
4137 WHEN OTHERS THEN
4138 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','LAB_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
4139 p_usec_rec.status :='E';
4140 END;
4141 END IF;
4142
4143 IF p_usec_rec.other_credit_points IS NOT NULL THEN
4144 BEGIN
4145 igs_ps_usec_cps_pkg.check_constraints('OTHER_CREDIT_POINTS',p_usec_rec.other_credit_points);
4146 EXCEPTION
4147 WHEN OTHERS THEN
4148 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','OTHER_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
4149 p_usec_rec.status :='E';
4150 END;
4151 END IF;
4152
4153 IF p_usec_rec.clock_hours IS NOT NULL THEN
4154 BEGIN
4155 igs_ps_usec_cps_pkg.check_constraints('CLOCK_HOURS',p_usec_rec.clock_hours);
4156 EXCEPTION
4157 WHEN OTHERS THEN
4158 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','CLOCK_HOURS','LEGACY_TOKENS',TRUE);
4159 p_usec_rec.status :='E';
4160 END;
4161 END IF;
4162
4163 IF p_usec_rec.work_load_cp_lecture IS NOT NULL THEN
4164 BEGIN
4165 igs_ps_usec_cps_pkg.check_constraints('WORK_LOAD_CP_LECTURE',p_usec_rec.work_load_cp_lecture);
4166 EXCEPTION
4167 WHEN OTHERS THEN
4168 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','WORK_LOAD_CP_LECTURE','LEGACY_TOKENS',TRUE);
4169 p_usec_rec.status :='E';
4170 END;
4171 END IF;
4172
4173
4174 IF p_usec_rec.work_load_cp_lab IS NOT NULL THEN
4175 BEGIN
4176 igs_ps_usec_cps_pkg.check_constraints('WORK_LOAD_CP_LAB',p_usec_rec.work_load_cp_lab);
4177 EXCEPTION
4178 WHEN OTHERS THEN
4179 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','WORK_LOAD_CP_LAB','LEGACY_TOKENS',TRUE);
4180 p_usec_rec.status :='E';
4181 END;
4182 END IF;
4183
4184 --Validate achievable credit points
4185 IF p_usec_rec.achievable_credit_points IS NOT NULL THEN
4186 BEGIN
4187 igs_ps_usec_cps_pkg.check_constraints('ACHIEVABLE_CREDIT_POINTS',p_usec_rec.achievable_credit_points);
4188 EXCEPTION
4189 WHEN OTHERS THEN
4190 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','ACHIEVABLE_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
4191 p_usec_rec.status :='E';
4192 END;
4193 END IF;
4194
4195 --Validate enrolled credit points
4196 BEGIN
4197 igs_ps_usec_cps_pkg.check_constraints('ENROLLED_CREDIT_POINTS',p_usec_rec.enrolled_credit_points);
4198 EXCEPTION
4199 WHEN OTHERS THEN
4200 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','ENROLLED_CREDIT_POINTS','LEGACY_TOKENS',TRUE);
4201 p_usec_rec.status :='E';
4202 END;
4203
4204 --Validate billing credit points
4205 IF p_usec_rec.billing_credit_points IS NOT NULL THEN
4206 BEGIN
4207 igs_ps_usec_cps_pkg.check_constraints( 'BILLING_CREDIT_POINTS', p_usec_rec.billing_credit_points);
4208 EXCEPTION
4209 WHEN OTHERS THEN
4210 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999', 'BILLING_CREDIT_POINTS', 'LEGACY_TOKENS', TRUE);
4211 p_usec_rec.status := 'E';
4212 END;
4213 END IF;
4214
4215 IF p_usec_rec.billing_hrs IS NOT NULL THEN
4216 BEGIN
4217 igs_ps_usec_cps_pkg.check_constraints( 'BILLING_HRS', p_usec_rec.billing_hrs);
4218 EXCEPTION
4219 WHEN OTHERS THEN
4220 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999', 'BILLING_HRS', 'LEGACY_TOKENS', TRUE);
4221 p_usec_rec.status := 'E';
4222 END;
4223 END IF;
4224 IF p_usec_rec.continuing_education_units IS NOT NULL THEN
4225 BEGIN
4226 igs_ps_usec_cps_pkg.check_constraints('CONTINUING_EDUCATION_UNITS',p_usec_rec.continuing_education_units);
4227 EXCEPTION
4228 WHEN OTHERS THEN
4229 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D999','CONTINUING_EDUCATION_UNITS','LEGACY_TOKENS',TRUE);
4230 p_usec_rec.status :='E';
4231 END;
4232 END IF;
4233
4234 IF p_usec_rec.work_load_other IS NOT NULL THEN
4235 BEGIN
4236 igs_ps_usec_cps_pkg.check_constraints('WORK_LOAD_OTHER',p_usec_rec.work_load_other);
4237 EXCEPTION
4238 WHEN OTHERS THEN
4239 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','WORK_LOAD_OTHER','LEGACY_TOKENS',TRUE);
4240 p_usec_rec.status :='E';
4241 END;
4242 END IF;
4243
4244 IF p_usec_rec.contact_hrs_lecture IS NOT NULL THEN
4245 BEGIN
4246 igs_ps_usec_cps_pkg.check_constraints('CONTACT_HRS_LECTURE',p_usec_rec.contact_hrs_lecture);
4247 EXCEPTION
4248 WHEN OTHERS THEN
4249 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','CONTACT_HRS_LECTURE','LEGACY_TOKENS',TRUE);
4250 p_usec_rec.status :='E';
4251 END;
4252 END IF;
4253
4254 IF p_usec_rec.contact_hrs_lab IS NOT NULL THEN
4255 BEGIN
4256 igs_ps_usec_cps_pkg.check_constraints('CONTACT_HRS_LAB',p_usec_rec.contact_hrs_lab);
4257 EXCEPTION
4258 WHEN OTHERS THEN
4259 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','CONTACT_HRS_LAB','LEGACY_TOKENS',TRUE);
4260 p_usec_rec.status :='E';
4261 END;
4262 END IF;
4263
4264 IF p_usec_rec.contact_hrs_other IS NOT NULL THEN
4265 BEGIN
4266 igs_ps_usec_cps_pkg.check_constraints('CONTACT_HRS_OTHER',p_usec_rec.contact_hrs_other);
4267 EXCEPTION
4268 WHEN OTHERS THEN
4269 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','CONTACT_HRS_OTHER','LEGACY_TOKENS',TRUE);
4270 p_usec_rec.status :='E';
4271 END;
4272 END IF;
4273
4274 IF p_usec_rec.non_schd_required_hrs IS NOT NULL THEN
4275 BEGIN
4276 igs_ps_usec_cps_pkg.check_constraints('NON_SCHD_REQUIRED_HRS',p_usec_rec.non_schd_required_hrs);
4277 EXCEPTION
4278 WHEN OTHERS THEN
4279 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','NON_SCHD_REQUIRED_HRS','LEGACY_TOKENS',TRUE);
4280 p_usec_rec.status :='E';
4281 END;
4282 END IF;
4283
4284 IF p_usec_rec.exclude_from_max_cp_limit IS NOT NULL THEN
4285 BEGIN
4286 igs_ps_usec_ref_pkg.check_constraints ( 'EXCLUDE_FROM_MAX_CP_LIMIT', p_usec_rec.exclude_from_max_cp_limit);
4287 EXCEPTION
4288 WHEN OTHERS THEN
4289 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'EXCLUDE_FROM_MAX_CP_LIMIT', 'LEGACY_TOKENS', TRUE);
4290 p_usec_rec.status := 'E';
4291 END;
4292 END IF;
4293
4294 IF p_usec_rec.claimable_hours IS NOT NULL THEN
4295 BEGIN
4296 igs_ps_usec_cps_pkg.check_constraints('CLAIMABLE_HOURS',p_usec_rec.claimable_hours);
4297 EXCEPTION
4298 WHEN OTHERS THEN
4299 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','CLAIMABLE_HOURS','LEGACY_TOKENS',TRUE);
4300 p_usec_rec.status :='E';
4301 END;
4302 END IF;
4303
4304 END validate_cp_db_cons;
4305
4306 -- Main private procedure to create records of Unit Section Credit Points.
4307
4308 PROCEDURE create_cp ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type )
4309 AS
4310 FUNCTION check_insert_update (p_usec_rec IN igs_ps_generic_pub.usec_rec_type ) RETURN VARCHAR2 IS
4311
4312 CURSOR c_usec_cp(cp_n_uoo_id NUMBER) IS
4313 SELECT *
4314 FROM igs_ps_usec_cps
4315 WHERE uoo_id = cp_n_uoo_id;
4316
4317 c_usec_cp_rec c_usec_cp%ROWTYPE;
4318 BEGIN
4319 OPEN c_usec_cp(l_n_uoo_id);
4320 FETCH c_usec_cp INTO c_usec_cp_rec;
4321 IF c_usec_cp%NOTFOUND THEN
4322 CLOSE c_usec_cp;
4323 RETURN 'I';
4324 ELSE
4325 CLOSE c_usec_cp;
4326 RETURN 'U';
4327 END IF;
4328
4329 END check_insert_update;
4330 PROCEDURE Assign_default( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type,
4331 p_insert_update VARCHAR2 ) AS
4332 CURSOR c_usec_cp(p_n_uoo_id NUMBER) IS
4333 SELECT *
4334 FROM igs_ps_usec_cps
4335 WHERE uoo_id = p_n_uoo_id;
4336
4337 c_usec_cp_rec c_usec_cp%ROWTYPE;
4338 BEGIN
4339 IF p_insert_update = 'U' THEN
4340
4341 OPEN c_usec_cp(l_n_uoo_id);
4342 FETCH c_usec_cp INTO c_usec_cp_rec;
4343 CLOSE c_usec_cp;
4344
4345 IF p_usec_rec.minimum_credit_points IS NULL THEN
4346 p_usec_rec.minimum_credit_points := c_usec_cp_rec.minimum_credit_points ;
4347 ELSIF p_usec_rec.minimum_credit_points = FND_API.G_MISS_NUM THEN
4348 p_usec_rec.minimum_credit_points :=NULL;
4349 END IF;
4350 IF p_usec_rec.maximum_credit_points IS NULL THEN
4351 p_usec_rec.maximum_credit_points := c_usec_cp_rec.maximum_credit_points ;
4352 ELSIF p_usec_rec.maximum_credit_points = FND_API.G_MISS_NUM THEN
4353 p_usec_rec.maximum_credit_points :=NULL;
4354 END IF;
4355 IF p_usec_rec.variable_increment IS NULL THEN
4356 p_usec_rec.variable_increment := c_usec_cp_rec.variable_increment ;
4357 ELSIF p_usec_rec.variable_increment = FND_API.G_MISS_NUM THEN
4358 p_usec_rec.variable_increment :=NULL;
4359 END IF;
4360 IF p_usec_rec.lecture_credit_points IS NULL THEN
4361 p_usec_rec.lecture_credit_points := c_usec_cp_rec.lecture_credit_points ;
4362 ELSIF p_usec_rec.lecture_credit_points = FND_API.G_MISS_NUM THEN
4363 p_usec_rec.lecture_credit_points :=NULL;
4364 END IF;
4365 IF p_usec_rec.lab_credit_points IS NULL THEN
4366 p_usec_rec.lab_credit_points := c_usec_cp_rec.lab_credit_points ;
4367 ELSIF p_usec_rec.lab_credit_points = FND_API.G_MISS_NUM THEN
4368 p_usec_rec.lab_credit_points :=NULL;
4369 END IF;
4370 IF p_usec_rec.other_credit_points IS NULL THEN
4371 p_usec_rec.other_credit_points := c_usec_cp_rec.other_credit_points ;
4372 ELSIF p_usec_rec.other_credit_points = FND_API.G_MISS_NUM THEN
4373 p_usec_rec.other_credit_points :=NULL;
4374 END IF;
4375 IF p_usec_rec.clock_hours IS NULL THEN
4376 p_usec_rec.clock_hours := c_usec_cp_rec.clock_hours ;
4377 ELSIF p_usec_rec.clock_hours = FND_API.G_MISS_NUM THEN
4378 p_usec_rec.clock_hours :=NULL;
4379 END IF;
4380 IF p_usec_rec.billing_credit_points IS NULL THEN
4381 p_usec_rec.billing_credit_points := c_usec_cp_rec.billing_credit_points ;
4382 ELSIF p_usec_rec.billing_credit_points = FND_API.G_MISS_NUM THEN
4383 p_usec_rec.billing_credit_points :=NULL;
4384 END IF;
4385 IF p_usec_rec.work_load_cp_lecture IS NULL THEN
4386 p_usec_rec.work_load_cp_lecture := c_usec_cp_rec.work_load_cp_lecture ;
4387 ELSIF p_usec_rec.work_load_cp_lecture = FND_API.G_MISS_NUM THEN
4388 p_usec_rec.work_load_cp_lecture :=NULL;
4389 END IF;
4390 IF p_usec_rec.work_load_cp_lab IS NULL THEN
4391 p_usec_rec.work_load_cp_lab := c_usec_cp_rec.work_load_cp_lab ;
4392 ELSIF p_usec_rec.work_load_cp_lab = FND_API.G_MISS_NUM THEN
4393 p_usec_rec.work_load_cp_lab :=NULL;
4394 END IF;
4395 IF p_usec_rec.continuing_education_units IS NULL THEN
4396 p_usec_rec.continuing_education_units := c_usec_cp_rec.continuing_education_units ;
4397 ELSIF p_usec_rec.continuing_education_units = FND_API.G_MISS_NUM THEN
4398 p_usec_rec.continuing_education_units :=NULL;
4399 END IF;
4400 IF p_usec_rec.achievable_credit_points IS NULL THEN
4401 p_usec_rec.achievable_credit_points := c_usec_cp_rec.achievable_credit_points ;
4402 ELSIF p_usec_rec.achievable_credit_points = FND_API.G_MISS_NUM THEN
4403 p_usec_rec.achievable_credit_points :=NULL;
4404 END IF;
4405 IF p_usec_rec.enrolled_credit_points IS NULL THEN
4406 p_usec_rec.enrolled_credit_points := c_usec_cp_rec.enrolled_credit_points ;
4407 ELSIF p_usec_rec.enrolled_credit_points = FND_API.G_MISS_NUM THEN
4408 p_usec_rec.enrolled_credit_points :=NULL;
4409 END IF;
4410 IF p_usec_rec.work_load_other IS NULL THEN
4411 p_usec_rec.work_load_other := c_usec_cp_rec.work_load_other ;
4412 ELSIF p_usec_rec.work_load_other = FND_API.G_MISS_NUM THEN
4413 p_usec_rec.work_load_other :=NULL;
4414 END IF;
4415 IF p_usec_rec.contact_hrs_lecture IS NULL THEN
4416 p_usec_rec.contact_hrs_lecture := c_usec_cp_rec.contact_hrs_lecture ;
4417 ELSIF p_usec_rec.contact_hrs_lecture = FND_API.G_MISS_NUM THEN
4418 p_usec_rec.contact_hrs_lecture :=NULL;
4419 END IF;
4420 IF p_usec_rec.contact_hrs_lab IS NULL THEN
4421 p_usec_rec.contact_hrs_lab := c_usec_cp_rec.contact_hrs_lab ;
4422 ELSIF p_usec_rec.contact_hrs_lab = FND_API.G_MISS_NUM THEN
4423 p_usec_rec.contact_hrs_lab :=NULL;
4424 END IF;
4425 IF p_usec_rec.contact_hrs_other IS NULL THEN
4426 p_usec_rec.contact_hrs_other := c_usec_cp_rec.contact_hrs_other ;
4427 ELSIF p_usec_rec.contact_hrs_other = FND_API.G_MISS_NUM THEN
4428 p_usec_rec.contact_hrs_other :=NULL;
4429 END IF;
4430 IF p_usec_rec.billing_hrs IS NULL THEN
4431 p_usec_rec.billing_hrs := c_usec_cp_rec.billing_hrs ;
4432 ELSIF p_usec_rec.billing_hrs = FND_API.G_MISS_NUM THEN
4433 p_usec_rec.billing_hrs :=NULL;
4434 END IF;
4435 IF p_usec_rec.non_schd_required_hrs IS NULL THEN
4436 p_usec_rec.non_schd_required_hrs := c_usec_cp_rec.non_schd_required_hrs ;
4437 ELSIF p_usec_rec.non_schd_required_hrs = FND_API.G_MISS_NUM THEN
4438 p_usec_rec.non_schd_required_hrs :=NULL;
4439 END IF;
4440 IF p_usec_rec.exclude_from_max_cp_limit IS NULL THEN
4441 p_usec_rec.exclude_from_max_cp_limit := c_usec_cp_rec.exclude_from_max_cp_limit ;
4442 ELSIF p_usec_rec.exclude_from_max_cp_limit = FND_API.G_MISS_CHAR THEN
4443 p_usec_rec.exclude_from_max_cp_limit :=NULL;
4444 END IF;
4445 IF p_usec_rec.claimable_hours IS NULL THEN
4446 p_usec_rec.claimable_hours := c_usec_cp_rec.claimable_hours ;
4447 ELSIF p_usec_rec.claimable_hours = FND_API.G_MISS_NUM THEN
4448 p_usec_rec.claimable_hours :=NULL;
4449 END IF;
4450 END IF;
4451
4452 END Assign_default;
4453
4454 BEGIN
4455 IF p_usec_rec.minimum_credit_points IS NULL AND
4456 p_usec_rec.maximum_credit_points IS NULL AND
4457 p_usec_rec.variable_increment IS NULL AND
4458 p_usec_rec.lecture_credit_points IS NULL AND
4459 p_usec_rec.lab_credit_points IS NULL AND
4460 p_usec_rec.other_credit_points IS NULL AND
4461 p_usec_rec.clock_hours IS NULL AND
4462 p_usec_rec.billing_credit_points IS NULL AND
4463 p_usec_rec.work_load_cp_lecture IS NULL AND
4464 p_usec_rec.work_load_cp_lab IS NULL AND
4465 p_usec_rec.continuing_education_units IS NULL AND
4466 p_usec_rec.achievable_credit_points IS NULL AND
4467 p_usec_rec.enrolled_credit_points IS NULL AND
4468 p_usec_rec.work_load_other IS NULL AND
4469 p_usec_rec.contact_hrs_lecture IS NULL AND
4470 p_usec_rec.contact_hrs_lab IS NULL AND
4471 p_usec_rec.contact_hrs_other IS NULL AND
4472 p_usec_rec.billing_hrs IS NULL AND
4473 p_usec_rec.non_schd_required_hrs IS NULL AND
4474 p_usec_rec.exclude_from_max_cp_limit IS NULL AND
4475 p_usec_rec.claimable_hours IS NULL THEN
4476
4477
4478 --No need to insert/update the empty record if all the attribute are null
4479 NULL;
4480 ELSE
4481
4482 IF p_usec_rec.status = 'S' THEN
4483 get_uoo_id ( p_usec_rec);
4484
4485 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4486 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.status_after_get_uoo_id',
4487 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4488 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4489 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4490 END IF;
4491
4492 END IF;
4493
4494 --Find out whether it is insert/update of record
4495 l_insert_update:='I';
4496 IF p_usec_rec.status = 'S' AND p_calling_context IN ('G', 'S') THEN
4497 l_insert_update:= check_insert_update(p_usec_rec);
4498
4499 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4500 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.status_after_check_insert_update',
4501 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4502 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4503 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4504 END IF;
4505
4506 END IF;
4507
4508 IF p_usec_rec.status = 'S' THEN
4509 Assign_default(p_usec_rec,l_insert_update);
4510
4511 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4512 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.status_after_Assign_default',
4513 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4514 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4515 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4516 END IF;
4517
4518 END IF;
4519
4520 IF ( p_usec_rec.status = 'S' ) THEN
4521 validate_cp_db_cons ( p_usec_rec,l_insert_update );
4522
4523 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4524 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.status_after_validate_cp_db_cons',
4525 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4526 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4527 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4528 END IF;
4529
4530 END IF;
4531
4532 /* Business validations */
4533 IF ( p_usec_rec.status = 'S' ) THEN
4534 -- Check for validation by calling validate_cps
4535 igs_ps_validate_lgcy_pkg.validate_cps ( p_usec_rec,l_n_uoo_id,l_insert_update ) ;
4536
4537 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4538 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.status_after_Business_validation',
4539 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4540 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4541 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4542 END IF;
4543
4544 END IF;
4545
4546 IF ( p_usec_rec.status = 'S' ) THEN
4547 IF l_insert_update = 'I' THEN
4548 /* Insert Record */
4549 INSERT INTO igs_ps_usec_cps
4550 (unit_sec_credit_points_id,
4551 uoo_id,
4552 minimum_credit_points,
4553 maximum_credit_points,
4554 variable_increment,
4555 lecture_credit_points,
4556 lab_credit_points,
4557 other_credit_points,
4558 clock_hours,
4559 billing_credit_points,
4560 work_load_cp_lecture,
4561 work_load_cp_lab,
4562 continuing_education_units,
4563 achievable_credit_points,
4564 enrolled_credit_points,
4565 created_by,
4566 creation_date,
4567 last_updated_by,
4568 last_update_date,
4569 last_update_login,
4570 work_load_other,
4571 contact_hrs_lecture,
4572 contact_hrs_lab,
4573 contact_hrs_other,
4574 billing_hrs,
4575 non_schd_required_hrs,
4576 exclude_from_max_cp_limit,
4577 claimable_hours
4578 )
4579 VALUES
4580 (igs_ps_usec_cps_s.NEXTVAL,
4581 l_n_uoo_id,
4582 p_usec_rec.minimum_credit_points,
4583 p_usec_rec.maximum_credit_points,
4584 p_usec_rec.variable_increment,
4585 p_usec_rec.lecture_credit_points,
4586 p_usec_rec.lab_credit_points,
4587 p_usec_rec.other_credit_points,
4588 p_usec_rec.clock_hours,
4589 p_usec_rec.billing_credit_points,
4590 p_usec_rec.work_load_cp_lecture,
4591 p_usec_rec.work_load_cp_lab,
4592 p_usec_rec.continuing_education_units,
4593 p_usec_rec.achievable_credit_points,
4594 p_usec_rec.enrolled_credit_points,
4595 g_n_user_id,
4596 SYSDATE,
4597 g_n_user_id,
4598 SYSDATE,
4599 g_n_login_id,
4600 p_usec_rec.work_load_other,
4601 p_usec_rec.contact_hrs_lecture,
4602 p_usec_rec.contact_hrs_lab,
4603 p_usec_rec.contact_hrs_other,
4604 p_usec_rec.billing_hrs,
4605 p_usec_rec.non_schd_required_hrs,
4606 p_usec_rec.exclude_from_max_cp_limit,
4607 p_usec_rec.claimable_hours
4608 );
4609
4610 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4611 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.record_inserted',
4612 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4613 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4614 p_usec_rec.unit_class);
4615 END IF;
4616
4617 ELSE ---update
4618 UPDATE igs_ps_usec_cps SET
4619 minimum_credit_points =p_usec_rec.minimum_credit_points,
4620 maximum_credit_points =p_usec_rec.maximum_credit_points,
4621 variable_increment =p_usec_rec.variable_increment,
4622 lecture_credit_points =p_usec_rec.lecture_credit_points,
4623 lab_credit_points =p_usec_rec.lab_credit_points,
4624 other_credit_points =p_usec_rec.other_credit_points,
4625 clock_hours =p_usec_rec.clock_hours,
4626 billing_credit_points =p_usec_rec.billing_credit_points,
4627 work_load_cp_lecture =p_usec_rec.work_load_cp_lecture,
4628 work_load_cp_lab =p_usec_rec.work_load_cp_lab,
4629 continuing_education_units =p_usec_rec.continuing_education_units,
4630 achievable_credit_points =p_usec_rec.achievable_credit_points,
4631 enrolled_credit_points =p_usec_rec.enrolled_credit_points,
4632 last_updated_by =g_n_user_id,
4633 last_update_date =SYSDATE,
4634 last_update_login =g_n_login_id,
4635 work_load_other =p_usec_rec.work_load_other,
4636 contact_hrs_lecture = p_usec_rec.contact_hrs_lecture,
4637 contact_hrs_lab =p_usec_rec.contact_hrs_lab,
4638 contact_hrs_other =p_usec_rec.contact_hrs_other,
4639 billing_hrs =p_usec_rec.billing_hrs,
4640 non_schd_required_hrs =p_usec_rec.non_schd_required_hrs,
4641 exclude_from_max_cp_limit = p_usec_rec.exclude_from_max_cp_limit,
4642 claimable_hours =p_usec_rec.claimable_hours
4643 WHERE uoo_id = l_n_uoo_id;
4644
4645 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4646 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.record_updated',
4647 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4648 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4649 p_usec_rec.unit_class);
4650 END IF;
4651
4652 END IF;
4653 END IF;
4654
4655 END IF;
4656
4657 END create_cp;
4658
4659 -- Procedure to validate Database constraints for Unit Section Reference Records.
4660 PROCEDURE validate_ref_db_cons ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type,p_insert_update VARCHAR2 ) AS
4661 BEGIN
4662 IF p_insert_update = 'I' THEN
4663 /* Check for Unique Key Constraints */
4664 IF igs_ps_usec_ref_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
4665 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_SEC_REF', 'LEGACY_TOKENS', FALSE);
4666 p_usec_rec.status := 'W';
4667 RETURN;
4668 END IF;
4669 END IF;
4670
4671 /* Check for Foreign Key Constraints */
4672 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
4673 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
4674 p_usec_rec.status := 'E';
4675 END IF;
4676
4677
4678
4679 IF p_usec_rec.reference_subtitle_mod_flag IS NOT NULL THEN
4680 BEGIN
4681 igs_ps_usec_ref_pkg.check_constraints ( 'REFERENCE_SUBTITLE_MOD_FLAG', p_usec_rec.reference_subtitle_mod_flag);
4682 EXCEPTION
4683 WHEN OTHERS THEN
4684 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'REFERENCE_SUBTITLE_MOD_FLAG', 'LEGACY_TOKENS', TRUE);
4685 p_usec_rec.status := 'E';
4686 END;
4687 END IF;
4688
4689 IF p_usec_rec.reference_class_sch_excl_flag IS NOT NULL THEN
4690 BEGIN
4691 igs_ps_usec_ref_pkg.check_constraints ( 'REFERENCE_CLASS_SCH_EXCL_FLAG', p_usec_rec.reference_class_sch_excl_flag);
4692 EXCEPTION
4693 WHEN OTHERS THEN
4694 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'REFERENCE_CLASS_SCH_EXCL_FLAG', 'LEGACY_TOKENS', TRUE);
4695 p_usec_rec.status := 'E';
4696 END;
4697 END IF;
4698
4699 IF p_usec_rec.reference_rec_exclusion_flag IS NOT NULL THEN
4700 BEGIN
4701 igs_ps_usec_ref_pkg.check_constraints ( 'REFERENCE_REC_EXCLUSION_FLAG', p_usec_rec.reference_rec_exclusion_flag);
4702 EXCEPTION
4703 WHEN OTHERS THEN
4704 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'REFERENCE_REC_EXCLUSION_FLAG', 'LEGACY_TOKENS', TRUE);
4705 p_usec_rec.status := 'E';
4706 END;
4707 END IF;
4708
4709 END validate_ref_db_cons;
4710
4711 -- Main private procedure to create records of Unit Section Reference .
4712
4713 PROCEDURE create_ref ( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type )
4714 AS
4715
4716 FUNCTION check_insert_update (p_usec_rec IN igs_ps_generic_pub.usec_rec_type ) RETURN VARCHAR2 IS
4717
4718 CURSOR c_usec_ref(p_n_uoo_id NUMBER) IS
4719 SELECT 'X'
4720 FROM igs_ps_usec_ref
4721 WHERE uoo_id = p_n_uoo_id;
4722
4723 c_usec_ref_rec c_usec_ref%ROWTYPE;
4724 BEGIN
4725
4726 OPEN c_usec_ref(l_n_uoo_id);
4727 FETCH c_usec_ref INTO c_usec_ref_rec;
4728 IF c_usec_ref%NOTFOUND THEN
4729 CLOSE c_usec_ref;
4730 RETURN 'I';
4731 ELSE
4732 CLOSE c_usec_ref;
4733 RETURN 'U';
4734 END IF;
4735
4736 END check_insert_update;
4737
4738 PROCEDURE Assign_default( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type,
4739 p_insert_update VARCHAR2 ) AS
4740 CURSOR c_usec_ref(p_n_uoo_id NUMBER) IS
4741 SELECT *
4742 FROM igs_ps_usec_ref
4743 WHERE uoo_id = p_n_uoo_id;
4744
4745 c_usec_ref_rec c_usec_ref%ROWTYPE;
4746 BEGIN
4747
4748 IF p_insert_update = 'I' THEN
4749 IF p_usec_rec.reference_subtitle_mod_flag IS NULL THEN
4750 p_usec_rec.reference_subtitle_mod_flag := 'N';
4751 END IF;
4752
4753 IF p_usec_rec.reference_class_sch_excl_flag IS NULL THEN
4754 p_usec_rec.reference_class_sch_excl_flag := 'N';
4755 END IF;
4756
4757 IF p_usec_rec.reference_rec_exclusion_flag IS NULL THEN
4758 p_usec_rec.reference_rec_exclusion_flag := 'N';
4759 END IF;
4760 ELSE
4761
4762 OPEN c_usec_ref(l_n_uoo_id);
4763 FETCH c_usec_ref INTO c_usec_ref_rec;
4764 CLOSE c_usec_ref;
4765
4766 IF p_usec_rec.reference_subtitle IS NULL THEN
4767 p_usec_rec.reference_subtitle := c_usec_ref_rec.subtitle ;
4768 ELSIF p_usec_rec.reference_subtitle = FND_API.G_MISS_CHAR THEN
4769 p_usec_rec.reference_subtitle :=NULL;
4770 END IF;
4771 IF p_usec_rec.reference_short_title IS NULL THEN
4772 p_usec_rec.reference_short_title := c_usec_ref_rec.short_title ;
4773 ELSIF p_usec_rec.reference_short_title = FND_API.G_MISS_CHAR THEN
4774 p_usec_rec.reference_short_title :=NULL;
4775 END IF;
4776 IF p_usec_rec.reference_subtitle_mod_flag IS NULL THEN
4777 p_usec_rec.reference_subtitle_mod_flag := c_usec_ref_rec.subtitle_modifiable_flag ;
4778 ELSIF p_usec_rec.reference_subtitle_mod_flag = FND_API.G_MISS_CHAR THEN
4779 p_usec_rec.reference_subtitle_mod_flag :='N';
4780 END IF;
4781 IF p_usec_rec.reference_class_sch_excl_flag IS NULL THEN
4782 p_usec_rec.reference_class_sch_excl_flag := c_usec_ref_rec.class_schedule_exclusion_flag ;
4783 ELSIF p_usec_rec.reference_class_sch_excl_flag = FND_API.G_MISS_CHAR THEN
4784 p_usec_rec.reference_class_sch_excl_flag :='N';
4785 END IF;
4786 IF p_usec_rec.reference_rec_exclusion_flag IS NULL THEN
4787 p_usec_rec.reference_rec_exclusion_flag := c_usec_ref_rec.record_exclusion_flag ;
4788 ELSIF p_usec_rec.reference_rec_exclusion_flag = FND_API.G_MISS_CHAR THEN
4789 p_usec_rec.reference_rec_exclusion_flag :='N';
4790 END IF;
4791 IF p_usec_rec.reference_attribute_category IS NULL THEN
4792 p_usec_rec.reference_attribute_category := c_usec_ref_rec.attribute_category ;
4793 ELSIF p_usec_rec.reference_attribute_category = FND_API.G_MISS_CHAR THEN
4794 p_usec_rec.reference_attribute_category :=NULL;
4795 END IF;
4796 IF p_usec_rec.reference_attribute1 IS NULL THEN
4797 p_usec_rec.reference_attribute1 := c_usec_ref_rec.attribute1 ;
4798 ELSIF p_usec_rec.reference_attribute1 = FND_API.G_MISS_CHAR THEN
4799 p_usec_rec.reference_attribute1 :=NULL;
4800 END IF;
4801 IF p_usec_rec.reference_attribute2 IS NULL THEN
4802 p_usec_rec.reference_attribute2 := c_usec_ref_rec.attribute2 ;
4803 ELSIF p_usec_rec.reference_attribute2 = FND_API.G_MISS_CHAR THEN
4804 p_usec_rec.reference_attribute2 :=NULL;
4805 END IF;
4806 IF p_usec_rec.reference_attribute3 IS NULL THEN
4807 p_usec_rec.reference_attribute3 := c_usec_ref_rec.attribute3 ;
4808 ELSIF p_usec_rec.reference_attribute3 = FND_API.G_MISS_CHAR THEN
4809 p_usec_rec.reference_attribute3 :=NULL;
4810 END IF;
4811 IF p_usec_rec.reference_attribute4 IS NULL THEN
4812 p_usec_rec.reference_attribute4 := c_usec_ref_rec.attribute4 ;
4813 ELSIF p_usec_rec.reference_attribute4 = FND_API.G_MISS_CHAR THEN
4814 p_usec_rec.reference_attribute4 :=NULL;
4815 END IF;
4816 IF p_usec_rec.reference_attribute5 IS NULL THEN
4817 p_usec_rec.reference_attribute5 := c_usec_ref_rec.attribute5 ;
4818 ELSIF p_usec_rec.reference_attribute5 = FND_API.G_MISS_CHAR THEN
4819 p_usec_rec.reference_attribute5 :=NULL;
4820 END IF;
4821 IF p_usec_rec.reference_attribute6 IS NULL THEN
4822 p_usec_rec.reference_attribute6 := c_usec_ref_rec.attribute6 ;
4823 ELSIF p_usec_rec.reference_attribute6 = FND_API.G_MISS_CHAR THEN
4824 p_usec_rec.reference_attribute6 :=NULL;
4825 END IF;
4826 IF p_usec_rec.reference_attribute7 IS NULL THEN
4827 p_usec_rec.reference_attribute7 := c_usec_ref_rec.attribute7 ;
4828 ELSIF p_usec_rec.reference_attribute7 = FND_API.G_MISS_CHAR THEN
4829 p_usec_rec.reference_attribute7 :=NULL;
4830 END IF;
4831 IF p_usec_rec.reference_attribute8 IS NULL THEN
4832 p_usec_rec.reference_attribute8 := c_usec_ref_rec.attribute8 ;
4833 ELSIF p_usec_rec.reference_attribute8 = FND_API.G_MISS_CHAR THEN
4834 p_usec_rec.reference_attribute8 :=NULL;
4835 END IF;
4836 IF p_usec_rec.reference_attribute9 IS NULL THEN
4837 p_usec_rec.reference_attribute9 := c_usec_ref_rec.attribute9 ;
4838 ELSIF p_usec_rec.reference_attribute9 = FND_API.G_MISS_CHAR THEN
4839 p_usec_rec.reference_attribute9 :=NULL;
4840 END IF;
4841 IF p_usec_rec.reference_attribute10 IS NULL THEN
4842 p_usec_rec.reference_attribute10 := c_usec_ref_rec.attribute10 ;
4843 ELSIF p_usec_rec.reference_attribute10 = FND_API.G_MISS_CHAR THEN
4844 p_usec_rec.reference_attribute10 :=NULL;
4845 END IF;
4846 IF p_usec_rec.reference_attribute11 IS NULL THEN
4847 p_usec_rec.reference_attribute11 := c_usec_ref_rec.attribute11 ;
4848 ELSIF p_usec_rec.reference_attribute11 = FND_API.G_MISS_CHAR THEN
4849 p_usec_rec.reference_attribute11 :=NULL;
4850 END IF;
4851 IF p_usec_rec.reference_attribute12 IS NULL THEN
4852 p_usec_rec.reference_attribute12 := c_usec_ref_rec.attribute12 ;
4853 ELSIF p_usec_rec.reference_attribute12 = FND_API.G_MISS_CHAR THEN
4854 p_usec_rec.reference_attribute12 :=NULL;
4855 END IF;
4856 IF p_usec_rec.reference_attribute13 IS NULL THEN
4857 p_usec_rec.reference_attribute13 := c_usec_ref_rec.attribute13 ;
4858 ELSIF p_usec_rec.reference_attribute13 = FND_API.G_MISS_CHAR THEN
4859 p_usec_rec.reference_attribute13 :=NULL;
4860 END IF;
4861 IF p_usec_rec.reference_attribute14 IS NULL THEN
4862 p_usec_rec.reference_attribute14 := c_usec_ref_rec.attribute14 ;
4863 ELSIF p_usec_rec.reference_attribute14 = FND_API.G_MISS_CHAR THEN
4864 p_usec_rec.reference_attribute14 :=NULL;
4865 END IF;
4866 IF p_usec_rec.reference_attribute15 IS NULL THEN
4867 p_usec_rec.reference_attribute15 := c_usec_ref_rec.attribute15 ;
4868 ELSIF p_usec_rec.reference_attribute15 = FND_API.G_MISS_CHAR THEN
4869 p_usec_rec.reference_attribute15 :=NULL;
4870 END IF;
4871 IF p_usec_rec.reference_attribute16 IS NULL THEN
4872 p_usec_rec.reference_attribute16 := c_usec_ref_rec.attribute16 ;
4873 ELSIF p_usec_rec.reference_attribute16 = FND_API.G_MISS_CHAR THEN
4874 p_usec_rec.reference_attribute16 :=NULL;
4875 END IF;
4876 IF p_usec_rec.reference_attribute17 IS NULL THEN
4877 p_usec_rec.reference_attribute17 := c_usec_ref_rec.attribute17 ;
4878 ELSIF p_usec_rec.reference_attribute17 = FND_API.G_MISS_CHAR THEN
4879 p_usec_rec.reference_attribute17 :=NULL;
4880 END IF;
4881 IF p_usec_rec.reference_attribute18 IS NULL THEN
4882 p_usec_rec.reference_attribute18 := c_usec_ref_rec.attribute18 ;
4883 ELSIF p_usec_rec.reference_attribute18 = FND_API.G_MISS_CHAR THEN
4884 p_usec_rec.reference_attribute18 :=NULL;
4885 END IF;
4886 IF p_usec_rec.reference_attribute19 IS NULL THEN
4887 p_usec_rec.reference_attribute19 := c_usec_ref_rec.attribute19 ;
4888 ELSIF p_usec_rec.reference_attribute19 = FND_API.G_MISS_CHAR THEN
4889 p_usec_rec.reference_attribute19 :=NULL;
4890 END IF;
4891 IF p_usec_rec.reference_attribute20 IS NULL THEN
4892 p_usec_rec.reference_attribute20 := c_usec_ref_rec.attribute20 ;
4893 ELSIF p_usec_rec.reference_attribute20 = FND_API.G_MISS_CHAR THEN
4894 p_usec_rec.reference_attribute20 :=NULL;
4895 END IF;
4896 IF p_usec_rec.reference_title IS NULL THEN
4897 p_usec_rec.reference_title := c_usec_ref_rec.title ;
4898 ELSIF p_usec_rec.reference_title = FND_API.G_MISS_CHAR THEN
4899 p_usec_rec.reference_title :=NULL;
4900 END IF;
4901 END IF;
4902 END Assign_default;
4903
4904 BEGIN
4905
4906 IF p_usec_rec.status = 'S' THEN
4907 get_uoo_id ( p_usec_rec);
4908
4909 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4910 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.status_after_get_uoo_id',
4911 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4912 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4913 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4914 END IF;
4915
4916 END IF;
4917
4918 --Find out whether it is insert/update of record
4919 l_insert_update:='I';
4920 IF p_usec_rec.status = 'S' AND p_calling_context IN ('G', 'S') THEN
4921 l_insert_update:= check_insert_update(p_usec_rec);
4922
4923 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4924 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.status_after_check_insert_update',
4925 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4926 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4927 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4928 END IF;
4929
4930 END IF;
4931
4932 IF p_usec_rec.status = 'S' THEN
4933 Assign_default(p_usec_rec,l_insert_update);
4934
4935 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4936 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.status_after_Assign_default',
4937 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4938 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4939 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4940 END IF;
4941
4942 END IF;
4943
4944 IF ( p_usec_rec.status = 'S' ) THEN
4945 validate_ref_db_cons ( p_usec_rec,l_insert_update );
4946
4947 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4948 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.status_after_validate_ref_db_cons',
4949 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4950 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4951 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4952 END IF;
4953
4954 END IF;
4955 /* Business validations */
4956 IF ( p_usec_rec.status = 'S' ) THEN
4957 -- Check for validation by calling validate_ref
4958 l_n_subtitle_id := NULL;
4959 igs_ps_validate_lgcy_pkg.validate_ref ( p_usec_rec, l_n_subtitle_id ,l_n_uoo_id,l_insert_update);
4960
4961 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4962 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.status_after_Business_validation',
4963 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
4964 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
4965 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
4966 END IF;
4967
4968 END IF;
4969
4970 IF ( p_usec_rec.status = 'S' ) THEN
4971 IF l_insert_update = 'I' THEN
4972 /* Insert Record */
4973 INSERT INTO igs_ps_usec_ref
4974 (unit_section_reference_id,
4975 uoo_id,
4976 short_title,
4977 subtitle,
4978 subtitle_modifiable_flag,
4979 class_schedule_exclusion_flag,
4980 registration_exclusion_flag,
4981 attribute_category,
4982 attribute1,
4983 attribute2,
4984 attribute3,
4985 attribute4,
4986 attribute5,
4987 attribute6,
4988 attribute7,
4989 attribute8,
4990 attribute9,
4991 attribute10,
4992 attribute11,
4993 attribute12,
4994 attribute13,
4995 attribute14,
4996 attribute15,
4997 attribute16,
4998 attribute17,
4999 attribute18,
5000 attribute19,
5001 attribute20,
5002 created_by,
5003 creation_date,
5004 last_updated_by,
5005 last_update_date,
5006 last_update_login,
5007 record_exclusion_flag,
5008 title,
5009 subtitle_id
5010 )
5011 VALUES
5012 (igs_ps_usec_ref_s.NEXTVAL,
5013 l_n_uoo_id,
5014 p_usec_rec.reference_short_title,
5015 p_usec_rec.reference_subtitle,
5016 p_usec_rec.reference_subtitle_mod_flag,
5017 p_usec_rec.reference_class_sch_excl_flag,
5018 null,
5019 p_usec_rec.reference_attribute_category,
5020 p_usec_rec.reference_attribute1,
5021 p_usec_rec.reference_attribute2,
5022 p_usec_rec.reference_attribute3,
5023 p_usec_rec.reference_attribute4,
5024 p_usec_rec.reference_attribute5,
5025 p_usec_rec.reference_attribute6,
5026 p_usec_rec.reference_attribute7,
5027 p_usec_rec.reference_attribute8,
5028 p_usec_rec.reference_attribute9,
5029 p_usec_rec.reference_attribute10,
5030 p_usec_rec.reference_attribute11,
5031 p_usec_rec.reference_attribute12,
5032 p_usec_rec.reference_attribute13,
5033 p_usec_rec.reference_attribute14,
5034 p_usec_rec.reference_attribute15,
5035 p_usec_rec.reference_attribute16,
5036 p_usec_rec.reference_attribute17,
5037 p_usec_rec.reference_attribute18,
5038 p_usec_rec.reference_attribute19,
5039 p_usec_rec.reference_attribute20,
5040 g_n_user_id,
5041 SYSDATE,
5042 g_n_user_id,
5043 SYSDATE,
5044 g_n_login_id,
5045 p_usec_rec.reference_rec_exclusion_flag,
5046 p_usec_rec.reference_title,
5047 l_n_subtitle_id
5048 );
5049
5050 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5051 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.record_inserted',
5052 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5053 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5054 p_usec_rec.unit_class);
5055 END IF;
5056
5057 ELSE ---update
5058 UPDATE igs_ps_usec_ref SET
5059 short_title =p_usec_rec.reference_short_title,
5060 subtitle =p_usec_rec.reference_subtitle,
5061 subtitle_modifiable_flag =p_usec_rec.reference_subtitle_mod_flag,
5062 class_schedule_exclusion_flag =p_usec_rec.reference_class_sch_excl_flag,
5063 attribute_category =p_usec_rec.reference_attribute_category,
5064 attribute1 =p_usec_rec.reference_attribute1,
5065 attribute2 =p_usec_rec.reference_attribute2,
5066 attribute3 =p_usec_rec.reference_attribute3,
5067 attribute4 =p_usec_rec.reference_attribute4,
5068 attribute5 =p_usec_rec.reference_attribute5,
5069 attribute6 =p_usec_rec.reference_attribute6,
5070 attribute7 =p_usec_rec.reference_attribute7,
5071 attribute8 =p_usec_rec.reference_attribute8,
5072 attribute9 =p_usec_rec.reference_attribute9,
5073 attribute10 =p_usec_rec.reference_attribute10,
5074 attribute11 =p_usec_rec.reference_attribute11,
5075 attribute12 =p_usec_rec.reference_attribute12,
5076 attribute13 =p_usec_rec.reference_attribute13,
5077 attribute14 =p_usec_rec.reference_attribute14,
5078 attribute15 =p_usec_rec.reference_attribute15,
5079 attribute16 =p_usec_rec.reference_attribute16,
5080 attribute17 =p_usec_rec.reference_attribute17,
5081 attribute18 =p_usec_rec.reference_attribute18,
5082 attribute19 =p_usec_rec.reference_attribute19,
5083 attribute20 =p_usec_rec.reference_attribute20,
5084 last_updated_by =g_n_user_id,
5085 last_update_date =SYSDATE,
5086 last_update_login =g_n_login_id,
5087 title=p_usec_rec.reference_title,
5088 record_exclusion_flag =p_usec_rec.reference_rec_exclusion_flag,
5089 subtitle_id=l_n_subtitle_id
5090 WHERE uoo_id = l_n_uoo_id;
5091
5092 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5093 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.record_updated',
5094 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5095 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5096 p_usec_rec.unit_class);
5097 END IF;
5098
5099 END IF;
5100 END IF;
5101
5102 END create_ref;
5103 -- Adding the new procedure to import unit section enrollment limits
5104 PROCEDURE create_usec_el(p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type ) AS
5105 /***********************************************************************************************
5106
5107 Created By: SMVK
5108 Date Created By: 28-May-2003
5109 Purpose: This procedure imports Unit Section Enrollment Limits.
5110
5111 Known limitations,enhancements,remarks:
5112
5113 Change History
5114
5115 Who When What
5116
5117 ***********************************************************************************************/
5118 FUNCTION check_insert_update (p_usec_rec IN igs_ps_generic_pub.usec_rec_type ) RETURN VARCHAR2 IS
5119 CURSOR c_usec_lim(p_n_uoo_id NUMBER) IS
5120 SELECT 'X'
5121 FROM igs_ps_usec_lim_wlst
5122 WHERE uoo_id = p_n_uoo_id;
5123
5124 c_usec_lim_rec c_usec_lim%ROWTYPE;
5125 BEGIN
5126
5127 OPEN c_usec_lim(l_n_uoo_id);
5128 FETCH c_usec_lim INTO c_usec_lim_rec;
5129 IF c_usec_lim%NOTFOUND THEN
5130 CLOSE c_usec_lim;
5131 RETURN 'I';
5132 ELSE
5133 CLOSE c_usec_lim;
5134 RETURN 'U';
5135 END IF;
5136
5137 END check_insert_update;
5138
5139 PROCEDURE Assign_default( p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type,
5140 p_insert_update VARCHAR2 ) AS
5141 CURSOR c_uop(cp_c_unit_cd IN igs_ps_unit_ofr_pat_all.unit_cd%TYPE,
5142 cp_n_ver_num IN igs_ps_unit_ofr_pat_all.version_number%TYPE,
5143 cp_c_cal_type IN igs_ps_unit_ofr_pat_all.cal_type%TYPE,
5144 cp_n_seq_num IN igs_ps_unit_ofr_pat_all.ci_sequence_number%TYPE ) IS
5145 SELECT waitlist_allowed, max_students_per_waitlist
5146 FROM igs_ps_unit_ofr_pat_all
5147 WHERE unit_cd = cp_c_unit_cd
5148 AND version_number = cp_n_ver_num
5149 AND cal_type = cp_c_cal_type
5150 AND ci_sequence_number = cp_n_seq_num ;
5151
5152 rec_uop c_uop%ROWTYPE;
5153
5154 CURSOR c_usec_lim(p_n_uoo_id NUMBER) IS
5155 SELECT *
5156 FROM igs_ps_usec_lim_wlst
5157 WHERE uoo_id = p_n_uoo_id;
5158
5159 c_usec_lim_rec c_usec_lim%ROWTYPE;
5160 BEGIN
5161
5162 IF p_insert_update = 'I' THEN
5163 OPEN c_uop (p_usec_rec.unit_cd, p_usec_rec.version_number, l_c_cal_type, l_n_seq_num);
5164 FETCH c_uop INTO rec_uop;
5165 CLOSE c_uop;
5166
5167 IF p_usec_rec.usec_waitlist_allowed IS NULL THEN
5168 p_usec_rec.usec_waitlist_allowed := rec_uop.waitlist_allowed;
5169 END IF;
5170
5171 IF p_usec_rec.usec_max_students_per_waitlist IS NULL THEN
5172 p_usec_rec.usec_max_students_per_waitlist := rec_uop.max_students_per_waitlist;
5173 END IF;
5174 ELSE
5175 OPEN c_usec_lim(l_n_uoo_id);
5176 FETCH c_usec_lim INTO c_usec_lim_rec;
5177 CLOSE c_usec_lim;
5178
5179 IF p_usec_rec.usec_waitlist_allowed IS NULL THEN
5180 p_usec_rec.usec_waitlist_allowed := c_usec_lim_rec.waitlist_allowed;
5181 ELSIF p_usec_rec.usec_waitlist_allowed = FND_API.G_MISS_CHAR THEN
5182 p_usec_rec.usec_waitlist_allowed :='N';
5183 END IF;
5184
5185 IF p_usec_rec.usec_max_students_per_waitlist IS NULL THEN
5186 p_usec_rec.usec_max_students_per_waitlist := c_usec_lim_rec.max_students_per_waitlist ;
5187 ELSIF p_usec_rec.usec_max_students_per_waitlist = FND_API.G_MISS_NUM THEN
5188 p_usec_rec.usec_max_students_per_waitlist :=0;
5189 END IF;
5190
5191 IF p_usec_rec.enrollment_expected IS NULL THEN
5192 p_usec_rec.enrollment_expected := c_usec_lim_rec.enrollment_expected ;
5193 ELSIF p_usec_rec.enrollment_expected = FND_API.G_MISS_NUM THEN
5194 p_usec_rec.enrollment_expected :=NULL;
5195 END IF;
5196
5197 IF p_usec_rec.enrollment_minimum IS NULL THEN
5198 p_usec_rec.enrollment_minimum := c_usec_lim_rec.enrollment_minimum ;
5199 ELSIF p_usec_rec.enrollment_minimum = FND_API.G_MISS_NUM THEN
5200 p_usec_rec.enrollment_minimum :=NULL;
5201 END IF;
5202
5203 IF p_usec_rec.enrollment_maximum IS NULL THEN
5204 p_usec_rec.enrollment_maximum := c_usec_lim_rec.enrollment_maximum ;
5205 ELSIF p_usec_rec.enrollment_maximum = FND_API.G_MISS_NUM THEN
5206 p_usec_rec.enrollment_maximum :=NULL;
5207 END IF;
5208
5209 IF p_usec_rec.advance_maximum IS NULL THEN
5210 p_usec_rec.advance_maximum := c_usec_lim_rec.advance_maximum ;
5211 ELSIF p_usec_rec.advance_maximum = FND_API.G_MISS_NUM THEN
5212 p_usec_rec.advance_maximum :=NULL;
5213 END IF;
5214
5215 IF p_usec_rec.override_enrollment_maximum IS NULL THEN
5216 p_usec_rec.override_enrollment_maximum := c_usec_lim_rec.override_enrollment_max ;
5217 ELSIF p_usec_rec.override_enrollment_maximum = FND_API.G_MISS_NUM THEN
5218 p_usec_rec.override_enrollment_maximum :=NULL;
5219 END IF;
5220
5221 IF p_usec_rec.max_auditors_allowed IS NULL THEN
5222 p_usec_rec.max_auditors_allowed := c_usec_lim_rec.max_auditors_allowed ;
5223 ELSIF p_usec_rec.max_auditors_allowed = FND_API.G_MISS_NUM THEN
5224 p_usec_rec.max_auditors_allowed :=NULL;
5225 END IF;
5226 END IF;
5227
5228 END Assign_default;
5229
5230
5231 PROCEDURE validate_db_cons(p_usec_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rec_type,p_insert_update VARCHAR2 ) AS
5232 BEGIN
5233 IF p_insert_update = 'I' THEN
5234 IF igs_ps_usec_lim_wlst_pkg.get_uk_for_validation(l_n_uoo_id) THEN
5235 p_usec_rec.status :='W';
5236 fnd_message.set_name('IGS','IGS_PS_USEC_ENR_LMTS');
5237 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', fnd_message.get, NULL, FALSE);
5238 END IF;
5239 END IF;
5240
5241 IF p_usec_rec.enrollment_expected IS NOT NULL THEN
5242 BEGIN
5243 igs_ps_unit_ver_pkg.check_constraints('ENROLLMENT_EXPECTED',p_usec_rec.enrollment_expected);
5244 EXCEPTION
5245 WHEN OTHERS THEN
5246 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','ENROLLMENT_EXPECTED','LEGACY_TOKENS',TRUE);
5247 p_usec_rec.status :='E';
5248 END;
5249 END IF;
5250
5251 IF p_usec_rec.enrollment_minimum IS NOT NULL THEN
5252 BEGIN
5253 igs_ps_unit_ver_pkg.check_constraints('ENROLLMENT_MINIMUM',p_usec_rec.enrollment_minimum);
5254 EXCEPTION
5255 WHEN OTHERS THEN
5256 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','ENROLLMENT_MINIMUM','LEGACY_TOKENS',TRUE);
5257 p_usec_rec.status :='E';
5258 END;
5259 END IF;
5260
5261 IF p_usec_rec.enrollment_maximum IS NOT NULL THEN
5262 BEGIN
5263 igs_ps_unit_ver_pkg.check_constraints('ENROLLMENT_MAXIMUM',p_usec_rec.enrollment_maximum);
5264 EXCEPTION
5265 WHEN OTHERS THEN
5266 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','ENROLLMENT_MAXIMUM','LEGACY_TOKENS',TRUE);
5267 p_usec_rec.status :='E';
5268 END;
5269 END IF;
5270
5271 IF p_usec_rec.advance_maximum IS NOT NULL THEN
5272 BEGIN
5273 igs_ps_unit_ver_pkg.check_constraints('ADVANCE_MAXIMUM',p_usec_rec.advance_maximum);
5274 EXCEPTION
5275 WHEN OTHERS THEN
5276 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','ADVANCE_MAXIMUM','LEGACY_TOKENS',TRUE);
5277 p_usec_rec.status :='E';
5278 END;
5279 END IF;
5280
5281 IF p_usec_rec.override_enrollment_maximum IS NOT NULL THEN
5282 BEGIN
5283 igs_ps_unit_ver_pkg.check_constraints('OVERRIDE_ENROLLMENT_MAX',p_usec_rec.override_enrollment_maximum);
5284 EXCEPTION
5285 WHEN OTHERS THEN
5286 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','OVERRIDE_ENROLLMENT_MAX','LEGACY_TOKENS',TRUE);
5287 p_usec_rec.status :='E';
5288 END;
5289 END IF;
5290
5291 IF p_usec_rec.max_auditors_allowed IS NOT NULL THEN
5292 BEGIN
5293 igs_ps_unit_ver_pkg.check_constraints('MAX_AUDITORS_ALLOWED',p_usec_rec. max_auditors_allowed);
5294 EXCEPTION
5295 WHEN OTHERS THEN
5296 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','MAX_AUDITORS_ALLOWED','LEGACY_TOKENS',TRUE);
5297 p_usec_rec.status :='E';
5298 END;
5299 END IF;
5300
5301 IF p_usec_rec.usec_waitlist_allowed IS NOT NULL THEN
5302 BEGIN
5303 igs_ps_unit_ofr_pat_pkg.check_constraints ('WAITLIST_ALLOWED', p_usec_rec.usec_waitlist_allowed);
5304 EXCEPTION
5305 WHEN OTHERS THEN
5306 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','WAITLIST_ALLOWED', 'LEGACY_TOKENS', TRUE);
5307 p_usec_rec.status := 'E';
5308 END;
5309 END IF;
5310
5311 IF p_usec_rec.usec_max_students_per_waitlist IS NOT NULL THEN
5312 BEGIN
5313 igs_ps_unit_ofr_pat_pkg.check_constraints('MAX_STUDENTS_PER_WAITLIST',p_usec_rec.usec_max_students_per_waitlist);
5314 EXCEPTION
5315 WHEN OTHERS THEN
5316 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999999','MAX_STUDENTS_PER_WAITLIST','LEGACY_TOKENS',TRUE);
5317 p_usec_rec.status :='E';
5318 END;
5319 END IF;
5320
5321 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
5322 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
5323 p_usec_rec.status := 'E';
5324 END IF;
5325
5326 END validate_db_cons;
5327
5328 BEGIN
5329
5330 IF p_usec_rec.enrollment_expected IS NULL AND
5331 p_usec_rec.enrollment_minimum IS NULL AND
5332 p_usec_rec.enrollment_maximum IS NULL AND
5333 p_usec_rec.advance_maximum IS NULL AND
5334 p_usec_rec.usec_waitlist_allowed IS NULL AND
5335 p_usec_rec.usec_max_students_per_waitlist IS NULL AND
5336 p_usec_rec.override_enrollment_maximum IS NULL AND
5337 p_usec_rec.max_auditors_allowed IS NULL THEN
5338
5339 --No need to insert/update the empty record
5340 NULL ;
5341 ELSE
5342
5343 IF p_usec_rec.status = 'S' THEN
5344 get_uoo_id ( p_usec_rec);
5345
5346 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5347 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.status_after_get_uoo_id',
5348 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5349 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5350 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
5351 END IF;
5352
5353 END IF;
5354
5355 --Find out whether it is insert/update of record
5356 l_insert_update:='I';
5357 IF p_usec_rec.status = 'S' AND p_calling_context IN ('G', 'S') THEN
5358 l_insert_update:= check_insert_update(p_usec_rec);
5359
5360 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5361 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.status_after_check_insert_update',
5362 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5363 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5364 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
5365 END IF;
5366
5367 END IF;
5368
5369 IF p_usec_rec.status = 'S' THEN
5370 Assign_default(p_usec_rec,l_insert_update);
5371
5372 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5373 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.status_after_Assign_default',
5374 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5375 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5376 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
5377 END IF;
5378
5379 END IF;
5380
5381 IF p_usec_rec.status = 'S' THEN
5382 validate_db_cons(p_usec_rec,l_insert_update);
5383
5384 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5385 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.status_after_validate_db_cons',
5386 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5387 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5388 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
5389 END IF;
5390
5391 END IF;
5392
5393 IF p_usec_rec.status = 'S' THEN
5394 igs_ps_validate_lgcy_pkg.validate_usec_el (p_usec_rec,l_n_uoo_id,l_insert_update);
5395
5396 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5397 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.status_after_business_validations',
5398 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5399 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5400 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
5401 END IF;
5402
5403 END IF;
5404
5405 IF p_usec_rec.status = 'S' THEN
5406 IF l_insert_update = 'I' THEN
5407 /* Insert Record */
5408 INSERT INTO igs_ps_usec_lim_wlst
5409 (unit_section_limit_waitlist_id,
5410 uoo_id,
5411 enrollment_expected,
5412 enrollment_minimum ,
5413 enrollment_maximum ,
5414 advance_maximum,
5415 waitlist_allowed ,
5416 max_students_per_waitlist,
5417 override_enrollment_max,
5418 max_auditors_allowed,
5419 created_by ,
5420 creation_date,
5421 last_updated_by,
5422 last_update_date ,
5423 last_update_login
5424 )
5425 VALUES
5426 (
5427 igs_ps_usec_lim_wlst_s.nextval,
5428 l_n_uoo_id,
5429 p_usec_rec.enrollment_expected,
5430 p_usec_rec.enrollment_minimum,
5431 p_usec_rec.enrollment_maximum,
5432 p_usec_rec.advance_maximum,
5433 p_usec_rec.usec_waitlist_allowed,
5434 p_usec_rec.usec_max_students_per_waitlist,
5435 p_usec_rec.override_enrollment_maximum,
5436 p_usec_rec.max_auditors_allowed,
5437 g_n_user_id,
5438 sysdate,
5439 g_n_user_id,
5440 sysdate,
5441 g_n_login_id
5442 );
5443
5444 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5445 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.record_inserted',
5446 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5447 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5448 p_usec_rec.unit_class);
5449 END IF;
5450
5451 ELSE ---update
5452 UPDATE igs_ps_usec_lim_wlst SET
5453 enrollment_expected=p_usec_rec.enrollment_expected,
5454 enrollment_minimum=p_usec_rec.enrollment_minimum ,
5455 enrollment_maximum=p_usec_rec.enrollment_maximum ,
5456 advance_maximum=p_usec_rec.advance_maximum,
5457 waitlist_allowed=p_usec_rec.usec_waitlist_allowed ,
5458 max_students_per_waitlist=p_usec_rec.usec_max_students_per_waitlist,
5459 override_enrollment_max=p_usec_rec.override_enrollment_maximum,
5460 max_auditors_allowed=p_usec_rec.max_auditors_allowed,
5461 last_updated_by = g_n_user_id,
5462 last_update_date= SYSDATE ,
5463 last_update_login= g_n_login_id
5464 WHERE uoo_id =l_n_uoo_id;
5465
5466 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5467 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.record_updated',
5468 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5469 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5470 p_usec_rec.unit_class);
5471 END IF;
5472
5473 END IF;
5474
5475 igs_ps_validate_lgcy_pkg.post_usec_limits(p_usec_rec,p_calling_context,l_n_uoo_id,l_insert_update);
5476
5477 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5478 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.status_after_post_usec_limits',
5479 'Unit code:'||p_usec_rec.unit_cd||' '||'Version number:'||p_usec_rec.version_number||' '||'teach_cal_alternate_code:'
5480 ||p_usec_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rec.location_cd||' '||'Unit Class:'||
5481 p_usec_rec.unit_class||' '||'Status:'||p_usec_rec.status);
5482 END IF;
5483
5484 END IF;
5485
5486 END IF;
5487
5488 END create_usec_el;
5489
5490
5491 BEGIN
5492
5493 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
5494 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.start_logging_for','Unit Sections');
5495 END IF;
5496
5497 p_c_rec_status := 'S';
5498 FOR I in 1..p_usec_tbl.LAST LOOP
5499 IF p_usec_tbl.EXISTS(I) THEN
5500 p_usec_tbl(I).status := 'S';
5501 p_usec_tbl(I).msg_from := fnd_msg_pub.count_msg;
5502 l_conc_flag := FALSE;
5503
5504 trim_values(p_usec_tbl(I));
5505 -- Create Unit Offering
5506
5507 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5508 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.call',
5509 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5510 ||p_usec_tbl(I).teach_cal_alternate_code);
5511 END IF;
5512
5513 create_uo ( p_usec_rec => p_usec_tbl(I) );
5514
5515 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5516 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uo.status_after_record_creation',
5517 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5518 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Status:'||p_usec_tbl(I).status);
5519 END IF;
5520
5521
5522 IF p_usec_tbl(I).status = 'S' THEN
5523 -- Create Unit Offering Pattern
5524
5525 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5526 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.call',
5527 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5528 ||p_usec_tbl(I).teach_cal_alternate_code);
5529 END IF;
5530
5531 create_uop ( p_usec_tbl(I) );
5532
5533 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5534 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uop.status_after_record_creation',
5535 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5536 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Status:'||p_usec_tbl(I).status);
5537 END IF;
5538
5539 END IF;
5540
5541 IF p_usec_tbl(I).status = 'S' THEN
5542 -- Create Unit Offering Option
5543 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5544 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.call',
5545 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5546 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_tbl(I).location_cd||' '||'Unit Class:'||
5547 p_usec_tbl(I).unit_class);
5548 END IF;
5549
5550 create_uoo ( p_usec_tbl(I) );
5551
5552 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5553 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_uoo.status_after_record_creation',
5554 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5555 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_tbl(I).location_cd||' '||'Unit Class:'||
5556 p_usec_tbl(I).unit_class||' '||'Status:'||p_usec_tbl(I).status);
5557 END IF;
5558 END IF;
5559 IF p_usec_tbl(I).status = 'S' THEN
5560 -- Create Unit Section Credit Points
5561 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5562 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.call',
5563 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5564 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_tbl(I).location_cd||' '||'Unit Class:'||
5565 p_usec_tbl(I).unit_class);
5566 END IF;
5567
5568 create_cp ( p_usec_tbl(I) );
5569
5570 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5571 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_cp.status_after_record_creation',
5572 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5573 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_tbl(I).location_cd||' '||'Unit Class:'||
5574 p_usec_tbl(I).unit_class||' '||'Status:'||p_usec_tbl(I).status);
5575 END IF;
5576
5577 END IF;
5578 IF p_usec_tbl(I).status = 'S' THEN
5579 -- Create Unit Section Reference
5580 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5581 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.call',
5582 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5583 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_tbl(I).location_cd||' '||'Unit Class:'||
5584 p_usec_tbl(I).unit_class);
5585 END IF;
5586
5587 create_ref ( p_usec_tbl(I) );
5588
5589 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5590 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_ref.status_after_record_creation',
5591 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5592 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_tbl(I).location_cd||' '||'Unit Class:'||
5593 p_usec_tbl(I).unit_class||' '||'Status:'||p_usec_tbl(I).status);
5594 END IF;
5595
5596 END IF;
5597 IF p_usec_tbl(I).status = 'S' THEN
5598 -- Create Unit Section Enrollment Limits
5599 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5600 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.call',
5601 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5602 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_tbl(I).location_cd||' '||'Unit Class:'||
5603 p_usec_tbl(I).unit_class);
5604 END IF;
5605
5606 create_usec_el ( p_usec_tbl(I) );
5607
5608 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5609 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.create_usec_el.status_after_record_creation',
5610 'Unit code:'||p_usec_tbl(I).unit_cd||' '||'Version number:'||p_usec_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5611 ||p_usec_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_tbl(I).location_cd||' '||'Unit Class:'||
5612 p_usec_tbl(I).unit_class||' '||'Status:'||p_usec_tbl(I).status);
5613 END IF;
5614
5615 END IF;
5616
5617 -- if the unit section status changed to CANCELLED then invoke the concurrent program to transfer the data to interface
5618 -- the flag is set in validate_uoo(IGSPS86B.pls)
5619 IF l_conc_flag THEN
5620 IF NOT Igs_ps_usec_schedule.prgp_upd_usec_dtls(
5621 p_uoo_id=>l_n_uoo_id,
5622 p_usec_status=>p_usec_tbl(I).unit_section_status,
5623 p_request_id=>l_request_id,
5624 p_message_name=>l_message_name) THEN
5625
5626 fnd_message.set_name ('IGS', l_message_name);
5627 fnd_msg_pub.add;
5628 p_usec_tbl(I).status := 'E';
5629 END IF;
5630 END IF;
5631
5632 IF p_usec_tbl(I).status = 'S' THEN
5633 p_usec_tbl(I).msg_from := NULL;
5634 p_usec_tbl(I).msg_to := NULL;
5635 ELSIF p_usec_tbl(I).status = 'A' THEN
5636 p_usec_tbl(I).msg_from := p_usec_tbl(I).msg_from + 1;
5637 p_usec_tbl(I).msg_to := fnd_msg_pub.count_msg;
5638 ELSE
5639 p_c_rec_status := p_usec_tbl(I).status;
5640 p_usec_tbl(I).msg_from := p_usec_tbl(I).msg_from + 1;
5641 p_usec_tbl(I).msg_to := fnd_msg_pub.count_msg;
5642 IF p_c_rec_status = 'E' THEN
5643 RETURN;
5644 END IF;
5645 END IF;
5646 END IF;--exists
5647 END LOOP;
5648
5649 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
5650 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_section.after_import_status',p_c_rec_status);
5651 END IF;
5652
5653 END create_unit_section;
5654
5655
5656 PROCEDURE create_usec_grd_sch (
5657 p_tab_usec_gs IN OUT NOCOPY igs_ps_generic_pub.usec_gs_tbl_type,
5658 p_c_rec_status OUT NOCOPY VARCHAR2,
5659 p_calling_context IN VARCHAR2
5660 ) AS
5661 /***********************************************************************************************
5662 Created By : shtatiko
5663 Date Created By: 18-NOV-2002
5664 Purpose : This procedure is a sub process to insert records of Unit Section Grading Schema.
5665
5666 Known limitations,enhancements,remarks:
5667 Change History (in reverse chronological order)
5668 Who When What
5669 ********************************************************************************************** */
5670 l_insert_update VARCHAR2(1);
5671 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
5672 l_tbl_uoo igs_ps_create_generic_pkg.uoo_tbl_type;
5673
5674 /* Private Procedures for create_usec_grd_sch */
5675 PROCEDURE trim_values ( p_usec_gs_rec IN OUT NOCOPY igs_ps_generic_pub.usec_gs_rec_type ) AS
5676 BEGIN
5677 p_usec_gs_rec.unit_cd := trim(p_usec_gs_rec.unit_cd);
5678 p_usec_gs_rec.version_number := trim(p_usec_gs_rec.version_number);
5679 p_usec_gs_rec.teach_cal_alternate_code := trim(p_usec_gs_rec.teach_cal_alternate_code);
5680 p_usec_gs_rec.location_cd := trim(p_usec_gs_rec.location_cd);
5681 p_usec_gs_rec.unit_class := trim(p_usec_gs_rec.unit_class);
5682 p_usec_gs_rec.grading_schema_code := trim(p_usec_gs_rec.grading_schema_code);
5683 p_usec_gs_rec.grd_schm_version_number := trim(p_usec_gs_rec.grd_schm_version_number);
5684 p_usec_gs_rec.default_flag := trim(p_usec_gs_rec.default_flag);
5685 END trim_values;
5686
5687 -- validate parameters passed.
5688 PROCEDURE validate_parameters ( p_usec_gs_rec IN OUT NOCOPY igs_ps_generic_pub.usec_gs_rec_type ) AS
5689 BEGIN
5690
5691 /* Check for Mandatory Parameters */
5692 IF p_usec_gs_rec.unit_cd IS NULL OR p_usec_gs_rec.unit_cd = FND_API.G_MISS_CHAR THEN
5693 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
5694 p_usec_gs_rec.status := 'E';
5695 END IF;
5696 IF p_usec_gs_rec.version_number IS NULL OR p_usec_gs_rec.version_number = FND_API.G_MISS_NUM THEN
5697 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
5698 p_usec_gs_rec.status := 'E';
5699 END IF;
5700 IF p_usec_gs_rec.teach_cal_alternate_code IS NULL OR p_usec_gs_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
5701 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
5702 p_usec_gs_rec.status := 'E';
5703 END IF;
5704 IF p_usec_gs_rec.location_cd IS NULL OR p_usec_gs_rec.location_cd = FND_API.G_MISS_CHAR THEN
5705 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
5706 p_usec_gs_rec.status := 'E';
5707 END IF;
5708 IF p_usec_gs_rec.unit_class IS NULL OR p_usec_gs_rec.unit_class = FND_API.G_MISS_CHAR THEN
5709 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
5710 p_usec_gs_rec.status := 'E';
5711 END IF;
5712 IF p_usec_gs_rec.grading_schema_code IS NULL OR p_usec_gs_rec.grading_schema_code = FND_API.G_MISS_CHAR THEN
5713 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'USEC_GRADING_SCHM_CD', 'LEGACY_TOKENS', FALSE);
5714 p_usec_gs_rec.status := 'E';
5715 END IF;
5716 IF p_usec_gs_rec.grd_schm_version_number IS NULL OR p_usec_gs_rec.grd_schm_version_number = FND_API.G_MISS_NUM THEN
5717 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'USEC_GRADING_SCHM_VER_NUM', 'LEGACY_TOKENS', FALSE);
5718 p_usec_gs_rec.status := 'E';
5719 END IF;
5720 IF p_usec_gs_rec.default_flag IS NULL OR p_usec_gs_rec.default_flag = FND_API.G_MISS_CHAR THEN
5721 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'DEFAULT_FLAG', 'LEGACY_TOKENS', FALSE);
5722 p_usec_gs_rec.status := 'E';
5723 END IF;
5724 END validate_parameters;
5725
5726 -- Check for Update
5727 FUNCTION check_insert_update ( p_usec_gs_rec IN OUT NOCOPY igs_ps_generic_pub.usec_gs_rec_type ) RETURN VARCHAR2 IS
5728 CURSOR c_usec_gs(p_grading_schema_code IN VARCHAR2,p_grd_schm_version_number NUMBER ,p_n_uoo_id NUMBER) IS
5729 SELECT 'X'
5730 FROM igs_ps_usec_grd_schm
5731 WHERE grading_schema_code =p_grading_schema_code
5732 AND grd_schm_version_number = p_grd_schm_version_number
5733 AND uoo_id = p_n_uoo_id;
5734
5735 c_usec_gs_rec c_usec_gs%ROWTYPE;
5736 BEGIN
5737
5738 OPEN c_usec_gs(p_usec_gs_rec.grading_schema_code,p_usec_gs_rec.grd_schm_version_number, l_n_uoo_id);
5739 FETCH c_usec_gs INTO c_usec_gs_rec;
5740 IF c_usec_gs%NOTFOUND THEN
5741 CLOSE c_usec_gs;
5742 RETURN 'I';
5743 ELSE
5744 CLOSE c_usec_gs;
5745 RETURN 'U';
5746 END IF;
5747
5748 END check_insert_update;
5749
5750 -- Carry out derivations and validate them
5751 PROCEDURE validate_derivations ( p_usec_gs_rec IN OUT NOCOPY igs_ps_generic_pub.usec_gs_rec_type ) AS
5752 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
5753 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
5754 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
5755 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
5756 l_c_message VARCHAR2(30);
5757 BEGIN
5758
5759
5760 -- Derive Calander Type and Sequence Number
5761 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_gs_rec.teach_cal_alternate_code,
5762 p_cal_type => l_c_cal_type,
5763 p_ci_sequence_number => l_n_seq_num,
5764 p_start_dt => l_d_start_dt,
5765 p_end_dt => l_d_end_dt,
5766 p_return_status => l_c_message );
5767 IF ( l_c_message <> 'SINGLE' ) THEN
5768 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
5769 p_usec_gs_rec.status := 'E';
5770 END IF;
5771
5772
5773 -- Derive uoo_id
5774 l_c_message := NULL;
5775 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_gs_rec.unit_cd,
5776 p_ver_num => p_usec_gs_rec.version_number,
5777 p_cal_type => l_c_cal_type,
5778 p_seq_num => l_n_seq_num,
5779 p_loc_cd => p_usec_gs_rec.location_cd,
5780 p_unit_class => p_usec_gs_rec.unit_class,
5781 p_uoo_id => l_n_uoo_id,
5782 p_message => l_c_message );
5783 IF ( l_c_message IS NOT NULL ) THEN
5784 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
5785 p_usec_gs_rec.status := 'E';
5786 END IF;
5787
5788 END validate_derivations;
5789
5790 -- Validate Database Constraints
5791 PROCEDURE validate_db_cons ( p_usec_gs_rec IN OUT NOCOPY igs_ps_generic_pub.usec_gs_rec_type,p_insert_update VARCHAR2 ) AS
5792 BEGIN
5793 IF (p_insert_update = 'I') THEN
5794 /* Unique Key Validation */
5795 IF igs_ps_usec_grd_schm_pkg.get_uk_for_validation ( x_grading_schema_code => p_usec_gs_rec.grading_schema_code,
5796 x_grd_schm_version_number => p_usec_gs_rec.grd_schm_version_number,
5797 x_uoo_id => l_n_uoo_id ) THEN
5798 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_GRADING_SCHM', 'LEGACY_TOKENS', FALSE);
5799 p_usec_gs_rec.status := 'W';
5800 RETURN;
5801 END IF;
5802 END IF;
5803
5804 /* Validate Check Constraints */
5805 BEGIN
5806 igs_ps_usec_grd_schm_pkg.check_constraints ( 'DEFAULT_FLAG', p_usec_gs_rec.default_flag );
5807 EXCEPTION
5808 WHEN OTHERS THEN
5809 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'DEFAULT_FLAG', 'LEGACY_TOKENS', TRUE);
5810 p_usec_gs_rec.status := 'E';
5811 END;
5812
5813 /* Validate FK Constraints */
5814 IF NOT igs_as_grd_schema_pkg.get_pk_for_validation ( p_usec_gs_rec.grading_schema_code, p_usec_gs_rec.grd_schm_version_number) THEN
5815 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_GRADING_SCHM', 'LEGACY_TOKENS', FALSE);
5816 p_usec_gs_rec.status := 'E';
5817 END IF;
5818
5819 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
5820 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
5821 p_usec_gs_rec.status := 'E';
5822 END IF;
5823 END validate_db_cons;
5824
5825
5826 /* Main Unit Section Grading Schema Sub Process */
5827 BEGIN
5828
5829 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
5830 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.start_logging_for','Unit Section Grading Schema');
5831 END IF;
5832
5833 p_c_rec_status := 'S';
5834 FOR I in 1..p_tab_usec_gs.LAST LOOP
5835
5836 IF p_tab_usec_gs.EXISTS(I) THEN
5837 l_n_uoo_id := NULL;
5838 p_tab_usec_gs(I).status := 'S';
5839 p_tab_usec_gs(I).msg_from := fnd_msg_pub.count_msg;
5840 trim_values(p_tab_usec_gs(I) );
5841 validate_parameters ( p_tab_usec_gs(I) );
5842
5843 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5844 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.status_after_validate_parameters',
5845 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5846 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5847 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5848 ||p_tab_usec_gs(I).grd_schm_version_number||' '||'Status:'||p_tab_usec_gs(I).status);
5849 END IF;
5850
5851 IF p_tab_usec_gs(I).status = 'S' THEN
5852 validate_derivations ( p_tab_usec_gs(I));
5853
5854 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5855 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.status_after_validate_derivations',
5856 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5857 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5858 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5859 ||p_tab_usec_gs(I).grd_schm_version_number||' '||'Status:'||p_tab_usec_gs(I).status);
5860 END IF;
5861
5862 END IF;
5863
5864 --Find out whether it is insert/update of record
5865 l_insert_update:='I';
5866 IF p_tab_usec_gs(I).status = 'S' AND p_calling_context IN ('G','S') THEN
5867 l_insert_update:= check_insert_update(p_tab_usec_gs(I));
5868
5869 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5870 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.status_after_check_insert_update',
5871 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5872 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5873 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5874 ||p_tab_usec_gs(I).grd_schm_version_number||' '||'Status:'||p_tab_usec_gs(I).status);
5875 END IF;
5876
5877 END IF;
5878
5879
5880 -- Find out whether record can go for import in context of cancelled/aborted
5881 IF p_tab_usec_gs(I).status = 'S' AND p_calling_context = 'S' THEN
5882 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
5883 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
5884 fnd_msg_pub.add;
5885 p_tab_usec_gs(I).status := 'A';
5886 END IF;
5887
5888 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5889 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.status_after_check_import_allowed',
5890 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5891 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5892 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5893 ||p_tab_usec_gs(I).grd_schm_version_number||' '||'Status:'||p_tab_usec_gs(I).status);
5894 END IF;
5895
5896 END IF;
5897
5898 IF l_tbl_uoo.count = 0 THEN
5899 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
5900 ELSE
5901 IF NOT igs_ps_validate_lgcy_pkg.isExists(l_n_uoo_id,l_tbl_uoo) THEN
5902 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
5903 END IF;
5904 END IF;
5905
5906 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5907 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.count_unique_uoo_ids',
5908 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5909 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5910 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5911 ||p_tab_usec_gs(I).grd_schm_version_number||' '||'Count:'||l_tbl_uoo.count);
5912 END IF;
5913
5914 IF p_tab_usec_gs(I).status = 'S' THEN
5915 validate_db_cons ( p_tab_usec_gs(I),l_insert_update );
5916
5917 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5918 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.status_after_validate_db_cons',
5919 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5920 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5921 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5922 ||p_tab_usec_gs(I).grd_schm_version_number||' '||'Status:'||p_tab_usec_gs(I).status);
5923 END IF;
5924
5925 END IF;
5926
5927
5928
5929 /* Business Validations */
5930 /* Proceed with business validations only if the status is Success, 'S' */
5931 IF p_tab_usec_gs(I).status = 'S' THEN
5932 igs_ps_validate_lgcy_pkg.validate_usec_grd_sch ( p_tab_usec_gs(I),l_n_uoo_id );
5933
5934 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5935 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.status_after_Business_validation',
5936 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5937 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5938 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5939 ||p_tab_usec_gs(I).grd_schm_version_number||' '||'Status:'||p_tab_usec_gs(I).status);
5940 END IF;
5941
5942 END IF;
5943
5944 IF p_tab_usec_gs(I).status = 'S' THEN
5945 IF l_insert_update = 'I' THEN
5946 /* Insert Record */
5947 INSERT INTO igs_ps_usec_grd_schm
5948 (unit_section_grading_schema_id,
5949 uoo_id,
5950 grading_schema_code,
5951 grd_schm_version_number,
5952 default_flag,
5953 created_by,
5954 creation_date,
5955 last_updated_by,
5956 last_update_date,
5957 last_update_login
5958 )
5959 VALUES
5960 (igs_ps_usec_grd_schm_s.NEXTVAL,
5961 l_n_uoo_id,
5962 p_tab_usec_gs(I).grading_schema_code,
5963 p_tab_usec_gs(I).grd_schm_version_number,
5964 p_tab_usec_gs(I).default_flag,
5965 g_n_user_id,
5966 SYSDATE,
5967 g_n_user_id,
5968 SYSDATE,
5969 g_n_login_id
5970 );
5971
5972 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5973 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.record_inserted',
5974 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5975 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5976 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5977 ||p_tab_usec_gs(I).grd_schm_version_number);
5978 END IF;
5979
5980
5981 ELSE
5982 /*Update record*/
5983 UPDATE igs_ps_usec_grd_schm
5984 SET default_flag = p_tab_usec_gs(I).default_flag,
5985 last_updated_by = g_n_user_id,
5986 last_update_date = SYSDATE,
5987 last_update_login = g_n_login_id
5988 WHERE grading_schema_code = p_tab_usec_gs(I).grading_schema_code
5989 AND grd_schm_version_number = p_tab_usec_gs(I).grd_schm_version_number
5990 AND uoo_id = l_n_uoo_id;
5991
5992 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5993 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.record_updated',
5994 'Unit code:'||p_tab_usec_gs(I).unit_cd||' '||'Version number:'||p_tab_usec_gs(I).version_number||' '||'teach_cal_alternate_code:'
5995 ||p_tab_usec_gs(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_gs(I).location_cd||' '||'Unit Class:'||
5996 p_tab_usec_gs(I).unit_class||' '||'Grading Schema Code:'||p_tab_usec_gs(I).grading_schema_code||' '||'Grading Schema Version Number:'
5997 ||p_tab_usec_gs(I).grd_schm_version_number);
5998 END IF;
5999
6000 END IF;--insert/update
6001 END IF;
6002
6003 IF p_tab_usec_gs(I).status = 'S' THEN
6004 p_tab_usec_gs(I).msg_from := NULL;
6005 p_tab_usec_gs(I).msg_to := NULL;
6006 ELSIF p_tab_usec_gs(I).status = 'A' THEN
6007 p_tab_usec_gs(I).msg_from := p_tab_usec_gs(I).msg_from + 1;
6008 p_tab_usec_gs(I).msg_to := fnd_msg_pub.count_msg;
6009 ELSE
6010 p_c_rec_status := p_tab_usec_gs(I).status;
6011 p_tab_usec_gs(I).msg_from := p_tab_usec_gs(I).msg_from+1;
6012 p_tab_usec_gs(I).msg_to := fnd_msg_pub.count_msg;
6013 IF p_tab_usec_gs(I).status = 'E' THEN
6014 RETURN;
6015 END IF;
6016 END IF;
6017
6018 END IF;--exists
6019 END LOOP;
6020
6021 /* Post Insert/Update Checks */
6022 IF NOT igs_ps_validate_lgcy_pkg.post_usec_grd_sch (p_tab_usec_gs,l_tbl_uoo) THEN
6023 p_c_rec_status := 'E';
6024 END IF;
6025 l_tbl_uoo.DELETE;
6026
6027 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
6028 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_grd_sch.after_import_status',p_c_rec_status);
6029 END IF;
6030
6031
6032 END create_usec_grd_sch;
6033
6034 PROCEDURE create_usec_occur ( p_tab_usec_occur IN OUT NOCOPY igs_ps_generic_pub.uso_tbl_type,
6035 p_c_rec_status OUT NOCOPY VARCHAR2,
6036 p_calling_context IN VARCHAR2) AS
6037
6038 /***********************************************************************************************
6039 Created By : shtatiko
6040 Date Created By: 19-NOV-2002
6041 Purpose : This procedure is a sub process to insert records of Unit Section Occurrence.
6042
6043 Known limitations,enhancements,remarks:
6044 Change History (in reverse chronological order)
6045 Who When What
6046 sommukhe 02-AUG-2006 Bug#5356402, Using a PL/SQl table l_tbl_uso to store USO that get inserted.
6047 sommukhe 27-APR-2006 Bug#5122473,Modified the cursor check_ovrd to include Date override check
6048 so that the Scheduling API considers Date Occurrence Override during import.
6049 sommukhe 27-SEP-2005 Bug #4632652.Used cursor c_build_id to derive Building id.
6050 smvk 25-jun-2003 Enh bug#2918094. Added column cancel_flag and its value will be 'N'
6051 jbegum 3-June-2003 Enh Bug#2972950
6052 For PSP Scheduling Enhancements TD:
6053 Modified the local procedure's validate_derivation,validate_db_cons.
6054 ********************************************************************************************** */
6055
6056 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
6057 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
6058 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
6059 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
6060 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
6061 l_n_uso_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE;
6062 l_n_usec_occurs_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE;
6063
6064 l_n_building_code igs_ps_usec_occurs_all.building_code%TYPE;
6065 l_n_dedicated_building_code igs_ps_usec_occurs_all.dedicated_building_code%TYPE;
6066 l_n_preferred_building_code igs_ps_usec_occurs_all.preferred_building_code%TYPE;
6067
6068 l_n_room_code igs_ps_usec_occurs_all.room_code%TYPE;
6069 l_n_dedicated_room_code igs_ps_usec_occurs_all.dedicated_room_code%TYPE;
6070 l_n_preferred_room_code igs_ps_usec_occurs_all.preferred_room_code%TYPE;
6071
6072 l_c_schedule_status igs_ps_usec_occurs_all.schedule_status%TYPE;
6073 l_notify_status igs_ps_usec_occurs_all.notify_status%TYPE;
6074
6075 l_insert_update VARCHAR2(1);
6076 l_n_tbl_cnt NUMBER;
6077
6078
6079
6080 PROCEDURE trim_values ( p_uso_rec IN OUT NOCOPY igs_ps_generic_pub.uso_rec_type ) AS
6081 BEGIN
6082 p_uso_rec.unit_cd := trim(p_uso_rec.unit_cd);
6083 p_uso_rec.version_number := trim(p_uso_rec.version_number);
6084 p_uso_rec.teach_cal_alternate_code := trim(p_uso_rec.teach_cal_alternate_code);
6085 p_uso_rec.location_cd := trim(p_uso_rec.location_cd);
6086 p_uso_rec.unit_class := trim(p_uso_rec.unit_class);
6087 p_uso_rec.occurrence_identifier := trim(p_uso_rec.occurrence_identifier);
6088 p_uso_rec.to_be_announced := trim(p_uso_rec.to_be_announced);
6089 p_uso_rec.monday := trim(p_uso_rec.monday);
6090 p_uso_rec.tuesday := trim(p_uso_rec.tuesday);
6091 p_uso_rec.wednesday := trim(p_uso_rec.wednesday);
6092 p_uso_rec.thursday := trim(p_uso_rec.thursday);
6093 p_uso_rec.friday := trim(p_uso_rec.friday);
6094 p_uso_rec.saturday := trim(p_uso_rec.saturday);
6095 p_uso_rec.sunday := trim(p_uso_rec.sunday);
6096 p_uso_rec.start_date := TRUNC(p_uso_rec.start_date);
6097 p_uso_rec.end_date := TRUNC(p_uso_rec.end_date);
6098 p_uso_rec.building_code := trim(p_uso_rec.building_code);
6099 p_uso_rec.room_code := trim(p_uso_rec.room_code);
6100 p_uso_rec.dedicated_building_code := trim(p_uso_rec.dedicated_building_code);
6101 p_uso_rec.dedicated_room_code := trim(p_uso_rec.dedicated_room_code);
6102 p_uso_rec.preferred_building_code := trim(p_uso_rec.preferred_building_code);
6103 p_uso_rec.preferred_room_code := trim(p_uso_rec.preferred_room_code);
6104 p_uso_rec.no_set_day_ind := trim(p_uso_rec.no_set_day_ind);
6105 p_uso_rec.preferred_region_code := trim(p_uso_rec.preferred_region_code);
6106 p_uso_rec.attribute_category := trim(p_uso_rec.attribute_category);
6107 p_uso_rec.attribute1 := trim(p_uso_rec.attribute1);
6108 p_uso_rec.attribute2 := trim(p_uso_rec.attribute2);
6109 p_uso_rec.attribute3 := trim(p_uso_rec.attribute3);
6110 p_uso_rec.attribute4 := trim(p_uso_rec.attribute4);
6111 p_uso_rec.attribute5 := trim(p_uso_rec.attribute5);
6112 p_uso_rec.attribute6 := trim(p_uso_rec.attribute6);
6113 p_uso_rec.attribute7 := trim(p_uso_rec.attribute7);
6114 p_uso_rec.attribute8 := trim(p_uso_rec.attribute8);
6115 p_uso_rec.attribute9 := trim(p_uso_rec.attribute9);
6116 p_uso_rec.attribute10 := trim(p_uso_rec.attribute10);
6117 p_uso_rec.attribute11 := trim(p_uso_rec.attribute11);
6118 p_uso_rec.attribute12 := trim(p_uso_rec.attribute12);
6119 p_uso_rec.attribute13 := trim(p_uso_rec.attribute13);
6120 p_uso_rec.attribute14 := trim(p_uso_rec.attribute14);
6121 p_uso_rec.attribute15 := trim(p_uso_rec.attribute15);
6122 p_uso_rec.attribute16 := trim(p_uso_rec.attribute16);
6123 p_uso_rec.attribute17 := trim(p_uso_rec.attribute17);
6124 p_uso_rec.attribute18 := trim(p_uso_rec.attribute18);
6125 p_uso_rec.attribute19 := trim(p_uso_rec.attribute19);
6126 p_uso_rec.attribute20 := trim(p_uso_rec.attribute20);
6127
6128 END trim_values;
6129
6130 /* Private Procedures for create_usec_occur */
6131 PROCEDURE validate_parameters ( p_uso_rec IN OUT NOCOPY igs_ps_generic_pub.uso_rec_type ) AS
6132 BEGIN
6133
6134 /* Check for Mandatory Parameters */
6135 IF p_uso_rec.unit_cd IS NULL OR p_uso_rec.unit_cd = FND_API.G_MISS_CHAR THEN
6136 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
6137 p_uso_rec.status := 'E';
6138 END IF;
6139 IF p_uso_rec.version_number IS NULL OR p_uso_rec.version_number = FND_API.G_MISS_NUM THEN
6140 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VERSION', 'LEGACY_TOKENS', FALSE);
6141 p_uso_rec.status := 'E';
6142 END IF;
6143 IF p_uso_rec.teach_cal_alternate_code IS NULL OR p_uso_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
6144 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
6145 p_uso_rec.status := 'E';
6146 END IF;
6147 IF p_uso_rec.location_cd IS NULL OR p_uso_rec.location_cd = FND_API.G_MISS_CHAR THEN
6148 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
6149 p_uso_rec.status := 'E';
6150 END IF;
6151 IF p_uso_rec.unit_class IS NULL OR p_uso_rec.unit_class = FND_API.G_MISS_CHAR THEN
6152 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
6153 p_uso_rec.status := 'E';
6154 END IF;
6155 IF p_uso_rec.occurrence_identifier IS NULL OR p_uso_rec.occurrence_identifier = FND_API.G_MISS_CHAR THEN
6156 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'USEC_OCCRS_ID', 'IGS_PS_LOG_PARAMETERS', FALSE);
6157 p_uso_rec.status := 'E';
6158 END IF;
6159
6160 END validate_parameters;
6161
6162 PROCEDURE validate_derivations ( p_uso_rec IN OUT NOCOPY igs_ps_generic_pub.uso_rec_type ) AS
6163
6164 CURSOR c_bld_id ( cp_building_cd igs_ad_building_all.building_cd%TYPE,
6165 cp_location_cd igs_ad_building_all.location_cd%TYPE ) IS
6166 SELECT building_id
6167 FROM igs_ad_building_all
6168 WHERE
6169 building_cd = cp_building_cd AND
6170 location_cd = cp_location_cd;
6171
6172 CURSOR c_build_id ( cp_building_cd igs_ad_building_all.building_cd%TYPE) IS
6173 SELECT building_id
6174 FROM igs_ad_building_all
6175 WHERE building_cd = cp_building_cd;
6176
6177 CURSOR c_room_id ( cp_building_id igs_ad_building_all.building_id%TYPE,
6178 cp_room_cd igs_ad_room_all.room_cd%TYPE ) IS
6179 SELECT room_id
6180 FROM igs_ad_room_all
6181 WHERE
6182 room_cd = cp_room_cd AND
6183 building_id = cp_building_id;
6184
6185 l_c_message VARCHAR2(30);
6186
6187 BEGIN
6188 l_c_message :=NULL;
6189
6190 -- Derive Calander Type and Sequence Number
6191 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_uso_rec.teach_cal_alternate_code,
6192 p_cal_type => l_c_cal_type,
6193 p_ci_sequence_number => l_n_seq_num,
6194 p_start_dt => l_d_start_dt,
6195 p_end_dt => l_d_end_dt,
6196 p_return_status => l_c_message );
6197 IF ( l_c_message <> 'SINGLE' ) THEN
6198 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
6199 p_uso_rec.status := 'E';
6200 END IF;
6201
6202 l_c_message :=NULL;
6203
6204 -- Derive uoo_id
6205 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_uso_rec.unit_cd,
6206 p_ver_num => p_uso_rec.version_number,
6207 p_cal_type => l_c_cal_type,
6208 p_seq_num => l_n_seq_num,
6209 p_loc_cd => p_uso_rec.location_cd,
6210 p_unit_class => p_uso_rec.unit_class,
6211 p_uoo_id => l_n_uoo_id,
6212 p_message => l_c_message );
6213 IF ( l_c_message IS NOT NULL ) THEN
6214 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
6215 p_uso_rec.status := 'E';
6216 END IF;
6217
6218 -- Derive Building Identifier and associated Room Identifier.
6219 IF p_uso_rec.building_code IS NOT NULL AND p_uso_rec.building_code <> FND_API.G_MISS_CHAR THEN
6220 OPEN c_build_id ( p_uso_rec.building_code);
6221 FETCH c_build_id INTO l_n_building_code;
6222 IF ( c_build_id%NOTFOUND ) THEN
6223 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'BUILDING_CODE', 'LEGACY_TOKENS', FALSE);
6224 p_uso_rec.status := 'E';
6225 END IF;
6226 CLOSE c_build_id;
6227
6228 -- Derive Room Identifier
6229 IF p_uso_rec.room_code IS NOT NULL AND p_uso_rec.room_code <> FND_API.G_MISS_CHAR THEN
6230 OPEN c_room_id ( l_n_building_code, p_uso_rec.room_code );
6231 FETCH c_room_id INTO l_n_room_code;
6232 IF ( c_room_id%NOTFOUND ) THEN
6233 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'ROOM_CODE', 'LEGACY_TOKENS', FALSE);
6234 p_uso_rec.status := 'E';
6235 END IF;
6236 CLOSE c_room_id;
6237 END IF;
6238 END IF;
6239
6240 -- Derive Dedicated Building Identifier associated Room Identifier
6241 IF p_uso_rec.dedicated_building_code IS NOT NULL AND p_uso_rec.dedicated_building_code <> FND_API.G_MISS_CHAR THEN
6242 OPEN c_bld_id ( p_uso_rec.dedicated_building_code, p_uso_rec.location_cd );
6243 FETCH c_bld_id INTO l_n_dedicated_building_code;
6244 IF ( c_bld_id%NOTFOUND ) THEN
6245 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', igs_ps_validate_lgcy_pkg.get_lkup_meaning('DEDICATED', 'LEGACY_TOKENS') || ' ' ||
6246 igs_ps_validate_lgcy_pkg.get_lkup_meaning('BUILDING_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6247 p_uso_rec.status := 'E';
6248 END IF;
6249 CLOSE c_bld_id;
6250
6251 -- Derive Dedicated Room Identifier
6252 IF p_uso_rec.dedicated_room_code IS NOT NULL AND p_uso_rec.dedicated_room_code <> FND_API.G_MISS_CHAR THEN
6253 OPEN c_room_id ( l_n_dedicated_building_code, p_uso_rec.dedicated_room_code );
6254 FETCH c_room_id INTO l_n_dedicated_room_code;
6255 IF ( c_room_id%NOTFOUND ) THEN
6256 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', igs_ps_validate_lgcy_pkg.get_lkup_meaning('DEDICATED', 'LEGACY_TOKENS') || ' ' ||
6257 igs_ps_validate_lgcy_pkg.get_lkup_meaning('ROOM_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6258 p_uso_rec.status := 'E';
6259 END IF;
6260 CLOSE c_room_id;
6261 END IF;
6262 END IF;
6263
6264 -- Derive Preferred Building Identifier
6265 IF p_uso_rec.preferred_building_code IS NOT NULL AND p_uso_rec.preferred_building_code <> FND_API.G_MISS_CHAR THEN
6266 OPEN c_bld_id ( p_uso_rec.preferred_building_code, p_uso_rec.location_cd );
6267 FETCH c_bld_id INTO l_n_preferred_building_code;
6268 IF ( c_bld_id%NOTFOUND ) THEN
6269 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', igs_ps_validate_lgcy_pkg.get_lkup_meaning('PREFERRED', 'LEGACY_TOKENS') || ' ' ||
6270 igs_ps_validate_lgcy_pkg.get_lkup_meaning('BUILDING_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6271 p_uso_rec.status := 'E';
6272 END IF;
6273 CLOSE c_bld_id;
6274
6275 -- Derive Preferred Room Identifier
6276 IF p_uso_rec.preferred_room_code IS NOT NULL AND p_uso_rec.preferred_room_code <> FND_API.G_MISS_CHAR THEN
6277 OPEN c_room_id ( l_n_preferred_building_code, p_uso_rec.preferred_room_code );
6278 FETCH c_room_id INTO l_n_preferred_room_code;
6279 IF ( c_room_id%NOTFOUND ) THEN
6280 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', igs_ps_validate_lgcy_pkg.get_lkup_meaning('PREFERRED', 'LEGACY_TOKENS') || ' ' ||
6281 igs_ps_validate_lgcy_pkg.get_lkup_meaning('ROOM_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6282 p_uso_rec.status := 'E';
6283 END IF;
6284 CLOSE c_room_id;
6285 END IF;
6286 END IF;
6287
6288
6289 END validate_derivations;
6290
6291 -- Validate Database Constraints
6292 PROCEDURE validate_db_cons ( p_uso_rec IN OUT NOCOPY igs_ps_generic_pub.uso_rec_type,p_insert IN VARCHAR2 ) AS
6293 BEGIN
6294
6295 /* Validate Check Constraints */
6296
6297 -- Following validation added as part of bug#2972950 for the PSP Scheduling Enhancements TD
6298 -- If No Set Day Indicator is not NULL then it should have a value of either of 'Y' or 'N'
6299 BEGIN
6300 igs_ps_usec_occurs_pkg.check_constraints ( 'NO_SET_DAY_IND', p_uso_rec.no_set_day_ind );
6301 EXCEPTION
6302 WHEN OTHERS THEN
6303 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'NO_SET_DAY_IND', 'LEGACY_TOKENS', TRUE);
6304 p_uso_rec.status := 'E';
6305 END;
6306
6307 BEGIN
6308 igs_ps_usec_occurs_pkg.check_constraints ( 'TO_BE_ANNOUNCED', p_uso_rec.to_be_announced );
6309 EXCEPTION
6310 WHEN OTHERS THEN
6311 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'TO_BE_ANNOUNCED', 'LEGACY_TOKENS', TRUE);
6312 p_uso_rec.status := 'E';
6313 END;
6314
6315 BEGIN
6316 igs_ps_usec_occurs_pkg.check_constraints ( 'MONDAY', p_uso_rec.monday );
6317 EXCEPTION
6318 WHEN OTHERS THEN
6319 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'MONDAY', 'DT_OFFSET_CONSTRAINT_TYPE', TRUE);
6320 p_uso_rec.status := 'E';
6321 END;
6322
6323 BEGIN
6324 igs_ps_usec_occurs_pkg.check_constraints ( 'TUESDAY', p_uso_rec.tuesday );
6325 EXCEPTION
6326 WHEN OTHERS THEN
6327 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'TUESDAY', 'DT_OFFSET_CONSTRAINT_TYPE', TRUE);
6328 p_uso_rec.status := 'E';
6329 END;
6330
6331 BEGIN
6332 igs_ps_usec_occurs_pkg.check_constraints ( 'WEDNESDAY', p_uso_rec.wednesday );
6333 EXCEPTION
6334 WHEN OTHERS THEN
6335 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'WEDNESDAY', 'DT_OFFSET_CONSTRAINT_TYPE', TRUE);
6336 p_uso_rec.status := 'E';
6337 END;
6338
6339 BEGIN
6340 igs_ps_usec_occurs_pkg.check_constraints ( 'THURSDAY', p_uso_rec.thursday );
6341 EXCEPTION
6342 WHEN OTHERS THEN
6343 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'THURSDAY', 'DT_OFFSET_CONSTRAINT_TYPE', TRUE);
6344 p_uso_rec.status := 'E';
6345 END;
6346
6347 BEGIN
6348 igs_ps_usec_occurs_pkg.check_constraints ( 'FRIDAY', p_uso_rec.friday );
6349 EXCEPTION
6350 WHEN OTHERS THEN
6351 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'FRIDAY', 'DT_OFFSET_CONSTRAINT_TYPE', TRUE);
6352 p_uso_rec.status := 'E';
6353 END;
6354
6355 BEGIN
6356 igs_ps_usec_occurs_pkg.check_constraints ( 'SATURDAY', p_uso_rec.saturday );
6357 EXCEPTION
6358 WHEN OTHERS THEN
6359 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'SATURDAY', 'DT_OFFSET_CONSTRAINT_TYPE', TRUE);
6360 p_uso_rec.status := 'E';
6361 END;
6362
6363 BEGIN
6364 igs_ps_usec_occurs_pkg.check_constraints ( 'SUNDAY', p_uso_rec.sunday );
6365 EXCEPTION
6366 WHEN OTHERS THEN
6367 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'SUNDAY', 'DT_OFFSET_CONSTRAINT_TYPE', TRUE);
6368 p_uso_rec.status := 'E';
6369 END;
6370
6371
6372 IF p_insert = 'I' THEN
6373 /* Unique Key Validation */
6374 IF igs_ps_usec_occurs_pkg.get_uk_for_validation ( x_uoo_id => l_n_uoo_id ,
6375 x_occurrence_identifier => p_uso_rec.occurrence_identifier
6376 ) THEN
6377 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_OCCRS_ID', 'IGS_PS_LOG_PARAMETERS', FALSE);
6378 p_uso_rec.status := 'W';
6379 RETURN;
6380 END IF;
6381 END IF;
6382
6383 /* Validate FK Constraints */
6384
6385 -- Check for the existence of Unit Section
6386 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
6387 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
6388 p_uso_rec.status := 'E';
6389 END IF;
6390
6391 -- Check for the existence of Buildings, if their codes are passed
6392 IF l_n_building_code IS NOT NULL THEN
6393 IF NOT igs_ad_building_pkg.get_pk_for_validation ( l_n_building_code ) THEN
6394 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'BUILDING_CODE', 'LEGACY_TOKENS', FALSE);
6395 p_uso_rec.status := 'E';
6396 END IF;
6397 END IF;
6398
6399 IF l_n_dedicated_building_code IS NOT NULL THEN
6400 IF NOT igs_ad_building_pkg.get_pk_for_validation ( l_n_dedicated_building_code ) THEN
6401 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', igs_ps_validate_lgcy_pkg.get_lkup_meaning('DEDICATED', 'LEGACY_TOKENS') || ' ' ||
6402 igs_ps_validate_lgcy_pkg.get_lkup_meaning('BUILDING_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6403 p_uso_rec.status := 'E';
6404 END IF;
6405 END IF;
6406
6407 IF l_n_preferred_building_code IS NOT NULL THEN
6408 IF NOT igs_ad_building_pkg.get_pk_for_validation ( l_n_preferred_building_code ) THEN
6409 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', igs_ps_validate_lgcy_pkg.get_lkup_meaning('PREFERRED', 'LEGACY_TOKENS') || ' ' ||
6410 igs_ps_validate_lgcy_pkg.get_lkup_meaning('BUILDING_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6411 p_uso_rec.status := 'E';
6412 END IF;
6413 END IF;
6414
6415 -- Check for the existence of Rooms, if their codes are passed
6416 IF l_n_room_code IS NOT NULL THEN
6417 IF NOT igs_ad_room_pkg.get_pk_for_validation ( l_n_room_code ) THEN
6418 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ROOM_CODE', 'LEGACY_TOKENS', FALSE);
6419 p_uso_rec.status := 'E';
6420 END IF;
6421 END IF;
6422
6423 IF l_n_dedicated_room_code IS NOT NULL THEN
6424 IF NOT igs_ad_room_pkg.get_pk_for_validation ( l_n_dedicated_room_code ) THEN
6425 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', igs_ps_validate_lgcy_pkg.get_lkup_meaning('DEDICATED', 'LEGACY_TOKENS') || ' ' ||
6426 igs_ps_validate_lgcy_pkg.get_lkup_meaning('ROOM_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6427 p_uso_rec.status := 'E';
6428 END IF;
6429 END IF;
6430
6431 IF l_n_preferred_room_code IS NOT NULL THEN
6432 IF NOT igs_ad_room_pkg.get_pk_for_validation ( l_n_preferred_room_code ) THEN
6433 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', igs_ps_validate_lgcy_pkg.get_lkup_meaning('PREFERRED', 'LEGACY_TOKENS') || ' ' ||
6434 igs_ps_validate_lgcy_pkg.get_lkup_meaning('ROOM_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6435 p_uso_rec.status := 'E';
6436 END IF;
6437 END IF;
6438
6439 -- Following validation added as part of bug#2972950 for the PSP Scheduling Enhancements TD
6440 -- If preferred region code is not NULL check it has a valid value
6441 IF p_uso_rec.preferred_region_code IS NOT NULL THEN
6442 IF NOT igs_lookups_view_pkg.get_pk_for_validation ('IGS_OR_LOC_REGION',p_uso_rec.preferred_region_code) THEN
6443 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','PREFERRED_REGION_CODE','LEGACY_TOKENS',FALSE);
6444 p_uso_rec.status := 'E';
6445 ELSIF NOT igs_or_loc_region_pkg.get_pk_for_validation(p_uso_rec.location_cd,p_uso_rec.preferred_region_code) THEN
6446 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','PREFERRED_REGION_CODE','LEGACY_TOKENS',FALSE);
6447 p_uso_rec.status := 'E';
6448 END IF;
6449 END IF;
6450
6451 END validate_db_cons;
6452
6453 ---
6454 -- Check for Update/Insert
6455 FUNCTION check_insert_update ( p_uso_rec IN OUT NOCOPY igs_ps_generic_pub.uso_rec_type ) RETURN VARCHAR2 IS
6456
6457 CURSOR c_occr IS
6458 SELECT unit_section_occurrence_id
6459 FROM igs_ps_usec_occurs_all
6460 WHERE uoo_id = l_n_uoo_id
6461 AND occurrence_identifier=p_uso_rec.occurrence_identifier;
6462
6463 l_c_occr c_occr%ROWTYPE;
6464
6465 BEGIN
6466
6467 OPEN c_occr;
6468 FETCH c_occr INTO l_c_occr;
6469 IF c_occr%FOUND THEN
6470 CLOSE c_occr;
6471 l_n_uso_id := l_c_occr.unit_section_occurrence_id;
6472 RETURN 'U';
6473 ELSE
6474 CLOSE c_occr;
6475 RETURN 'I';
6476 END IF;
6477
6478 END check_insert_update;
6479
6480 PROCEDURE assign_defaults ( p_uso_rec IN OUT NOCOPY igs_ps_generic_pub.uso_rec_type, p_insert IN VARCHAR2) IS
6481 CURSOR cur_usec_ocurs ( cp_uso_id IN NUMBER) IS
6482 SELECT *
6483 FROM igs_ps_usec_occurs_all
6484 WHERE unit_section_occurrence_id = cp_uso_id;
6485 l_cur_usec_ocurs cur_usec_ocurs%ROWTYPE;
6486
6487 CURSOR cur_room (cp_building_id IN NUMBER, cp_room_cd IN VARCHAR2) IS
6488 SELECT room_id
6489 FROM igs_ad_room
6490 WHERE room_cd=cp_room_cd
6491 AND building_id=cp_building_id;
6492
6493 BEGIN
6494 IF p_insert = 'I' THEN
6495
6496
6497 -- If To Be Announced is Null then default it to 'N'
6498 IF ( p_uso_rec.to_be_announced IS NULL ) THEN
6499 p_uso_rec.to_be_announced := 'N';
6500 END IF;
6501
6502 -- Similarly default days to 'N', if they are NULL.
6503 IF ( p_uso_rec.monday IS NULL ) THEN
6504 p_uso_rec.monday := 'N';
6505 END IF;
6506
6507 IF ( p_uso_rec.tuesday IS NULL ) THEN
6508 p_uso_rec.tuesday := 'N';
6509 END IF;
6510
6511 IF ( p_uso_rec.wednesday IS NULL ) THEN
6512 p_uso_rec.wednesday := 'N';
6513 END IF;
6514
6515 IF ( p_uso_rec.thursday IS NULL ) THEN
6516 p_uso_rec.thursday := 'N';
6517 END IF;
6518
6519 IF ( p_uso_rec.friday IS NULL ) THEN
6520 p_uso_rec.friday := 'N';
6521 END IF;
6522
6523 IF ( p_uso_rec.saturday IS NULL ) THEN
6524 p_uso_rec.saturday := 'N';
6525 END IF;
6526
6527 IF ( p_uso_rec.sunday IS NULL ) THEN
6528 p_uso_rec.sunday := 'N';
6529 END IF;
6530
6531 -- Following validation added as part of bug#2972950 for the PSP Scheduling Enhancements TD
6532 -- If No Set Day Indicator is NULL then default it to 'N'
6533 IF p_uso_rec.no_set_day_ind IS NULL THEN
6534 p_uso_rec.no_set_day_ind := 'N';
6535 END IF;
6536
6537 -- Derive schedule status depending on values of building_code/room_code
6538 IF p_uso_rec.building_code IS NOT NULL THEN
6539 l_c_schedule_status := 'SCHEDULED';
6540 ELSE
6541 l_c_schedule_status := NULL;
6542 END IF;
6543
6544 ELSE
6545
6546 OPEN cur_usec_ocurs(l_n_uso_id);
6547 FETCH cur_usec_ocurs INTO l_cur_usec_ocurs;
6548 CLOSE cur_usec_ocurs;
6549
6550 IF ( p_uso_rec.to_be_announced IS NULL ) THEN
6551 p_uso_rec.to_be_announced := l_cur_usec_ocurs.to_be_announced;
6552 ELSIF p_uso_rec.to_be_announced = FND_API.G_MISS_CHAR THEN
6553 p_uso_rec.to_be_announced := 'N';
6554 END IF;
6555
6556 -- Similarly default days to 'N', if they are NULL.
6557 IF ( p_uso_rec.monday IS NULL ) THEN
6558 p_uso_rec.monday := l_cur_usec_ocurs.monday;
6559 ELSIF p_uso_rec.monday = FND_API.G_MISS_CHAR THEN
6560 p_uso_rec.monday := 'N';
6561 END IF;
6562
6563 IF ( p_uso_rec.tuesday IS NULL ) THEN
6564 p_uso_rec.tuesday := l_cur_usec_ocurs.tuesday;
6565 ELSIF p_uso_rec.tuesday = FND_API.G_MISS_CHAR THEN
6566 p_uso_rec.tuesday := 'N';
6567 END IF;
6568
6569 IF ( p_uso_rec.wednesday IS NULL ) THEN
6570 p_uso_rec.wednesday := l_cur_usec_ocurs.wednesday;
6571 ELSIF p_uso_rec.wednesday = FND_API.G_MISS_CHAR THEN
6572 p_uso_rec.wednesday := 'N';
6573 END IF;
6574
6575 IF ( p_uso_rec.thursday IS NULL ) THEN
6576 p_uso_rec.thursday := l_cur_usec_ocurs.thursday;
6577 ELSIF p_uso_rec.thursday = FND_API.G_MISS_CHAR THEN
6578 p_uso_rec.thursday := 'N';
6579 END IF;
6580
6581 IF ( p_uso_rec.friday IS NULL ) THEN
6582 p_uso_rec.friday := l_cur_usec_ocurs.friday;
6583 ELSIF p_uso_rec.friday = FND_API.G_MISS_CHAR THEN
6584 p_uso_rec.friday := 'N';
6585 END IF;
6586
6587 IF ( p_uso_rec.saturday IS NULL ) THEN
6588 p_uso_rec.saturday := l_cur_usec_ocurs.saturday;
6589 ELSIF p_uso_rec.saturday = FND_API.G_MISS_CHAR THEN
6590 p_uso_rec.saturday := 'N';
6591 END IF;
6592
6593
6594 IF ( p_uso_rec.sunday IS NULL ) THEN
6595 p_uso_rec.sunday := l_cur_usec_ocurs.sunday;
6596 ELSIF p_uso_rec.sunday = FND_API.G_MISS_CHAR THEN
6597 p_uso_rec.sunday := 'N';
6598 END IF;
6599
6600
6601 IF p_uso_rec.no_set_day_ind IS NULL THEN
6602 p_uso_rec.no_set_day_ind := l_cur_usec_ocurs.no_set_day_ind;
6603 ELSIF p_uso_rec.no_set_day_ind = FND_API.G_MISS_CHAR THEN
6604 p_uso_rec.no_set_day_ind := 'N';
6605 END IF;
6606
6607
6608 IF p_uso_rec.attribute_category IS NULL THEN
6609 p_uso_rec.attribute_category := l_cur_usec_ocurs.attribute_category;
6610 ELSIF p_uso_rec.attribute_category = FND_API.G_MISS_CHAR THEN
6611 p_uso_rec.attribute_category := NULL;
6612 END IF;
6613
6614
6615 IF p_uso_rec.attribute1 IS NULL THEN
6616 p_uso_rec.attribute1 := l_cur_usec_ocurs.attribute1;
6617 ELSIF p_uso_rec.attribute1 = FND_API.G_MISS_CHAR THEN
6618 p_uso_rec.attribute1 := NULL;
6619 END IF;
6620
6621
6622 IF p_uso_rec.attribute2 IS NULL THEN
6623 p_uso_rec.attribute2 := l_cur_usec_ocurs.attribute2;
6624 ELSIF p_uso_rec.attribute2 = FND_API.G_MISS_CHAR THEN
6625 p_uso_rec.attribute2 := NULL;
6626 END IF;
6627
6628
6629 IF p_uso_rec.attribute3 IS NULL THEN
6630 p_uso_rec.attribute3 := l_cur_usec_ocurs.attribute3;
6631 ELSIF p_uso_rec.attribute3 = FND_API.G_MISS_CHAR THEN
6632 p_uso_rec.attribute3 := NULL;
6633 END IF;
6634
6635 IF p_uso_rec.attribute4 IS NULL THEN
6636 p_uso_rec.attribute4 := l_cur_usec_ocurs.attribute4;
6637 ELSIF p_uso_rec.attribute4 = FND_API.G_MISS_CHAR THEN
6638 p_uso_rec.attribute4 := NULL;
6639 END IF;
6640
6641 IF p_uso_rec.attribute5 IS NULL THEN
6642 p_uso_rec.attribute5 := l_cur_usec_ocurs.attribute5;
6643 ELSIF p_uso_rec.attribute5 = FND_API.G_MISS_CHAR THEN
6644 p_uso_rec.attribute5 := NULL;
6645 END IF;
6646
6647
6648 IF p_uso_rec.attribute6 IS NULL THEN
6649 p_uso_rec.attribute6 := l_cur_usec_ocurs.attribute6;
6650 ELSIF p_uso_rec.attribute6 = FND_API.G_MISS_CHAR THEN
6651 p_uso_rec.attribute6 := NULL;
6652 END IF;
6653
6654
6655 IF p_uso_rec.attribute7 IS NULL THEN
6656 p_uso_rec.attribute7 := l_cur_usec_ocurs.attribute7;
6657 ELSIF p_uso_rec.attribute7 = FND_API.G_MISS_CHAR THEN
6658 p_uso_rec.attribute7 := NULL;
6659 END IF;
6660
6661
6662 IF p_uso_rec.attribute8 IS NULL THEN
6663 p_uso_rec.attribute8 := l_cur_usec_ocurs.attribute8;
6664 ELSIF p_uso_rec.attribute8 = FND_API.G_MISS_CHAR THEN
6665 p_uso_rec.attribute8 := NULL;
6666 END IF;
6667
6668
6669 IF p_uso_rec.attribute9 IS NULL THEN
6670 p_uso_rec.attribute9 := l_cur_usec_ocurs.attribute9;
6671 ELSIF p_uso_rec.attribute9 = FND_API.G_MISS_CHAR THEN
6672 p_uso_rec.attribute9 := NULL;
6673 END IF;
6674
6675
6676 IF p_uso_rec.attribute10 IS NULL THEN
6677 p_uso_rec.attribute10 := l_cur_usec_ocurs.attribute10;
6678 ELSIF p_uso_rec.attribute10 = FND_API.G_MISS_CHAR THEN
6679 p_uso_rec.attribute10 := NULL;
6680 END IF;
6681
6682
6683 IF p_uso_rec.attribute11 IS NULL THEN
6684 p_uso_rec.attribute11 := l_cur_usec_ocurs.attribute11;
6685 ELSIF p_uso_rec.attribute11 = FND_API.G_MISS_CHAR THEN
6686 p_uso_rec.attribute11 := NULL;
6687 END IF;
6688
6689
6690 IF p_uso_rec.attribute12 IS NULL THEN
6691 p_uso_rec.attribute12 := l_cur_usec_ocurs.attribute12;
6692 ELSIF p_uso_rec.attribute12 = FND_API.G_MISS_CHAR THEN
6693 p_uso_rec.attribute12 := NULL;
6694 END IF;
6695
6696
6697 IF p_uso_rec.attribute13 IS NULL THEN
6698 p_uso_rec.attribute13 := l_cur_usec_ocurs.attribute13;
6699 ELSIF p_uso_rec.attribute13 = FND_API.G_MISS_CHAR THEN
6700 p_uso_rec.attribute13 := NULL;
6701 END IF;
6702
6703
6704 IF p_uso_rec.attribute14 IS NULL THEN
6705 p_uso_rec.attribute14 := l_cur_usec_ocurs.attribute14;
6706 ELSIF p_uso_rec.attribute14 = FND_API.G_MISS_CHAR THEN
6707 p_uso_rec.attribute14 := NULL;
6708 END IF;
6709
6710 IF p_uso_rec.attribute15 IS NULL THEN
6711 p_uso_rec.attribute15 := l_cur_usec_ocurs.attribute15;
6712 ELSIF p_uso_rec.attribute15 = FND_API.G_MISS_CHAR THEN
6713 p_uso_rec.attribute15 := NULL;
6714 END IF;
6715
6716
6717 IF p_uso_rec.attribute16 IS NULL THEN
6718 p_uso_rec.attribute16 := l_cur_usec_ocurs.attribute16;
6719 ELSIF p_uso_rec.attribute16 = FND_API.G_MISS_CHAR THEN
6720 p_uso_rec.attribute16 := NULL;
6721 END IF;
6722
6723 IF p_uso_rec.attribute17 IS NULL THEN
6724 p_uso_rec.attribute17 := l_cur_usec_ocurs.attribute17;
6725 ELSIF p_uso_rec.attribute17 = FND_API.G_MISS_CHAR THEN
6726 p_uso_rec.attribute17 := NULL;
6727 END IF;
6728
6729 IF p_uso_rec.attribute18 IS NULL THEN
6730 p_uso_rec.attribute18 := l_cur_usec_ocurs.attribute18;
6731 ELSIF p_uso_rec.attribute18 = FND_API.G_MISS_CHAR THEN
6732 p_uso_rec.attribute18 := NULL;
6733 END IF;
6734
6735 IF p_uso_rec.attribute19 IS NULL THEN
6736 p_uso_rec.attribute19 := l_cur_usec_ocurs.attribute19;
6737 ELSIF p_uso_rec.attribute19 = FND_API.G_MISS_CHAR THEN
6738 p_uso_rec.attribute19 := NULL;
6739 END IF;
6740
6741
6742 IF p_uso_rec.attribute20 IS NULL THEN
6743 p_uso_rec.attribute20 := l_cur_usec_ocurs.attribute20;
6744 ELSIF p_uso_rec.attribute20 = FND_API.G_MISS_CHAR THEN
6745 p_uso_rec.attribute20 := NULL;
6746 END IF;
6747
6748
6749 IF p_uso_rec.start_time IS NULL THEN
6750 p_uso_rec.start_time := l_cur_usec_ocurs.start_time;
6751 ELSIF p_uso_rec.start_time = FND_API.G_MISS_DATE THEN
6752 p_uso_rec.start_time := NULL;
6753 END IF;
6754
6755
6756 IF p_uso_rec.end_time IS NULL THEN
6757 p_uso_rec.end_time := l_cur_usec_ocurs.end_time;
6758 ELSIF p_uso_rec.end_time = FND_API.G_MISS_DATE THEN
6759 p_uso_rec.end_time := NULL;
6760 END IF;
6761
6762
6763 IF p_uso_rec.building_code IS NULL THEN
6764 l_n_building_code := l_cur_usec_ocurs.building_code;
6765 ELSIF p_uso_rec.building_code = FND_API.G_MISS_CHAR THEN
6766 l_n_building_code := NULL;
6767 END IF;
6768
6769 IF p_uso_rec.room_code IS NULL THEN
6770 l_n_room_code := l_cur_usec_ocurs.room_code;
6771 ELSIF p_uso_rec.room_code = FND_API.G_MISS_CHAR THEN
6772 l_n_room_code := NULL;
6773 ELSIF p_uso_rec.room_code IS NOT NULL THEN
6774
6775 OPEN cur_room(l_n_building_code,p_uso_rec.room_code);
6776 FETCH cur_room INTO l_n_room_code;
6777 IF cur_room%NOTFOUND THEN
6778 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'ROOM_CODE', 'LEGACY_TOKENS', FALSE);
6779 p_uso_rec.status := 'E';
6780 END IF;
6781 CLOSE cur_room;
6782 END IF;
6783
6784
6785 IF p_uso_rec.dedicated_building_code IS NULL THEN
6786 l_n_dedicated_building_code := l_cur_usec_ocurs.dedicated_building_code;
6787 ELSIF p_uso_rec.dedicated_building_code = FND_API.G_MISS_CHAR THEN
6788 l_n_dedicated_building_code := NULL;
6789 END IF;
6790
6791
6792 IF p_uso_rec.dedicated_room_code IS NULL THEN
6793 l_n_dedicated_room_code := l_cur_usec_ocurs.dedicated_room_code;
6794 ELSIF p_uso_rec.dedicated_room_code = FND_API.G_MISS_CHAR THEN
6795 l_n_dedicated_room_code := NULL;
6796 ELSIF p_uso_rec.dedicated_room_code IS NOT NULL THEN
6797 OPEN cur_room(l_n_dedicated_building_code,p_uso_rec.dedicated_room_code);
6798 FETCH cur_room INTO l_n_dedicated_room_code;
6799 IF cur_room%NOTFOUND THEN
6800 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', igs_ps_validate_lgcy_pkg.get_lkup_meaning('DEDICATED', 'LEGACY_TOKENS') || ' ' ||
6801 igs_ps_validate_lgcy_pkg.get_lkup_meaning('ROOM_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6802 p_uso_rec.status := 'E';
6803 END IF;
6804 CLOSE cur_room;
6805 END IF;
6806
6807 IF p_uso_rec.preferred_building_code IS NULL THEN
6808 l_n_preferred_building_code := l_cur_usec_ocurs.preferred_building_code;
6809 ELSIF p_uso_rec.preferred_building_code = FND_API.G_MISS_CHAR THEN
6810 l_n_preferred_building_code := NULL;
6811 END IF;
6812
6813
6814 IF p_uso_rec.preferred_room_code IS NULL THEN
6815 l_n_preferred_room_code := l_cur_usec_ocurs.preferred_room_code;
6816 ELSIF p_uso_rec.preferred_room_code = FND_API.G_MISS_CHAR THEN
6817 l_n_preferred_room_code := NULL;
6818 ELSIF p_uso_rec.preferred_room_code IS NOT NULL THEN
6819 OPEN cur_room(l_n_preferred_building_code,p_uso_rec.preferred_room_code);
6820 FETCH cur_room INTO l_n_preferred_room_code;
6821 IF cur_room%NOTFOUND THEN
6822 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', igs_ps_validate_lgcy_pkg.get_lkup_meaning('PREFERRED', 'LEGACY_TOKENS') || ' ' ||
6823 igs_ps_validate_lgcy_pkg.get_lkup_meaning('ROOM_CODE', 'LEGACY_TOKENS'), NULL, FALSE);
6824 p_uso_rec.status := 'E';
6825 END IF;
6826 CLOSE cur_room;
6827 END IF;
6828
6829
6830 IF p_uso_rec.start_date IS NULL THEN
6831 p_uso_rec.start_date := l_cur_usec_ocurs.start_date;
6832 ELSIF p_uso_rec.start_date = FND_API.G_MISS_DATE THEN
6833 p_uso_rec.start_date := NULL;
6834 END IF;
6835
6836
6837 IF p_uso_rec.end_date IS NULL THEN
6838 p_uso_rec.end_date := l_cur_usec_ocurs.end_date;
6839 ELSIF p_uso_rec.end_date = FND_API.G_MISS_DATE THEN
6840 p_uso_rec.end_date := NULL;
6841 END IF;
6842
6843
6844 IF p_uso_rec.preferred_region_code IS NULL THEN
6845 p_uso_rec.preferred_region_code := l_cur_usec_ocurs.preferred_region_code;
6846 ELSIF p_uso_rec.preferred_region_code = FND_API.G_MISS_CHAR THEN
6847 p_uso_rec.preferred_region_code := NULL;
6848 END IF;
6849
6850 --Set the schedule status.
6851 IF l_cur_usec_ocurs.schedule_status IN ('ERROR','TBA','PROCESSING') AND l_n_building_code IS NOT NULL THEN
6852 l_c_schedule_status := 'SCHEDULED';
6853 END IF;
6854
6855
6856 END IF;
6857
6858 END assign_defaults;
6859 ----
6860
6861
6862 /* Main Unit Section Occurrence Sub Process */
6863 BEGIN
6864
6865 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
6866 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.start_logging_for','Unit Section Occurrence');
6867 END IF;
6868
6869 p_c_rec_status := 'S';
6870 FOR I in 1..p_tab_usec_occur.LAST LOOP
6871 IF p_tab_usec_occur.EXISTS(I) THEN
6872 --Initialize all variables
6873 l_c_cal_type :=NULL;
6874 l_n_seq_num :=NULL;
6875 l_d_start_dt :=NULL;
6876 l_d_end_dt :=NULL;
6877 l_n_uoo_id :=NULL;
6878 l_n_uso_id :=NULL;
6879 l_n_building_code :=NULL;
6880 l_n_dedicated_building_code :=NULL;
6881 l_n_preferred_building_code :=NULL;
6882 l_n_room_code :=NULL;
6883 l_n_dedicated_room_code :=NULL;
6884 l_n_preferred_room_code :=NULL;
6885 l_c_schedule_status :=NULL;
6886 l_notify_status :=NULL;
6887
6888
6889 p_tab_usec_occur(I).status := 'S';
6890 p_tab_usec_occur(I).msg_from := fnd_msg_pub.count_msg;
6891 trim_values(p_tab_usec_occur(I) );
6892 validate_parameters ( p_tab_usec_occur(I) );
6893
6894 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6895 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.status_after_validate_parameters',
6896 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
6897 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
6898 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier||' '||
6899 'Status:'||p_tab_usec_occur(I).status);
6900 END IF;
6901
6902 --Only derivation no defaulting
6903 IF p_tab_usec_occur(I).status = 'S' THEN
6904 validate_derivations ( p_tab_usec_occur(I));
6905
6906 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6907 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.status_after_validate_derivations',
6908 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
6909 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
6910 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier||' '||
6911 'Status:'||p_tab_usec_occur(I).status);
6912 END IF;
6913
6914 END IF;
6915
6916 --Find out whether it is insert/update of record
6917 l_insert_update:='I';
6918 IF p_tab_usec_occur(I).status = 'S' AND p_calling_context IN ('G','S') THEN
6919 l_insert_update:= check_insert_update(p_tab_usec_occur(I));
6920
6921 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6922 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.status_after_check_insert_update',
6923 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
6924 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
6925 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier||' '||
6926 'Status:'||p_tab_usec_occur(I).status);
6927 END IF;
6928
6929 END IF;
6930
6931 -- Find out whether record can go for import in context of cancelled/aborted
6932 IF p_tab_usec_occur(I).status = 'S' AND p_calling_context ='S' THEN
6933 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,l_n_uso_id) = FALSE THEN
6934 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
6935 fnd_msg_pub.add;
6936 p_tab_usec_occur(I).status := 'A';
6937 END IF;
6938
6939 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6940 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.status_after_check_import_allowed',
6941 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
6942 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
6943 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier||' '||
6944 'Status:'||p_tab_usec_occur(I).status);
6945 END IF;
6946
6947 END IF;
6948
6949 --Defaulting depending upon insert or update
6950 IF p_tab_usec_occur(I).status = 'S' THEN
6951 assign_defaults(p_tab_usec_occur(I),l_insert_update);
6952
6953 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6954 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.status_after_assign_defaults',
6955 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
6956 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
6957 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier||' '||
6958 'Status:'||p_tab_usec_occur(I).status);
6959 END IF;
6960
6961 END IF;
6962
6963 IF p_tab_usec_occur(I).status = 'S' THEN
6964 validate_db_cons ( p_tab_usec_occur(I),l_insert_update);
6965
6966 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6967 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.status_after_validate_db_cons',
6968 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
6969 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
6970 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier||' '||
6971 'Status:'||p_tab_usec_occur(I).status);
6972 END IF;
6973
6974 END IF;
6975
6976 /* Business Validations */
6977 /* Proceed with business validations only if the status is Success, 'S' */
6978 IF p_tab_usec_occur(I).status = 'S' THEN
6979 igs_ps_validate_lgcy_pkg.validate_usec_occurs ( p_tab_usec_occur(I), l_n_uoo_id, l_d_start_dt, l_d_end_dt,
6980 l_n_building_code,l_n_room_code,
6981 l_n_dedicated_building_code,l_n_dedicated_room_code,
6982 l_n_preferred_building_code,l_n_preferred_room_code,l_n_uso_id,
6983 l_insert_update,p_calling_context,l_notify_status,l_c_schedule_status
6984 );
6985
6986 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6987 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.status_after_Business_validation',
6988 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
6989 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
6990 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier||' '||
6991 'Status:'||p_tab_usec_occur(I).status);
6992 END IF;
6993 END IF;
6994
6995 IF p_tab_usec_occur(I).status = 'S' THEN
6996 IF l_insert_update = 'I' THEN
6997 /* Insert Record */
6998 INSERT INTO igs_ps_usec_occurs_all
6999 (unit_section_occurrence_id,
7000 uoo_id,
7001 monday,
7002 tuesday,
7003 wednesday,
7004 thursday,
7005 friday,
7006 saturday,
7007 sunday,
7008 start_time,
7009 end_time,
7010 building_code,
7011 room_code,
7012 schedule_status,
7013 status_last_updated,
7014 created_by,
7015 creation_date,
7016 last_updated_by,
7017 last_update_date,
7018 last_update_login,
7019 attribute_category,
7020 attribute1,
7021 attribute2,
7022 attribute3,
7023 attribute4,
7024 attribute5,
7025 attribute6,
7026 attribute7,
7027 attribute8,
7028 attribute9,
7029 attribute10,
7030 attribute11,
7031 attribute12,
7032 attribute13,
7033 attribute14,
7034 attribute15,
7035 attribute16,
7036 attribute17,
7037 attribute18,
7038 attribute19,
7039 attribute20,
7040 dedicated_building_code,
7041 dedicated_room_code,
7042 preferred_building_code,
7043 preferred_room_code,
7044 start_date,
7045 end_date,
7046 to_be_announced,
7047 preferred_region_code,
7048 no_set_day_ind,
7049 cancel_flag,
7050 occurrence_identifier,
7051 abort_flag
7052 )
7053 VALUES
7054 (igs_ps_usec_occurs_s.NEXTVAL,
7055 l_n_uoo_id,
7056 p_tab_usec_occur(I).monday,
7057 p_tab_usec_occur(I).tuesday,
7058 p_tab_usec_occur(I).wednesday,
7059 p_tab_usec_occur(I).thursday,
7060 p_tab_usec_occur(I).friday,
7061 p_tab_usec_occur(I).saturday,
7062 p_tab_usec_occur(I).sunday,
7063 p_tab_usec_occur(I).start_time,
7064 p_tab_usec_occur(I).end_time,
7065 l_n_building_code,
7066 l_n_room_code,
7067 l_c_schedule_status,
7068 TRUNC(SYSDATE),
7069 g_n_user_id,
7070 SYSDATE,
7071 g_n_user_id,
7072 SYSDATE,
7073 g_n_login_id,
7074 p_tab_usec_occur(I).attribute_category,
7075 p_tab_usec_occur(I).attribute1,
7076 p_tab_usec_occur(I).attribute2,
7077 p_tab_usec_occur(I).attribute3,
7078 p_tab_usec_occur(I).attribute4,
7079 p_tab_usec_occur(I).attribute5,
7080 p_tab_usec_occur(I).attribute6,
7081 p_tab_usec_occur(I).attribute7,
7082 p_tab_usec_occur(I).attribute8,
7083 p_tab_usec_occur(I).attribute9,
7084 p_tab_usec_occur(I).attribute10,
7085 p_tab_usec_occur(I).attribute11,
7086 p_tab_usec_occur(I).attribute12,
7087 p_tab_usec_occur(I).attribute13,
7088 p_tab_usec_occur(I).attribute14,
7089 p_tab_usec_occur(I).attribute15,
7090 p_tab_usec_occur(I).attribute16,
7091 p_tab_usec_occur(I).attribute17,
7092 p_tab_usec_occur(I).attribute18,
7093 p_tab_usec_occur(I).attribute19,
7094 p_tab_usec_occur(I).attribute20,
7095 l_n_dedicated_building_code,
7096 l_n_dedicated_room_code,
7097 l_n_preferred_building_code,
7098 l_n_preferred_room_code,
7099 p_tab_usec_occur(I).start_date,
7100 p_tab_usec_occur(I).end_date,
7101 p_tab_usec_occur(I).to_be_announced,
7102 p_tab_usec_occur(I).preferred_region_code,
7103 p_tab_usec_occur(I).no_set_day_ind,
7104 'N',
7105 p_tab_usec_occur(I).occurrence_identifier,
7106 'N'
7107 )RETURNING unit_section_occurrence_id INTO l_n_usec_occurs_id;
7108
7109
7110 l_n_tbl_cnt :=l_tbl_uso.count+1;
7111 l_tbl_uso(l_n_tbl_cnt):=l_n_usec_occurs_id ;
7112
7113
7114 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7115 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.record_inserted',
7116 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
7117 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
7118 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier);
7119 END IF;
7120
7121 ELSE
7122
7123 DECLARE
7124
7125 CURSOR c_prd_uso(cp_n_uso_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE) IS
7126 SELECT rowid,uso.*
7127 FROM igs_ps_usec_occurs_all uso
7128 WHERE uso.unit_section_occurrence_id=cp_n_uso_id;
7129 rec_prd_uso c_prd_uso%ROWTYPE;
7130
7131 CURSOR check_ovrd IS
7132 SELECT day_ovrd_flag, time_ovrd_flag, scheduled_bld_ovrd_flag, scheduled_room_ovrd_flag,date_ovrd_flag
7133 FROM igs_ps_sch_ocr_cfig;
7134
7135 l_check_ovrd check_ovrd%ROWTYPE;
7136 l_c_monday igs_ps_usec_occurs_all.monday%TYPE;
7137 l_c_tuesday igs_ps_usec_occurs_all.tuesday%TYPE;
7138 l_c_wednesday igs_ps_usec_occurs_all.wednesday%TYPE;
7139 l_c_thursday igs_ps_usec_occurs_all.thursday%TYPE;
7140 l_c_friday igs_ps_usec_occurs_all.friday%TYPE;
7141 l_c_saturday igs_ps_usec_occurs_all.saturday%TYPE;
7142 l_c_sunday igs_ps_usec_occurs_all.sunday%TYPE;
7143 l_d_uso_start_date igs_ps_usec_occurs_all.start_date%TYPE;
7144 l_d_uso_end_date igs_ps_usec_occurs_all.end_date%TYPE;
7145 l_start_time igs_ps_usec_occurs_all.start_time%TYPE;
7146 l_end_time igs_ps_usec_occurs_all.end_time%TYPE;
7147 l_sch_bld igs_ps_usec_occurs_all.building_code%TYPE;
7148 l_sch_room igs_ps_usec_occurs_all.room_code%TYPE;
7149 BEGIN
7150 OPEN c_prd_uso (l_n_uso_id);
7151 FETCH c_prd_uso INTO rec_prd_uso;
7152 CLOSE c_prd_uso;
7153
7154 OPEN check_ovrd;
7155 FETCH check_ovrd INTO l_check_ovrd;
7156 IF check_ovrd%FOUND THEN
7157 --Days override
7158 IF l_check_ovrd.day_ovrd_flag = 'N' AND (p_tab_usec_occur(I).monday='Y' OR
7159 p_tab_usec_occur(I).tuesday='Y' OR
7160 p_tab_usec_occur(I).wednesday='Y' OR
7161 p_tab_usec_occur(I).thursday='Y' OR
7162 p_tab_usec_occur(I).friday='Y' OR
7163 p_tab_usec_occur(I).saturday='Y' OR
7164 p_tab_usec_occur(I).sunday='Y' ) THEN
7165 l_c_monday := rec_prd_uso.monday;
7166 l_c_tuesday := rec_prd_uso.tuesday;
7167 l_c_wednesday := rec_prd_uso.wednesday;
7168 l_c_thursday := rec_prd_uso.thursday;
7169 l_c_friday := rec_prd_uso.friday;
7170 l_c_saturday := rec_prd_uso.saturday;
7171 l_c_sunday := rec_prd_uso.sunday;
7172 ELSE
7173 l_c_monday := p_tab_usec_occur(I).monday;
7174 l_c_tuesday := p_tab_usec_occur(I).tuesday;
7175 l_c_wednesday := p_tab_usec_occur(I).wednesday;
7176 l_c_thursday := p_tab_usec_occur(I).thursday;
7177 l_c_friday := p_tab_usec_occur(I).friday;
7178 l_c_saturday := p_tab_usec_occur(I).saturday;
7179 l_c_sunday := p_tab_usec_occur(I).sunday;
7180 END IF;
7181 --Date override
7182 IF l_check_ovrd.date_ovrd_flag = 'N' AND (rec_prd_uso.start_date IS NOT NULL OR
7183 rec_prd_uso.end_date IS NOT NULL ) THEN
7184 l_d_uso_start_date := rec_prd_uso.start_date;
7185 l_d_uso_end_date := rec_prd_uso.end_date;
7186 ELSE
7187 l_d_uso_start_date := p_tab_usec_occur(I).start_date;
7188 l_d_uso_end_date := p_tab_usec_occur(I).end_date;
7189 END IF;
7190 --Time override
7191 IF l_check_ovrd.time_ovrd_flag = 'N' AND (rec_prd_uso.start_time IS NOT NULL OR
7192 rec_prd_uso.end_time IS NOT NULL ) THEN
7193 l_start_time := rec_prd_uso.start_time;
7194 l_end_time := rec_prd_uso.end_time;
7195 ELSE
7196 l_start_time := p_tab_usec_occur(I).start_time;
7197 l_end_time := p_tab_usec_occur(I).end_time;
7198 END IF;
7199 --Schedule Building override
7200 IF l_check_ovrd.scheduled_bld_ovrd_flag = 'N' AND (rec_prd_uso.building_code IS NOT NULL) THEN
7201 l_sch_bld := rec_prd_uso.building_code;
7202 ELSE
7203 l_sch_bld := l_n_building_code;
7204 END IF;
7205 --Schedule Room override
7206 IF l_check_ovrd.scheduled_room_ovrd_flag = 'N' AND (rec_prd_uso.room_code IS NOT NULL ) THEN
7207 l_sch_room := rec_prd_uso.room_code;
7208 ELSE
7209 l_sch_room := l_n_room_code;
7210 END IF;
7211
7212 ELSE
7213 l_c_monday := p_tab_usec_occur(I).monday;
7214 l_c_tuesday := p_tab_usec_occur(I).tuesday;
7215 l_c_wednesday := p_tab_usec_occur(I).wednesday;
7216 l_c_thursday := p_tab_usec_occur(I).thursday;
7217 l_c_friday := p_tab_usec_occur(I).friday;
7218 l_c_saturday := p_tab_usec_occur(I).saturday;
7219 l_c_sunday := p_tab_usec_occur(I).sunday;
7220 l_start_time := p_tab_usec_occur(I).start_time;
7221 l_end_time := p_tab_usec_occur(I).end_time;
7222 l_d_uso_start_date :=p_tab_usec_occur(I).start_date;
7223 l_d_uso_end_date := p_tab_usec_occur(I).end_date;
7224 l_sch_bld := l_n_building_code;
7225 l_sch_room := l_n_room_code;
7226 END IF;
7227 CLOSE check_ovrd;
7228
7229 /*Update record*/
7230 UPDATE IGS_PS_USEC_OCCURS_ALL SET
7231 monday = l_c_monday,
7232 tuesday = l_c_tuesday,
7233 wednesday = l_c_wednesday,
7234 thursday =l_c_thursday,
7235 friday = l_c_friday,
7236 saturday = l_c_saturday,
7237 sunday = l_c_sunday,
7238 start_time = l_start_time,
7239 end_time = l_end_time,
7240 building_code = l_sch_bld,
7241 room_code = l_sch_room,
7242 schedule_status = NVL(l_c_schedule_status,schedule_status),
7243 error_text = DECODE(l_c_schedule_status,'SCHEDULED',NULL,'CANCELLED',NULL,error_text),
7244 notify_status = NVL(l_notify_status,notify_status),
7245 status_last_updated = TRUNC(SYSDATE),
7246 last_updated_by=g_n_user_id,
7247 last_update_date=SYSDATE,
7248 last_update_login=g_n_login_id,
7249 attribute_category=p_tab_usec_occur(I).attribute_category,
7250 attribute1=p_tab_usec_occur(I).attribute1,
7251 attribute2=p_tab_usec_occur(I).attribute2,
7252 attribute3=p_tab_usec_occur(I).attribute3,
7253 attribute4=p_tab_usec_occur(I).attribute4,
7254 attribute5=p_tab_usec_occur(I).attribute5,
7255 attribute6=p_tab_usec_occur(I).attribute6,
7256 attribute7=p_tab_usec_occur(I).attribute7,
7257 attribute8=p_tab_usec_occur(I).attribute8,
7258 attribute9=p_tab_usec_occur(I).attribute9,
7259 attribute10=p_tab_usec_occur(I).attribute10,
7260 attribute11=p_tab_usec_occur(I).attribute11,
7261 attribute12=p_tab_usec_occur(I).attribute12,
7262 attribute13=p_tab_usec_occur(I).attribute13,
7263 attribute14=p_tab_usec_occur(I).attribute14,
7264 attribute15=p_tab_usec_occur(I).attribute15,
7265 attribute16=p_tab_usec_occur(I).attribute16,
7266 attribute17=p_tab_usec_occur(I).attribute17,
7267 attribute18=p_tab_usec_occur(I).attribute18,
7268 attribute19=p_tab_usec_occur(I).attribute19,
7269 attribute20=p_tab_usec_occur(I).attribute20,
7270 dedicated_building_code=l_n_dedicated_building_code,
7271 dedicated_room_code=l_n_dedicated_room_code,
7272 preferred_building_code=l_n_preferred_building_code,
7273 preferred_room_code=l_n_preferred_room_code,
7274 start_date=l_d_uso_start_date,
7275 end_date=l_d_uso_end_date,
7276 to_be_announced=p_tab_usec_occur(I).to_be_announced,
7277 preferred_region_code=p_tab_usec_occur(I).preferred_region_code,
7278 no_set_day_ind=p_tab_usec_occur(I).no_set_day_ind
7279 WHERE unit_section_occurrence_id = l_n_uso_id ;
7280
7281 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7282 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.record_updated',
7283 'Unit code:'||p_tab_usec_occur(I).unit_cd||' '||'Version number:'||p_tab_usec_occur(I).version_number||' '||'teach_cal_alternate_code:'
7284 ||p_tab_usec_occur(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_usec_occur(I).location_cd||' '||'Unit Class:'||
7285 p_tab_usec_occur(I).unit_class||'Occurrence Identifier:'|| p_tab_usec_occur(I).occurrence_identifier);
7286 END IF;
7287
7288 END;
7289 END IF;
7290 p_tab_usec_occur(I).msg_from := NULL;
7291 p_tab_usec_occur(I).msg_to := NULL;
7292 ELSIF p_tab_usec_occur(I).status = 'A' THEN
7293 p_tab_usec_occur(I).msg_from := p_tab_usec_occur(I).msg_from+1;
7294 p_tab_usec_occur(I).msg_to := fnd_msg_pub.count_msg;
7295 ELSE
7296 p_c_rec_status := p_tab_usec_occur(I).status;
7297 p_tab_usec_occur(I).msg_from := p_tab_usec_occur(I).msg_from+1;
7298 p_tab_usec_occur(I).msg_to := fnd_msg_pub.count_msg;
7299 IF p_tab_usec_occur(I).status = 'E' THEN
7300 RETURN;
7301 END IF;
7302 END IF;
7303 END IF;
7304 END LOOP;
7305
7306 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
7307 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_usec_occur.after_import_status',p_c_rec_status);
7308 END IF;
7309
7310 END create_usec_occur;
7311
7312 PROCEDURE create_unit_ref_code( p_tab_ref_cd IN OUT NOCOPY igs_ps_generic_pub.unit_ref_tbl_type,
7313 p_c_rec_status OUT NOCOPY VARCHAR2,
7314 p_calling_context IN VARCHAR2) AS
7315
7316 /***********************************************************************************************
7317 Created By : smvk
7318 Date Created By: 18-NOV-2002
7319 Purpose : This procedure import reference codes of unit version, unit section, unit section occurrence.
7320
7321 Known limitations,enhancements,remarks:
7322 Change History (in reverse chronological order)
7323 Who When What
7324 sarakshi 11-Mar-2005 Bug#4212680, modified cursor c_ref_des within procedure validate_derivation.
7325 smvk 27-Jun-2003 Enh Bug # 2999888. Importing Unit requirements / Unit Section requirements reference codes
7326 jbegum 02-June-2003 Enh#2972950
7327 For Legacy Enhancements TD:
7328 Modified validate_usec_db_cons, changed the impact of change of
7329 signature of igs_ps_usec_ref_cd_pkg.get_uk_for_validation
7330 For PSP Scheduling Enhancements TD:
7331 Modified the local procedure's validate_occur_deri_busi,validate_occur_db_cons.
7332 For PSP Enhancements TD:
7333 Modified validate_occur_db_cons,validate_derivation,validate_unit_db_cons
7334 validate_usec_db_cons,validate_usec_derivations.
7335
7336 ********************************************************************************************** */
7337
7338
7339 l_c_cal_type igs_ca_inst_all.cal_type%TYPE; -- Holds Calendar Type
7340 l_n_seq_num igs_ca_inst_all.sequence_number%TYPE; -- Holds Calendar Instance Sequence Number
7341 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE; -- Holds Unit Offering Options Identifier
7342 l_n_usec_ref_id igs_ps_usec_ref.unit_section_reference_id%TYPE; -- Holds Unit Section Reference Identifier
7343 l_n_uso_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE; -- Holds the Unit Section Occurrence Identifier
7344
7345 --
7346 l_insert_update VARCHAR2(1);
7347 --
7348 -- Following cursor added as part of bug#2972950 for the PSP Enhancements TD
7349 CURSOR c_res_flag (cp_c_ref_type igs_ge_ref_cd_type_all.reference_cd_type%TYPE) IS
7350 SELECT restricted_flag
7351 FROM igs_ge_ref_cd_type_all
7352 WHERE reference_cd_type = cp_c_ref_type;
7353
7354 rec_res_flag c_res_flag%ROWTYPE;
7355
7356 PROCEDURE trim_values ( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type) AS
7357 BEGIN
7358 p_ref_cd_rec.unit_cd := trim(p_ref_cd_rec.unit_cd);
7359 p_ref_cd_rec.version_number := trim(p_ref_cd_rec.version_number);
7360 p_ref_cd_rec.data_type := trim(p_ref_cd_rec.data_type);
7361 p_ref_cd_rec.teach_cal_alternate_code := trim(p_ref_cd_rec.teach_cal_alternate_code);
7362 p_ref_cd_rec.location_cd := trim(p_ref_cd_rec.location_cd);
7363 p_ref_cd_rec.unit_class := trim(p_ref_cd_rec.unit_class);
7364 p_ref_cd_rec.occurrence_identifier := trim(p_ref_cd_rec.occurrence_identifier);
7365 p_ref_cd_rec.reference_cd_type := trim(p_ref_cd_rec.reference_cd_type);
7366 p_ref_cd_rec.reference_cd := trim(p_ref_cd_rec.reference_cd);
7367 p_ref_cd_rec.description := trim(p_ref_cd_rec.description);
7368 p_ref_cd_rec.gen_ref_flag := trim(p_ref_cd_rec.gen_ref_flag);
7369
7370 END trim_values ;
7371
7372 -- Validate the Mandatory Parameters for creation of unit referrence code
7373 PROCEDURE validate_unit_parameters( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type) AS
7374 BEGIN
7375 IF p_ref_cd_rec.unit_cd IS NULL OR p_ref_cd_rec.unit_cd = FND_API.G_MISS_CHAR THEN
7376 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD','LEGACY_TOKENS', FALSE);
7377 p_ref_cd_rec.status := 'E';
7378 END IF;
7379 IF p_ref_cd_rec.version_number IS NULL OR p_ref_cd_rec.version_number = FND_API.G_MISS_NUM THEN
7380 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM','LEGACY_TOKENS', FALSE);
7381 p_ref_cd_rec.status := 'E';
7382 END IF;
7383 IF p_ref_cd_rec.data_type IS NULL OR p_ref_cd_rec.data_type = FND_API.G_MISS_CHAR THEN
7384 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'DATA_TYPE','LEGACY_TOKENS', FALSE);
7385 p_ref_cd_rec.status := 'E';
7386 END IF;
7387 IF p_ref_cd_rec.reference_cd_type IS NULL OR p_ref_cd_rec.reference_cd_type = FND_API.G_MISS_CHAR THEN
7388 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'REFERENCE_CD_TYPE','LEGACY_TOKENS', FALSE);
7389 p_ref_cd_rec.status := 'E';
7390 END IF;
7391 IF p_ref_cd_rec.reference_cd IS NULL OR p_ref_cd_rec.reference_cd = FND_API.G_MISS_CHAR THEN
7392 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'REFERENCE_CD','LEGACY_TOKENS', FALSE);
7393 p_ref_cd_rec.status := 'E';
7394 END IF;
7395 END validate_unit_parameters;
7396
7397 -- Validate the Mandatory Parameters for Unit Section / Unit Section Occurrence
7398 PROCEDURE validate_usec_parameters( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type) AS
7399 BEGIN
7400 validate_unit_parameters( p_ref_cd_rec );
7401 IF p_ref_cd_rec.teach_cal_alternate_code IS NULL OR p_ref_cd_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
7402 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
7403 p_ref_cd_rec.status := 'E';
7404 END IF;
7405 IF p_ref_cd_rec.location_cd IS NULL OR p_ref_cd_rec.location_cd = FND_API.G_MISS_CHAR THEN
7406 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS', FALSE);
7407 p_ref_cd_rec.status := 'E';
7408 END IF;
7409 IF p_ref_cd_rec.unit_class IS NULL OR p_ref_cd_rec.unit_class = FND_API.G_MISS_CHAR THEN
7410 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS','LEGACY_TOKENS', FALSE);
7411 p_ref_cd_rec.status := 'E';
7412 END IF;
7413
7414 IF p_ref_cd_rec.data_type = 'OCCURRENCE' AND
7415 (p_ref_cd_rec.occurrence_identifier IS NULL OR p_ref_cd_rec.occurrence_identifier = FND_API.G_MISS_CHAR) AND (p_ref_cd_rec.production_uso_id IS NULL OR p_ref_cd_rec.production_uso_id = FND_API.G_MISS_NUM) THEN
7416 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'USEC_OCCRS_ID','IGS_PS_LOG_PARAMETERS', FALSE);
7417 p_ref_cd_rec.status := 'E';
7418 END IF;
7419
7420 IF p_calling_context IN ('G','S') AND p_ref_cd_rec.data_type = 'UNIT' THEN
7421 fnd_message.set_name ( 'IGS', 'IGS_PS_UNIT_REF_N_ALLW_GEN_SCH' );
7422 fnd_msg_pub.add;
7423 p_ref_cd_rec.status := 'E';
7424 END IF;
7425
7426
7427 END validate_usec_parameters;
7428
7429 -- Validate the Mandatory Parameters
7430 PROCEDURE validate_parameters( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type) AS
7431 BEGIN
7432 IF p_ref_cd_rec.data_type IS NULL OR p_ref_cd_rec.data_type = 'UNIT' THEN
7433 validate_unit_parameters(p_ref_cd_rec);
7434 ELSIF p_ref_cd_rec.data_type = 'SECTION' OR p_ref_cd_rec.data_type = 'OCCURRENCE' THEN
7435 validate_usec_parameters(p_ref_cd_rec);
7436 ELSE
7437 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'DATA_TYPE','LEGACY_TOKENS', FALSE);
7438 p_ref_cd_rec.status := 'E';
7439 END IF;
7440 END validate_parameters;
7441
7442 --Enh Bug#2972950
7443 --For the PSP Enhancements TD:
7444 --Removed the cursor c_ref_cd_id and its reference from validate_usec_derivations
7445
7446 -- Derivation of values required to create Unit Section Referrence.
7447 PROCEDURE validate_usec_derivations( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type) AS
7448
7449 CURSOR c_usec_ref_id (cp_uoo_id IN igs_ps_unit_ofr_opt_all.uoo_id%TYPE) IS
7450 SELECT A.unit_section_reference_id
7451 FROM igs_ps_usec_ref A
7452 WHERE A.uoo_id = cp_uoo_id;
7453
7454 l_d_start igs_ca_inst_all.start_dt%TYPE;
7455 l_d_end igs_ca_inst_all.end_dt%TYPE;
7456 l_ret_status VARCHAR2(30);
7457
7458 BEGIN
7459
7460 -- Deriving the Calendar Type and Calendar Sequence Number
7461 igs_ge_gen_003.get_calendar_instance(p_ref_cd_rec.teach_cal_alternate_code, '''TEACHING''', l_c_cal_type,l_n_seq_num,l_d_start,l_d_end,l_ret_status);
7462 IF l_ret_status <> 'SINGLE' THEN
7463 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
7464 p_ref_cd_rec.status := 'E';
7465 END IF;
7466
7467 -- Deriving the Unit Offering Option Identifier
7468 l_ret_status := NULL;
7469 igs_ps_validate_lgcy_pkg.get_uoo_id(p_ref_cd_rec.unit_cd, p_ref_cd_rec.version_number , l_c_cal_type, l_n_seq_num, p_ref_cd_rec.location_cd, p_ref_cd_rec.unit_class,l_n_uoo_id,l_ret_status);
7470 IF l_ret_status IS NOT NULL THEN
7471 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION','LEGACY_TOKENS', FALSE);
7472 p_ref_cd_rec.status := 'E';
7473 END IF;
7474
7475 -- Deriving the Unit Section Reference Identifier
7476 OPEN c_usec_ref_id (l_n_uoo_id);
7477 FETCH c_usec_ref_id INTO l_n_usec_ref_id;
7478 IF c_usec_ref_id%NOTFOUND THEN
7479 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS',
7480 igs_ps_validate_lgcy_pkg.get_lkup_meaning('UNIT_SECTION','LEGACY_TOKENS') || ' ' ||
7481 igs_ps_validate_lgcy_pkg.get_lkup_meaning('REFERENCE_CD','LEGACY_TOKENS'),
7482 NULL, FALSE);
7483 p_ref_cd_rec.status := 'E';
7484 END IF;
7485 CLOSE c_usec_ref_id;
7486 END validate_usec_derivations;
7487
7488 -- As the derivation of Unit Section Occurrence Identifier and the business validation
7489 -- for the Unit Section Occurrence References are tightly coupled, the derivation and
7490 -- business validation mentioned in the TD are combined.
7491
7492 -- Change History
7493 -- Who When What
7494 -- smvk 28-Jul-2004 Bug # 3793580. Coded to call get_uso_id procedure and removed
7495 -- cursors used to derive USO id.
7496 -- jbegum 04-June-2003 Enh#2972950
7497 -- For PSP Scheduling Enhancements TD:
7498 -- Modified the cursor's c_tba_count,c_tba_uso_id,c_count,c_uso_id.
7499 -- Added 2 new cursor's c_nsd_count,c_nsd_uso_id.
7500 PROCEDURE validate_occur_deri_busi( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type) AS
7501
7502 l_d_start DATE;
7503 l_d_end DATE;
7504 l_ret_status VARCHAR2(30);
7505 l_c_msg VARCHAR2(30);
7506
7507 BEGIN
7508
7509 -- Deriving the Calendar Type and Calendar Sequence Number
7510 igs_ge_gen_003.get_calendar_instance(p_ref_cd_rec.teach_cal_alternate_code, '''TEACHING''', l_c_cal_type,l_n_seq_num,l_d_start,l_d_end,l_ret_status);
7511 IF l_ret_status <> 'SINGLE' THEN
7512 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
7513 p_ref_cd_rec.status := 'E';
7514 END IF;
7515
7516 -- Deriving the Unit Offering Option Identifier
7517 l_ret_status := NULL;
7518 igs_ps_validate_lgcy_pkg.get_uoo_id(p_ref_cd_rec.unit_cd, p_ref_cd_rec.version_number , l_c_cal_type, l_n_seq_num, p_ref_cd_rec.location_cd, p_ref_cd_rec.unit_class,l_n_uoo_id,l_ret_status);
7519 IF l_ret_status IS NOT NULL THEN
7520 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION','LEGACY_TOKENS', FALSE);
7521 p_ref_cd_rec.status := 'E';
7522 END IF;
7523
7524
7525
7526 IF p_ref_cd_rec.production_uso_id IS NULL THEN
7527 -- To get the unit section occurrence id.
7528 -- Error message is return in the out parameter l_c_msg if any.
7529 l_c_msg := NULL;
7530
7531
7532 igs_ps_validate_lgcy_pkg.get_uso_id( p_uoo_id => l_n_uoo_id,
7533 p_occurrence_identifier => p_ref_cd_rec.occurrence_identifier,
7534 p_uso_id => l_n_uso_id,
7535 p_message => l_c_msg
7536 );
7537
7538 IF l_c_msg IS NOT NULL THEN
7539 fnd_message.set_name('IGS',l_c_msg);
7540 fnd_msg_pub.add;
7541 p_ref_cd_rec.status := 'E';
7542 END IF;
7543 ELSE
7544 l_n_uso_id := p_ref_cd_rec.production_uso_id;
7545 END IF;
7546
7547 END validate_occur_deri_busi;
7548
7549 -- Decides to call the derivation procedures based on the datatype
7550 PROCEDURE validate_derivation( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type) AS
7551
7552 -- Following cursor added as part of bug#2972950 for the PSP Enhancements TD
7553 CURSOR c_ref_des (cp_c_ref_type igs_ge_ref_cd_type_all.reference_cd_type%TYPE,
7554 cp_c_ref_cd igs_ge_ref_cd.reference_cd%TYPE) IS
7555 SELECT rc.description
7556 FROM igs_ge_ref_cd_type_all rct,
7557 igs_ge_ref_cd rc
7558 WHERE rct.reference_cd_type = cp_c_ref_type
7559 AND rct.reference_cd_type = rc.reference_cd_type
7560 AND rc.reference_cd = cp_c_ref_cd
7561 AND rct.restricted_flag = 'Y';
7562
7563 rec_ref_des c_ref_des%ROWTYPE;
7564
7565 BEGIN
7566
7567 -- Following validation added as part of bug#2972950 for the PSP Enhancements TD
7568 -- Description field to be defaulted to the description of the passed reference code
7569 -- if 'Restricted Reference Code Values' checkbox is checked else passed values to be used if any.
7570
7571 OPEN c_ref_des(p_ref_cd_rec.reference_cd_type,p_ref_cd_rec.reference_cd);
7572 FETCH c_ref_des INTO rec_ref_des;
7573 IF c_ref_des%FOUND THEN
7574 p_ref_cd_rec.description := rec_ref_des.description;
7575 END IF;
7576 CLOSE c_ref_des;
7577
7578 IF p_ref_cd_rec.gen_ref_flag IS NULL THEN
7579 p_ref_cd_rec.gen_ref_flag := 'Y' ;-- Defauling to 'Y' that is generic reference codes
7580 ELSE
7581 IF p_ref_cd_rec.gen_ref_flag NOT IN ('Y','N') THEN
7582 fnd_message.set_name('IGS','IGS_PS_LGCY_GEN_FLAG');
7583 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N',fnd_message.get,NULL,FALSE);
7584 p_ref_cd_rec.status:='E';
7585 END IF;
7586 END IF;
7587
7588 IF p_ref_cd_rec.data_type = 'SECTION' THEN
7589 validate_usec_derivations( p_ref_cd_rec );
7590 ELSIF p_ref_cd_rec.data_type = 'OCCURRENCE' THEN
7591
7592 validate_occur_deri_busi( p_ref_cd_rec );
7593
7594 END IF;
7595
7596 END validate_derivation;
7597
7598 -- Validate the database constraints for the Unit Referrence code
7599 PROCEDURE validate_unit_db_cons(p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type) AS
7600
7601 BEGIN
7602 -- Unique Key Validation
7603 IF p_ref_cd_rec.gen_ref_flag = 'Y' THEN -- if generic reference code
7604 IF igs_ps_unit_ref_cd_pkg.get_uk_for_validation(p_ref_cd_rec.unit_cd,
7605 p_ref_cd_rec.version_number,
7606 p_ref_cd_rec.reference_cd_type) THEN
7607 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_REFERENCE_CD','LEGACY_TOKENS', FALSE);
7608 p_ref_cd_rec.status := 'W';
7609 RETURN;
7610 END IF;
7611 ELSE -- else Unit requirement reference code
7612 IF igs_ps_unitreqref_cd_pkg.get_uk_for_validation(p_ref_cd_rec.unit_cd,
7613 p_ref_cd_rec.version_number,
7614 p_ref_cd_rec.reference_cd_type,
7615 p_ref_cd_rec.reference_cd
7616 ) THEN
7617 fnd_message.set_name('IGS','IGS_PS_LGCY_UNIT_REQ_REF');
7618 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', fnd_message.get,NULL, FALSE);
7619 p_ref_cd_rec.status := 'W';
7620 RETURN;
7621 END IF;
7622 END IF;
7623
7624 -- Check Constraints: Unit Code Should be in Upper Case
7625 BEGIN
7626 igs_ps_unit_ref_cd_pkg.check_constraints('UNIT_CD', p_ref_cd_rec.unit_cd);
7627 EXCEPTION
7628 WHEN OTHERS THEN
7629 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'UNIT_CD','LEGACY_TOKENS', TRUE);
7630 p_ref_cd_rec.status := 'E';
7631 END;
7632
7633 -- Check Constraints: Reference Code Should be in Upper Case
7634 BEGIN
7635 igs_ps_unit_ref_cd_pkg.check_constraints('REFERENCE_CD', p_ref_cd_rec.reference_cd);
7636 EXCEPTION
7637 WHEN OTHERS THEN
7638 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'REFERENCE_CD','LEGACY_TOKENS', TRUE);
7639 p_ref_cd_rec.status := 'E';
7640 END;
7641
7642 -- Check Constraints: Reference Code Type Should be in Upper Case
7643 BEGIN
7644 igs_ps_unit_ref_cd_pkg.check_constraints('REFERENCE_CD_TYPE', p_ref_cd_rec.reference_cd_type);
7645 EXCEPTION
7646 WHEN OTHERS THEN
7647 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE', 'REFERENCE_CD_TYPE','LEGACY_TOKENS', TRUE);
7648 p_ref_cd_rec.status := 'E';
7649 END;
7650
7651 -- Following validation added as part of bug#2972950 for the PSP Enhancements TD
7652 OPEN c_res_flag(p_ref_cd_rec.reference_cd_type);
7653 FETCH c_res_flag INTO rec_res_flag;
7654 IF c_res_flag%FOUND THEN
7655 IF rec_res_flag.restricted_flag = 'Y' THEN
7656 -- Foreign Key Validations : Reference Code doesn't exists
7657 IF NOT igs_ge_ref_cd_pkg.get_uk_for_validation(p_ref_cd_rec.reference_cd_type,p_ref_cd_rec.reference_cd) THEN
7658 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'REFERENCE_CD','LEGACY_TOKENS', FALSE);
7659 p_ref_cd_rec.status := 'E';
7660 END IF;
7661 END IF;
7662 ELSE
7663 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_INVALID_REF_CD_TYPE',NULL,NULL,FALSE);
7664 p_ref_cd_rec.status := 'E';
7665 END IF;
7666 CLOSE c_res_flag;
7667
7668 -- Foreign Key Validations : Unit Version doesn't exists
7669 IF NOT igs_ps_unit_ver_pkg.get_pk_for_validation(p_ref_cd_rec.unit_cd, p_ref_cd_rec.version_number) THEN
7670 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_VERSION','LEGACY_TOKENS', FALSE);
7671 p_ref_cd_rec.status := 'E';
7672 END IF;
7673
7674 END validate_unit_db_cons;
7675
7676 -- Validate the database constraints for the Unit Section Occurrence Referrence code
7677 PROCEDURE validate_usec_db_cons(p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type,p_insert IN VARCHAR2) AS
7678
7679 BEGIN
7680
7681 IF p_insert = 'I' THEN
7682 --Unique Key Validation
7683 --Enh#2972950,impact of change of signature of igs_ps_usec_ref_cd_pkg.get_uk_for_validation
7684 IF p_ref_cd_rec.gen_ref_flag = 'Y' THEN -- if generic reference code
7685 IF igs_ps_usec_ref_cd_pkg.get_uk_for_validation(l_n_usec_ref_id,p_ref_cd_rec.reference_cd_type,p_ref_cd_rec.reference_cd) THEN
7686 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS',
7687 igs_ps_validate_lgcy_pkg.get_lkup_meaning('UNIT_SECTION','LEGACY_TOKENS') || ' ' ||
7688 igs_ps_validate_lgcy_pkg.get_lkup_meaning('REFERENCE_CD','LEGACY_TOKENS'),
7689 NULL, FALSE);
7690 p_ref_cd_rec.status := 'W';
7691 RETURN;
7692 END IF;
7693 ELSE -- else Unit Section requirement reference code
7694 IF igs_ps_us_req_ref_cd_pkg.get_uk_for_validation(l_n_usec_ref_id,p_ref_cd_rec.reference_cd_type,p_ref_cd_rec.reference_cd) THEN
7695 fnd_message.set_name('IGS','IGS_PS_LGCY_USEC_REQ_REF');
7696 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS',fnd_message.get,NULL, FALSE);
7697 p_ref_cd_rec.status := 'W';
7698 RETURN;
7699 END IF;
7700 END IF;
7701 END IF;
7702
7703 -- Following validation added as part of bug#2972950 for the PSP Enhancements TD
7704 OPEN c_res_flag(p_ref_cd_rec.reference_cd_type);
7705 FETCH c_res_flag INTO rec_res_flag;
7706 IF c_res_flag%FOUND THEN
7707 IF rec_res_flag.restricted_flag = 'Y' THEN
7708 -- Foreign Key Validations : Reference Code doesn't exists
7709 IF NOT igs_ge_ref_cd_pkg.get_uk_for_validation(p_ref_cd_rec.reference_cd_type,p_ref_cd_rec.reference_cd) THEN
7710 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'REFERENCE_CD','LEGACY_TOKENS', FALSE);
7711 p_ref_cd_rec.status := 'E';
7712 END IF;
7713 END IF;
7714 ELSE
7715 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_INVALID_REF_CD_TYPE',NULL,NULL,FALSE);
7716 p_ref_cd_rec.status := 'E';
7717 END IF;
7718 CLOSE c_res_flag;
7719
7720 -- Foreign Key Validation : Unit Section doesn't exists
7721 IF NOT igs_ps_usec_ref_pkg.get_pk_for_validation(l_n_usec_ref_id) THEN
7722 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS',
7723 igs_ps_validate_lgcy_pkg.get_lkup_meaning('UNIT_SECTION','LEGACY_TOKENS') || ' ' ||
7724 igs_ps_validate_lgcy_pkg.get_lkup_meaning('REFERENCE_CD','LEGACY_TOKENS'),
7725 NULL, FALSE);
7726 p_ref_cd_rec.status := 'E';
7727 END IF;
7728
7729 END validate_usec_db_cons;
7730
7731 -- Validate the database constraints for the Unit Section Occurrence Referrence code
7732 PROCEDURE validate_occur_db_cons(p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type,p_insert IN VARCHAR2) AS
7733
7734 BEGIN
7735 IF p_insert = 'I' THEN
7736 -- Unique Key Validation
7737 IF igs_ps_usec_ocur_ref_pkg.get_uk_for_validation( p_ref_cd_rec.reference_cd_type ,
7738 p_ref_cd_rec.reference_cd ,
7739 l_n_uso_id ) THEN
7740 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS',
7741 igs_ps_validate_lgcy_pkg.get_lkup_meaning('USEC_OCCUR','LEGACY_TOKENS') || ' ' ||
7742 igs_ps_validate_lgcy_pkg.get_lkup_meaning('REFERENCE_CD','LEGACY_TOKENS'),
7743 NULL, FALSE);
7744 p_ref_cd_rec.status := 'W';
7745 RETURN;
7746 END IF;
7747 END IF;
7748
7749 -- Following validation added as part of bug#2972950 for the PSP Enhancements TD
7750 OPEN c_res_flag(p_ref_cd_rec.reference_cd_type);
7751 FETCH c_res_flag INTO rec_res_flag;
7752 IF c_res_flag%FOUND THEN
7753 IF rec_res_flag.restricted_flag = 'Y' THEN
7754 -- Foreign Key Validations : Reference Code doesn't exists
7755 IF NOT igs_ge_ref_cd_pkg.get_uk_for_validation(p_ref_cd_rec.reference_cd_type,p_ref_cd_rec.reference_cd) THEN
7756 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'REFERENCE_CD','LEGACY_TOKENS', FALSE);
7757 p_ref_cd_rec.status := 'E';
7758 END IF;
7759 END IF;
7760 ELSE
7761 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_INVALID_REF_CD_TYPE',NULL,NULL,FALSE);
7762 p_ref_cd_rec.status := 'E';
7763 END IF;
7764 CLOSE c_res_flag;
7765
7766 -- Foreign Key Validation : Unit Section Occurrence doesn't exists
7767 IF NOT igs_ps_usec_occurs_pkg.get_pk_for_validation(l_n_uso_id) THEN
7768 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_OCCUR','LEGACY_TOKENS', FALSE);
7769 p_ref_cd_rec.status := 'E';
7770 END IF;
7771
7772
7773 END validate_occur_db_cons;
7774
7775
7776 -- Decides to call the database constraint procedures based on the datatype
7777 PROCEDURE validate_db_cons( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type,p_insert IN VARCHAR2) AS
7778 BEGIN
7779 IF p_ref_cd_rec.data_type = 'UNIT' THEN
7780 validate_unit_db_cons(p_ref_cd_rec);
7781 ELSIF p_ref_cd_rec.data_type = 'SECTION' THEN
7782 validate_usec_db_cons(p_ref_cd_rec,p_insert);
7783 ELSIF p_ref_cd_rec.data_type = 'OCCURRENCE' THEN
7784 validate_occur_db_cons(p_ref_cd_rec,p_insert);
7785 END IF;
7786 END validate_db_cons;
7787
7788 ---
7789 -- Check for Update/Insert
7790 FUNCTION check_insert_update ( p_ref_cd_rec IN OUT NOCOPY igs_ps_generic_pub.unit_ref_rec_type ) RETURN VARCHAR2 IS
7791 --For IGS_PS_USEC_REF_CD record
7792 CURSOR c_gen IS
7793 SELECT rc.restricted_flag,ur.reference_code_desc
7794 FROM igs_ps_usec_ref_cd ur, igs_ge_ref_cd_type_all rc
7795 WHERE ur.unit_section_reference_id = l_n_usec_ref_id
7796 AND ur.reference_code_type = p_ref_cd_rec.reference_cd_type
7797 AND ur.reference_code = p_ref_cd_rec.reference_cd
7798 AND ur.reference_code_type=rc.reference_cd_type;
7799
7800
7801 --For IGS_PS_US_REQ_REF_CD record
7802 CURSOR c_req IS
7803 SELECT rc.restricted_flag,urr.reference_code_desc
7804 FROM igs_ps_us_req_ref_cd urr,igs_ge_ref_cd_type_all rc
7805 WHERE urr.unit_section_reference_id = l_n_usec_ref_id
7806 AND urr.reference_cd_type = p_ref_cd_rec.reference_cd_type
7807 AND urr.reference_code = p_ref_cd_rec.reference_cd
7808 AND urr.reference_cd_type=rc.reference_cd_type;
7809
7810 --For IGS_PS_USEC_OCUR_REF record
7811 CURSOR c_occr IS
7812 SELECT rc.restricted_flag,uo.reference_code_desc
7813 FROM igs_ps_usec_ocur_ref uo,igs_ge_ref_cd_type_all rc
7814 WHERE uo.reference_code_type = p_ref_cd_rec.reference_cd_type
7815 AND uo.reference_code = p_ref_cd_rec.reference_cd
7816 AND uo.unit_section_occurrence_id = l_n_uso_id
7817 AND uo.reference_code_type=rc.reference_cd_type;
7818
7819 l_c_gen c_gen%ROWTYPE;
7820 l_c_req c_req%ROWTYPE;
7821 l_c_occr c_occr%ROWTYPE;
7822
7823 BEGIN
7824 IF p_ref_cd_rec.data_type = 'SECTION' THEN
7825 IF p_ref_cd_rec.gen_ref_flag = 'Y' THEN
7826 OPEN c_gen;
7827 FETCH c_gen INTO l_c_gen;
7828 IF c_gen%FOUND THEN
7829 CLOSE c_gen;
7830 IF l_c_gen.restricted_flag = 'N' THEN
7831 IF p_ref_cd_rec.description IS NULL THEN
7832 p_ref_cd_rec.description := l_c_gen.reference_code_desc;
7833 ELSIF p_ref_cd_rec.description = FND_API.G_MISS_CHAR THEN
7834 p_ref_cd_rec.description := NULL;
7835 END IF;
7836 END IF;
7837 RETURN 'U';
7838 ELSE
7839 CLOSE c_gen;
7840 RETURN 'I';
7841 END IF;
7842 ELSE
7843 OPEN c_req;
7844 FETCH c_req INTO l_c_req;
7845 IF c_req%FOUND THEN
7846 CLOSE c_req;
7847 IF l_c_req.restricted_flag = 'N' THEN
7848 IF p_ref_cd_rec.description IS NULL THEN
7849 p_ref_cd_rec.description := l_c_req.reference_code_desc;
7850 ELSIF p_ref_cd_rec.description = FND_API.G_MISS_CHAR THEN
7851 p_ref_cd_rec.description := NULL;
7852 END IF;
7853 END IF;
7854 RETURN 'U';
7855 ELSE
7856 CLOSE c_req;
7857 RETURN 'I';
7858 END IF;
7859 END IF;
7860
7861 ELSIF p_ref_cd_rec.data_type = 'OCCURRENCE' THEN
7862 OPEN c_occr;
7863 FETCH c_occr INTO l_c_occr;
7864 IF c_occr%FOUND THEN
7865 CLOSE c_occr;
7866 IF l_c_occr.restricted_flag = 'N' THEN
7867 IF p_ref_cd_rec.description IS NULL THEN
7868 p_ref_cd_rec.description := l_c_occr.reference_code_desc;
7869 ELSIF p_ref_cd_rec.description = FND_API.G_MISS_CHAR THEN
7870 p_ref_cd_rec.description := NULL;
7871 END IF;
7872 END IF;
7873 RETURN 'U';
7874 ELSE
7875 CLOSE c_occr;
7876 RETURN 'I';
7877 END IF;
7878
7879 ELSE
7880 RETURN 'I';
7881 END IF;
7882
7883 END check_insert_update;
7884
7885
7886 ----
7887
7888 BEGIN
7889
7890 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
7891 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.start_logging_for','Reference: Unit,Unit Sections,Unit section Occurrence');
7892 END IF;
7893
7894 p_c_rec_status := 'S';
7895
7896 FOR i IN 1 .. p_tab_ref_cd.LAST
7897 LOOP
7898 IF p_tab_ref_cd.EXISTS(i) THEN
7899 --Initialize the variable
7900 l_c_cal_type :=NULL;
7901 l_n_seq_num :=NULL;
7902 l_n_uoo_id :=NULL;
7903 l_n_usec_ref_id :=NULL;
7904 l_n_uso_id :=NULL;
7905
7906 p_tab_ref_cd(i).status := 'S';
7907 p_tab_ref_cd(i).msg_from := fnd_msg_pub.count_msg;
7908 trim_values(p_tab_ref_cd(i));
7909 -- Validate the parameters values
7910
7911 validate_parameters(p_tab_ref_cd(i));
7912
7913 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7914 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.status_after_validate_parameters',
7915 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
7916 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
7917 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
7918 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
7919 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag||' '||'occurrence_identifier'||p_tab_ref_cd(i).occurrence_identifier
7920 ||' '||'production_uso_id:'||p_tab_ref_cd(i).production_uso_id||' '||'Status:'||p_tab_ref_cd(i).status);
7921 END IF;
7922
7923 -- Derive the required values
7924 IF p_tab_ref_cd(i).status = 'S' THEN
7925 validate_derivation(p_tab_ref_cd(i));
7926
7927 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7928 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.status_after_validate_derivation',
7929 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
7930 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
7931 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
7932 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
7933 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag||' '||'occurrence_identifier'||p_tab_ref_cd(i).occurrence_identifier
7934 ||' '||'production_uso_id:'||p_tab_ref_cd(i).production_uso_id||' '||'Status:'||p_tab_ref_cd(i).status);
7935 END IF;
7936
7937 END IF;
7938
7939 --Find out whether it is insert/update of record
7940 l_insert_update:='I';
7941 IF p_tab_ref_cd(i).status = 'S' AND p_calling_context IN ('G','S') THEN
7942 l_insert_update:= check_insert_update(p_tab_ref_cd(I));
7943
7944 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7945 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.status_after_check_insert_update',
7946 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
7947 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
7948 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
7949 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
7950 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag||' '||'occurrence_identifier'||p_tab_ref_cd(i).occurrence_identifier
7951 ||' '||'production_uso_id:'||p_tab_ref_cd(i).production_uso_id||' '||'Status:'||p_tab_ref_cd(i).status);
7952 END IF;
7953
7954 END IF;
7955
7956 -- Find out whether record can go for import in context of cancelled/aborted
7957 IF p_tab_ref_cd(i).status = 'S' AND p_calling_context ='S' THEN
7958 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,l_n_uso_id) = FALSE THEN
7959 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
7960 fnd_msg_pub.add;
7961 p_tab_ref_cd(i).status := 'A';
7962 END IF;
7963
7964 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7965 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.status_after_check_import_allowed',
7966 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
7967 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
7968 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
7969 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
7970 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag||' '||'occurrence_identifier'||p_tab_ref_cd(i).occurrence_identifier
7971 ||' '||'production_uso_id:'||p_tab_ref_cd(i).production_uso_id||' '||'Status:'||p_tab_ref_cd(i).status);
7972 END IF;
7973
7974 END IF;
7975
7976 -- Check for database constraints
7977 IF p_tab_ref_cd(i).status = 'S' THEN
7978 validate_db_cons(p_tab_ref_cd(i),l_insert_update);
7979
7980 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7981 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.status_after_validate_db_cons',
7982 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
7983 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
7984 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
7985 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
7986 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag||' '||'occurrence_identifier'||p_tab_ref_cd(i).occurrence_identifier
7987 ||' '||'production_uso_id:'||p_tab_ref_cd(i).production_uso_id||' '||'Status:'||p_tab_ref_cd(i).status);
7988 END IF;
7989
7990 END IF;
7991
7992 IF p_tab_ref_cd(i).status = 'S' THEN
7993 igs_ps_validate_lgcy_pkg.validate_unit_reference(p_tab_ref_cd(i),l_n_uoo_id,l_n_uso_id,p_calling_context);
7994
7995 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7996 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.status_after_Business_Validation',
7997 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
7998 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
7999 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
8000 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
8001 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag||' '||'occurrence_identifier'||p_tab_ref_cd(i).occurrence_identifier
8002 ||' '||'production_uso_id:'||p_tab_ref_cd(i).production_uso_id||' '||'Status:'||p_tab_ref_cd(i).status);
8003 END IF;
8004
8005 END IF;
8006
8007 -- Insert the reference codes in appropriate table based on datatype value.
8008 IF p_tab_ref_cd(i).status = 'S' THEN
8009 IF p_tab_ref_cd(i).data_type = 'UNIT' THEN
8010 IF p_tab_ref_cd(i).gen_ref_flag = 'Y' THEN -- if generic reference code
8011 -- Creating the unit refernce code if the datatype is UNIT.
8012 INSERT INTO igs_ps_unit_ref_cd (
8013 UNIT_CD,
8014 VERSION_NUMBER,
8015 REFERENCE_CD_TYPE,
8016 REFERENCE_CD,
8017 DESCRIPTION,
8018 CREATION_DATE,
8019 CREATED_BY,
8020 LAST_UPDATE_DATE,
8021 LAST_UPDATED_BY,
8022 LAST_UPDATE_LOGIN
8023 ) VALUES (
8024 p_tab_ref_cd(i).unit_cd,
8025 p_tab_ref_cd(i).version_number,
8026 p_tab_ref_cd(i).reference_cd_type,
8027 p_tab_ref_cd(i).reference_cd,
8028 p_tab_ref_cd(i).description,
8029 sysdate,
8030 g_n_user_id,
8031 sysdate,
8032 g_n_user_id,
8033 g_n_login_id
8034 );
8035 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8036 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.Record_Inserted_igs_ps_unit_ref_cd',
8037 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
8038 ||p_tab_ref_cd(i).version_number||' '||'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||
8039 'reference_cd:'||p_tab_ref_cd(i).reference_cd||' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag);
8040 END IF;
8041 ELSE -- else unit requirements reference code
8042 INSERT INTO igs_ps_unitreqref_cd (
8043 unit_req_ref_cd_id,
8044 unit_cd,
8045 version_number,
8046 reference_cd_type,
8047 creation_date,
8048 created_by,
8049 last_update_date,
8050 last_updated_by,
8051 last_update_login,
8052 reference_code,
8053 reference_code_desc
8054 ) VALUES (
8055 igs_ps_unitreqref_cd_s.NEXTVAL,
8056 p_tab_ref_cd(i).unit_cd,
8057 p_tab_ref_cd(i).version_number,
8058 p_tab_ref_cd(i).reference_cd_type,
8059 SYSDATE,
8060 g_n_user_id,
8061 SYSDATE,
8062 g_n_user_id,
8063 g_n_login_id,
8064 p_tab_ref_cd(i).reference_cd,
8065 p_tab_ref_cd(i).description
8066 );
8067 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8068 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.Record_Inserted_igs_ps_unitreqref_cd',
8069 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
8070 ||p_tab_ref_cd(i).version_number||' '||'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||
8071 'reference_cd:'||p_tab_ref_cd(i).reference_cd||' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag);
8072 END IF;
8073
8074 END IF;
8075
8076 ELSIF p_tab_ref_cd(i).data_type = 'SECTION' THEN
8077
8078 IF p_tab_ref_cd(i).gen_ref_flag = 'Y' THEN -- if generic reference code
8079 --Enh Bug#2972950
8080 --For the PSP Enhancements TD:
8081 --Added the column's reference_code_type,reference_code,reference_code_desc
8082 --in the INSERT of table igs_ps_usec_ref_cd
8083 --Also deleted column reference_code_id in the INSERT of table igs_ps_usec_ref_cd
8084
8085 -- Creating the unit section refernce code if the datatype is SECTION.
8086 IF l_insert_update = 'I' THEN
8087
8088 INSERT INTO igs_ps_usec_ref_cd (
8089 unit_section_reference_cd_id,
8090 unit_section_reference_id,
8091 creation_date,
8092 created_by,
8093 last_update_date,
8094 last_updated_by,
8095 last_update_login,
8096 reference_code_type,
8097 reference_code,
8098 reference_code_desc
8099 ) VALUES (
8100 igs_ps_usec_ref_cd_s.nextval,
8101 l_n_usec_ref_id,
8102 sysdate,
8103 g_n_user_id,
8104 sysdate,
8105 g_n_user_id,
8106 g_n_login_id,
8107 p_tab_ref_cd(i).reference_cd_type,
8108 p_tab_ref_cd(i).reference_cd,
8109 p_tab_ref_cd(i).description
8110 );
8111 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8112 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.Record_Inserted_igs_ps_usec_ref_cd',
8113 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
8114 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
8115 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
8116 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
8117 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag);
8118 END IF;
8119 ELSE
8120
8121 UPDATE igs_ps_usec_ref_cd SET reference_code_desc=p_tab_ref_cd(i).description,last_updated_by=g_n_user_id,
8122 last_update_date=SYSDATE WHERE unit_section_reference_id=l_n_usec_ref_id AND
8123 reference_code_type=p_tab_ref_cd(i).reference_cd_type AND reference_code=p_tab_ref_cd(i).reference_cd;
8124
8125 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8126 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.Record_Updated_igs_ps_usec_ref_cd',
8127 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
8128 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
8129 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
8130 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
8131 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag);
8132 END IF;
8133
8134 END IF;
8135 ELSE -- else unit section requirements reference code
8136 IF l_insert_update = 'I' THEN
8137
8138 INSERT INTO igs_ps_us_req_ref_cd (
8139 unit_section_req_ref_cd_id,
8140 unit_section_reference_id,
8141 reference_cd_type,
8142 creation_date,
8143 created_by,
8144 last_update_date,
8145 last_updated_by,
8146 last_update_login,
8147 reference_code,
8148 reference_code_desc
8149 ) VALUES (
8150 igs_ps_us_req_ref_cd_s.NEXTVAL,
8151 l_n_usec_ref_id,
8152 p_tab_ref_cd(i).reference_cd_type,
8153 SYSDATE,
8154 g_n_user_id,
8155 SYSDATE,
8156 g_n_user_id,
8157 g_n_login_id,
8158 p_tab_ref_cd(i).reference_cd,
8159 p_tab_ref_cd(i).description
8160 );
8161 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8162 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.Record_Inserted_igs_ps_us_req_ref_cd',
8163 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
8164 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
8165 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
8166 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
8167 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag);
8168 END IF;
8169 ELSE
8170
8171 UPDATE igs_ps_us_req_ref_cd SET reference_code_desc=p_tab_ref_cd(i).description,last_updated_by=g_n_user_id,
8172 last_update_date=SYSDATE WHERE unit_section_reference_id=l_n_usec_ref_id AND
8173 reference_cd_type=p_tab_ref_cd(i).reference_cd_type AND reference_code=p_tab_ref_cd(i).reference_cd;
8174
8175 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8176 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.Record_updated_igs_ps_us_req_ref_cd',
8177 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
8178 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
8179 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
8180 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
8181 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag);
8182 END IF;
8183
8184 END IF;
8185 END IF;
8186
8187 ELSIF p_tab_ref_cd(i).data_type = 'OCCURRENCE' THEN
8188
8189 --Enh Bug#2972950
8190 --For the PSP Enhancements TD:
8191 --Added the reference_code_desc column in the INSERT of table igs_ps_usec_ocur_ref
8192
8193 --Creating the unit section occurrence refernce code if the datatype is OCCURRENCE.
8194 IF l_insert_update = 'I' THEN
8195
8196 INSERT INTO igs_ps_usec_ocur_ref (
8197 unit_sec_occur_reference_id,
8198 unit_section_occurrence_id,
8199 reference_code_type,
8200 reference_code,
8201 creation_date,
8202 created_by,
8203 last_update_date,
8204 last_updated_by,
8205 last_update_login,
8206 reference_code_desc
8207 ) VALUES (
8208 igs_ps_usec_occur_ref_s.nextval,
8209 l_n_uso_id,
8210 p_tab_ref_cd(i).reference_cd_type,
8211 p_tab_ref_cd(i).reference_cd,
8212 sysdate,
8213 g_n_user_id,
8214 sysdate,
8215 g_n_user_id,
8216 g_n_login_id,
8217 p_tab_ref_cd(i).description
8218 );
8219 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8220 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.Record_inserted_igs_ps_usec_ocur_ref',
8221 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
8222 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
8223 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
8224 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
8225 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag||' '||'occurrence_identifier'||p_tab_ref_cd(i).occurrence_identifier
8226 ||' '||'production_uso_id:'||p_tab_ref_cd(i).production_uso_id);
8227 END IF;
8228 ELSE
8229
8230 UPDATE igs_ps_usec_ocur_ref SET reference_code_desc=p_tab_ref_cd(i).description,last_updated_by=g_n_user_id,
8231 last_update_date=SYSDATE WHERE unit_section_occurrence_id=l_n_uso_id AND
8232 reference_code_type=p_tab_ref_cd(i).reference_cd_type AND reference_code=p_tab_ref_cd(i).reference_cd;
8233
8234 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8235 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.Record_updated_igs_ps_usec_ocur_ref',
8236 'Data Type:'||p_tab_ref_cd(i).data_type||' '||'Unit code:'||p_tab_ref_cd(i).unit_cd||' '||'Version number:'
8237 ||p_tab_ref_cd(i).version_number||' '||'teach_cal_alternate_code:'||p_tab_ref_cd(i).teach_cal_alternate_code
8238 ||' '||'Location_cd:'||p_tab_ref_cd(i).location_cd||' '||'Unit Class:'||p_tab_ref_cd(i).unit_class||' '||
8239 'reference_cd_type:'||p_tab_ref_cd(i).reference_cd_type||' '||'reference_cd:'||p_tab_ref_cd(i).reference_cd||
8240 ' '||'gen_ref_flag:'||p_tab_ref_cd(i).gen_ref_flag||' '||'occurrence_identifier'||p_tab_ref_cd(i).occurrence_identifier
8241 ||' '||'production_uso_id:'||p_tab_ref_cd(i).production_uso_id);
8242 END IF;
8243 END IF;
8244
8245 END IF;
8246 p_tab_ref_cd(i).msg_from := NULL;
8247 p_tab_ref_cd(i).msg_to := NULL;
8248 ELSIF p_tab_ref_cd(i).status = 'A' THEN
8249 p_tab_ref_cd(i).msg_from := p_tab_ref_cd(i).msg_from + 1;
8250 p_tab_ref_cd(i).msg_to := fnd_msg_pub.count_msg;
8251 ELSE
8252 p_c_rec_status := p_tab_ref_cd(i).status;
8253 p_tab_ref_cd(i).msg_from := p_tab_ref_cd(i).msg_from + 1;
8254 p_tab_ref_cd(i).msg_to := fnd_msg_pub.count_msg;
8255 IF p_c_rec_status = 'E' THEN
8256 RETURN;
8257 END IF;
8258 END IF; -- status is E
8259 END IF; -- end of exist(i) if
8260 END LOOP;
8261
8262 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
8263 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_unit_ref_code.after_import_status',p_c_rec_status);
8264 END IF;
8265
8266
8267 END create_unit_ref_code;
8268
8269 --This procedure is a sub process to create Unit Section Occurrence Instructors
8270 --in production table(IGS_PS_USO_INSTRCTRS)
8271 PROCEDURE create_uso_ins( p_tab_uso_ins IN OUT NOCOPY igs_ps_generic_pub.uso_ins_tbl_type,
8272 p_c_rec_status OUT NOCOPY VARCHAR2 ) AS
8273 /***********************************************************************************************
8274
8275 Created By: smvk
8276 Date Created By: 20-May-2003
8277 Purpose: This procedure imports unit section occurrence instructor.
8278
8279 Known limitations,enhancements,remarks:
8280 Change History
8281 Who When What
8282 sommukhe 02-AUG-2006 Bug#5356402,Using function usoexists to probe the PL/SQL table so that the status of occurrences
8283 are not changed to resheduling when imported together with instructors.
8284 smvk 30-Aug-2004 Bug # 3862086. Modified Return to Exit. Post insert business logic needs to be executed Always.
8285 This internally clears the package level PL/SQL table v_tab_usec_tr.
8286 smvk 23-Sep-2003 Bug # 3121311, Removed the call to procedures uso_effective_dates and validate_instructor.
8287 jbegum 4-June-2003 Enh Bug#2972950
8288 For PSP Scheduling Enhancements TD:
8289 Modified local procedures validate_db_cons and validate_derivation.
8290 ***********************************************************************************************/
8291
8292 l_n_ins_id igs_ps_uso_instrctrs.instructor_id%TYPE;
8293 l_n_uso_id igs_ps_uso_instrctrs.unit_section_occurrence_id%TYPE;
8294 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
8295 l_d_start_dt igs_ps_usec_occurs_all.start_date%TYPE;
8296 l_d_end_dt igs_ps_usec_occurs_all.end_date%TYPE;
8297
8298 CURSOR c_occurs(cp_unit_section_occurrence_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE) IS
8299 SELECT uso.unit_section_occurrence_id
8300 FROM igs_ps_usec_occurs_all uso
8301 WHERE (uso.schedule_status IS NOT NULL AND uso.schedule_status NOT IN ('PROCESSING','USER_UPDATE'))
8302 AND uso.no_set_day_ind ='N'
8303 AND uso.unit_section_occurrence_id=cp_unit_section_occurrence_id;
8304
8305 FUNCTION usoexists(p_n_uso_id igs_ps_uso_instrctrs.unit_section_occurrence_id%TYPE) RETURN BOOLEAN AS
8306 /***********************************************************************************************
8307 Created By : sommukhe
8308 Date Created By: 1-08-2006.
8309 Purpose : This utility procedure is to check if a uso exists in a pl/sql table
8310
8311 Known limitations,enhancements,remarks:
8312 Change History (in reverse chronological order)
8313 Who When What
8314 ***********************************************************************************************/
8315 BEGIN
8316 FOR i in 1..l_tbl_uso.count LOOP
8317 IF p_n_uso_id = l_tbl_uso(i) THEN
8318 RETURN TRUE;
8319 END IF;
8320 END LOOP;
8321 RETURN FALSE;
8322 END usoexists;
8323
8324 PROCEDURE trim_values ( p_uso_ins_rec IN OUT NOCOPY igs_ps_generic_pub.uso_ins_rec_type) AS
8325 BEGIN
8326 p_uso_ins_rec.instructor_person_number := TRIM(p_uso_ins_rec.instructor_person_number);
8327 p_uso_ins_rec.production_uso_id := TRIM(p_uso_ins_rec.production_uso_id);
8328 p_uso_ins_rec.unit_cd := TRIM(p_uso_ins_rec.unit_cd);
8329 p_uso_ins_rec.version_number := TRIM(p_uso_ins_rec.version_number);
8330 p_uso_ins_rec.teach_cal_alternate_code := TRIM(p_uso_ins_rec.teach_cal_alternate_code);
8331 p_uso_ins_rec.location_cd := TRIM(p_uso_ins_rec.location_cd);
8332 p_uso_ins_rec.unit_class := TRIM(p_uso_ins_rec.unit_class);
8333 p_uso_ins_rec.occurrence_identifier := TRIM(p_uso_ins_rec.occurrence_identifier);
8334 p_uso_ins_rec.confirmed_flag := TRIM(p_uso_ins_rec.confirmed_flag);
8335 p_uso_ins_rec.wl_percentage_allocation := TRIM(p_uso_ins_rec.wl_percentage_allocation);
8336 p_uso_ins_rec.instructional_load_lecture := TRIM(p_uso_ins_rec.instructional_load_lecture);
8337 p_uso_ins_rec.instructional_load_laboratory := TRIM(p_uso_ins_rec.instructional_load_laboratory);
8338 p_uso_ins_rec.instructional_load_other := TRIM(p_uso_ins_rec.instructional_load_other);
8339 p_uso_ins_rec.lead_instructor_flag := TRIM(p_uso_ins_rec.lead_instructor_flag);
8340
8341 END trim_values;
8342
8343 PROCEDURE validate_parameters(p_uso_ins_rec IN OUT NOCOPY igs_ps_generic_pub.uso_ins_rec_type) AS
8344 /***********************************************************************************************
8345
8346 Created By: smvk
8347 Date Created By: 20-May-2003
8348 Purpose: This procedure validates all mandatory parameter required for the unit section occurrence
8349 instructor process to proceed.
8350
8351 Known limitations,enhancements,remarks:
8352 Change History
8353 Who When What
8354 ***********************************************************************************************/
8355
8356 BEGIN
8357 p_uso_ins_rec.status:='S';
8358
8359 -- Checking for the mandatory existence of Unit Code, verison number, instructor person number parameter in the record.
8360 IF p_uso_ins_rec.instructor_person_number IS NULL OR p_uso_ins_rec.instructor_person_number = FND_API.G_MISS_CHAR THEN
8361 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
8362 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY',fnd_message.get,NULL,FALSE);
8363 p_uso_ins_rec.status := 'E';
8364 END IF;
8365
8366 IF p_uso_ins_rec.unit_cd IS NULL OR p_uso_ins_rec.unit_cd = FND_API.G_MISS_CHAR THEN
8367 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
8368 p_uso_ins_rec.status := 'E';
8369 END IF;
8370
8371 IF p_uso_ins_rec.version_number IS NULL OR p_uso_ins_rec.version_number = FND_API.G_MISS_NUM THEN
8372 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
8373 p_uso_ins_rec.status := 'E';
8374 END IF;
8375
8376 -- if the production USO id is not provided then Teching calendar alternate code, location code and
8377 -- unit class are required.
8378 IF p_uso_ins_rec.production_uso_id IS NULL OR p_uso_ins_rec.production_uso_id = FND_API.G_MISS_NUM THEN
8379 IF p_uso_ins_rec.teach_cal_alternate_code IS NULL OR p_uso_ins_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
8380 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
8381 p_uso_ins_rec.status := 'E';
8382 END IF;
8383 IF p_uso_ins_rec.location_cd IS NULL OR p_uso_ins_rec.location_cd = FND_API.G_MISS_CHAR THEN
8384 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
8385 p_uso_ins_rec.status := 'E';
8386 END IF;
8387 IF p_uso_ins_rec.unit_class IS NULL OR p_uso_ins_rec.unit_class = FND_API.G_MISS_CHAR THEN
8388 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
8389 p_uso_ins_rec.status := 'E';
8390 END IF;
8391 END IF;
8392
8393 IF (p_uso_ins_rec.teach_cal_alternate_code IS NULL OR p_uso_ins_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR ) AND
8394 (p_uso_ins_rec.location_cd IS NULL OR p_uso_ins_rec.location_cd = FND_API.G_MISS_CHAR ) AND
8395 (p_uso_ins_rec.unit_class IS NULL OR p_uso_ins_rec.unit_class = FND_API.G_MISS_CHAR) THEN
8396 IF p_uso_ins_rec.production_uso_id IS NULL OR p_uso_ins_rec.production_uso_id = FND_API.G_MISS_NUM THEN
8397 fnd_message.set_name('IGS','IGS_PS_PRODUCTION_USO_ID');
8398 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY',fnd_message.get,NULL,FALSE);
8399 p_uso_ins_rec.status := 'E';
8400 END IF;
8401 END IF;
8402
8403 IF (p_uso_ins_rec.production_uso_id IS NULL OR p_uso_ins_rec.production_uso_id = FND_API.G_MISS_NUM ) AND
8404 (p_uso_ins_rec.occurrence_identifier IS NULL OR p_uso_ins_rec.occurrence_identifier = FND_API.G_MISS_CHAR) THEN
8405 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'USEC_OCCRS_ID','IGS_PS_LOG_PARAMETERS', FALSE);
8406 p_uso_ins_rec.status := 'E';
8407 END IF;
8408
8409
8410 END validate_parameters;
8411
8412 PROCEDURE validate_derivation(p_uso_ins_rec IN OUT NOCOPY igs_ps_generic_pub.uso_ins_rec_type) AS
8413 /***********************************************************************************************
8414
8415 Created By: smvk
8416 Date Created By: 20-May-2003
8417 Purpose: This procedure derives the values required for creation of unit section occurrence instructor in production table.
8418
8419 Known limitations,enhancements,remarks:
8420 Change History
8421 Who When What
8422 smvk 28-Jul-2004 Bug # 3793580. Coded to call get_uso_id procedure and removed
8423 cursors used to derive USO id.
8424 jbegum 5-June-2003 Bug#2972950
8425 For the PSP Scheduling Enhancements TD:
8426 Modified the two cursors c_tba_count,c_tba_uso_id
8427 ***********************************************************************************************/
8428
8429
8430 CURSOR c_uoo_id (cp_n_uso_id IN igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE) IS
8431 SELECT A.uoo_id
8432 FROM igs_ps_usec_occurs_all A
8433 WHERE A.unit_section_occurrence_id = cp_n_uso_id;
8434
8435 l_c_cal_type igs_ca_inst_all.cal_type%TYPE;
8436 l_n_seq_num igs_ca_inst_all.sequence_number%TYPE;
8437 l_d_start igs_ca_inst_all.start_dt%TYPE;
8438 l_d_end igs_ca_inst_all.end_dt%TYPE;
8439 l_c_ret_status VARCHAR2(30);
8440 l_c_msg VARCHAR2(30);
8441
8442 BEGIN
8443 -- Initialize the variable use to store the derived values.
8444 l_n_ins_id := NULL;
8445 l_n_uso_id := NULL;
8446 l_n_uoo_id := NULL;
8447
8448 -- Derive the Instructor identifier
8449 igs_ps_validate_lgcy_pkg.get_party_id(p_uso_ins_rec.instructor_person_number, l_n_ins_id);
8450 IF l_n_ins_id IS NULL THEN
8451 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
8452 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', fnd_message.get,NULL, FALSE);
8453 p_uso_ins_rec.status := 'E';
8454 END IF;
8455
8456 -- if the production unit section occurrence identifier is provided then validate it
8457 -- otherwise derive the production unit section occurrence identifier.
8458 IF p_uso_ins_rec.production_uso_id IS NOT NULL THEN
8459 IF igs_ps_usec_occurs_pkg.get_pk_for_validation(p_uso_ins_rec.production_uso_id) THEN
8460 l_n_uso_id := p_uso_ins_rec.production_uso_id;
8461 -- Also derive the unit section identifier uoo_id for the the unit section occurrence identifier
8462 OPEN c_uoo_id(l_n_uso_id);
8463 FETCH c_uoo_id INTO l_n_uoo_id;
8464 CLOSE c_uoo_id;
8465 ELSE
8466 fnd_message.set_name('IGS','IGS_PS_PRODUCTION_USO_ID');
8467 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', fnd_message.get,NULL, FALSE);
8468 p_uso_ins_rec.status := 'E';
8469 END IF;
8470 ELSE
8471 -- Deriving the value of Unit section Occurrence identifier
8472
8473 -- Deriving the Calendar Type and Calendar Sequence Number
8474 igs_ge_gen_003.get_calendar_instance(p_uso_ins_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
8475 IF l_c_ret_status <> 'SINGLE' THEN
8476 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
8477 p_uso_ins_rec.status := 'E';
8478 END IF;
8479 -- Deriving the Unit Offering Option Identifier
8480 l_c_ret_status := NULL;
8481 igs_ps_validate_lgcy_pkg.get_uoo_id(p_uso_ins_rec.unit_cd, p_uso_ins_rec.version_number, l_c_cal_type, l_n_seq_num, p_uso_ins_rec.location_cd, p_uso_ins_rec.unit_class, l_n_uoo_id, l_c_ret_status);
8482 IF l_c_ret_status IS NOT NULL THEN
8483 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
8484 p_uso_ins_rec.status := 'E';
8485 END IF;
8486
8487
8488 --Derive the unit section occurrence id
8489 l_c_msg := NULL;
8490 igs_ps_validate_lgcy_pkg.get_uso_id( p_uoo_id => l_n_uoo_id,
8491 p_occurrence_identifier => p_uso_ins_rec.occurrence_identifier,
8492 p_uso_id => l_n_uso_id,
8493 p_message => l_c_msg
8494 );
8495 IF l_c_msg IS NOT NULL THEN
8496 fnd_message.set_name('IGS',l_c_msg);
8497 fnd_msg_pub.add;
8498 p_uso_ins_rec.status := 'E';
8499 END IF;
8500
8501 END IF;
8502 END validate_derivation;
8503
8504 PROCEDURE validate_db_cons(p_uso_ins_rec IN OUT NOCOPY igs_ps_generic_pub.uso_ins_rec_type) AS
8505 CURSOR c_unit_ver (cp_n_uso_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE) IS
8506 SELECT a.unit_cd, a.version_number
8507 FROM igs_ps_unit_ofr_opt_all a, igs_ps_usec_occurs_all b
8508 WHERE a.uoo_id = b.uoo_id
8509 AND b.unit_section_occurrence_id = cp_n_uso_id;
8510
8511 rec_unit_ver c_unit_ver%ROWTYPE;
8512
8513 CURSOR c_occur_status (cp_uso_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE) IS
8514 SELECT 'X'
8515 FROM igs_ps_usec_occurs_all
8516 WHERE unit_section_occurrence_id = cp_uso_id
8517 AND schedule_status = 'PROCESSING';
8518 l_c_var VARCHAR2(1);
8519
8520 BEGIN
8521 -- Check uniqueness validation
8522 IF igs_ps_uso_instrctrs_pkg.get_uk_for_validation(l_n_uso_id, l_n_ins_id) THEN
8523 p_uso_ins_rec.status :='W';
8524 fnd_message.set_name('IGS','IGS_PS_USO_INS');
8525 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', fnd_message.get, NULL, FALSE);
8526 RETURN;
8527 END IF;
8528
8529 -- Check Constraints
8530 BEGIN
8531 igs_ps_unit_ver_pkg.check_constraints( 'UNIT_CD',p_uso_ins_rec.unit_cd);
8532 EXCEPTION
8533 WHEN OTHERS THEN
8534 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','UNIT_CD','LEGACY_TOKENS',TRUE);
8535 p_uso_ins_rec.status :='E';
8536 END;
8537
8538 BEGIN
8539 igs_ps_unit_ver_pkg.check_constraints('VERSION_NUMBER',p_uso_ins_rec.version_number);
8540 EXCEPTION
8541 WHEN OTHERS THEN
8542 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VER_NUM_1_999',NULL,NULL,TRUE);
8543 p_uso_ins_rec.status :='E';
8544 END;
8545
8546 -- Foreign Key Checking
8547 IF NOT igs_pe_person_pkg.get_pk_for_validation(l_n_ins_id ) THEN
8548 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
8549 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', fnd_message.get, NULL, FALSE);
8550 p_uso_ins_rec.status := 'E';
8551 END IF;
8552 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
8553 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
8554 p_uso_ins_rec.status := 'E';
8555 END IF;
8556
8557 IF p_uso_ins_rec.production_uso_id IS NOT NULL THEN
8558
8559 -- validate the production USO ID with unit_cd, version_number
8560 OPEN c_unit_ver(p_uso_ins_rec.production_uso_id);
8561 FETCH c_unit_ver INTO rec_unit_ver;
8562 IF c_unit_ver%FOUND THEN
8563 IF p_uso_ins_rec.unit_cd <> rec_unit_ver.unit_cd OR
8564 p_uso_ins_rec.version_number <> rec_unit_ver.version_number THEN
8565 fnd_message.set_name('IGS','IGS_PS_LGCY_UNIT_VER_NOT_USO');
8566 fnd_msg_pub.add;
8567 p_uso_ins_rec.status :='E';
8568 END IF;
8569 ELSE
8570 fnd_message.set_name('IGS','IGS_PS_LGCY_UNIT_VER_NOT_USO');
8571 fnd_msg_pub.add;
8572 p_uso_ins_rec.status :='E';
8573 END IF;
8574 CLOSE c_unit_ver;
8575
8576 END IF;
8577
8578
8579 --When the occurrence is Scheduling in progress then import is not allowed
8580 --Note this validation cannot be pushed in the post validation as that is also called from the instructor override
8581 OPEN c_occur_status (l_n_uso_id);
8582 FETCH c_occur_status INTO l_c_var;
8583 IF c_occur_status%FOUND THEN
8584 fnd_message.set_name ( 'IGS', 'IGS_PS_SCHEDULING_IN_PROGRESS' );
8585 fnd_msg_pub.add;
8586 p_uso_ins_rec.status := 'E';
8587 END IF;
8588 CLOSE c_occur_status;
8589
8590 END validate_db_cons;
8591
8592 BEGIN
8593
8594 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
8595 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_uso_ins.start_logging_for','Unit Section Occurrence Instructors');
8596 END IF;
8597
8598 p_c_rec_status := 'S';
8599 FOR I in 1..p_tab_uso_ins.LAST LOOP
8600 IF p_tab_uso_ins.EXISTS(I) THEN
8601 p_tab_uso_ins(I).status := 'S';
8602 p_tab_uso_ins(I).msg_from := fnd_msg_pub.count_msg;
8603 trim_values(p_tab_uso_ins(I));
8604 validate_parameters(p_tab_uso_ins(I));
8605
8606 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8607 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_uso_ins.status_after_validate_parameters',
8608 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
8609 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
8610 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
8611 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
8612 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
8613 END IF;
8614
8615 IF p_tab_uso_ins(I).status = 'S' THEN
8616 validate_derivation(p_tab_uso_ins(I));
8617
8618 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8619 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_uso_ins.status_after_validate_derivation',
8620 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
8621 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
8622 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
8623 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
8624 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
8625 END IF;
8626
8627 END IF;
8628
8629 IF p_tab_uso_ins(I).status = 'S' THEN
8630 validate_db_cons ( p_tab_uso_ins(I) );
8631 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8632 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_uso_ins.status_after_validate_db_cons',
8633 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
8634 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
8635 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
8636 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
8637 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
8638 END IF;
8639 END IF;
8640 IF p_tab_uso_ins(I).status = 'S' THEN
8641 INSERT INTO IGS_PS_USO_INSTRCTRS (
8642 USO_INSTRUCTOR_ID,
8643 UNIT_SECTION_OCCURRENCE_ID,
8644 INSTRUCTOR_ID,
8645 CREATED_BY ,
8646 CREATION_DATE,
8647 LAST_UPDATED_BY,
8648 LAST_UPDATE_DATE ,
8649 LAST_UPDATE_LOGIN
8650 ) VALUES (
8651 igs_ps_uso_instrctrs_s.nextval,
8652 l_n_uso_id,
8653 l_n_ins_id,
8654 g_n_user_id,
8655 sysdate,
8656 g_n_user_id,
8657 sysdate,
8658 g_n_login_id
8659 );
8660 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8661 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_uso_ins.record_inserted',
8662 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
8663 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
8664 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
8665 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
8666 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id);
8667 END IF;
8668 END IF;
8669
8670 IF p_tab_uso_ins(I).status = 'S' THEN
8671 igs_ps_validate_lgcy_pkg.post_uso_ins(l_n_ins_id, l_n_uoo_id, p_tab_uso_ins(I),I);
8672 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8673 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_uso_ins.status_after_post_uso_ins',
8674 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
8675 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
8676 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
8677 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
8678 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
8679 END IF;
8680 END IF;
8681
8682 IF p_tab_uso_ins(I).status = 'S' THEN
8683 --Update the schedule status of the occurrence to USER_UPDATE if inserting a record
8684 --Note this validation cannot be pushed in the post validation as that is also called from the instructor override
8685 IF NOT usoexists(l_n_uso_id) THEN
8686 FOR l_occurs_rec IN c_occurs(l_n_uso_id) LOOP
8687 igs_ps_usec_schedule.update_occurrence_status(l_occurs_rec.unit_section_occurrence_id,'USER_UPDATE','N');
8688 END LOOP;
8689 END IF;
8690 END IF;
8691
8692 IF p_tab_uso_ins(I).status = 'S' THEN
8693 p_tab_uso_ins(I).msg_from := NULL;
8694 p_tab_uso_ins(I).msg_to := NULL;
8695 ELSE
8696 p_c_rec_status := p_tab_uso_ins(I).status;
8697 p_tab_uso_ins(I).msg_from := p_tab_uso_ins(I).msg_from+1;
8698 p_tab_uso_ins(I).msg_to := fnd_msg_pub.count_msg;
8699 IF p_tab_uso_ins(I).status = 'E' THEN
8700 RETURN;
8701 END IF;
8702 END IF;
8703
8704 END IF;
8705 END LOOP;
8706 IF NOT igs_ps_validate_lgcy_pkg.post_uso_ins_busi(p_tab_uso_ins) THEN
8707 p_c_rec_status := 'E';
8708 END IF;
8709
8710 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
8711 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_unit_lgcy_pkg.create_uso_ins.after_import_status',p_c_rec_status);
8712 END IF;
8713
8714 l_tbl_uso.DELETE;
8715
8716 END create_uso_ins;
8717
8718
8719 END igs_ps_unit_lgcy_pkg;