[Home] [Help]
PACKAGE BODY: APPS.IGS_PS_CREATE_GENERIC_PKG
Source
1 PACKAGE BODY igs_ps_create_generic_pkg AS
2 /* $Header: IGSPS91B.pls 120.7 2006/05/12 04:59:39 abshriva noship $ */
3
4 /***********************************************************************************************
5 Created By : Sanjeeb Rakshit, Somnath Mukherjee
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 ********************************************************************************************** */
37
38 g_n_user_id igs_ps_unit_ver_all.created_by%TYPE := NVL(fnd_global.user_id,-1); -- Stores the User Id
39 g_n_login_id igs_ps_unit_ver_all.last_update_login%TYPE := NVL(fnd_global.login_id,-1); -- Stores the Login Id
40
41
42 PROCEDURE create_usec_res_seat(
43 p_usec_res_seat_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_tbl_type,
44 p_c_rec_status OUT NOCOPY VARCHAR2,
45 p_calling_context IN VARCHAR2
46 ) AS
47 /***********************************************************************************************
48 Created By : Sommukhe
49 Date Created By: 17-Jun-2005
50 Purpose : This procedure is a sub process to insert records of Unit Section Reserve Seating.
51
52 Known limitations,enhancements,remarks:
53 Change History (in reverse chronological order)
54 Who When What
55 --sommukhe 12-AUG-2005 Bug#4377818,changed the cursor cur_hzp, included table igs_pe_hz_parties in
56 -- FROM clause and modified the WHERE clause by joining HZ_PARTIES and IGS_PE_HZ_PARTIES
57 -- using party_id and org unit being compared with oss_org_unit_cd of IGS_PE_HZ_PARTIES.
58 ********************************************************************************************** */
59 /* Private Procedures for create_usec_res_seat */
60
61 l_insert_update VARCHAR2(1);
62 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
63 l_n_rsv_usec_pri_id igs_ps_rsv_usec_pri.rsv_usec_pri_id%type;
64 l_n_group_id igs_pe_persid_group_all.group_id%TYPE;
65
66 l_tbl_uoo igs_ps_create_generic_pkg.uoo_tbl_type;
67
68 PROCEDURE trim_values ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type ) AS
69 BEGIN
70
71 p_usec_rsv_rec.unit_cd := trim(p_usec_rsv_rec.unit_cd);
72 p_usec_rsv_rec.version_number := trim(p_usec_rsv_rec.version_number);
73 p_usec_rsv_rec.teach_cal_alternate_code := trim(p_usec_rsv_rec.teach_cal_alternate_code);
74 p_usec_rsv_rec.location_cd := trim(p_usec_rsv_rec.location_cd);
75 p_usec_rsv_rec.unit_class := trim(p_usec_rsv_rec.unit_class);
76 p_usec_rsv_rec.priority_order := trim(p_usec_rsv_rec.priority_order);
77 p_usec_rsv_rec.priority_value := trim(p_usec_rsv_rec.priority_value);
78 p_usec_rsv_rec.preference_order := trim(p_usec_rsv_rec.preference_order);
79 p_usec_rsv_rec.preference_code := trim(p_usec_rsv_rec.preference_code);
80 p_usec_rsv_rec.preference_version := trim(p_usec_rsv_rec.preference_version);
81 p_usec_rsv_rec.percentage_reserved := trim(p_usec_rsv_rec.percentage_reserved);
82 END trim_values;
83
84
85 PROCEDURE create_rsvpri( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type ) AS
86
87 -- validate parameters passed reserved seating
88 PROCEDURE validate_parameters ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type ) AS
89 BEGIN
90
91 /* Check for Mandatory Parameters */
92 IF p_usec_rsv_rec.unit_cd IS NULL OR p_usec_rsv_rec.unit_cd = FND_API.G_MISS_CHAR THEN
93 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
94 p_usec_rsv_rec.status := 'E';
95 END IF;
96
97 IF p_usec_rsv_rec.version_number IS NULL OR p_usec_rsv_rec.version_number = FND_API.G_MISS_NUM THEN
98 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
99 p_usec_rsv_rec.status := 'E';
100 END IF;
101
102 IF p_usec_rsv_rec.teach_cal_alternate_code IS NULL OR p_usec_rsv_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
103 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
104 p_usec_rsv_rec.status := 'E';
105 END IF;
106
107 IF p_usec_rsv_rec.location_cd IS NULL OR p_usec_rsv_rec.location_cd = FND_API.G_MISS_CHAR THEN
108 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
109 p_usec_rsv_rec.status := 'E';
110 END IF;
111
112 IF p_usec_rsv_rec.unit_class IS NULL OR p_usec_rsv_rec.unit_class = FND_API.G_MISS_CHAR THEN
113 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
114 p_usec_rsv_rec.status := 'E';
115 END IF;
116
117 IF p_usec_rsv_rec.priority_value IS NULL OR p_usec_rsv_rec.priority_value = FND_API.G_MISS_CHAR THEN
118 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PRIORITY_VALUE', 'LEGACY_TOKENS', FALSE);
119 p_usec_rsv_rec.status := 'E';
120 END IF;
121
122 END validate_parameters ;
123
124
125 --validate derivations of priority
126 PROCEDURE validate_derivations_pri ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type,p_insert_update VARCHAR2 ) AS
127 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
128 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
129 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
130 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
131 l_c_message VARCHAR2(30);
132 BEGIN
133 -- Derive Calander Type and Sequence Number
134 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_rsv_rec.teach_cal_alternate_code,
135 p_cal_type => l_c_cal_type,
136 p_ci_sequence_number => l_n_seq_num,
137 p_start_dt => l_d_start_dt,
138 p_end_dt => l_d_end_dt,
139 p_return_status => l_c_message );
140 IF ( l_c_message <> 'SINGLE' ) THEN
141 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
142 p_usec_rsv_rec.status := 'E';
143 END IF;
144 -- Derive uoo_id
145 l_c_message := NULL;
146 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_rsv_rec.unit_cd,
147 p_ver_num => p_usec_rsv_rec.version_number,
148 p_cal_type => l_c_cal_type,
149 p_seq_num => l_n_seq_num,
150 p_loc_cd => p_usec_rsv_rec.location_cd,
151 p_unit_class => p_usec_rsv_rec.unit_class,
152 p_uoo_id => l_n_uoo_id,
153 p_message => l_c_message );
154 IF ( l_c_message IS NOT NULL ) THEN
155 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
156 p_usec_rsv_rec.status := 'E';
157 END IF;
158 END validate_derivations_pri;
159
160 -- Check for Update
161 FUNCTION check_insert_update ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type,p_n_rsv_usec_pri_id NUMBER) RETURN VARCHAR2 IS
162 CURSOR c_usec_rsv_pri(cp_n_uoo_id NUMBER,cp_priority_value VARCHAR2) IS
163 SELECT 'X'
164 FROM igs_ps_rsv_usec_pri
165 WHERE uoo_id = cp_n_uoo_id
166 AND priority_value = cp_priority_value;
167
168 c_usec_rsv_pri_rec c_usec_rsv_pri%ROWTYPE;
169 BEGIN
170 OPEN c_usec_rsv_pri(l_n_uoo_id,p_usec_rsv_rec.priority_value );
171 FETCH c_usec_rsv_pri INTO c_usec_rsv_pri_rec;
172 IF c_usec_rsv_pri%NOTFOUND THEN
173 CLOSE c_usec_rsv_pri;
174 RETURN 'I';
175 ELSE
176 CLOSE c_usec_rsv_pri;
177 RETURN 'U';
178 END IF;
179 END check_insert_update;
180
181 PROCEDURE Assign_default(p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type,p_insert_update VARCHAR2 ) AS
182
183 CURSOR c_usprv(cp_n_uoo_id NUMBER,cp_priority_value VARCHAR2) IS
184 SELECT priority_order
185 FROM igs_ps_rsv_usec_pri
186 WHERE uoo_id = cp_n_uoo_id
187 AND priority_value = cp_priority_value;
188
189 rec_usprv c_usprv%ROWTYPE;
190
191 BEGIN
192
193 IF p_insert_update = 'U' THEN
194 OPEN c_usprv( l_n_uoo_id,p_usec_rsv_rec.priority_value);
195 FETCH c_usprv INTO rec_usprv;
196 CLOSE c_usprv;
197
198 IF p_usec_rsv_rec.priority_order IS NULL THEN
199 p_usec_rsv_rec.priority_order:= rec_usprv.priority_order;
200 ELSIF p_usec_rsv_rec.priority_order = FND_API.G_MISS_NUM THEN
201 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PRIORITY_ORDER', 'LEGACY_TOKENS', FALSE);
202 p_usec_rsv_rec.status := 'E';
203 END IF;
204
205 END IF;
206
207 END Assign_default;
208
209 -- Validate Database Constraints for reserved seating priority.
210 PROCEDURE validate_db_cons_rsvpri ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type,p_insert_update VARCHAR2 ) AS
211 BEGIN
212 IF(p_insert_update = 'I') THEN
213 /* Unique Key Validation */
214 IF igs_ps_rsv_usec_pri_pkg.get_uk_for_validation (x_uoo_id => l_n_uoo_id,
215 x_priority_value =>p_usec_rsv_rec.priority_value ) THEN
216 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_RSV_PRI', 'LEGACY_TOKENS', FALSE);
217 p_usec_rsv_rec.status := 'W';
218 RETURN;
219 END IF;
220 END IF;
221 /* Validate FK Constraints */
222
223 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
224 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
225 p_usec_rsv_rec.status := 'E';
226 END IF;
227
228 IF NOT igs_lookups_view_pkg.get_pk_for_validation('RESERVE_SEAT_PRIORITY', p_usec_rsv_rec.priority_value) THEN
229 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'PRIORITY_VALUE', 'LEGACY_TOKENS', FALSE);
230 p_usec_rsv_rec.status := 'E';
231 END IF;
232 END validate_db_cons_rsvpri;
233
234 BEGIN
235
236 IF p_usec_rsv_rec.status = 'S' THEN
237 validate_parameters(p_usec_rsv_rec);
238
239 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
240 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.status_after_validate_parameters',
241 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
242 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
243 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||'Status:'
244 ||p_usec_rsv_rec.status);
245 END IF;
246
247 END IF;
248
249 IF p_usec_rsv_rec.status = 'S' THEN
250 validate_derivations_pri(p_usec_rsv_rec,l_insert_update);
251
252 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
253 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.status_after_validate_derivations_pri',
254 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
255 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
256 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||'Status:'
257 ||p_usec_rsv_rec.status);
258 END IF;
259
260 END IF;
261
262
263 --Find out whether it is insert/update of record
264 l_insert_update:='I';
265 IF p_usec_rsv_rec.status = 'S' AND p_calling_context IN ('G','S') THEN
266 l_insert_update:= check_insert_update(p_usec_rsv_rec,l_n_rsv_usec_pri_id);
267
268 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
269 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.status_after_check_insert_update',
270 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
271 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
272 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||'Status:'
273 ||p_usec_rsv_rec.status);
274 END IF;
275
276 END IF;
277
278
279 IF p_usec_rsv_rec.status = 'S' AND p_calling_context = 'S' THEN
280 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
281 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
282 fnd_msg_pub.add;
283 p_usec_rsv_rec.status := 'A';
284 END IF;
285
286 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
287 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.status_after_check_import_allowed',
288 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
289 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
290 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||'Status:'
291 ||p_usec_rsv_rec.status);
292 END IF;
293
294 END IF;
295
296 IF p_usec_rsv_rec.status = 'S' THEN
297 Assign_default(p_usec_rsv_rec,l_insert_update);
298
299 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
300 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.status_after_Assign_default',
301 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
302 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
303 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||'Status:'
304 ||p_usec_rsv_rec.status);
305 END IF;
306
307 END IF;
308
309
310
311 IF l_tbl_uoo.count = 0 THEN
312 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
313 ELSE
314 IF NOT igs_ps_validate_lgcy_pkg.isExists(l_n_uoo_id,l_tbl_uoo) THEN
315 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
316 END IF;
317 END IF;
318
319 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
320 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.Count_unique_uoo_ids',
321 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
322 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
323 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||'Count:'||l_tbl_uoo.count);
324 END IF;
325
326 IF p_usec_rsv_rec.status = 'S' THEN
327 validate_db_cons_rsvpri(p_usec_rsv_rec,l_insert_update);
328
329 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
330 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.status_after_validate_db_cons_rsvpri',
331 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
332 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
333 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||'Status:'
334 ||p_usec_rsv_rec.status);
335 END IF;
336
337 END IF;
338
339
340 IF p_usec_rsv_rec.status = 'S' THEN
341 igs_ps_validate_generic_pkg.validate_usec_rsvpri (p_usec_rsv_rec,l_n_uoo_id,l_insert_update);
342
343 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
344 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.status_after_Business_validation',
345 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
346 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
347 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||'Status:'
348 ||p_usec_rsv_rec.status);
349 END IF;
350
351 END IF;
352
353
354 IF p_usec_rsv_rec.status = 'S' THEN
355 IF l_insert_update = 'I' THEN
356 /* Insert Record */
357 INSERT INTO igs_ps_rsv_usec_pri
358 (
359 rsv_usec_pri_id,
360 uoo_id,
361 priority_order,
362 priority_value,
363 created_by,
364 creation_date,
365 last_updated_by,
366 last_update_date,
367 last_update_login
368 )
369 VALUES
370 (
371 igs_ps_rsv_usec_pri_s.nextval,
372 l_n_uoo_id,
373 p_usec_rsv_rec.priority_order,
374 p_usec_rsv_rec.priority_value,
375 g_n_user_id,
376 sysdate,
377 g_n_user_id,
378 sysdate,
379 g_n_login_id
380 );
381
382 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
383 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.Record_Inserted',
384 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
385 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
386 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value);
387 END IF;
388
389 ELSE --update
390 UPDATE igs_ps_rsv_usec_pri SET
391 priority_order= p_usec_rsv_rec.priority_order,
392 last_updated_by = g_n_user_id,
393 last_update_date= SYSDATE ,
394 last_update_login= g_n_login_id
395 WHERE uoo_id =l_n_uoo_id AND priority_value = p_usec_rsv_rec.priority_value;
396
397 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
398 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.Record_Updated',
399 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
400 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
401 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value);
402 END IF;
403
404
405 END IF;
406 END IF;
407
408 END create_rsvpri;
409
410 PROCEDURE create_rsvprf( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type ) AS
411
412 PROCEDURE validate_parameters_prf ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type ) AS
413 BEGIN
414
415 /* Check for Mandatory Parameters */
416 IF p_usec_rsv_rec.preference_order IS NULL OR p_usec_rsv_rec.preference_order = FND_API.G_MISS_NUM THEN
417 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PREFERENCE_ORDER', 'LEGACY_TOKENS', FALSE);
418 p_usec_rsv_rec.status := 'E';
419 END IF;
420
421 IF p_usec_rsv_rec.preference_code IS NULL OR p_usec_rsv_rec.preference_code = FND_API.G_MISS_CHAR THEN
422 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PREFERENCE_CODE', 'LEGACY_TOKENS', FALSE);
423 p_usec_rsv_rec.status := 'E';
424 END IF;
425
426 IF p_usec_rsv_rec.percentage_reserved IS NULL OR p_usec_rsv_rec.percentage_reserved = FND_API.G_MISS_NUM THEN
427 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PERCENTAGE_RESERVED', 'LEGACY_TOKENS', FALSE);
428 p_usec_rsv_rec.status := 'E';
429 END IF;
430
431 IF p_usec_rsv_rec.priority_value IS NOT NULL AND p_usec_rsv_rec.priority_value IN ('PROGRAM','UNIT_SET') THEN
432 IF p_usec_rsv_rec.preference_version IS NULL OR p_usec_rsv_rec.preference_version = FND_API.G_MISS_NUM THEN
433 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PREFERENCE_VERSION', 'LEGACY_TOKENS', FALSE);
434 p_usec_rsv_rec.status := 'E';
435 END IF;
436 ELSIF p_usec_rsv_rec.priority_value IS NOT NULL AND p_usec_rsv_rec.priority_value NOT IN ('PROGRAM','UNIT_SET') THEN
437 IF p_usec_rsv_rec.preference_version IS NOT NULL THEN
438 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'PREFERENCE_VERSION', 'LEGACY_TOKENS', FALSE);
439 p_usec_rsv_rec.status := 'E';
440 END IF;
441 END IF;
442
443 END validate_parameters_prf ;
444
445 -- Carry out derivations and validate them
446 PROCEDURE validate_derivations_prf ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type,p_insert_update VARCHAR2 ) AS
447 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
448 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
449 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
450 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
451 l_c_message VARCHAR2(30);
452
453 CURSOR c_pri_id(cp_uoo_id NUMBER, cp_priority_value igs_ps_rsv_usec_pri.priority_value%type) IS
454 SELECT rsv_usec_pri_id
455 FROM igs_ps_rsv_usec_pri
456 WHERE uoo_id = cp_uoo_id
457 AND priority_value = cp_priority_value;
458
459 BEGIN
460
461 OPEN c_pri_id(l_n_uoo_id,p_usec_rsv_rec.priority_value);
462 FETCH c_pri_id INTO l_n_rsv_usec_pri_id;
463 CLOSE c_pri_id;
464
465 END validate_derivations_prf;
466
467
468 FUNCTION check_insert_update ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type,p_n_rsv_usec_pri_id NUMBER) RETURN VARCHAR2 IS
469 CURSOR c_usec_rsv_prf(p_rsv_usec_pri_id NUMBER,p_preference_code VARCHAR2) IS
470 SELECT 'X'
471 FROM igs_ps_rsv_usec_prf
472 WHERE rsv_usec_pri_id = p_rsv_usec_pri_id
473 AND preference_code = p_preference_code;
474
475 c_usec_rsv_prf_rec c_usec_rsv_prf%ROWTYPE;
476
477 CURSOR c_usec_rsv_prf1(cp_rsv_usec_pri_id NUMBER,cp_preference_code VARCHAR2,cp_preference_version NUMBER) IS
478 SELECT 'X'
479 FROM igs_ps_rsv_usec_prf
480 WHERE rsv_usec_pri_id = cp_rsv_usec_pri_id
481 AND preference_code = cp_preference_code
482 AND preference_version = cp_preference_version;
483
484 c_usec_rsv_prf1_rec c_usec_rsv_prf1%ROWTYPE;
485 BEGIN
486 IF p_usec_rsv_rec.priority_value IN ('PROGRAM', 'UNIT_SET') THEN
487 OPEN c_usec_rsv_prf1(l_n_rsv_usec_pri_id,p_usec_rsv_rec.preference_code,p_usec_rsv_rec.preference_version );
488 FETCH c_usec_rsv_prf1 INTO c_usec_rsv_prf1_rec;
489 IF c_usec_rsv_prf1%NOTFOUND THEN
490 CLOSE c_usec_rsv_prf1;
491 RETURN 'I';
492 ELSE
493 CLOSE c_usec_rsv_prf1;
494 RETURN 'U';
495 END IF;
496 ELSE
497 OPEN c_usec_rsv_prf(l_n_rsv_usec_pri_id,p_usec_rsv_rec.preference_code );
498 FETCH c_usec_rsv_prf INTO c_usec_rsv_prf_rec;
499 IF c_usec_rsv_prf%NOTFOUND THEN
500 CLOSE c_usec_rsv_prf;
501 RETURN 'I';
502 ELSE
503 CLOSE c_usec_rsv_prf;
504 RETURN 'U';
505 END IF;
506 END IF;
507 END check_insert_update;
508
509 -- Validate Database Constraints for reserved seating preference.
510 PROCEDURE validate_db_cons_rsvprf ( p_usec_rsv_rec IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_rec_type,p_insert_update VARCHAR2 ) AS
511 CURSOR cur_hzp(cp_preference_code VARCHAR2) IS
512 SELECT 'x'
513 FROM hz_parties hp, igs_pe_hz_parties pe
514 WHERE hp.party_id = pe.party_id
515 AND pe.oss_org_unit_cd =cp_preference_code;
516
517 cur_Hzp_rec cur_Hzp%ROWTYPE;
518
519 CURSOR c_group(cp_preference_code VARCHAR2) IS
520 SELECT group_id
521 FROM igs_pe_persid_group_all
522 WHERE group_cd = cp_preference_code;
523
524 BEGIN
525
526 IF(p_insert_update = 'I') THEN
527 /* Unique Key Validation */
528 IF igs_ps_rsv_usec_prf_pkg.get_uk_for_validation(x_rsv_usec_pri_id => l_n_rsv_usec_pri_id ,
529 x_preference_code =>p_usec_rsv_rec.preference_code ) THEN
530 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_RSV_PRF', 'LEGACY_TOKENS', FALSE);
531 p_usec_rsv_rec.status := 'W';
532
533 RETURN;
534 END IF;
535 END IF;
536
537 /* check constraint */
538 IF p_usec_rsv_rec.percentage_reserved < 0 OR p_usec_rsv_rec.percentage_reserved > 100 THEN
539 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PER_0_100', null, null, FALSE);
540 p_usec_rsv_rec.status := 'E';
541 END IF;
542
543 /* Validate FK Constraints */
544 IF (p_usec_rsv_rec.priority_value = 'PROGRAM') THEN
545 IF NOT igs_ps_ver_pkg.get_pk_for_validation (p_usec_rsv_rec.preference_code,p_usec_rsv_rec.preference_version ) THEN
546 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_RSV_PRF', 'LEGACY_TOKENS', FALSE);
547 p_usec_rsv_rec.status := 'E';
548 END IF;
549 END IF;
550
551 IF (p_usec_rsv_rec.priority_value = 'PERSON_GRP') THEN
552 IF NOT igs_pe_persid_group_pkg.get_uk_for_validation (p_usec_rsv_rec.preference_code ) THEN
553 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_RSV_PRF', 'LEGACY_TOKENS', FALSE);
554 p_usec_rsv_rec.status := 'E';
555 END IF;
556 OPEN c_group(p_usec_rsv_rec.preference_code);
557 FETCH c_group INTO l_n_group_id;
558 CLOSE c_group;
559 END IF;
560
561 IF (p_usec_rsv_rec.priority_value = 'UNIT_SET') THEN
562 IF NOT igs_en_unit_set_pkg.get_pk_for_validation (p_usec_rsv_rec.preference_code,p_usec_rsv_rec.preference_version) THEN
563 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_RSV_PRF', 'LEGACY_TOKENS', FALSE);
564 p_usec_rsv_rec.status := 'E';
565 END IF;
566 END IF;
567
568 IF (p_usec_rsv_rec.priority_value = 'PROGRAM_STAGE') THEN
569 IF NOT igs_ps_stage_type_pkg.get_pk_for_validation (p_usec_rsv_rec.preference_code ) THEN
570 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_RSV_PRF', 'LEGACY_TOKENS', FALSE);
571 p_usec_rsv_rec.status := 'E';
572 END IF;
573 END IF;
574
575 IF (p_usec_rsv_rec.priority_value = 'CLASS_STD' ) THEN
576 IF NOT igs_pr_class_std_pkg.get_uk_for_validation (p_usec_rsv_rec.preference_code ) THEN
577 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_RSV_PRF', 'LEGACY_TOKENS', FALSE);
578 p_usec_rsv_rec.status := 'E';
579 END IF;
580 END IF;
581
582 IF (p_usec_rsv_rec.priority_value = 'ORG_UNIT') THEN
583 OPEN cur_hzp(p_usec_rsv_rec.preference_code );
584 FETCH cur_hzp INTO cur_hzp_rec;
585 IF cur_hzp%NOTFOUND THEN
586 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_RSV_PRF', 'LEGACY_TOKENS', FALSE);
587 p_usec_rsv_rec.status := 'E';
588 END IF;
589 CLOSE cur_hzp;
590 END IF;
591 END validate_db_cons_rsvprf;
592
593 BEGIN
594
595 IF p_usec_rsv_rec.status = 'S' THEN
596 validate_parameters_prf(p_usec_rsv_rec);
597
598 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
599 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.status_after_validate_parameters_prf',
600 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
601 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
602 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||
603 'Preference Code:'||p_usec_rsv_rec.preference_code||' '||'Status:'||p_usec_rsv_rec.status);
604 END IF;
605
606 END IF;
607
608 IF p_usec_rsv_rec.status = 'S' THEN
609 validate_derivations_prf(p_usec_rsv_rec,l_insert_update);
610
611 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
612 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.status_after_validate_derivations_prf',
613 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
614 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
615 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||
616 'Preference Code:'||p_usec_rsv_rec.preference_code||' '||'Status:'||p_usec_rsv_rec.status);
617 END IF;
618
619 END IF;
620
621
622 --Find out whether it is insert/update of record
623 l_insert_update:='I';
624 IF p_usec_rsv_rec.status = 'S' AND p_calling_context IN ('G', 'S') THEN
625 l_insert_update:= check_insert_update(p_usec_rsv_rec,l_n_rsv_usec_pri_id);
626
627 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
628 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.status_after_check_insert_update',
629 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
630 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
631 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||
632 'Preference Code:'||p_usec_rsv_rec.preference_code||' '||'Status:'||p_usec_rsv_rec.status);
633 END IF;
634
635 END IF;
636
637
638 IF p_usec_rsv_rec.status = 'S' THEN
639 validate_db_cons_rsvprf(p_usec_rsv_rec,l_insert_update);
640
641 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
642 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.status_after_validate_db_cons_rsvprf',
643 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
644 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
645 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||
646 'Preference Code:'||p_usec_rsv_rec.preference_code||' '||'Status:'||p_usec_rsv_rec.status);
647 END IF;
648
649 END IF;
650
651
652 IF p_usec_rsv_rec.status = 'S' THEN
653 igs_ps_validate_generic_pkg.validate_usec_rsvprf (p_usec_rsv_rec,l_insert_update);
654
655 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
656 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.status_after_Business_validation',
657 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
658 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
659 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||
660 'Preference Code:'||p_usec_rsv_rec.preference_code||' '||'Status:'||p_usec_rsv_rec.status);
661 END IF;
662
663 END IF;
664
665
666 IF p_usec_rsv_rec.status = 'S' THEN
667 IF l_insert_update = 'I' THEN
668 /* Insert Record */
669 INSERT INTO igs_ps_rsv_usec_prf (
670 rsv_usec_prf_id,
671 rsv_usec_pri_id,
672 preference_order,
673 preference_code,
674 preference_version,
675 percentage_reserved,
676 group_id,
677 created_by,
678 creation_date,
679 last_updated_by,
680 last_update_date,
681 last_update_login )
682 VALUES (
683 igs_ps_rsv_usec_prf_s.NEXTVAL,
684 l_n_rsv_usec_pri_id,
685 p_usec_rsv_rec.preference_order,
686 p_usec_rsv_rec.preference_code,
687 p_usec_rsv_rec.preference_version,
688 p_usec_rsv_rec.percentage_reserved,
689 l_n_group_id,
690 g_n_user_id,
691 sysdate,
692 g_n_user_id,
693 sysdate,
694 g_n_login_id );
695
696 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
697 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.status_after_Record_Inserted',
698 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
699 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
700 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||
701 'Preference Code:'||p_usec_rsv_rec.preference_code);
702 END IF;
703
704
705 ELSE --update
706 UPDATE igs_ps_rsv_usec_prf SET
707 preference_order= p_usec_rsv_rec.preference_order,
708 percentage_reserved=p_usec_rsv_rec.percentage_reserved,
709 preference_version=p_usec_rsv_rec.preference_version,
710 last_updated_by = g_n_user_id,
711 last_update_date= SYSDATE ,
712 last_update_login= g_n_login_id
713 WHERE rsv_usec_pri_id =l_n_rsv_usec_pri_id AND preference_code = p_usec_rsv_rec.preference_code;
714
715 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
716 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.status_after_Record_Updated',
717 'Unit code:'||p_usec_rsv_rec.unit_cd||' '||'Version number:'||p_usec_rsv_rec.version_number||' '||'teach_cal_alternate_code:'
718 ||p_usec_rsv_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rsv_rec.location_cd||' '||'Unit Class:'||
719 p_usec_rsv_rec.unit_class||' '||'Priority Value:'||p_usec_rsv_rec.priority_value||' '||
720 'Preference Code:'||p_usec_rsv_rec.preference_code);
721 END IF;
722
723 END IF;
724 END IF;
725
726 END create_rsvprf;
727
728 /* Main Unit Section reserved seating Sub Process */
729 BEGIN
730
731 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
732 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.start_logging_for','Unit Section reserved Seating');
733 END IF;
734
735 p_c_rec_status := 'S';
736 FOR I in 1..p_usec_res_seat_tbl.LAST LOOP
737 l_n_uoo_id:= NULL;
738 l_n_rsv_usec_pri_id:=NULL;
739 l_n_group_id := NULL;
740 IF p_usec_res_seat_tbl.EXISTS(I) THEN
741 p_usec_res_seat_tbl(I).status := 'S';
742 p_usec_res_seat_tbl(I).msg_from := fnd_msg_pub.count_msg;
743 trim_values(p_usec_res_seat_tbl(I));
744
745
746 --create reserved seating priority
747 IF p_usec_res_seat_tbl(I).status = 'S' THEN
748
749 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
750 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.call',
751 'Unit code:'||p_usec_res_seat_tbl(I).unit_cd||' '||'Version number:'||p_usec_res_seat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
752 ||p_usec_res_seat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_res_seat_tbl(I).location_cd||' '||'Unit Class:'||
753 p_usec_res_seat_tbl(I).unit_class||' '||'Priority Value:'||p_usec_res_seat_tbl(I).priority_value);
754 END IF;
755
756 create_rsvpri(p_usec_res_seat_tbl(I));
757
758 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
759 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvpri.status_after_creating_priority_record',
760 'Unit code:'||p_usec_res_seat_tbl(I).unit_cd||' '||'Version number:'||p_usec_res_seat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
761 ||p_usec_res_seat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_res_seat_tbl(I).location_cd||' '||'Unit Class:'||
762 p_usec_res_seat_tbl(I).unit_class||' '||'Priority Value:'||p_usec_res_seat_tbl(I).priority_value||' '||'Status:'
763 ||p_usec_res_seat_tbl(I).status);
764 END IF;
765
766 END IF;
767
768 -- Create reserved seating preference
769 IF p_usec_res_seat_tbl(I).status = 'S' THEN
770 IF p_usec_res_seat_tbl(I).preference_code IS NOT NULL THEN
771
772 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
773 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.call',
774 'Unit code:'||p_usec_res_seat_tbl(I).unit_cd||' '||'Version number:'||p_usec_res_seat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
775 ||p_usec_res_seat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_res_seat_tbl(I).location_cd||' '||'Unit Class:'||
776 p_usec_res_seat_tbl(I).unit_class||' '||'Priority Value:'||p_usec_res_seat_tbl(I).priority_value||' '||
777 'Preference Code:'||p_usec_res_seat_tbl(I).preference_code);
778 END IF;
779
780 create_rsvprf(p_usec_res_seat_tbl(I));
781
782 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
783 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.create_rsvprf.status_after_creating_prefenrence_record',
784 'Unit code:'||p_usec_res_seat_tbl(I).unit_cd||' '||'Version number:'||p_usec_res_seat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
785 ||p_usec_res_seat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_res_seat_tbl(I).location_cd||' '||'Unit Class:'||
786 p_usec_res_seat_tbl(I).unit_class||' '||'Priority Value:'||p_usec_res_seat_tbl(I).priority_value||' '||
787 'Preference Code:'||p_usec_res_seat_tbl(I).preference_code||' '||'Status:'||p_usec_res_seat_tbl(I).status);
788 END IF;
789
790 END IF;
791 END IF;
792
793 IF p_usec_res_seat_tbl(I).status = 'S' THEN
794 p_usec_res_seat_tbl(I).msg_from := NULL;
795 p_usec_res_seat_tbl(I).msg_to := NULL;
796 ELSIF p_usec_res_seat_tbl(I).status = 'A' THEN
797 p_usec_res_seat_tbl(I).msg_from := p_usec_res_seat_tbl(I).msg_from + 1;
798 p_usec_res_seat_tbl(I).msg_to := fnd_msg_pub.count_msg;
799 ELSE
800 p_c_rec_status := p_usec_res_seat_tbl(I).status;
801 p_usec_res_seat_tbl(I).msg_from := p_usec_res_seat_tbl(I).msg_from + 1;
802 p_usec_res_seat_tbl(I).msg_to := fnd_msg_pub.count_msg;
803 IF p_c_rec_status = 'E' THEN
804 RETURN;
805 END IF;
806 END IF;
807 END IF;--exists
808 END LOOP;
809
810 /* Post Insert/Update Checks */
811 IF NOT igs_ps_validate_generic_pkg.post_usec_rsv(p_usec_res_seat_tbl,l_tbl_uoo) THEN
812 p_c_rec_status := 'E';
813 END IF;
814
815 l_tbl_uoo.DELETE;
816
817 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
818 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_res_seat.after_import_status',p_c_rec_status);
819 END IF;
820
821 END create_usec_res_seat;
822
823 PROCEDURE create_uso_facility (p_usec_occurs_facility_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_occurs_facility_tbl_type,
824 p_c_rec_status OUT NOCOPY VARCHAR2,
825 p_calling_context IN VARCHAR2
826 ) AS
827
828 /***********************************************************************************************
829 Created By : sommukhe
830 Date Created By: 17-MAR-2005
831 Purpose : This procedure is a sub process to insert records of Unit Section Occurrence Facility.
832
833 Known limitations,enhancements,remarks:
834 Change History (in reverse chronological order)
835 Who When What
836
837 ********************************************************************************************** */
838 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
839 l_n_uso_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE;
840
841 /* Private Procedures for create_uso_facility */
842 PROCEDURE trim_values ( p_uso_fclt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_occurs_facility_rec_type ) AS
843 BEGIN
844
845 p_uso_fclt_rec.unit_cd := TRIM(p_uso_fclt_rec.unit_cd);
846 p_uso_fclt_rec.version_number := TRIM(p_uso_fclt_rec.version_number);
847 p_uso_fclt_rec.teach_cal_alternate_code := TRIM(p_uso_fclt_rec.teach_cal_alternate_code);
848 p_uso_fclt_rec.location_cd := TRIM(p_uso_fclt_rec.location_cd);
849 p_uso_fclt_rec.unit_class := TRIM(p_uso_fclt_rec.unit_class);
850 p_uso_fclt_rec.production_uso_id := TRIM(p_uso_fclt_rec.production_uso_id);
851 p_uso_fclt_rec.occurrence_identifier := TRIM(p_uso_fclt_rec.occurrence_identifier);
852 p_uso_fclt_rec.facility_code := TRIM(p_uso_fclt_rec.facility_code);
853 END trim_values;
854
855 -- validate parameters passed.
856 PROCEDURE validate_parameters (p_uso_fclt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_occurs_facility_rec_type ) AS
857 BEGIN
858 /* Check for Mandatory Parameters */
859 IF p_uso_fclt_rec.unit_cd IS NULL OR p_uso_fclt_rec.unit_cd = FND_API.G_MISS_CHAR THEN
860 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
861 p_uso_fclt_rec.status := 'E';
862 END IF;
863 IF p_uso_fclt_rec.version_number IS NULL OR p_uso_fclt_rec.version_number = FND_API.G_MISS_NUM THEN
864 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
865 p_uso_fclt_rec.status := 'E';
866 END IF;
867 IF p_uso_fclt_rec.teach_cal_alternate_code IS NULL OR p_uso_fclt_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
868 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
869 p_uso_fclt_rec.status := 'E';
870 END IF;
871 IF p_uso_fclt_rec.location_cd IS NULL OR p_uso_fclt_rec.location_cd = FND_API.G_MISS_CHAR THEN
872 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
873 p_uso_fclt_rec.status := 'E';
874 END IF;
875 IF p_uso_fclt_rec.unit_class IS NULL OR p_uso_fclt_rec.unit_class = FND_API.G_MISS_CHAR THEN
876 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
877 p_uso_fclt_rec.status := 'E';
878 END IF;
879 IF (p_uso_fclt_rec.production_uso_id IS NULL OR p_uso_fclt_rec.production_uso_id = FND_API.G_MISS_NUM) AND (p_uso_fclt_rec.occurrence_identifier IS NULL OR p_uso_fclt_rec.occurrence_identifier = FND_API.G_MISS_CHAR) THEN
880 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'USEC_OCCRS_ID', 'IGS_PS_LOG_PARAMETERS', FALSE);
881 p_uso_fclt_rec.status := 'E';
882 END IF;
883 IF p_uso_fclt_rec.facility_code IS NULL OR p_uso_fclt_rec.facility_code = FND_API.G_MISS_CHAR THEN
884 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'FACILITY_CODE', 'LEGACY_TOKENS', FALSE);
885 p_uso_fclt_rec.status := 'E';
886 END IF;
887
888 END validate_parameters;
889
890 PROCEDURE validate_derivations ( p_uso_fclt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_occurs_facility_rec_type ) AS
891 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
892 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
893 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
894 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
895 l_c_message VARCHAR2(30);
896
897 CURSOR c_uso_id (cp_occurrence_identifier igs_ps_usec_occurs_all.occurrence_identifier%TYPE,cp_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE) IS
898 SELECT unit_section_occurrence_id
899 FROM igs_ps_usec_occurs_all
900 WHERE uoo_id = cp_n_uoo_id
901 AND occurrence_identifier = cp_occurrence_identifier;
902
903
904 BEGIN
905
906
907 -- Derive Calander Type and Sequence Number
908 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_uso_fclt_rec.teach_cal_alternate_code,
909 p_cal_type => l_c_cal_type,
910 p_ci_sequence_number => l_n_seq_num,
911 p_start_dt => l_d_start_dt,
912 p_end_dt => l_d_end_dt,
913 p_return_status => l_c_message );
914 IF ( l_c_message <> 'SINGLE' ) THEN
915 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
916 p_uso_fclt_rec.status := 'E';
917 END IF;
918
919
920 -- Derive uoo_id
921 l_c_message := NULL;
922 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_uso_fclt_rec.unit_cd,
923 p_ver_num => p_uso_fclt_rec.version_number,
924 p_cal_type => l_c_cal_type,
925 p_seq_num => l_n_seq_num,
926 p_loc_cd => p_uso_fclt_rec.location_cd,
927 p_unit_class => p_uso_fclt_rec.unit_class,
928 p_uoo_id => l_n_uoo_id,
929 p_message => l_c_message );
930 IF ( l_c_message IS NOT NULL ) THEN
931 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
932 p_uso_fclt_rec.status := 'E';
933 END IF;
934
935 IF p_uso_fclt_rec.production_uso_id IS NOT NULL THEN
936 l_n_uso_id := p_uso_fclt_rec.production_uso_id;
937 ELSE
938 OPEN c_uso_id(p_uso_fclt_rec.occurrence_identifier,l_n_uoo_id);
939 FETCH c_uso_id INTO l_n_uso_id;
940 IF c_uso_id%NOTFOUND THEN
941 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'USEC_OCCRS_ID', 'IGS_PS_LOG_PARAMETERS', FALSE);
942 p_uso_fclt_rec.status := 'E';
943 END IF;
944 CLOSE c_uso_id;
945 END IF;
946
947 END validate_derivations;
948
949 -- Validate Database Constraints
950 PROCEDURE validate_db_cons ( p_uso_fclt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_occurs_facility_rec_type ) AS
951 BEGIN
952
953 /* Validate UK Constraints */
954 IF igs_ps_uso_facility_pkg.get_uk_for_validation (
955 x_unit_section_occurrence_id => l_n_uso_id,
956 x_facility_code => p_uso_fclt_rec.facility_code
957 ) THEN
958 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'FACILITY', 'LEGACY_TOKENS', FALSE);
959 p_uso_fclt_rec.status := 'W';
960 RETURN;
961 END IF;
962
963 /* Validate FK Constraints */
964 IF NOT igs_ps_media_equip_pkg.get_pk_for_validation (p_uso_fclt_rec.facility_code) THEN
965 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'FACILITY_CODE', 'LEGACY_TOKENS', FALSE);
966 p_uso_fclt_rec.status := 'E';
967 END IF;
968
969 IF NOT igs_ps_usec_occurs_pkg.get_pk_for_validation (l_n_uso_id) THEN
970 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_OCCUR', 'LEGACY_TOKENS', FALSE);
971 p_uso_fclt_rec.status := 'E';
972 END IF;
973
974 END validate_db_cons;
975
976 /* Main facilities Sub Process */
977 BEGIN
978
979 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
980 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_facility.start_logging_for','Unit Section Occurence facility');
981 END IF;
982
983 p_c_rec_status := 'S';
984 FOR I in 1..p_usec_occurs_facility_tbl.LAST LOOP
985 IF ( p_usec_occurs_facility_tbl.EXISTS(I) ) THEN
986 l_n_uoo_id := NULL;
987 l_n_uso_id := NULL;
988 p_usec_occurs_facility_tbl(I).status := 'S';
989 p_usec_occurs_facility_tbl(I).msg_from := fnd_msg_pub.count_msg;
990 trim_values(p_usec_occurs_facility_tbl(I) );
991 validate_parameters ( p_usec_occurs_facility_tbl(I) );
992
993 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
994 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_facility.status_after_validate_parameters',
995 'Unit code:'||p_usec_occurs_facility_tbl(I).unit_cd||' '||'Version number:'||p_usec_occurs_facility_tbl(I).version_number||' '||'teach_cal_alternate_code:'
996 ||p_usec_occurs_facility_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_occurs_facility_tbl(I).location_cd||' '||'Unit Class:'||
997 p_usec_occurs_facility_tbl(I).unit_class||' '||'Facility Code:'||p_usec_occurs_facility_tbl(I).facility_code||' '||'Status:'||p_usec_occurs_facility_tbl(I).status);
998 END IF;
999
1000
1001 IF p_usec_occurs_facility_tbl(I).status = 'S' THEN
1002 validate_derivations ( p_usec_occurs_facility_tbl(I));
1003
1004 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1005 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_facility.status_after_validate_derivations',
1006 'Unit code:'||p_usec_occurs_facility_tbl(I).unit_cd||' '||'Version number:'||p_usec_occurs_facility_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1007 ||p_usec_occurs_facility_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_occurs_facility_tbl(I).location_cd||' '||'Unit Class:'||
1008 p_usec_occurs_facility_tbl(I).unit_class||' '||'Facility Code:'||p_usec_occurs_facility_tbl(I).facility_code||'Unit Section Occurrence id:'||
1009 l_n_uso_id||' '||'Status:'||p_usec_occurs_facility_tbl(I).status);
1010 END IF;
1011
1012 END IF;
1013
1014 -- Find out whether record can go for import in context of cancelled/aborted
1015 IF p_usec_occurs_facility_tbl(I).status = 'S' AND p_calling_context ='S' THEN
1016 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,l_n_uso_id) = FALSE THEN
1017 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
1018 fnd_msg_pub.add;
1019 p_usec_occurs_facility_tbl(I).status := 'A';
1020 END IF;
1021
1022 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1023 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_facility.status_after_check_import_allowed',
1024 'Unit code:'||p_usec_occurs_facility_tbl(I).unit_cd||' '||'Version number:'||p_usec_occurs_facility_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1025 ||p_usec_occurs_facility_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_occurs_facility_tbl(I).location_cd||' '||'Unit Class:'||
1026 p_usec_occurs_facility_tbl(I).unit_class||' '||'Facility Code:'||p_usec_occurs_facility_tbl(I).facility_code||'Unit Section Occurrence id:'
1027 ||l_n_uso_id||' '||'Status:'||p_usec_occurs_facility_tbl(I).status);
1028 END IF;
1029
1030 END IF;
1031
1032 IF p_usec_occurs_facility_tbl(I).status = 'S' THEN
1033 validate_db_cons ( p_usec_occurs_facility_tbl(I) );
1034
1035 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1036 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_facility.status_after_validate_db_cons',
1037 'Unit code:'||p_usec_occurs_facility_tbl(I).unit_cd||' '||'Version number:'||p_usec_occurs_facility_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1038 ||p_usec_occurs_facility_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_occurs_facility_tbl(I).location_cd||' '||'Unit Class:'||
1039 p_usec_occurs_facility_tbl(I).unit_class||' '||'Facility Code:'||p_usec_occurs_facility_tbl(I).facility_code||'Unit Section Occurrence id:'
1040 ||l_n_uso_id||' '||'Status:'||p_usec_occurs_facility_tbl(I).status);
1041 END IF;
1042
1043 END IF;
1044
1045 /* Business Validations */
1046 /* Proceed with business validations only if the status is Success, 'S' */
1047 IF p_usec_occurs_facility_tbl(I).status = 'S' THEN
1048 igs_ps_validate_generic_pkg.validate_facility ( p_usec_occurs_facility_tbl(I),l_n_uoo_id,l_n_uso_id,p_calling_context) ;
1049
1050 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1051 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_facility.status_after_Business_validations',
1052 'Unit code:'||p_usec_occurs_facility_tbl(I).unit_cd||' '||'Version number:'||p_usec_occurs_facility_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1053 ||p_usec_occurs_facility_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_occurs_facility_tbl(I).location_cd||' '||'Unit Class:'||
1054 p_usec_occurs_facility_tbl(I).unit_class||' '||'Facility Code:'||p_usec_occurs_facility_tbl(I).facility_code||'Unit Section Occurrence id:'
1055 ||l_n_uso_id||' '||'Status:'||p_usec_occurs_facility_tbl(I).status);
1056 END IF;
1057
1058 END IF;
1059
1060 IF p_usec_occurs_facility_tbl(I).status = 'S' THEN
1061 /* Insert record */
1062 INSERT INTO igs_ps_uso_facility
1063 (uso_facility_id,
1064 unit_section_occurrence_id,
1065 facility_code,
1066 created_by,
1067 creation_date,
1068 last_updated_by,
1069 last_update_date,
1070 last_update_login
1071 )
1072 VALUES
1073 (IGS_PS_USO_FACILITY_S.nextval,
1074 l_n_uso_id,
1075 p_usec_occurs_facility_tbl(I).facility_code,
1076 g_n_user_id,
1077 SYSDATE,
1078 g_n_user_id,
1079 SYSDATE,
1080 g_n_login_id
1081 );
1082
1083 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1084 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_facility.Record_Inserted',
1085 'Unit code:'||p_usec_occurs_facility_tbl(I).unit_cd||' '||'Version number:'||p_usec_occurs_facility_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1086 ||p_usec_occurs_facility_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_occurs_facility_tbl(I).location_cd||' '||'Unit Class:'||
1087 p_usec_occurs_facility_tbl(I).unit_class||' '||'Facility Code:'||p_usec_occurs_facility_tbl(I).facility_code||'Unit Section Occurrence id:'
1088 ||l_n_uso_id);
1089 END IF;
1090
1091 END IF;--insert
1092
1093 IF p_usec_occurs_facility_tbl(I).status = 'S' THEN
1094 p_usec_occurs_facility_tbl(I).msg_from := NULL;
1095 p_usec_occurs_facility_tbl(I).msg_to := NULL;
1096 ELSIF p_usec_occurs_facility_tbl(I).status = 'A' THEN
1097 p_usec_occurs_facility_tbl(I).msg_from := p_usec_occurs_facility_tbl(I).msg_from + 1;
1098 p_usec_occurs_facility_tbl(I).msg_to := fnd_msg_pub.count_msg;
1099 ELSE
1100 p_c_rec_status := p_usec_occurs_facility_tbl(I).status;
1101 p_usec_occurs_facility_tbl(I).msg_from :=p_usec_occurs_facility_tbl(I).msg_from+1;
1102 p_usec_occurs_facility_tbl(I).msg_to := fnd_msg_pub.count_msg;
1103 IF p_usec_occurs_facility_tbl(I).status = 'E' THEN
1104 RETURN;
1105 END IF;
1106 END IF;
1107
1108 END IF;--Exists
1109 END LOOP;
1110
1111 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1112 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_facility.after_import_status',p_c_rec_status);
1113 END IF;
1114
1115 END create_uso_facility;
1116
1117
1118
1119 PROCEDURE create_usec_cat (
1120 p_usec_cat_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_cat_tbl_type,
1121 p_c_rec_status OUT NOCOPY VARCHAR2,
1122 p_calling_context IN VARCHAR2
1123 ) AS
1124
1125 /***********************************************************************************************
1126 Created By : sommukhe
1127 Date Created By: 17-Jun-2005
1128 Purpose : This procedure is a sub process to insert records of Unit Section Catogories.
1129
1130 Known limitations,enhancements,remarks:
1131 Change History (in reverse chronological order)
1132 Who When What
1133
1134 ********************************************************************************************** */
1135 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
1136
1137 /* Private Procedures for create_usec_cat */
1138 PROCEDURE trim_values ( p_usec_cat_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cat_rec_type ) AS
1139 BEGIN
1140 p_usec_cat_rec.unit_cd := TRIM(p_usec_cat_rec.unit_cd);
1141 p_usec_cat_rec.version_number := TRIM(p_usec_cat_rec.version_number);
1142 p_usec_cat_rec.teach_cal_alternate_code := TRIM(p_usec_cat_rec.teach_cal_alternate_code);
1143 p_usec_cat_rec.location_cd := TRIM(p_usec_cat_rec.location_cd);
1144 p_usec_cat_rec.unit_class := TRIM(p_usec_cat_rec.unit_class);
1145 p_usec_cat_rec.unit_cat := TRIM(p_usec_cat_rec.unit_cat);
1146 END trim_values;
1147
1148 -- validate parameters passed.
1149 PROCEDURE validate_parameters (p_usec_cat_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cat_rec_type ) AS
1150 BEGIN
1151 /* Check for Mandatory Parameters */
1152 IF p_usec_cat_rec.unit_cd IS NULL OR p_usec_cat_rec.unit_cd = FND_API.G_MISS_CHAR THEN
1153 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
1154 p_usec_cat_rec.status := 'E';
1155 END IF;
1156 IF p_usec_cat_rec.version_number IS NULL OR p_usec_cat_rec.version_number = FND_API.G_MISS_NUM THEN
1157 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
1158 p_usec_cat_rec.status := 'E';
1159 END IF;
1160 IF p_usec_cat_rec.teach_cal_alternate_code IS NULL OR p_usec_cat_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
1161 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
1162 p_usec_cat_rec.status := 'E';
1163 END IF;
1164 IF p_usec_cat_rec.location_cd IS NULL OR p_usec_cat_rec.location_cd = FND_API.G_MISS_CHAR THEN
1165 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
1166 p_usec_cat_rec.status := 'E';
1167 END IF;
1168 IF p_usec_cat_rec.unit_class IS NULL OR p_usec_cat_rec.unit_class = FND_API.G_MISS_CHAR THEN
1169 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
1170 p_usec_cat_rec.status := 'E';
1171 END IF;
1172 IF p_usec_cat_rec.unit_cat IS NULL OR p_usec_cat_rec.unit_cat = FND_API.G_MISS_CHAR THEN
1173 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'CATEGORY', 'LEGACY_TOKENS', FALSE);
1174 p_usec_cat_rec.status := 'E';
1175 END IF;
1176
1177 END validate_parameters;
1178
1179 PROCEDURE validate_derivations ( p_usec_cat_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cat_rec_type ) AS
1180 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
1181 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
1182 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
1183 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
1184 l_c_message VARCHAR2(30);
1185
1186 BEGIN
1187
1188
1189 -- Derive Calander Type and Sequence Number
1190 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_cat_rec.teach_cal_alternate_code,
1191 p_cal_type => l_c_cal_type,
1192 p_ci_sequence_number => l_n_seq_num,
1193 p_start_dt => l_d_start_dt,
1194 p_end_dt => l_d_end_dt,
1195 p_return_status => l_c_message );
1196 IF ( l_c_message <> 'SINGLE' ) THEN
1197 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
1198 p_usec_cat_rec.status := 'E';
1199 END IF;
1200
1201
1202 -- Derive uoo_id
1203 l_c_message := NULL;
1204 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_cat_rec.unit_cd,
1205 p_ver_num => p_usec_cat_rec.version_number,
1206 p_cal_type => l_c_cal_type,
1207 p_seq_num => l_n_seq_num,
1208 p_loc_cd => p_usec_cat_rec.location_cd,
1209 p_unit_class => p_usec_cat_rec.unit_class,
1210 p_uoo_id => l_n_uoo_id,
1211 p_message => l_c_message );
1212
1213 IF ( l_c_message IS NOT NULL ) THEN
1214
1215 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
1216 p_usec_cat_rec.status := 'E';
1217
1218 END IF;
1219
1220 END validate_derivations;
1221
1222 -- Validate Database Constraints
1223 PROCEDURE validate_db_cons ( p_usec_cat_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cat_rec_type ) AS
1224 BEGIN
1225
1226 /* Validate UK Constraints */
1227 IF igs_ps_usec_category_pkg.get_uk_for_validation (
1228 x_uoo_id => l_n_uoo_id,
1229 x_unit_cat => p_usec_cat_rec.unit_cat
1230 ) THEN
1231 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'CATEGORY', 'LEGACY_TOKENS', FALSE);
1232 p_usec_cat_rec.status := 'W';
1233 RETURN;
1234 END IF;
1235
1236 /* Validate FK Constraints */
1237 IF NOT igs_ps_unit_cat_pkg.get_pk_for_validation (p_usec_cat_rec.unit_cat) THEN
1238 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'CATEGORY', 'LEGACY_TOKENS', FALSE);
1239 p_usec_cat_rec.status := 'E';
1240 END IF;
1241
1242 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id) THEN
1243 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
1244 p_usec_cat_rec.status := 'E';
1245 END IF;
1246
1247 END validate_db_cons;
1248
1249 /* Main Unit Section Category Sub Process */
1250 BEGIN
1251
1252 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1253 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cat.start_logging_for','Unit Section category');
1254 END IF;
1255
1256 p_c_rec_status := 'S';
1257 FOR I in 1..p_usec_cat_tbl.LAST LOOP
1258 IF ( p_usec_cat_tbl.EXISTS(I) ) THEN
1259 l_n_uoo_id := NULL;
1260 p_usec_cat_tbl(I).status := 'S';
1261 p_usec_cat_tbl(I).msg_from := fnd_msg_pub.count_msg;
1262 trim_values(p_usec_cat_tbl(I) );
1263 validate_parameters ( p_usec_cat_tbl(I) );
1264
1265 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1266 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cat.status_after_validate_parameters',
1267 'Unit code:'||p_usec_cat_tbl(I).unit_cd||' '||'Version number:'||p_usec_cat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1268 ||p_usec_cat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cat_tbl(I).location_cd||' '||'Unit Class:'||
1269 p_usec_cat_tbl(I).unit_class||' '||'Unit_Cat:'||p_usec_cat_tbl(I).unit_cat||' '||'Status:'||p_usec_cat_tbl(I).status);
1270 END IF;
1271
1272 IF p_usec_cat_tbl(I).status = 'S' THEN
1273 validate_derivations ( p_usec_cat_tbl(I));
1274
1275 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1276 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cat.status_after_validate_derivations',
1277 'Unit code:'||p_usec_cat_tbl(I).unit_cd||' '||'Version number:'||p_usec_cat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1278 ||p_usec_cat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cat_tbl(I).location_cd||' '||'Unit Class:'||
1279 p_usec_cat_tbl(I).unit_class||' '||'Unit_Cat:'||p_usec_cat_tbl(I).unit_cat||' '||'Status:'||p_usec_cat_tbl(I).status);
1280 END IF;
1281
1282 END IF;
1283
1284 IF p_usec_cat_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
1285 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
1286 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
1287 fnd_msg_pub.add;
1288 p_usec_cat_tbl(I).status := 'A';
1289 END IF;
1290
1291 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1292 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cat.status_after_check_import_allowed',
1293 'Unit code:'||p_usec_cat_tbl(I).unit_cd||' '||'Version number:'||p_usec_cat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1294 ||p_usec_cat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cat_tbl(I).location_cd||' '||'Unit Class:'||
1295 p_usec_cat_tbl(I).unit_class||' '||'Unit_Cat:'||p_usec_cat_tbl(I).unit_cat||' '||'Status:'||p_usec_cat_tbl(I).status);
1296 END IF;
1297
1298 END IF;
1299
1300 IF p_usec_cat_tbl(I).status = 'S' THEN
1301 validate_db_cons ( p_usec_cat_tbl(I) );
1302
1303 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1304 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cat.status_after_validate_db_cons',
1305 'Unit code:'||p_usec_cat_tbl(I).unit_cd||' '||'Version number:'||p_usec_cat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1306 ||p_usec_cat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cat_tbl(I).location_cd||' '||'Unit Class:'||
1307 p_usec_cat_tbl(I).unit_class||' '||'Unit_Cat:'||p_usec_cat_tbl(I).unit_cat||' '||'Status:'||p_usec_cat_tbl(I).status);
1308 END IF;
1309
1310 END IF;
1311
1312
1313 /* Proceed with business validations only if the status is Success, 'S' */
1314 IF p_usec_cat_tbl(I).status = 'S' THEN
1315 /* Validation# 1: Check for the closed_ind for UNIT_CAT */
1316 igs_ps_validate_generic_pkg.validate_category( p_usec_cat_tbl(I),l_n_uoo_id ) ;
1317
1318 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1319 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cat.status_after_Business_Validation',
1320 'Unit code:'||p_usec_cat_tbl(I).unit_cd||' '||'Version number:'||p_usec_cat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1321 ||p_usec_cat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cat_tbl(I).location_cd||' '||'Unit Class:'||
1322 p_usec_cat_tbl(I).unit_class||' '||'Unit_Cat:'||p_usec_cat_tbl(I).unit_cat||' '||'Status:'||p_usec_cat_tbl(I).status);
1323 END IF;
1324
1325 END IF;
1326
1327 IF p_usec_cat_tbl(I).status = 'S' THEN
1328 /* Insert record */
1329 INSERT INTO igs_ps_usec_category
1330 (usec_cat_id,
1331 uoo_id,
1332 unit_cat,
1333 created_by,
1334 creation_date,
1335 last_updated_by,
1336 last_update_date,
1337 last_update_login
1338 )
1339 VALUES
1340 (igs_ps_usec_category_s.nextval,
1341 l_n_uoo_id,
1342 p_usec_cat_tbl(I).unit_cat,
1343 g_n_user_id,
1344 SYSDATE,
1345 g_n_user_id,
1346 SYSDATE,
1347 g_n_login_id
1348 );
1349
1350 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1351 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cat.Record_Inserted',
1352 'Unit code:'||p_usec_cat_tbl(I).unit_cd||' '||'Version number:'||p_usec_cat_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1353 ||p_usec_cat_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cat_tbl(I).location_cd||' '||'Unit Class:'||
1354 p_usec_cat_tbl(I).unit_class||' '||'Unit_Cat:'||p_usec_cat_tbl(I).unit_cat);
1355 END IF;
1356
1357 END IF; --insert
1358
1359 IF p_usec_cat_tbl(I).status = 'S' THEN
1360 p_usec_cat_tbl(I).msg_from := NULL;
1361 p_usec_cat_tbl(I).msg_to := NULL;
1362 ELSIF p_usec_cat_tbl(I).status = 'A' THEN
1363 p_usec_cat_tbl(I).msg_from := p_usec_cat_tbl(I).msg_from + 1;
1364 p_usec_cat_tbl(I).msg_to := fnd_msg_pub.count_msg;
1365 ELSE
1366 p_c_rec_status := p_usec_cat_tbl(I).status;
1367 p_usec_cat_tbl(I).msg_from :=p_usec_cat_tbl(I).msg_from+1;
1368 p_usec_cat_tbl(I).msg_to := fnd_msg_pub.count_msg;
1369 IF p_usec_cat_tbl(I).status = 'E' THEN
1370 RETURN;
1371 END IF;
1372 END IF;
1373
1374 END IF;--Exists
1375 END LOOP;
1376
1377 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1378 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cat.after_import_status',p_c_rec_status);
1379 END IF;
1380
1381 END create_usec_cat;
1382
1383
1384
1385 /*teaching responsibility ovrd*/
1386 PROCEDURE create_usec_teach_resp_ovrd (
1387 p_usec_teach_resp_ovrd_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_ovrd_tbl_type,
1388 p_c_rec_status OUT NOCOPY VARCHAR2,
1389 p_calling_context IN VARCHAR2
1390 ) AS
1391 /***********************************************************************************************
1392 Created By : sommukhe
1393 Date Created By: 10-JUN-2005
1394 Purpose : This procedure is a sub process to import records of Unit Section Teaching Responsibility Overrides.
1395
1396 Known limitations,enhancements,remarks:
1397 Change History (in reverse chronological order)
1398 Who When What
1399 ********************************************************************************************** */
1400 l_insert_update VARCHAR2(1);
1401 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
1402 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
1403 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
1404
1405 l_tbl_uoo igs_ps_create_generic_pkg.uoo_tbl_type;
1406
1407 CURSOR c_tch_rsp_ovrd(p_unit_cd IN VARCHAR2,
1408 p_version_number NUMBER,
1409 p_cal_type VARCHAR2,
1410 p_ci_sequence_number NUMBER,
1411 p_location_cd VARCHAR2,
1412 p_unit_class VARCHAR2,
1413 p_org_unit_cd VARCHAR2,
1414 p_ou_start_dt DATE
1415 ) IS
1416 SELECT *
1417 FROM igs_ps_tch_resp_ovrd_all
1418 WHERE unit_cd = p_unit_cd
1419 AND version_number= p_version_number
1420 AND cal_type=p_cal_type
1421 AND ci_sequence_number=p_ci_sequence_number
1422 AND location_cd=p_location_cd
1423 AND unit_class=p_unit_class
1424 AND org_unit_cd=p_org_unit_cd
1425 AND ou_start_dt =p_ou_start_dt;
1426
1427 c_tch_rsp_ovrd_rec c_tch_rsp_ovrd%ROWTYPE;
1428
1429 /* Private Procedures for create_usec_teach_resp_ovrd */
1430 PROCEDURE trim_values ( p_tch_rsp_ovrd_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_ovrd_rec_type ) AS
1431 BEGIN
1432 p_tch_rsp_ovrd_rec.unit_cd := trim(p_tch_rsp_ovrd_rec.unit_cd);
1433 p_tch_rsp_ovrd_rec.version_number := trim(p_tch_rsp_ovrd_rec.version_number);
1434 p_tch_rsp_ovrd_rec.teach_cal_alternate_code := trim(p_tch_rsp_ovrd_rec.teach_cal_alternate_code);
1435 p_tch_rsp_ovrd_rec.location_cd := trim(p_tch_rsp_ovrd_rec.location_cd);
1436 p_tch_rsp_ovrd_rec.unit_class := trim(p_tch_rsp_ovrd_rec.unit_class);
1437 p_tch_rsp_ovrd_rec.org_unit_cd := trim(p_tch_rsp_ovrd_rec.org_unit_cd);
1438 p_tch_rsp_ovrd_rec.ou_start_dt := TRUNC(p_tch_rsp_ovrd_rec.ou_start_dt);
1439 p_tch_rsp_ovrd_rec.percentage := trim(p_tch_rsp_ovrd_rec.percentage);
1440 END trim_values;
1441
1442 -- validate parameters passed.
1443 PROCEDURE validate_parameters ( p_tch_rsp_ovrd_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_ovrd_rec_type ) AS
1444 BEGIN
1445
1446 /* Check for Mandatory Parameters */
1447 IF p_tch_rsp_ovrd_rec.unit_cd IS NULL OR p_tch_rsp_ovrd_rec.unit_cd = FND_API.G_MISS_CHAR THEN
1448 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
1449 p_tch_rsp_ovrd_rec.status := 'E';
1450 END IF;
1451 IF p_tch_rsp_ovrd_rec.version_number IS NULL OR p_tch_rsp_ovrd_rec.version_number = FND_API.G_MISS_NUM THEN
1452 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
1453 p_tch_rsp_ovrd_rec.status := 'E';
1454 END IF;
1455 IF p_tch_rsp_ovrd_rec.teach_cal_alternate_code IS NULL OR p_tch_rsp_ovrd_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
1456 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
1457 p_tch_rsp_ovrd_rec.status := 'E';
1458 END IF;
1459 IF p_tch_rsp_ovrd_rec.location_cd IS NULL OR p_tch_rsp_ovrd_rec.location_cd = FND_API.G_MISS_CHAR THEN
1460 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
1461 p_tch_rsp_ovrd_rec.status := 'E';
1462 END IF;
1463 IF p_tch_rsp_ovrd_rec.unit_class IS NULL OR p_tch_rsp_ovrd_rec.unit_class = FND_API.G_MISS_CHAR THEN
1464 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
1465 p_tch_rsp_ovrd_rec.status := 'E';
1466 END IF;
1467 IF p_tch_rsp_ovrd_rec.org_unit_cd IS NULL OR p_tch_rsp_ovrd_rec.org_unit_cd = FND_API.G_MISS_CHAR THEN
1468 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'ORG_UNIT_CD', 'LEGACY_TOKENS', FALSE);
1469 p_tch_rsp_ovrd_rec.status := 'E';
1470 END IF;
1471 IF p_tch_rsp_ovrd_rec.ou_start_dt IS NULL OR p_tch_rsp_ovrd_rec.ou_start_dt = FND_API.G_MISS_DATE THEN
1472 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'OU_START_DT', 'LEGACY_TOKENS', FALSE);
1473 p_tch_rsp_ovrd_rec.status := 'E';
1474 END IF;
1475 IF p_tch_rsp_ovrd_rec.percentage IS NULL OR p_tch_rsp_ovrd_rec.percentage = FND_API.G_MISS_NUM THEN
1476 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PERCENTAGE', 'LEGACY_TOKENS', FALSE);
1477 p_tch_rsp_ovrd_rec.status := 'E';
1478 END IF;
1479 END validate_parameters;
1480
1481
1482 -- Check for Update
1483 FUNCTION check_insert_update ( p_tch_rsp_ovrd_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_ovrd_rec_type ) RETURN VARCHAR2 IS
1484 CURSOR c_tch_resp_ovrd(p_unit_cd IN VARCHAR2,
1485 p_version_number NUMBER,
1486 p_cal_type VARCHAR2,
1487 p_ci_sequence_number NUMBER,
1488 p_location_cd VARCHAR2,
1489 p_unit_class VARCHAR2,
1490 p_org_unit_cd VARCHAR2,
1491 p_ou_start_dt DATE
1492 ) IS
1493 SELECT 'X'
1494 FROM igs_ps_tch_resp_ovrd_all
1495 WHERE unit_cd = p_unit_cd
1496 AND version_number= p_version_number
1497 AND cal_type=p_cal_type
1498 AND ci_sequence_number=p_ci_sequence_number
1499 AND location_cd=p_location_cd
1500 AND unit_class=p_unit_class
1501 AND org_unit_cd=p_org_unit_cd
1502 AND ou_start_dt =p_ou_start_dt;
1503
1504 c_tch_resp_ovrd_rec c_tch_resp_ovrd%ROWTYPE;
1505
1506 BEGIN
1507
1508 OPEN c_tch_resp_ovrd(p_tch_rsp_ovrd_rec.unit_cd,
1509 p_tch_rsp_ovrd_rec.version_number,
1510 l_c_cal_type,
1511 l_n_seq_num,
1512 p_tch_rsp_ovrd_rec.location_cd,
1513 p_tch_rsp_ovrd_rec.unit_class,
1514 p_tch_rsp_ovrd_rec.org_unit_cd,
1515 p_tch_rsp_ovrd_rec.ou_start_dt);
1516 FETCH c_tch_resp_ovrd INTO c_tch_resp_ovrd_rec;
1517 IF c_tch_resp_ovrd%NOTFOUND THEN
1518 CLOSE c_tch_resp_ovrd;
1519 RETURN 'I';
1520 ELSE
1521 CLOSE c_tch_resp_ovrd;
1522 RETURN 'U';
1523 END IF;
1524
1525 END check_insert_update;
1526
1527 -- Carry out derivations and validate them
1528 PROCEDURE validate_derivations ( p_tch_rsp_ovrd_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_ovrd_rec_type ) AS
1529 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
1530 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
1531 l_c_message VARCHAR2(30);
1532 BEGIN
1533
1534
1535 -- Derive Calander Type and Sequence Number
1536 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_tch_rsp_ovrd_rec.teach_cal_alternate_code,
1537 p_cal_type => l_c_cal_type,
1538 p_ci_sequence_number => l_n_seq_num,
1539 p_start_dt => l_d_start_dt,
1540 p_end_dt => l_d_end_dt,
1541 p_return_status => l_c_message );
1542 IF ( l_c_message <> 'SINGLE' ) THEN
1543 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
1544 p_tch_rsp_ovrd_rec.status := 'E';
1545 END IF;
1546
1547
1548 -- Derive uoo_id
1549 l_c_message := NULL;
1550 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_tch_rsp_ovrd_rec.unit_cd,
1551 p_ver_num => p_tch_rsp_ovrd_rec.version_number,
1552 p_cal_type => l_c_cal_type,
1553 p_seq_num => l_n_seq_num,
1554 p_loc_cd => p_tch_rsp_ovrd_rec.location_cd,
1555 p_unit_class => p_tch_rsp_ovrd_rec.unit_class,
1556 p_uoo_id => l_n_uoo_id,
1557 p_message => l_c_message );
1558 IF ( l_c_message IS NOT NULL ) THEN
1559 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
1560 p_tch_rsp_ovrd_rec.status := 'E';
1561 END IF;
1562
1563 END validate_derivations;
1564
1565 -- Validate Database Constraints
1566 PROCEDURE validate_db_cons ( p_tch_rsp_ovrd_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_ovrd_rec_type,p_insert_update VARCHAR2 ) AS
1567 BEGIN
1568 IF (p_insert_update = 'I') THEN
1569
1570 /* Unique Key Validation */
1571 IF igs_ps_tch_resp_ovrd_pkg.get_pk_for_validation ( x_unit_cd => p_tch_rsp_ovrd_rec.unit_cd,
1572 x_version_number => p_tch_rsp_ovrd_rec.version_number,
1573 x_cal_type=>l_c_cal_type,
1574 x_ci_sequence_number=>l_n_seq_num,
1575 x_location_cd=>p_tch_rsp_ovrd_rec.location_cd,
1576 x_unit_class=>p_tch_rsp_ovrd_rec.unit_class,
1577 x_org_unit_cd=>p_tch_rsp_ovrd_rec.org_unit_cd,
1578 x_ou_start_dt =>p_tch_rsp_ovrd_rec.ou_start_dt ) THEN
1579 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
1580 p_tch_rsp_ovrd_rec.status := 'W';
1581 RETURN;
1582 END IF;
1583 END IF;
1584
1585 /* Validate Check Constraints */
1586 BEGIN
1587 igs_ps_tch_resp_ovrd_pkg.check_constraints ( 'CI_SEQUENCE_NUMBER', l_n_seq_num);
1588 EXCEPTION
1589 WHEN OTHERS THEN
1590 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'CI_SEQUENCE_NUMBER', 'LEGACY_TOKENS', TRUE);
1591 p_tch_rsp_ovrd_rec.status := 'E';
1592 END;
1593
1594 BEGIN
1595 igs_ps_tch_resp_ovrd_pkg.check_constraints ( 'UOO_ID', l_n_uoo_id);
1596 EXCEPTION
1597 WHEN OTHERS THEN
1598 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'UOO_ID', 'LEGACY_TOKENS', TRUE);
1599 p_tch_rsp_ovrd_rec.status := 'E';
1600 END;
1601
1602 BEGIN
1603 igs_ps_tch_resp_ovrd_pkg.check_constraints ( 'PERCENTAGE', p_tch_rsp_ovrd_rec.percentage);
1604 EXCEPTION
1605 WHEN OTHERS THEN
1606 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PER_0_100', null, null, TRUE);
1607 p_tch_rsp_ovrd_rec.status := 'E';
1608 END;
1609
1610 /* Validate FK Constraints */
1611 IF NOT igs_ps_unit_ofr_opt_pkg.get_pk_for_validation ( p_tch_rsp_ovrd_rec.unit_cd, p_tch_rsp_ovrd_rec.version_number,
1612 l_c_cal_type,l_n_seq_num,p_tch_rsp_ovrd_rec.location_cd,p_tch_rsp_ovrd_rec.unit_class) THEN
1613 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
1614 p_tch_rsp_ovrd_rec.status := 'E';
1615 END IF;
1616
1617 IF NOT igs_or_unit_pkg.get_pk_for_validation ( p_tch_rsp_ovrd_rec.org_unit_cd,p_tch_rsp_ovrd_rec.ou_start_dt ) THEN
1618 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ORG_UNIT', 'LEGACY_TOKENS', FALSE);
1619 p_tch_rsp_ovrd_rec.status := 'E';
1620 END IF;
1621
1622 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
1623 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
1624 p_tch_rsp_ovrd_rec.status := 'E';
1625 END IF;
1626 END validate_db_cons;
1627
1628 /* Main Unit Section Teaching Responsibililty Override Sub Process */
1629 BEGIN
1630
1631 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1632 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.start_logging_for',
1633 'Unit Section Teaching Responsibility Overrides ');
1634 END IF;
1635
1636 p_c_rec_status := 'S';
1637 FOR I in 1..p_usec_teach_resp_ovrd_tbl.LAST LOOP
1638
1639 IF p_usec_teach_resp_ovrd_tbl.EXISTS(I) THEN
1640 l_n_uoo_id := NULL;
1641 l_c_cal_type := NULL;
1642 l_n_seq_num := NULL;
1643 p_usec_teach_resp_ovrd_tbl(I).status := 'S';
1644 p_usec_teach_resp_ovrd_tbl(I).msg_from := fnd_msg_pub.count_msg;
1645 trim_values(p_usec_teach_resp_ovrd_tbl(I) );
1646
1647 validate_parameters ( p_usec_teach_resp_ovrd_tbl(I) );
1648
1649 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1650 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.status_after_validate_parameters',
1651 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1652 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1653 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1654 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt||' '||'Status:'||p_usec_teach_resp_ovrd_tbl(I).status);
1655 END IF;
1656
1657 IF p_usec_teach_resp_ovrd_tbl(I).status = 'S' THEN
1658 validate_derivations ( p_usec_teach_resp_ovrd_tbl(I));
1659
1660 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1661 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.status_after_validate_derivations',
1662 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1663 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1664 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1665 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt||' '||'Status:'||p_usec_teach_resp_ovrd_tbl(I).status);
1666 END IF;
1667
1668 END IF;
1669
1670 ---INSERT /UPDATE
1671 l_insert_update:='I';
1672 IF p_usec_teach_resp_ovrd_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
1673 l_insert_update:= check_insert_update(p_usec_teach_resp_ovrd_tbl(I));
1674
1675 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1676 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.status_after_check_insert_update',
1677 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1678 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1679 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1680 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt||' '||'Status:'||p_usec_teach_resp_ovrd_tbl(I).status);
1681 END IF;
1682
1683 END IF;
1684
1685 IF p_usec_teach_resp_ovrd_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
1686 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
1687 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
1688 fnd_msg_pub.add;
1689 p_usec_teach_resp_ovrd_tbl(I).status := 'A';
1690 END IF;
1691
1692 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1693 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.status_after_check_import_allowed',
1694 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1695 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1696 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1697 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt||' '||'Status:'||p_usec_teach_resp_ovrd_tbl(I).status);
1698 END IF;
1699
1700 END IF;
1701
1702 IF l_tbl_uoo.count = 0 THEN
1703 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
1704 ELSE
1705 IF NOT igs_ps_validate_lgcy_pkg.isExists(l_n_uoo_id,l_tbl_uoo) THEN
1706 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
1707 END IF;
1708 END IF;
1709
1710 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1711 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.Count_of_unique_uoo_ids',
1712 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1713 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1714 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1715 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt||' '||'Count:'||l_tbl_uoo.count);
1716 END IF;
1717
1718 IF p_usec_teach_resp_ovrd_tbl(I).status = 'S' THEN
1719 validate_db_cons ( p_usec_teach_resp_ovrd_tbl(I),l_insert_update );
1720
1721 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1722 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.status_after_validate_db_cons',
1723 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1724 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1725 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1726 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt||' '||'Status:'||p_usec_teach_resp_ovrd_tbl(I).status);
1727 END IF;
1728
1729 END IF;
1730
1731 /* Business Validations */
1732 /* Proceed with business validations only if the status is Success, 'S' */
1733 IF p_usec_teach_resp_ovrd_tbl(I).status = 'S' THEN
1734 igs_ps_validate_generic_pkg.validate_tch_rsp_ovrd ( p_usec_teach_resp_ovrd_tbl(I),l_n_uoo_id );
1735
1736 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1737 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.status_after_Business_validation',
1738 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1739 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1740 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1741 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt||' '||'Status:'||p_usec_teach_resp_ovrd_tbl(I).status);
1742 END IF;
1743
1744 END IF;
1745
1746 IF p_usec_teach_resp_ovrd_tbl(I).status = 'S' THEN
1747 IF l_insert_update = 'I' THEN
1748 /* Insert Record */
1749
1750 INSERT INTO igs_ps_tch_resp_ovrd_all
1751 (unit_cd,
1752 version_number,
1753 cal_type,
1754 ci_sequence_number,
1755 location_cd,
1756 unit_class,
1757 org_unit_cd,
1758 ou_start_dt,
1759 uoo_id,
1760 percentage,
1761 created_by,
1762 creation_date,
1763 last_updated_by,
1764 last_update_date,
1765 last_update_login
1766 )
1767 VALUES
1768 (p_usec_teach_resp_ovrd_tbl(I).unit_cd,
1769 p_usec_teach_resp_ovrd_tbl(I).version_number,
1770 l_c_cal_type,
1771 l_n_seq_num,
1772 p_usec_teach_resp_ovrd_tbl(I).location_cd,
1773 p_usec_teach_resp_ovrd_tbl(I).unit_class,
1774 p_usec_teach_resp_ovrd_tbl(I).org_unit_cd,
1775 p_usec_teach_resp_ovrd_tbl(I).ou_start_dt,
1776 l_n_uoo_id,
1777 p_usec_teach_resp_ovrd_tbl(I).percentage,
1778 g_n_user_id,
1779 SYSDATE,
1780 g_n_user_id,
1781 SYSDATE,
1782 g_n_login_id
1783 );
1784
1785 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1786 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.Record_Inserted',
1787 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1788 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1789 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1790 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt);
1791 END IF;
1792
1793 ELSE
1794 /*Update record*/
1795
1796 --Opening the cursor to fetch the existing data wich will be used in the history table insert
1797 --Note this fetch needs to be done prior to the update statement
1798 OPEN c_tch_rsp_ovrd(p_usec_teach_resp_ovrd_tbl(I).unit_cd,
1799 p_usec_teach_resp_ovrd_tbl(I).version_number,
1800 l_c_cal_type,
1801 l_n_seq_num,
1802 p_usec_teach_resp_ovrd_tbl(I).location_cd,
1803 p_usec_teach_resp_ovrd_tbl(I).unit_class,
1804 p_usec_teach_resp_ovrd_tbl(I).org_unit_cd,
1805 p_usec_teach_resp_ovrd_tbl(I).ou_start_dt);
1806 FETCH c_tch_rsp_ovrd INTO c_tch_rsp_ovrd_rec;
1807 CLOSE c_tch_rsp_ovrd;
1808
1809 UPDATE igs_ps_tch_resp_ovrd_all
1810 SET percentage = p_usec_teach_resp_ovrd_tbl(I).percentage,
1811 last_updated_by = g_n_user_id,
1812 last_update_date = SYSDATE,
1813 last_update_login = g_n_login_id
1814 WHERE unit_cd = p_usec_teach_resp_ovrd_tbl(I).unit_cd
1815 AND version_number= p_usec_teach_resp_ovrd_tbl(I).version_number
1816 AND cal_type=l_c_cal_type
1817 AND ci_sequence_number=l_n_seq_num
1818 AND location_cd=p_usec_teach_resp_ovrd_tbl(I).location_cd
1819 AND unit_class=p_usec_teach_resp_ovrd_tbl(I).unit_class
1820 AND org_unit_cd=p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1821 AND ou_start_dt =p_usec_teach_resp_ovrd_tbl(I).ou_start_dt;
1822
1823 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1824 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.Record_Updated',
1825 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1826 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1827 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1828 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt);
1829 END IF;
1830
1831 --Inserting into the history table.
1832 IGS_PS_GEN_005.CRSP_INS_TRO_HIST (
1833 p_usec_teach_resp_ovrd_tbl(I).unit_cd,
1834 p_usec_teach_resp_ovrd_tbl(I).version_number,
1835 l_c_cal_type,
1836 l_n_seq_num,
1837 p_usec_teach_resp_ovrd_tbl(I).location_cd,
1838 p_usec_teach_resp_ovrd_tbl(I).unit_class,
1839 p_usec_teach_resp_ovrd_tbl(I).org_unit_cd,
1840 p_usec_teach_resp_ovrd_tbl(I).ou_start_dt,
1841 p_usec_teach_resp_ovrd_tbl(I).percentage,
1842 c_tch_rsp_ovrd_rec.percentage,
1843 g_n_user_id,
1844 c_tch_rsp_ovrd_rec.last_updated_by,
1845 SYSDATE,
1846 c_tch_rsp_ovrd_rec.last_update_date);
1847
1848 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1849 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.Record_Inserted_into_history_table',
1850 'Unit code:'||p_usec_teach_resp_ovrd_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_ovrd_tbl(I).version_number||' '||'teach_cal_alternate_code:'
1851 ||p_usec_teach_resp_ovrd_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_ovrd_tbl(I).location_cd||' '||'Unit Class:'||
1852 p_usec_teach_resp_ovrd_tbl(I).unit_class||' '||'org_unit_cd:'||p_usec_teach_resp_ovrd_tbl(I).org_unit_cd
1853 ||' '||'ou_start_dt'||p_usec_teach_resp_ovrd_tbl(I).ou_start_dt);
1854 END IF;
1855
1856 END IF;--insert/update
1857 END IF;
1858
1859 IF p_usec_teach_resp_ovrd_tbl(I).status = 'S' THEN
1860 p_usec_teach_resp_ovrd_tbl(I).msg_from := NULL;
1861 p_usec_teach_resp_ovrd_tbl(I).msg_to := NULL;
1862 ELSIF p_usec_teach_resp_ovrd_tbl(I).status = 'A' THEN
1863 p_usec_teach_resp_ovrd_tbl(I).msg_from := p_usec_teach_resp_ovrd_tbl(I).msg_from + 1;
1864 p_usec_teach_resp_ovrd_tbl(I).msg_to := fnd_msg_pub.count_msg;
1865 ELSE
1866 p_c_rec_status := p_usec_teach_resp_ovrd_tbl(I).status;
1867 p_usec_teach_resp_ovrd_tbl(I).msg_from := p_usec_teach_resp_ovrd_tbl(I).msg_from+1;
1868 p_usec_teach_resp_ovrd_tbl(I).msg_to := fnd_msg_pub.count_msg;
1869 IF p_usec_teach_resp_ovrd_tbl(I).status = 'E' THEN
1870 RETURN;
1871 END IF;
1872 END IF;
1873
1874 END IF;--exists
1875 END LOOP;
1876
1877 /* Post Insert/Update Checks */
1878 IF NOT igs_ps_validate_generic_pkg.post_tch_rsp_ovrd (p_usec_teach_resp_ovrd_tbl,l_tbl_uoo) THEN
1879 p_c_rec_status := 'E';
1880 END IF;
1881 l_tbl_uoo.DELETE;
1882
1883 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1884 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd.after_import_status',p_c_rec_status);
1885 END IF;
1886
1887
1888 END create_usec_teach_resp_ovrd;
1889
1890
1891
1892 /*Unit Section assessment item groups*/
1893
1894 PROCEDURE create_usec_ass_item_grp(
1895 p_usec_ass_item_grp_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_tbl_type,
1896 p_c_rec_status OUT NOCOPY VARCHAR2,
1897 p_calling_context IN VARCHAR2
1898 ) AS
1899 /***********************************************************************************************
1900 Created By : SOMMUKHE
1901 Date Created By: 17-Jun-2005
1902 Purpose : This procedure is a sub process to insert records of Unit Section assessment item groups.
1903
1904 Known limitations,enhancements,remarks:
1905 Change History (in reverse chronological order)
1906 Who When What
1907 ********************************************************************************************** */
1908 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
1909 l_tbl_uoo igs_ps_create_generic_pkg.uoo_tbl_type;
1910 l_insert_update VARCHAR2(1);
1911
1912
1913 /* Private Procedures for create_usec_grd_sch */
1914 PROCEDURE trim_values ( p_as_us_ai_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type ) AS
1915 BEGIN
1916 p_as_us_ai_rec.unit_cd := trim(p_as_us_ai_rec.unit_cd);
1917 p_as_us_ai_rec.version_number := trim(p_as_us_ai_rec.version_number);
1918 p_as_us_ai_rec.teach_cal_alternate_code := trim(p_as_us_ai_rec.teach_cal_alternate_code);
1919 p_as_us_ai_rec.location_cd := trim(p_as_us_ai_rec.location_cd);
1920 p_as_us_ai_rec.unit_class := trim(p_as_us_ai_rec.unit_class);
1921 p_as_us_ai_rec.group_name := trim(p_as_us_ai_rec.group_name);
1922 p_as_us_ai_rec.midterm_formula_code := trim(p_as_us_ai_rec.midterm_formula_code);
1923 p_as_us_ai_rec.midterm_formula_qty := trim(p_as_us_ai_rec.midterm_formula_qty);
1924 p_as_us_ai_rec.midterm_weight_qty := trim(p_as_us_ai_rec.midterm_weight_qty);
1925 p_as_us_ai_rec.final_formula_code := trim(p_as_us_ai_rec.final_formula_code);
1926 p_as_us_ai_rec.final_formula_qty := trim(p_as_us_ai_rec.final_formula_qty);
1927 p_as_us_ai_rec.final_weight_qty := trim(p_as_us_ai_rec.final_weight_qty);
1928
1929 p_as_us_ai_rec.assessment_id := trim(p_as_us_ai_rec.assessment_id);
1930 p_as_us_ai_rec.sequence_number := trim(p_as_us_ai_rec.sequence_number);
1931 p_as_us_ai_rec.due_dt := TRUNC(p_as_us_ai_rec.due_dt);
1932 p_as_us_ai_rec.reference := trim(p_as_us_ai_rec.reference);
1933 p_as_us_ai_rec.dflt_item_ind := trim(p_as_us_ai_rec.dflt_item_ind);
1934 --p_as_us_ai_rec.logical_delete_dt := TRUNC(p_as_us_ai_rec.logical_delete_dt);
1935 p_as_us_ai_rec.exam_cal_alternate_code := trim(p_as_us_ai_rec.exam_cal_alternate_code);
1936 p_as_us_ai_rec.grading_schema_cd := trim(p_as_us_ai_rec.grading_schema_cd);
1937 p_as_us_ai_rec.gs_version_number := trim(p_as_us_ai_rec.gs_version_number);
1938 p_as_us_ai_rec.description := trim(p_as_us_ai_rec.description);
1939 --p_as_us_ai_rec.release_date := TRUNC(p_as_us_ai_rec.release_date);
1940 p_as_us_ai_rec.midterm_mandatory_type_code := trim(p_as_us_ai_rec.midterm_mandatory_type_code);
1941 p_as_us_ai_rec.midterm_weight_qty_item := trim(p_as_us_ai_rec.midterm_weight_qty_item);
1942 p_as_us_ai_rec.final_mandatory_type_code := trim(p_as_us_ai_rec.final_mandatory_type_code);
1943 p_as_us_ai_rec.final_weight_qty_item := trim(p_as_us_ai_rec.final_weight_qty_item);
1944
1945
1946 END trim_values;
1947
1948 PROCEDURE create_group( p_as_us_ai_group_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type ) AS
1949 -- validate parameters passed.
1950 PROCEDURE validate_parameters ( p_as_us_ai_group_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type ) AS
1951 BEGIN
1952
1953 /* Check for Mandatory Parameters */
1954 IF p_as_us_ai_group_rec.unit_cd IS NULL OR p_as_us_ai_group_rec.unit_cd = FND_API.G_MISS_CHAR THEN
1955 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
1956 p_as_us_ai_group_rec.status := 'E';
1957 END IF;
1958 IF p_as_us_ai_group_rec.version_number IS NULL OR p_as_us_ai_group_rec.version_number = FND_API.G_MISS_NUM THEN
1959 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
1960 p_as_us_ai_group_rec.status := 'E';
1961 END IF;
1962 IF p_as_us_ai_group_rec.teach_cal_alternate_code IS NULL OR p_as_us_ai_group_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
1963 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
1964 p_as_us_ai_group_rec.status := 'E';
1965 END IF;
1966 IF p_as_us_ai_group_rec.location_cd IS NULL OR p_as_us_ai_group_rec.location_cd = FND_API.G_MISS_CHAR THEN
1967 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
1968 p_as_us_ai_group_rec.status := 'E';
1969 END IF;
1970 IF p_as_us_ai_group_rec.unit_class IS NULL OR p_as_us_ai_group_rec.unit_class = FND_API.G_MISS_CHAR THEN
1971 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
1972 p_as_us_ai_group_rec.status := 'E';
1973 END IF;
1974 IF p_as_us_ai_group_rec.group_name IS NULL OR p_as_us_ai_group_rec.group_name = FND_API.G_MISS_CHAR THEN
1975 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'GROUP_NAME', 'LEGACY_TOKENS', FALSE);
1976 p_as_us_ai_group_rec.status := 'E';
1977 END IF;
1978
1979
1980 END validate_parameters;
1981
1982
1983 -- Check for Update
1984 FUNCTION check_insert_update ( p_as_us_ai_group_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type ) RETURN VARCHAR2 IS
1985 CURSOR c_us_ai_group(cp_group_name VARCHAR2 ,cp_n_uoo_id NUMBER) IS
1986 SELECT 'X'
1987 FROM igs_as_us_ai_group
1988 WHERE group_name = cp_group_name
1989 AND uoo_id = cp_n_uoo_id;
1990
1991 c_us_ai_group_rec c_us_ai_group%ROWTYPE;
1992
1993 BEGIN
1994
1995 OPEN c_us_ai_group(p_as_us_ai_group_rec.group_name, l_n_uoo_id);
1996 FETCH c_us_ai_group INTO c_us_ai_group_rec;
1997 IF c_us_ai_group%NOTFOUND THEN
1998 CLOSE c_us_ai_group;
1999 RETURN 'I';
2000 ELSE
2001 CLOSE c_us_ai_group;
2002 RETURN 'U';
2003 END IF;
2004
2005 END check_insert_update;
2006
2007 -- Carry out derivations and validate them
2008 PROCEDURE validate_derivations ( p_as_us_ai_group_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type) AS
2009 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
2010 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
2011 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
2012 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
2013 l_c_message VARCHAR2(30);
2014 BEGIN
2015
2016
2017 -- Derive Calander Type and Sequence Number
2018 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_as_us_ai_group_rec.teach_cal_alternate_code,
2019 p_cal_type => l_c_cal_type,
2020 p_ci_sequence_number => l_n_seq_num,
2021 p_start_dt => l_d_start_dt,
2022 p_end_dt => l_d_end_dt,
2023 p_return_status => l_c_message );
2024 IF ( l_c_message <> 'SINGLE' ) THEN
2025 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
2026 p_as_us_ai_group_rec.status := 'E';
2027 END IF;
2028
2029 --check if calendar instance is inactive
2030 IF NOT igs_ps_val_uai.crsp_val_crs_ci(l_c_cal_type, l_n_seq_num, l_c_message) THEN
2031 fnd_message.set_name ( 'IGS', l_c_message );
2032 fnd_msg_pub.add;
2033 p_as_us_ai_group_rec.status := 'E';
2034 END IF;
2035
2036 --check if calendar type is closed
2037 IF NOT igs_as_val_uai.crsp_val_uo_cal_type(l_c_cal_type, l_c_message) THEN
2038 fnd_message.set_name ( 'IGS', l_c_message );
2039 fnd_msg_pub.add;
2040 p_as_us_ai_group_rec.status := 'E';
2041 END IF;
2042
2043
2044 -- Derive uoo_id
2045 l_c_message := NULL;
2046 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_as_us_ai_group_rec.unit_cd,
2047 p_ver_num => p_as_us_ai_group_rec.version_number,
2048 p_cal_type => l_c_cal_type,
2049 p_seq_num => l_n_seq_num,
2050 p_loc_cd => p_as_us_ai_group_rec.location_cd,
2051 p_unit_class => p_as_us_ai_group_rec.unit_class,
2052 p_uoo_id => l_n_uoo_id,
2053 p_message => l_c_message );
2054 IF ( l_c_message IS NOT NULL ) THEN
2055 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
2056 p_as_us_ai_group_rec.status := 'E';
2057 END IF;
2058 END validate_derivations;
2059
2060 PROCEDURE Assign_default( p_as_us_ai_group_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type,p_insert_update VARCHAR2 ) AS
2061
2062 CURSOR c_us_ai_group(cp_group_name VARCHAR2 ,cp_n_uoo_id NUMBER) IS
2063 SELECT *
2064 FROM igs_as_us_ai_group
2065 WHERE group_name = cp_group_name
2066 AND uoo_id = cp_n_uoo_id;
2067
2068 c_us_ai_group_rec c_us_ai_group%ROWTYPE;
2069
2070 BEGIN
2071
2072 IF p_insert_update = 'U' THEN
2073 OPEN c_us_ai_group(p_as_us_ai_group_rec.group_name, l_n_uoo_id);
2074 FETCH c_us_ai_group INTO c_us_ai_group_rec;
2075 CLOSE c_us_ai_group;
2076
2077 IF p_as_us_ai_group_rec.midterm_formula_code IS NULL THEN
2078 p_as_us_ai_group_rec.midterm_formula_code := c_us_ai_group_rec.midterm_formula_code;
2079 ELSIF p_as_us_ai_group_rec.midterm_formula_code = FND_API.G_MISS_CHAR THEN
2080 p_as_us_ai_group_rec.midterm_formula_code :=NULL;
2081 END IF;
2082
2083 IF p_as_us_ai_group_rec.midterm_formula_qty IS NULL THEN
2084 p_as_us_ai_group_rec.midterm_formula_qty := c_us_ai_group_rec.midterm_formula_qty;
2085 ELSIF p_as_us_ai_group_rec.midterm_formula_qty = FND_API.G_MISS_NUM THEN
2086 p_as_us_ai_group_rec.midterm_formula_qty :=NULL;
2087 END IF;
2088
2089 IF p_as_us_ai_group_rec.midterm_weight_qty IS NULL THEN
2090 p_as_us_ai_group_rec.midterm_weight_qty :=c_us_ai_group_rec.midterm_weight_qty;
2091 ELSIF p_as_us_ai_group_rec.midterm_weight_qty = FND_API.G_MISS_NUM THEN
2092 p_as_us_ai_group_rec.midterm_weight_qty :=NULL;
2093 END IF;
2094
2095 IF p_as_us_ai_group_rec.final_formula_code IS NULL THEN
2096 p_as_us_ai_group_rec.final_formula_code :=c_us_ai_group_rec.final_formula_code;
2097 ELSIF p_as_us_ai_group_rec.final_formula_code = FND_API.G_MISS_CHAR THEN
2098 p_as_us_ai_group_rec.final_formula_code :=NULL;
2099 END IF;
2100
2101 IF p_as_us_ai_group_rec.final_formula_qty IS NULL THEN
2102 p_as_us_ai_group_rec.final_formula_qty := c_us_ai_group_rec.final_formula_qty;
2103 ELSIF p_as_us_ai_group_rec.final_formula_qty = FND_API.G_MISS_NUM THEN
2104 p_as_us_ai_group_rec.final_formula_qty :=NULL;
2105 END IF;
2106
2107 IF p_as_us_ai_group_rec.final_weight_qty IS NULL THEN
2108 p_as_us_ai_group_rec.final_weight_qty := c_us_ai_group_rec.final_weight_qty;
2109 ELSIF p_as_us_ai_group_rec.final_weight_qty = FND_API.G_MISS_NUM THEN
2110 p_as_us_ai_group_rec.final_weight_qty :=NULL;
2111 END IF;
2112
2113 END IF;
2114
2115 END Assign_default;
2116
2117 -- Validate Database Constraints
2118 PROCEDURE validate_db_cons ( p_as_us_ai_group_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type,p_insert_update VARCHAR2 ) AS
2119 BEGIN
2120 IF (p_insert_update = 'I') THEN
2121 /* Unique Key Validation */
2122 IF igs_as_us_ai_group_pkg.get_uk_for_validation (x_uoo_id => l_n_uoo_id,
2123 x_group_name => p_as_us_ai_group_rec.group_name) THEN
2124 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_ASSMNT', 'LEGACY_TOKENS', FALSE);
2125 p_as_us_ai_group_rec.status := 'W';
2126 RETURN;
2127 END IF;
2128 END IF;
2129
2130 /* Validate Check Constraints */
2131 IF p_as_us_ai_group_rec.midterm_formula_qty IS NOT NULL THEN
2132 IF p_as_us_ai_group_rec.midterm_formula_qty <0 OR p_as_us_ai_group_rec.midterm_formula_qty >999 THEN
2133 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999', 'MIDTERM_FORMULA_QTY', 'LEGACY_TOKENS', FALSE);
2134 p_as_us_ai_group_rec.status := 'E';
2135 END IF;
2136
2137 --Format mask validation
2138 IF p_as_us_ai_group_rec.status <> 'E' THEN
2139 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_as_us_ai_group_rec.midterm_formula_qty,3,0) THEN
2140 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999', 'MIDTERM_FORMULA_QTY', 'LEGACY_TOKENS', FALSE);
2141 p_as_us_ai_group_rec.status :='E';
2142 END IF;
2143 END IF;
2144
2145 END IF;
2146
2147 IF p_as_us_ai_group_rec.midterm_weight_qty IS NOT NULL THEN
2148 IF p_as_us_ai_group_rec.midterm_weight_qty <0.001 OR p_as_us_ai_group_rec.midterm_weight_qty >999.999 THEN
2149 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_990D00', 'MIDTERM_WEIGHT_QTY', 'LEGACY_TOKENS', FALSE);
2150 p_as_us_ai_group_rec.status := 'E';
2151 END IF;
2152
2153 --Format mask validation
2154 IF p_as_us_ai_group_rec.status <> 'E' THEN
2155 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_as_us_ai_group_rec.midterm_weight_qty,3,3) THEN
2156 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_990D00', 'MIDTERM_WEIGHT_QTY', 'LEGACY_TOKENS', FALSE);
2157 p_as_us_ai_group_rec.status :='E';
2158 END IF;
2159 END IF;
2160
2161 END IF;
2162
2163 IF p_as_us_ai_group_rec.final_formula_qty IS NOT NULL THEN
2164 IF p_as_us_ai_group_rec.final_formula_qty <0 OR p_as_us_ai_group_rec.final_formula_qty >999 THEN
2165 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999', 'FINAL_FORMULA_QTY', 'LEGACY_TOKENS', FALSE);
2166 p_as_us_ai_group_rec.status := 'E';
2167 END IF;
2168
2169 --Format mask validation
2170 IF p_as_us_ai_group_rec.status <> 'E' THEN
2171 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_as_us_ai_group_rec.final_formula_qty,3,0) THEN
2172 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999', 'FINAL_FORMULA_QTY', 'LEGACY_TOKENS', FALSE);
2173 p_as_us_ai_group_rec.status :='E';
2174 END IF;
2175 END IF;
2176
2177 END IF;
2178
2179 IF p_as_us_ai_group_rec.final_weight_qty IS NOT NULL THEN
2180 IF p_as_us_ai_group_rec.final_weight_qty <0.001 OR p_as_us_ai_group_rec.final_weight_qty >999.999 THEN
2181 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_990D00', 'FINAL_WEIGHT_QTY', 'LEGACY_TOKENS', FALSE);
2182 p_as_us_ai_group_rec.status := 'E';
2183 END IF;
2184
2185 --Format mask validation
2186 IF p_as_us_ai_group_rec.status <> 'E' THEN
2187 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_as_us_ai_group_rec.final_weight_qty,3,3) THEN
2188 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_990D00', 'FINAL_WEIGHT_QTY', 'LEGACY_TOKENS', FALSE);
2189 p_as_us_ai_group_rec.status :='E';
2190 END IF;
2191 END IF;
2192
2193 END IF;
2194
2195
2196 /* Validate FK Constraints */
2197 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
2198 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
2199 p_as_us_ai_group_rec.status := 'E';
2200 END IF;
2201
2202 END validate_db_cons;
2203
2204 -- Main section for assesment item group.
2205 BEGIN
2206
2207 validate_parameters(p_as_us_ai_group_rec);
2208
2209 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2210 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.status_after_validate_parameters_item',
2211 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2212 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2213 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name||' '||'Status:'||p_as_us_ai_group_rec.status);
2214 END IF;
2215
2216 IF p_as_us_ai_group_rec.status = 'S' THEN
2217 validate_derivations(p_as_us_ai_group_rec);
2218
2219 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2220 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.status_after_validate_derivations',
2221 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2222 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2223 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name||' '||'Status:'||p_as_us_ai_group_rec.status);
2224 END IF;
2225
2226 END IF;
2227
2228 --Find out whether it is insert/update of record
2229 l_insert_update:='I';
2230 IF p_as_us_ai_group_rec.status = 'S' AND p_calling_context IN ('G','S') THEN
2231 l_insert_update:= check_insert_update(p_as_us_ai_group_rec);
2232
2233 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2234 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.status_after_check_insert_update',
2235 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2236 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2237 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name||' '||'Status:'||p_as_us_ai_group_rec.status);
2238 END IF;
2239
2240 END IF;
2241
2242 -- Find out whether record can go for import in context of cancelled/aborted
2243 IF p_as_us_ai_group_rec.status = 'S' AND p_calling_context = 'S' THEN
2244 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
2245 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
2246 fnd_msg_pub.add;
2247 p_as_us_ai_group_rec.status := 'A';
2248 END IF;
2249
2250 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2251 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.status_after_check_import_allowed',
2252 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2253 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2254 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name||' '||'Status:'||p_as_us_ai_group_rec.status);
2255 END IF;
2256
2257
2258 END IF;
2259
2260 IF p_as_us_ai_group_rec.status = 'S' THEN
2261 Assign_default(p_as_us_ai_group_rec,l_insert_update);
2262
2263 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2264 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.status_after_Assign_default',
2265 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2266 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2267 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name||' '||'Status:'||p_as_us_ai_group_rec.status);
2268 END IF;
2269
2270 END IF;
2271
2272 IF l_tbl_uoo.count = 0 THEN
2273 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
2274 ELSE
2275 IF NOT igs_ps_validate_lgcy_pkg.isExists(l_n_uoo_id,l_tbl_uoo) THEN
2276 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
2277 END IF;
2278 END IF;
2279
2280 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2281 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.Count_unique_uoo_ids',
2282 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2283 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2284 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name||' '||'Count:'||l_tbl_uoo.count);
2285 END IF;
2286
2287 IF p_as_us_ai_group_rec.status = 'S' THEN
2288 validate_db_cons(p_as_us_ai_group_rec,l_insert_update);
2289
2290 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2291 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.status_after_validate_db_cons',
2292 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2293 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2294 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name||' '||'Status:'||p_as_us_ai_group_rec.status);
2295 END IF;
2296
2297 END IF;
2298
2299 IF p_as_us_ai_group_rec.status = 'S' THEN
2300 igs_ps_validate_generic_pkg.validate_as_us_ai_group(p_as_us_ai_group_rec, l_n_uoo_id);
2301
2302 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2303 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.status_after_Business_validation',
2304 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2305 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2306 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name||' '||'Status:'||p_as_us_ai_group_rec.status);
2307 END IF;
2308
2309 END IF;
2310
2311 IF p_as_us_ai_group_rec.status = 'S' THEN
2312 IF l_insert_update = 'I' THEN
2313 /* Insert Record */
2314 INSERT INTO igs_as_us_ai_group
2315 (us_ass_item_group_id,
2316 uoo_id,
2317 group_name,
2318 midterm_formula_code,
2319 midterm_formula_qty,
2320 midterm_weight_qty,
2321 final_formula_code,
2322 final_formula_qty,
2323 final_weight_qty,
2324 created_by,
2325 creation_date,
2326 last_updated_by,
2327 last_update_date,
2328 last_update_login
2329 )
2330 VALUES
2331 (igs_as_us_ai_group_s.NEXTVAL,
2332 l_n_uoo_id,
2333 p_as_us_ai_group_rec.group_name,
2334 p_as_us_ai_group_rec.midterm_formula_code,
2335 p_as_us_ai_group_rec.midterm_formula_qty,
2336 p_as_us_ai_group_rec.midterm_weight_qty,
2337 p_as_us_ai_group_rec.final_formula_code,
2338 p_as_us_ai_group_rec.final_formula_qty,
2339 p_as_us_ai_group_rec.final_weight_qty,
2340 g_n_user_id,
2341 SYSDATE,
2342 g_n_user_id,
2343 SYSDATE,
2344 g_n_login_id
2345 );
2346
2347 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2348 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.record_Inserted',
2349 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2350 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2351 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name);
2352 END IF;
2353
2354 ELSE --update
2355 UPDATE igs_as_us_ai_group
2356 SET midterm_formula_code=p_as_us_ai_group_rec.midterm_formula_code,
2357 midterm_formula_qty=p_as_us_ai_group_rec.midterm_formula_qty,
2358 midterm_weight_qty=p_as_us_ai_group_rec.midterm_weight_qty,
2359 final_formula_code=p_as_us_ai_group_rec.final_formula_code,
2360 final_formula_qty=p_as_us_ai_group_rec.final_formula_qty,
2361 final_weight_qty=p_as_us_ai_group_rec.final_weight_qty,
2362 last_updated_by = g_n_user_id,
2363 last_update_date = SYSDATE,
2364 last_update_login = g_n_login_id
2365 WHERE group_name =p_as_us_ai_group_rec.group_name
2366 AND uoo_id = l_n_uoo_id;
2367
2368 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2369 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.record_updated',
2370 'Unit code:'||p_as_us_ai_group_rec.unit_cd||' '||'Version number:'||p_as_us_ai_group_rec.version_number||' '||'teach_cal_alternate_code:'
2371 ||p_as_us_ai_group_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_as_us_ai_group_rec.location_cd||' '||'Unit Class:'||
2372 p_as_us_ai_group_rec.unit_class||'Group name:'||p_as_us_ai_group_rec.group_name);
2373 END IF;
2374
2375 END IF;
2376 END IF;
2377
2378 END create_group;
2379
2380 PROCEDURE create_item( p_unitass_item_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type ) AS
2381 CURSOR c_unitass_item(cp_n_uoo_id NUMBER ,cp_assessment_id NUMBER,cp_sequence_number NUMBER) IS
2382 SELECT *
2383 FROM igs_ps_unitass_item
2384 WHERE uoo_id = cp_n_uoo_id
2385 AND ass_id = cp_assessment_id
2386 AND sequence_number=cp_sequence_number;
2387
2388 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
2389 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
2390
2391 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
2392 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
2393
2394 l_c_exam_cal_type igs_ca_inst_all.cal_type%TYPE;
2395 l_n_exam_seq_num igs_ca_inst_all.sequence_number%TYPE;
2396
2397 l_n_us_ass_item_group_id igs_ps_unitass_item.us_ass_item_group_id%type;
2398
2399 -- validate parameters passed.
2400 PROCEDURE validate_parameters_item ( p_unitass_item_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type ) AS
2401 BEGIN
2402
2403 /* Check for Mandatory Parameters */
2404 IF p_unitass_item_rec.assessment_id IS NULL OR p_unitass_item_rec.assessment_id = FND_API.G_MISS_NUM THEN
2405 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'ASSESSMENT_ID', 'LEGACY_TOKENS', FALSE);
2406 p_unitass_item_rec.status := 'E';
2407 END IF;
2408 IF p_unitass_item_rec.grading_schema_cd IS NULL OR p_unitass_item_rec.grading_schema_cd = FND_API.G_MISS_CHAR THEN
2409 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'GRADINGS_SCHEMA_CD', 'LEGACY_TOKENS', FALSE);
2410 p_unitass_item_rec.status := 'E';
2411 END IF;
2412 IF p_unitass_item_rec.gs_version_number IS NULL OR p_unitass_item_rec.gs_version_number = FND_API.G_MISS_NUM THEN
2413 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'GS_VERSION_NUMBER', 'LEGACY_TOKENS', FALSE);
2414 p_unitass_item_rec.status := 'E';
2415 END IF;
2416
2417 END validate_parameters_item;
2418
2419
2420 -- Check for Update
2421 FUNCTION check_insert_update_item ( p_unitass_item_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type ) RETURN VARCHAR2 IS
2422 CURSOR c_unitass_item(cp_n_uoo_id NUMBER ,cp_assessment_id NUMBER,cp_sequence_number NUMBER) IS
2423 SELECT 'X'
2424 FROM igs_ps_unitass_item
2425 WHERE uoo_id = cp_n_uoo_id
2426 AND ass_id = cp_assessment_id
2427 AND sequence_number=cp_sequence_number;
2428
2429 c_unitass_item_rec c_unitass_item%ROWTYPE;
2430 BEGIN
2431 OPEN c_unitass_item(l_n_uoo_id,p_unitass_item_rec.assessment_id,p_unitass_item_rec.sequence_number);
2432 FETCH c_unitass_item INTO c_unitass_item_rec;
2433 IF c_unitass_item%NOTFOUND THEN
2434 CLOSE c_unitass_item;
2435 RETURN 'I';
2436 ELSE
2437 CLOSE c_unitass_item;
2438 RETURN 'U';
2439 END IF;
2440
2441 END check_insert_update_item;
2442
2443 -- Carry out derivations and validate them
2444 PROCEDURE validate_derivations_item ( p_unitass_item_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type) AS
2445
2446 l_c_message VARCHAR2(30);
2447
2448 CURSOR c_uaig_id(cp_uoo_id NUMBER,cp_group_name VARCHAR2) IS
2449 SELECT us_ass_item_group_id
2450 FROM igs_as_us_ai_group
2451 WHERE uoo_id = cp_uoo_id
2452 AND group_name = cp_group_name;
2453
2454 BEGIN
2455
2456 -- Derive Calander Type and Sequence Number
2457 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_unitass_item_rec.teach_cal_alternate_code,
2458 p_cal_type => l_c_cal_type,
2459 p_ci_sequence_number => l_n_seq_num,
2460 p_start_dt => l_d_start_dt,
2461 p_end_dt => l_d_end_dt,
2462 p_return_status => l_c_message );
2463 IF ( l_c_message <> 'SINGLE' ) THEN
2464 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
2465 p_unitass_item_rec.status := 'E';
2466 END IF;
2467
2468 --derive us_ass_item_group_id
2469 IF p_unitass_item_rec.status = 'S' THEN
2470 OPEN c_uaig_id(l_n_uoo_id,p_unitass_item_rec.group_name);
2471 FETCH c_uaig_id INTO l_n_us_ass_item_group_id;
2472 CLOSE c_uaig_id;
2473 END IF;
2474 END validate_derivations_item;
2475
2476 PROCEDURE Assign_default( p_unitass_item_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type,p_insert_update VARCHAR2 ) AS
2477 CURSOR c_unitass_item(cp_n_uoo_id NUMBER ,cp_assessment_id NUMBER,cp_sequence_number NUMBER) IS
2478 SELECT *
2479 FROM igs_ps_unitass_item
2480 WHERE uoo_id = cp_n_uoo_id
2481 AND ass_id = cp_assessment_id
2482 AND sequence_number=cp_sequence_number;
2483
2484 c_unitass_item_rec c_unitass_item%ROWTYPE;
2485
2486 CURSOR cal_type (cp_alternate_code igs_ca_inst_all.alternate_code%TYPE) IS
2487 SELECT cal_type,sequence_number
2488 FROM igs_ca_inst_all
2489 WHERE alternate_code = cp_alternate_code;
2490
2491 CURSOR cur_exam_cal(cp_cal_type igs_ca_inst_all.cal_type%TYPE, cp_sequence_number igs_ca_inst_all.sequence_number%TYPE ) IS
2492 SELECT 'X'
2493 FROM igs_ca_inst ci,
2494 igs_ca_type cat
2495 WHERE cat.s_cal_cat = 'EXAM'
2496 AND ci.cal_type = cat.cal_type
2497 AND ci.cal_type = cp_cal_type
2498 AND ci.sequence_number = cp_sequence_number
2499 AND ci.sequence_number IN (SELECT ci2.sequence_number
2500 FROM igs_ca_inst ci2,
2501 igs_ca_inst_rel cir
2502 WHERE ci2.cal_type = cir.sup_cal_type
2503 AND ci2.sequence_number = cir.sup_ci_sequence_number
2504 AND cir.sub_cal_type = l_c_cal_type
2505 AND cir.sub_ci_sequence_number = l_n_seq_num);
2506 l_c_var VARCHAR2(1);
2507
2508 CURSOR cur_ass_desc(cp_assessment_id NUMBER) IS
2509 SELECT description
2510 FROM igs_as_assessmnt_itm
2511 WHERE ass_id = cp_assessment_id;
2512 l_cur_ass_desc cur_ass_desc%ROWTYPE;
2513
2514 BEGIN
2515 IF p_insert_update = 'I' THEN
2516 IF p_unitass_item_rec.dflt_item_ind IS NULL THEN
2517 p_unitass_item_rec.dflt_item_ind :='Y';
2518 ELSIF p_unitass_item_rec.dflt_item_ind = FND_API.G_MISS_CHAR THEN
2519 p_unitass_item_rec.dflt_item_ind :='Y';
2520 END IF;
2521
2522 IF p_unitass_item_rec.due_dt = FND_API.G_MISS_DATE THEN
2523 p_unitass_item_rec.due_dt :=NULL;
2524 END IF;
2525
2526 IF p_unitass_item_rec.reference = FND_API.G_MISS_CHAR THEN
2527 p_unitass_item_rec.reference :=NULL;
2528 END IF;
2529
2530
2531 IF p_unitass_item_rec.midterm_mandatory_type_code = FND_API.G_MISS_CHAR THEN
2532 p_unitass_item_rec.midterm_mandatory_type_code :=NULL;
2533 END IF;
2534
2535 IF p_unitass_item_rec.midterm_weight_qty_item = FND_API.G_MISS_NUM THEN
2536 p_unitass_item_rec.midterm_weight_qty_item :=NULL;
2537 END IF;
2538
2539 IF p_unitass_item_rec.final_mandatory_type_code = FND_API.G_MISS_CHAR THEN
2540 p_unitass_item_rec.final_mandatory_type_code :=NULL;
2541 END IF;
2542
2543 IF p_unitass_item_rec.final_weight_qty_item = FND_API.G_MISS_NUM THEN
2544 p_unitass_item_rec.final_weight_qty_item :=NULL;
2545 END IF;
2546
2547 IF p_unitass_item_rec.release_date = FND_API.G_MISS_DATE THEN
2548 p_unitass_item_rec.release_date :=NULL;
2549 END IF;
2550
2551 IF p_unitass_item_rec.logical_delete_dt IS NOT NULL THEN
2552 p_unitass_item_rec.logical_delete_dt :=NULL;
2553 END IF;
2554
2555
2556 IF p_unitass_item_rec.description IS NOT NULL THEN
2557 OPEN cur_ass_desc(p_unitass_item_rec.assessment_id);
2558 FETCH cur_ass_desc INTO l_cur_ass_desc;
2559 CLOSE cur_ass_desc;
2560 IF l_cur_ass_desc.description = p_unitass_item_rec.description THEN
2561 p_unitass_item_rec.description:=NULL;
2562 END IF;
2563 ELSIF p_unitass_item_rec.description = FND_API.G_MISS_CHAR THEN
2564 p_unitass_item_rec.description :=NULL;
2565 END IF;
2566
2567 IF p_unitass_item_rec.exam_cal_alternate_code IS NULL THEN
2568 l_c_exam_cal_type := NULL;
2569 l_n_exam_seq_num := NULL;
2570 ELSE
2571 OPEN cal_type(p_unitass_item_rec.exam_cal_alternate_code);
2572 FETCH cal_type INTO l_c_exam_cal_type,l_n_exam_seq_num;
2573 IF cal_type%NOTFOUND THEN
2574 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'EXAM_CAL_ALTERNATE_CODE', 'LEGACY_TOKENS', FALSE);
2575 p_unitass_item_rec.status := 'E';
2576 ELSE
2577 --validate the exam calendar is a valid one, if provided
2578 OPEN cur_exam_cal(l_c_exam_cal_type,l_n_exam_seq_num);
2579 FETCH cur_exam_cal INTO l_c_var;
2580 IF cur_exam_cal%NOTFOUND THEN
2581 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'EXAM_CAL_ALTERNATE_CODE', 'LEGACY_TOKENS', FALSE);
2582 p_unitass_item_rec.status := 'E';
2583 END IF;
2584 CLOSE cur_exam_cal;
2585 END IF;
2586 CLOSE cal_type;
2587 END IF;
2588
2589 END IF;
2590
2591 IF p_insert_update = 'U' THEN
2592 OPEN c_unitass_item(l_n_uoo_id,p_unitass_item_rec.assessment_id,p_unitass_item_rec.sequence_number);
2593 FETCH c_unitass_item INTO c_unitass_item_rec;
2594 CLOSE c_unitass_item;
2595
2596 IF p_unitass_item_rec.due_dt IS NULL THEN
2597 p_unitass_item_rec.due_dt := c_unitass_item_rec.due_dt ;
2598 ELSIF p_unitass_item_rec.due_dt = FND_API.G_MISS_DATE THEN
2599 p_unitass_item_rec.due_dt :=NULL;
2600 END IF;
2601
2602 IF p_unitass_item_rec.dflt_item_ind IS NULL THEN
2603 p_unitass_item_rec.dflt_item_ind :=c_unitass_item_rec.dflt_item_ind;
2604 ELSIF p_unitass_item_rec.dflt_item_ind = FND_API.G_MISS_CHAR THEN
2605 p_unitass_item_rec.dflt_item_ind :='N';
2606 END IF;
2607
2608 IF p_unitass_item_rec.reference IS NULL THEN
2609 p_unitass_item_rec.reference := c_unitass_item_rec.reference;
2610 ELSIF p_unitass_item_rec.reference = FND_API.G_MISS_CHAR THEN
2611 p_unitass_item_rec.reference :=NULL;
2612 END IF;
2613
2614 IF p_unitass_item_rec.logical_delete_dt IS NULL THEN
2615 p_unitass_item_rec.logical_delete_dt := c_unitass_item_rec.logical_delete_dt;
2616 ELSIF p_unitass_item_rec.logical_delete_dt = FND_API.G_MISS_DATE THEN
2617 p_unitass_item_rec.logical_delete_dt :=NULL;
2618 END IF;
2619
2620
2621 IF p_unitass_item_rec.description IS NULL THEN
2622 p_unitass_item_rec.description := c_unitass_item_rec.description;
2623 ELSIF p_unitass_item_rec.description = FND_API.G_MISS_CHAR THEN
2624 p_unitass_item_rec.description :=NULL;
2625 ELSIF p_unitass_item_rec.description IS NOT NULL THEN
2626 OPEN cur_ass_desc(p_unitass_item_rec.assessment_id);
2627 FETCH cur_ass_desc INTO l_cur_ass_desc;
2628 CLOSE cur_ass_desc;
2629 IF l_cur_ass_desc.description = p_unitass_item_rec.description THEN
2630 p_unitass_item_rec.description:=NULL;
2631 END IF;
2632 END IF;
2633
2634
2635
2636
2637 IF p_unitass_item_rec.exam_cal_alternate_code IS NULL THEN
2638 l_c_exam_cal_type := c_unitass_item_rec.exam_cal_type;
2639 l_n_exam_seq_num := c_unitass_item_rec.exam_ci_sequence_number;
2640 ELSIF p_unitass_item_rec.exam_cal_alternate_code = FND_API.G_MISS_CHAR THEN
2641 l_c_exam_cal_type := NULL;
2642 l_n_exam_seq_num := NULL;
2643 ELSE
2644 OPEN cal_type(p_unitass_item_rec.exam_cal_alternate_code);
2645 FETCH cal_type INTO l_c_exam_cal_type,l_n_exam_seq_num;
2646 IF cal_type%NOTFOUND THEN
2647 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'EXAM_CAL_ALTERNATE_CODE', 'LEGACY_TOKENS', FALSE);
2648 p_unitass_item_rec.status := 'E';
2649 ELSE
2650 --validate the exam calendar is a valid one, if provided
2651 OPEN cur_exam_cal(l_c_exam_cal_type,l_n_exam_seq_num);
2652 FETCH cur_exam_cal INTO l_c_var;
2653 IF cur_exam_cal%NOTFOUND THEN
2654 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'EXAM_CAL_ALTERNATE_CODE', 'LEGACY_TOKENS', FALSE);
2655 p_unitass_item_rec.status := 'E';
2656 END IF;
2657 CLOSE cur_exam_cal;
2658 END IF;
2659 CLOSE cal_type;
2660
2661 END IF;
2662
2663 IF p_unitass_item_rec.release_date IS NULL THEN
2664 p_unitass_item_rec.release_date := c_unitass_item_rec.release_date ;
2665 ELSIF p_unitass_item_rec.release_date = FND_API.G_MISS_DATE THEN
2666 p_unitass_item_rec.release_date :=NULL;
2667 END IF;
2668
2669 IF p_unitass_item_rec.midterm_mandatory_type_code IS NULL THEN
2670 p_unitass_item_rec.midterm_mandatory_type_code := c_unitass_item_rec.midterm_mandatory_type_code;
2671 ELSIF p_unitass_item_rec.midterm_mandatory_type_code = FND_API.G_MISS_CHAR THEN
2672 p_unitass_item_rec.midterm_mandatory_type_code :=NULL;
2673 END IF;
2674
2675 IF p_unitass_item_rec.midterm_weight_qty_item IS NULL THEN
2676 p_unitass_item_rec.midterm_weight_qty_item := c_unitass_item_rec.midterm_weight_qty;
2677 ELSIF p_unitass_item_rec.midterm_weight_qty_item = FND_API.G_MISS_NUM THEN
2678 p_unitass_item_rec.midterm_weight_qty_item :=NULL;
2679 END IF;
2680
2681 IF p_unitass_item_rec.final_mandatory_type_code IS NULL THEN
2682 p_unitass_item_rec.final_mandatory_type_code := c_unitass_item_rec.final_mandatory_type_code;
2683 ELSIF p_unitass_item_rec.final_mandatory_type_code = FND_API.G_MISS_CHAR THEN
2684 p_unitass_item_rec.final_mandatory_type_code :=NULL;
2685 END IF;
2686
2687 IF p_unitass_item_rec.final_weight_qty_item IS NULL THEN
2688 p_unitass_item_rec.final_weight_qty_item := c_unitass_item_rec.final_weight_qty;
2689 ELSIF p_unitass_item_rec.final_weight_qty_item = FND_API.G_MISS_NUM THEN
2690 p_unitass_item_rec.final_weight_qty_item :=NULL;
2691 END IF;
2692
2693
2694 END IF;
2695
2696 END Assign_default;
2697
2698 -- Validate Database Constraints
2699 PROCEDURE validate_db_cons_item ( p_unitass_item_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_rec_type,p_insert_update VARCHAR2 ) AS
2700 CURSOR c_assessment_id(cp_assessment_id igs_as_assessmnt_itm.ass_id%TYPE)IS
2701 SELECT 'X'
2702 FROM igs_as_assessmnt_itm
2703 WHERE ass_id =cp_assessment_id;
2704
2705 c_assessment_id_rec c_assessment_id%ROWTYPE;
2706 BEGIN
2707 IF (p_insert_update = 'I') THEN
2708 -- Unique Key Validation
2709 IF igs_ps_unitass_item_pkg.get_uk_for_validation (x_ass_id =>p_unitass_item_rec.assessment_id,
2710 x_sequence_number=>p_unitass_item_rec.sequence_number,
2711 x_uoo_id =>l_n_uoo_id) THEN
2712 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_ASSMNT', 'LEGACY_TOKENS', FALSE);
2713 p_unitass_item_rec.status := 'W';
2714 RETURN;
2715 END IF;
2716 END IF;
2717
2718 /* Validate Check Constraints */
2719 IF p_unitass_item_rec.midterm_weight_qty_item IS NOT NULL THEN
2720 IF p_unitass_item_rec.midterm_weight_qty_item <0.001 OR p_unitass_item_rec.midterm_weight_qty_item >999.999 THEN
2721 p_unitass_item_rec.status := 'E';
2722 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_990D00', 'MIDTERM_WEIGHT_QTY_ITEM', 'LEGACY_TOKENS', FALSE);
2723 END IF;
2724
2725 --Format mask validation
2726 IF p_unitass_item_rec.status <> 'E' THEN
2727 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_unitass_item_rec.midterm_weight_qty_item,3,3) THEN
2728 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_990D00', 'MIDTERM_WEIGHT_QTY_ITEM', 'LEGACY_TOKENS', FALSE);
2729 p_unitass_item_rec.status :='E';
2730 END IF;
2731 END IF;
2732
2733 END IF;
2734
2735 IF p_unitass_item_rec.final_weight_qty_item IS NOT NULL THEN
2736 IF p_unitass_item_rec.final_weight_qty_item <0.001 OR p_unitass_item_rec.final_weight_qty_item >999.999 THEN
2737 p_unitass_item_rec.status := 'E';
2738 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_990D00', 'FINAL_WEIGHT_QTY_ITEM', 'LEGACY_TOKENS', FALSE);
2739 END IF;
2740
2741 --Format mask validation
2742 IF p_unitass_item_rec.status <> 'E' THEN
2743 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_unitass_item_rec.final_weight_qty_item,3,3) THEN
2744 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_990D00', 'FINAL_WEIGHT_QTY_ITEM', 'LEGACY_TOKENS', FALSE);
2745 p_unitass_item_rec.status :='E';
2746 END IF;
2747 END IF;
2748
2749 END IF;
2750
2751
2752
2753 /* Validate FK Constraints */
2754 IF NOT igs_as_grd_schema_pkg.get_pk_for_validation ( p_unitass_item_rec.grading_schema_cd,p_unitass_item_rec.gs_version_number ) THEN
2755 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'GRADING_SCHEMA', 'LEGACY_TOKENS', FALSE);
2756 p_unitass_item_rec.status := 'E';
2757 END IF;
2758
2759 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
2760 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
2761 p_unitass_item_rec.status := 'E';
2762 END IF;
2763
2764 IF NOT igs_as_us_ai_group_pkg.get_pk_for_validation ( l_n_us_ass_item_group_id ) THEN
2765 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_ASSMNT', 'LEGACY_TOKENS', FALSE);
2766 p_unitass_item_rec.status := 'E';
2767 END IF;
2768
2769 OPEN c_assessment_id(p_unitass_item_rec.assessment_id);
2770 FETCH c_assessment_id INTO c_assessment_id_rec;
2771 IF c_assessment_id%NOTFOUND THEN
2772 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ASSESSMENT_ID', 'LEGACY_TOKENS', FALSE);
2773 p_unitass_item_rec.status := 'E';
2774 END IF;
2775 CLOSE c_assessment_id;
2776
2777
2778 END validate_db_cons_item;
2779
2780 -- Main section for assesment item group.
2781 BEGIN
2782 validate_parameters_item(p_unitass_item_rec);
2783
2784 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2785 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.status_after_validate_parameters_item',
2786 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2787 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2788 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id||' '||'Status:'||p_unitass_item_rec.status);
2789 END IF;
2790
2791 IF p_unitass_item_rec.status = 'S' THEN
2792 validate_derivations_item(p_unitass_item_rec);
2793
2794 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2795 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.status_after_validate_derivations_item',
2796 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2797 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2798 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id||' '||'Status:'||p_unitass_item_rec.status);
2799 END IF;
2800
2801 END IF;
2802
2803 l_insert_update:='I';
2804 --Find out whether it is insert/update of record
2805 IF p_unitass_item_rec.status = 'S' AND p_calling_context IN ('G','S') THEN
2806 l_insert_update:= check_insert_update_item(p_unitass_item_rec);
2807
2808 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2809 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.status_after_check_insert_update_item',
2810 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2811 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2812 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id||' '||'Status:'||p_unitass_item_rec.status);
2813 END IF;
2814
2815 END IF;
2816
2817 IF p_unitass_item_rec.status = 'S' AND p_calling_context = 'S' THEN
2818 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
2819 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
2820 fnd_msg_pub.add;
2821 p_unitass_item_rec.status := 'A';
2822 END IF;
2823
2824 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2825 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.status_after_check_import_allowed',
2826 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2827 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2828 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id||' '||'Status:'||p_unitass_item_rec.status);
2829 END IF;
2830
2831 END IF;
2832
2833 IF p_unitass_item_rec.status = 'S' THEN
2834 Assign_default(p_unitass_item_rec,l_insert_update);
2835
2836 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2837 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.Status_after_Assign_default',
2838 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2839 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2840 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id||' '||'Status:'||p_unitass_item_rec.status);
2841 END IF;
2842
2843 END IF;
2844
2845 IF p_unitass_item_rec.status = 'S' THEN
2846 validate_db_cons_item(p_unitass_item_rec,l_insert_update);
2847
2848 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2849 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.Status_after_validate_db_cons_item',
2850 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2851 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2852 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id||' '||'Status:'||p_unitass_item_rec.status);
2853 END IF;
2854
2855 END IF;
2856
2857 IF p_unitass_item_rec.status = 'S' THEN
2858 igs_ps_validate_generic_pkg.validate_unitass_item (p_unitass_item_rec, l_c_cal_type ,l_n_seq_num ,l_n_uoo_id,l_insert_update);
2859
2860 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2861 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.Status_after_Business_validation',
2862 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2863 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2864 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id||' '||'Status:'||p_unitass_item_rec.status);
2865 END IF;
2866
2867 END IF;
2868
2869 IF p_unitass_item_rec.status = 'S' THEN
2870 IF l_insert_update = 'I' THEN
2871 /* Insert Record */
2872 INSERT INTO igs_ps_unitass_item
2873 (unit_section_ass_item_id,
2874 uoo_id,
2875 ass_id,
2876 sequence_number,
2877 ci_start_dt,
2878 ci_end_dt,
2879 due_dt,
2880 reference,
2881 dflt_item_ind,
2882 logical_delete_dt,
2883 action_dt,
2884 exam_cal_type,
2885 exam_ci_sequence_number,
2886 created_by,
2887 creation_date,
2888 last_updated_by,
2889 last_update_date,
2890 last_update_login,
2891 grading_schema_cd,
2892 gs_version_number,
2893 release_date,
2894 description,
2895 us_ass_item_group_id,
2896 midterm_mandatory_type_code,
2897 midterm_weight_qty,
2898 final_mandatory_type_code,
2899 final_weight_qty
2900 )
2901 VALUES
2902 (igs_ps_unitass_item_s.NEXTVAL,
2903 l_n_uoo_id,
2904 p_unitass_item_rec.assessment_id,
2905 igs_ps_unitass_item_seq_num_s.NEXTVAL,
2906 l_d_start_dt,
2907 l_d_end_dt,
2908 p_unitass_item_rec.due_dt,
2909 p_unitass_item_rec.reference,
2910 p_unitass_item_rec.dflt_item_ind,
2911 p_unitass_item_rec.logical_delete_dt,
2912 SYSDATE,
2913 l_c_exam_cal_type,
2914 l_n_exam_seq_num,
2915 g_n_user_id,
2916 SYSDATE,
2917 g_n_user_id,
2918 SYSDATE,
2919 g_n_login_id,
2920 p_unitass_item_rec.grading_schema_cd,
2921 p_unitass_item_rec.gs_version_number,
2922 p_unitass_item_rec.release_date,
2923 p_unitass_item_rec.description,
2924 l_n_us_ass_item_group_id,
2925 p_unitass_item_rec.midterm_mandatory_type_code,
2926 p_unitass_item_rec.midterm_weight_qty_item,
2927 p_unitass_item_rec.final_mandatory_type_code,
2928 p_unitass_item_rec.final_weight_qty_item
2929 );
2930
2931 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2932 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.Status_record_inserted',
2933 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2934 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2935 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id);
2936 END IF;
2937
2938 ELSE --update
2939 UPDATE igs_ps_unitass_item
2940 SET due_dt = p_unitass_item_rec.due_dt,
2941 reference = p_unitass_item_rec.reference,
2942 dflt_item_ind = p_unitass_item_rec.dflt_item_ind,
2943 logical_delete_dt = p_unitass_item_rec.logical_delete_dt,
2944 action_dt = SYSDATE,
2945 exam_cal_type = l_c_exam_cal_type,
2946 exam_ci_sequence_number = l_n_exam_seq_num,
2947 grading_schema_cd = p_unitass_item_rec.grading_schema_cd,
2948 gs_version_number = p_unitass_item_rec.gs_version_number,
2949 release_date = p_unitass_item_rec.release_date,
2950 description = p_unitass_item_rec.description,
2951 midterm_mandatory_type_code = p_unitass_item_rec.midterm_mandatory_type_code,
2952 midterm_weight_qty = p_unitass_item_rec.midterm_weight_qty_item,
2953 final_mandatory_type_code = p_unitass_item_rec.final_mandatory_type_code,
2954 final_weight_qty = p_unitass_item_rec.final_weight_qty_item,
2955 last_updated_by = g_n_user_id,
2956 last_update_date = SYSDATE,
2957 last_update_login = g_n_login_id
2958 WHERE uoo_id = l_n_uoo_id
2959 AND ass_id = p_unitass_item_rec.assessment_id
2960 AND sequence_number=p_unitass_item_rec.sequence_number;
2961
2962 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2963 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.Status_record_updated',
2964 'Unit code:'||p_unitass_item_rec.unit_cd||' '||'Version number:'||p_unitass_item_rec.version_number||' '||'teach_cal_alternate_code:'
2965 ||p_unitass_item_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_unitass_item_rec.location_cd||' '||'Unit Class:'||
2966 p_unitass_item_rec.unit_class||' '||'Assesment_id:'||p_unitass_item_rec.assessment_id||' '||'sequence_number:'||p_unitass_item_rec.sequence_number);
2967 END IF;
2968
2969 END IF;
2970 END IF;
2971
2972 END create_item;
2973
2974
2975 /* Main Unit Section Assessment groups/item Sub Process */
2976 BEGIN
2977
2978 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
2979 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.start_logging_for',
2980 'Unit Section Assessment groups/item ');
2981 END IF;
2982
2983 p_c_rec_status := 'S';
2984 FOR I in 1..p_usec_ass_item_grp_tbl.LAST LOOP
2985 l_n_uoo_id:= NULL;
2986 IF p_usec_ass_item_grp_tbl.EXISTS(I) THEN
2987 p_usec_ass_item_grp_tbl(I).status := 'S';
2988 p_usec_ass_item_grp_tbl(I).msg_from := fnd_msg_pub.count_msg;
2989 trim_values(p_usec_ass_item_grp_tbl(I) );
2990
2991 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2992 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.call',
2993 'Unit code:'||p_usec_ass_item_grp_tbl(I).unit_cd||' '||'Version number:'||p_usec_ass_item_grp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
2994 ||p_usec_ass_item_grp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ass_item_grp_tbl(I).location_cd||' '||'Unit Class:'||
2995 p_usec_ass_item_grp_tbl(I).unit_class);
2996 END IF;
2997
2998 -- unit section assesment item group
2999 create_group(p_usec_ass_item_grp_tbl(I));
3000
3001 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3002 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_group.status_after_record_creation',
3003 'Unit code:'||p_usec_ass_item_grp_tbl(I).unit_cd||' '||'Version number:'||p_usec_ass_item_grp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
3004 ||p_usec_ass_item_grp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ass_item_grp_tbl(I).location_cd||' '||'Unit Class:'||
3005 p_usec_ass_item_grp_tbl(I).unit_class||' '||'Status:'||p_usec_ass_item_grp_tbl(I).status);
3006 END IF;
3007
3008 -- Create section assesment items
3009 IF p_usec_ass_item_grp_tbl(I).status = 'S' THEN
3010 IF p_usec_ass_item_grp_tbl(I).assessment_id IS NOT NULL THEN
3011
3012 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3013 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.call',
3014 'Unit code:'||p_usec_ass_item_grp_tbl(I).unit_cd||' '||'Version number:'||p_usec_ass_item_grp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
3015 ||p_usec_ass_item_grp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ass_item_grp_tbl(I).location_cd||' '||'Unit Class:'||
3016 p_usec_ass_item_grp_tbl(I).unit_class||' '||'Assesment_id:'||p_usec_ass_item_grp_tbl(I).assessment_id);
3017 END IF;
3018
3019 create_item(p_usec_ass_item_grp_tbl(I));
3020
3021 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3022 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.create_item.status_after_record_creation',
3023 'Unit code:'||p_usec_ass_item_grp_tbl(I).unit_cd||' '||'Version number:'||p_usec_ass_item_grp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
3024 ||p_usec_ass_item_grp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ass_item_grp_tbl(I).location_cd||' '||'Unit Class:'||
3025 p_usec_ass_item_grp_tbl(I).unit_class||' '||'Assesment_id:'||p_usec_ass_item_grp_tbl(I).assessment_id||' '||
3026 'Status:'||p_usec_ass_item_grp_tbl(I).status);
3027 END IF;
3028
3029 END IF;
3030 END IF;
3031
3032 IF p_usec_ass_item_grp_tbl(I).status = 'S' THEN
3033 p_usec_ass_item_grp_tbl(I).msg_from := NULL;
3034 p_usec_ass_item_grp_tbl(I).msg_to := NULL;
3035 ELSIF p_usec_ass_item_grp_tbl(I).status = 'A' THEN
3036 p_usec_ass_item_grp_tbl(I).msg_from := p_usec_ass_item_grp_tbl(I).msg_from + 1;
3037 p_usec_ass_item_grp_tbl(I).msg_to := fnd_msg_pub.count_msg;
3038 ELSE
3039 p_c_rec_status := p_usec_ass_item_grp_tbl(I).status;
3040 p_usec_ass_item_grp_tbl(I).msg_from := p_usec_ass_item_grp_tbl(I).msg_from + 1;
3041 p_usec_ass_item_grp_tbl(I).msg_to := fnd_msg_pub.count_msg;
3042 IF p_c_rec_status = 'E' THEN
3043 RETURN;
3044 END IF;
3045 END IF;
3046 END IF;--exists
3047 END LOOP;
3048
3049 /* Post Insert/Update Checks */
3050 IF NOT igs_ps_validate_generic_pkg.post_as_us_ai(p_usec_ass_item_grp_tbl,l_tbl_uoo) THEN
3051 p_c_rec_status := 'E';
3052 END IF;
3053
3054 l_tbl_uoo.DELETE;
3055
3056 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
3057 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ass_item_grp.after_import_status',p_c_rec_status);
3058 END IF;
3059
3060
3061 END create_usec_ass_item_grp;
3062 /* END OF UNIT SECTION ASSESMENT ITEM GROUPS */
3063
3064 --start of Meet with class group
3065 PROCEDURE create_usec_meet_with(
3066 p_usec_meet_with_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_tbl_type,
3067 p_c_rec_status OUT NOCOPY VARCHAR2,
3068 p_calling_context IN VARCHAR2
3069 ) AS
3070 /***********************************************************************************************
3071 Created By : SOMMUKHE
3072 Date Created By: 17-Jun-2005
3073 Purpose : This procedure is a sub process to import records of meet with group.
3074
3075 Known limitations,enhancements,remarks:
3076 Change History (in reverse chronological order)
3077 Who When What
3078 ********************************************************************************************** */
3079
3080 l_n_class_meet_group_id igs_ps_uso_cm_grp.class_meet_group_id%type;
3081 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
3082 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
3083 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
3084 l_insert_update VARCHAR2(1);
3085
3086 FUNCTION ifexists(p_n_class_meet_group_id igs_ps_uso_cm_grp.class_meet_group_id%type,
3087 p_old_max_enr_group igs_ps_uso_cm_grp.max_enr_group%TYPE
3088 ) RETURN BOOLEAN AS
3089 BEGIN
3090 FOR I in 1..class_meet_tab.count LOOP
3091 IF p_n_class_meet_group_id = class_meet_tab(i).class_meet_group_id THEN
3092 class_meet_tab(i).old_max_enr_group:= p_old_max_enr_group;
3093 RETURN TRUE;
3094 END IF;
3095 END LOOP;
3096 RETURN FALSE;
3097 END ifexists;
3098
3099
3100 /* Private Procedures for create_usec_grd_sch */
3101 PROCEDURE trim_values ( p_usec_meet_with_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type ) AS
3102 BEGIN
3103 p_usec_meet_with_rec.unit_cd := trim(p_usec_meet_with_rec.unit_cd);
3104 p_usec_meet_with_rec.version_number := trim(p_usec_meet_with_rec.version_number);
3105 p_usec_meet_with_rec.teach_cal_alternate_code := trim(p_usec_meet_with_rec.teach_cal_alternate_code);
3106 p_usec_meet_with_rec.location_cd := trim(p_usec_meet_with_rec.location_cd);
3107 p_usec_meet_with_rec.unit_class := trim(p_usec_meet_with_rec.unit_class);
3108 p_usec_meet_with_rec.class_meet_group_name := trim(p_usec_meet_with_rec.class_meet_group_name);
3109 p_usec_meet_with_rec.max_enr_group := trim(p_usec_meet_with_rec.max_enr_group);
3110 p_usec_meet_with_rec.max_ovr_group := trim(p_usec_meet_with_rec.max_ovr_group);
3111 p_usec_meet_with_rec.host := trim(p_usec_meet_with_rec.host);
3112
3113 END trim_values;
3114
3115
3116 PROCEDURE create_uso_cm_grp( p_uso_cm_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type ) AS
3117
3118 l_n_tbl_cnt NUMBER;
3119
3120 PROCEDURE validate_parameters ( p_uso_cm_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type ) AS
3121 BEGIN
3122
3123 /* Check for Mandatory Parameters */
3124 IF p_uso_cm_grp_rec.teach_cal_alternate_code IS NULL OR p_uso_cm_grp_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
3125 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
3126 p_uso_cm_grp_rec.status := 'E';
3127 END IF;
3128 IF p_uso_cm_grp_rec.class_meet_group_name IS NULL OR p_uso_cm_grp_rec.class_meet_group_name = FND_API.G_MISS_CHAR THEN
3129 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'GROUP_NAME', 'LEGACY_TOKENS', FALSE);
3130 p_uso_cm_grp_rec.status := 'E';
3131 END IF;
3132
3133 END validate_parameters;
3134
3135 -- Check for Update
3136 FUNCTION check_insert_update ( p_uso_cm_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type ) RETURN VARCHAR2 IS
3137 CURSOR c_uso_cm_grp(cp_cm_grp_name VARCHAR2) IS
3138 SELECT 'X'
3139 FROM igs_ps_uso_cm_grp
3140 WHERE class_meet_group_name =cp_cm_grp_name
3141 AND Cal_type=l_c_cal_type
3142 AND ci_sequence_number=l_n_seq_num;
3143
3144 c_uso_cm_grp_rec c_uso_cm_grp%ROWTYPE;
3145
3146 BEGIN
3147
3148 OPEN c_uso_cm_grp( p_uso_cm_grp_rec.class_meet_group_name);
3149 FETCH c_uso_cm_grp INTO c_uso_cm_grp_rec;
3150 IF c_uso_cm_grp%NOTFOUND THEN
3151 CLOSE c_uso_cm_grp;
3152 RETURN 'I';
3153 ELSE
3154 CLOSE c_uso_cm_grp;
3155 RETURN 'U';
3156 END IF;
3157
3158 END check_insert_update;
3159
3160 -- Carry out derivations and validate them
3161 PROCEDURE validate_derivations ( p_uso_cm_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type) AS
3162
3163 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
3164 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
3165 l_c_message VARCHAR2(30);
3166 BEGIN
3167
3168
3169 -- Derive Calander Type and Sequence Number
3170 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_uso_cm_grp_rec.teach_cal_alternate_code,
3171 p_cal_type => l_c_cal_type,
3172 p_ci_sequence_number => l_n_seq_num,
3173 p_start_dt => l_d_start_dt,
3174 p_end_dt => l_d_end_dt,
3175 p_return_status => l_c_message );
3176 IF ( l_c_message <> 'SINGLE' ) THEN
3177 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
3178 p_uso_cm_grp_rec.status := 'E';
3179 END IF;
3180
3181
3182 END validate_derivations;
3183
3184 PROCEDURE Assign_default( p_uso_cm_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type,p_insert_update VARCHAR2 ) AS
3185
3186 CURSOR c_uso_cm_grp(cp_cm_grp_name VARCHAR2) IS
3187 SELECT *
3188 FROM igs_ps_uso_cm_grp
3189 WHERE class_meet_group_name =cp_cm_grp_name
3190 AND cal_type=l_c_cal_type
3191 AND ci_sequence_number=l_n_seq_num;
3192
3193 c_uso_cm_grp_rec c_uso_cm_grp%ROWTYPE;
3194
3195 BEGIN
3196
3197 IF p_insert_update = 'U' THEN
3198 OPEN c_uso_cm_grp(p_uso_cm_grp_rec.class_meet_group_name);
3199 FETCH c_uso_cm_grp INTO c_uso_cm_grp_rec;
3200 CLOSE c_uso_cm_grp;
3201 l_n_class_meet_group_id := c_uso_cm_grp_rec.class_meet_group_id;
3202
3203 IF p_uso_cm_grp_rec.max_enr_group IS NULL THEN
3204 p_uso_cm_grp_rec.max_enr_group := c_uso_cm_grp_rec.max_enr_group;
3205 ELSIF p_uso_cm_grp_rec.max_enr_group = FND_API.G_MISS_NUM THEN
3206 p_uso_cm_grp_rec.max_enr_group :=NULL;
3207 END IF;
3208
3209 IF p_uso_cm_grp_rec.max_ovr_group IS NULL THEN
3210 p_uso_cm_grp_rec.max_ovr_group := c_uso_cm_grp_rec.max_ovr_group;
3211 ELSIF p_uso_cm_grp_rec.max_ovr_group = FND_API.G_MISS_NUM THEN
3212 p_uso_cm_grp_rec.max_ovr_group :=NULL;
3213 END IF;
3214
3215 END IF;
3216
3217 END Assign_default;
3218
3219 -- Validate Database Constraints
3220 PROCEDURE validate_db_cons ( p_uso_cm_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type,p_insert_update VARCHAR2 ) AS
3221 BEGIN
3222 IF (p_insert_update = 'I') THEN
3223 /* Unique Key Validation */
3224 IF igs_ps_uso_cm_grp_pkg.get_uk_for_validation (x_class_meet_group_name=>p_uso_cm_grp_rec.class_meet_group_name,
3225 x_cal_type=>l_c_cal_type,
3226 x_ci_sequence_number=>l_n_seq_num) THEN
3227 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_MEET_WITH_CLASS_GROUP', 'LEGACY_TOKENS', FALSE);
3228 p_uso_cm_grp_rec.status := 'W';
3229 RETURN;
3230 END IF;
3231 END IF;
3232
3233
3234 --Check constraint
3235 IF p_uso_cm_grp_rec.max_enr_group IS NOT NULL THEN
3236 IF p_uso_cm_grp_rec.max_enr_group <1 OR p_uso_cm_grp_rec.max_enr_group >999999 THEN
3237 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'MAX_ENR_GROUP', 'LEGACY_TOKENS', FALSE);
3238 p_uso_cm_grp_rec.status := 'E';
3239 END IF;
3240
3241 --Format mask validation
3242 IF p_uso_cm_grp_rec.status <> 'E' THEN
3243 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_uso_cm_grp_rec.max_enr_group,6,0) THEN
3244 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'MAX_ENR_GROUP', 'LEGACY_TOKENS', FALSE);
3245 p_uso_cm_grp_rec.status :='E';
3246 END IF;
3247 END IF;
3248
3249 END IF;
3250
3251 IF p_uso_cm_grp_rec.max_ovr_group IS NOT NULL THEN
3252 IF p_uso_cm_grp_rec.max_ovr_group <1 OR p_uso_cm_grp_rec.max_ovr_group >999999 THEN
3253 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'MAX_OVR_GROUP', 'LEGACY_TOKENS', FALSE);
3254 p_uso_cm_grp_rec.status := 'E';
3255 END IF;
3256
3257 --Format mask validation
3258 IF p_uso_cm_grp_rec.status <> 'E' THEN
3259 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_uso_cm_grp_rec.max_ovr_group,6,0) THEN
3260 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'MAX_OVR_GROUP', 'LEGACY_TOKENS', FALSE);
3261 p_uso_cm_grp_rec.status :='E';
3262 END IF;
3263 END IF;
3264
3265 END IF;
3266
3267 /* Validate FK Constraints*/
3268 IF NOT igs_ca_inst_pkg.get_pk_for_validation (x_cal_type =>l_c_cal_type,
3269 x_sequence_number =>l_n_seq_num) THEN
3270 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
3271 p_uso_cm_grp_rec.status := 'E';
3272 END IF;
3273
3274 END validate_db_cons;
3275
3276 -- Main section for meet with group header.
3277 BEGIN
3278
3279 IF p_uso_cm_grp_rec.status = 'S' THEN
3280 validate_parameters(p_uso_cm_grp_rec);
3281
3282 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3283 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.status_after_validate_parameters',
3284 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3285 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3286 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name
3287 ||' '||'Status:'|| p_uso_cm_grp_rec.status);
3288 END IF;
3289
3290 END IF;
3291
3292
3293 IF p_uso_cm_grp_rec.status = 'S' THEN
3294 validate_derivations(p_uso_cm_grp_rec);
3295
3296 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3297 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.status_after_validate_derivations',
3298 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3299 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3300 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name
3301 ||' '||'Status:'|| p_uso_cm_grp_rec.status);
3302 END IF;
3303
3304 END IF;
3305
3306 --Find out whether it is insert/update of record
3307 l_insert_update:='I';
3308 IF p_uso_cm_grp_rec.status = 'S' AND p_calling_context IN ('G','S') THEN
3309 l_insert_update:= check_insert_update(p_uso_cm_grp_rec);
3310
3311 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3312 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.status_after_check_insert_update',
3313 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3314 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3315 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name
3316 ||' '||'Status:'|| p_uso_cm_grp_rec.status);
3317 END IF;
3318
3319 END IF;
3320
3321 -- Find out whether record can go for import in context of cancelled/aborted
3322 IF p_uso_cm_grp_rec.status = 'S' AND p_calling_context = 'S' THEN
3323 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
3324 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
3325 fnd_msg_pub.add;
3326 p_uso_cm_grp_rec.status := 'A';
3327 END IF;
3328
3329 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3330 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.status_after_check_import_allowed',
3331 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3332 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3333 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name
3334 ||' '||'Status:'|| p_uso_cm_grp_rec.status);
3335 END IF;
3336
3337
3338 END IF;
3339
3340 IF p_uso_cm_grp_rec.status = 'S' THEN
3341 Assign_default(p_uso_cm_grp_rec,l_insert_update);
3342
3343 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3344 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.status_after_Assign_default',
3345 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3346 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3347 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name
3348 ||' '||'Status:'|| p_uso_cm_grp_rec.status);
3349 END IF;
3350
3351 END IF;
3352
3353 IF p_uso_cm_grp_rec.status = 'S' THEN
3354 validate_db_cons(p_uso_cm_grp_rec,l_insert_update);
3355
3356 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3357 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.status_after_validate_db_cons',
3358 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3359 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3360 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name
3361 ||' '||'Status:'|| p_uso_cm_grp_rec.status);
3362 END IF;
3363
3364
3365
3366 END IF;
3367
3368 IF p_uso_cm_grp_rec.status = 'S' THEN
3369 igs_ps_validate_generic_pkg.validate_uso_cm_grp(p_uso_cm_grp_rec, l_c_cal_type,l_n_seq_num,l_insert_update,class_meet_rec);
3370
3371 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3372 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.status_after_Business_validation',
3373 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3374 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3375 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name
3376 ||' '||'Status:'|| p_uso_cm_grp_rec.status);
3377 END IF;
3378
3379 END IF;
3380
3381
3382
3383 IF p_uso_cm_grp_rec.status = 'S' THEN
3384 IF l_insert_update = 'I' THEN
3385 /* Insert Record */
3386 INSERT INTO igs_ps_uso_cm_grp
3387 (class_meet_group_id,
3388 class_meet_group_name,
3389 cal_type,
3390 ci_sequence_number ,
3391 created_by,
3392 creation_date,
3393 last_updated_by,
3394 last_update_date,
3395 last_update_login,
3396 max_enr_group,
3397 max_ovr_group
3398 )
3399 VALUES
3400 (igs_ps_uso_cm_grp_s.NEXTVAL,
3401 p_uso_cm_grp_rec.class_meet_group_name,
3402 l_c_cal_type,
3403 l_n_seq_num,
3404 g_n_user_id,
3405 SYSDATE,
3406 g_n_user_id,
3407 SYSDATE,
3408 g_n_login_id,
3409 p_uso_cm_grp_rec.max_enr_group,
3410 p_uso_cm_grp_rec.max_ovr_group
3411 ) RETURNING class_meet_group_id INTO l_n_class_meet_group_id;
3412
3413
3414 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3415 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.Record_Inserted',
3416 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3417 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3418 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name);
3419 END IF;
3420
3421 ELSE --update
3422 UPDATE igs_ps_uso_cm_grp
3423 SET max_enr_group=p_uso_cm_grp_rec.max_enr_group,
3424 max_ovr_group=p_uso_cm_grp_rec.max_ovr_group,
3425 last_updated_by = g_n_user_id,
3426 last_update_date = SYSDATE,
3427 last_update_login = g_n_login_id
3428 WHERE class_meet_group_name =p_uso_cm_grp_rec.class_meet_group_name
3429 AND cal_type = l_c_cal_type
3430 AND ci_sequence_number =l_n_seq_num;
3431
3432 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3433 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.Record_Updated',
3434 'Unit code:'||p_uso_cm_grp_rec.unit_cd||' '||'Version number:'||p_uso_cm_grp_rec.version_number||' '||'teach_cal_alternate_code:'
3435 ||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_cm_grp_rec.location_cd||' '||'Unit Class:'||
3436 p_uso_cm_grp_rec.unit_class||' '||'Class meet group name:'||p_uso_cm_grp_rec.class_meet_group_name);
3437 END IF;
3438 END IF;
3439
3440
3441 --populate the plsql table with unique cmgids
3442 IF class_meet_tab.count = 0 THEN
3443 l_n_tbl_cnt :=class_meet_tab.count+1;
3444 class_meet_tab(l_n_tbl_cnt).class_meet_group_name:= class_meet_rec.class_meet_group_name;
3445 class_meet_tab(l_n_tbl_cnt).class_meet_group_id :=l_n_class_meet_group_id;
3446 class_meet_tab(l_n_tbl_cnt).old_max_enr_group:=class_meet_rec.old_max_enr_group;
3447 ELSE
3448 IF NOT ifexists(l_n_class_meet_group_id,class_meet_rec.old_max_enr_group) THEN
3449 l_n_tbl_cnt :=class_meet_tab.count+1;
3450 class_meet_tab(l_n_tbl_cnt).class_meet_group_name:= class_meet_rec.class_meet_group_name;
3451 class_meet_tab(l_n_tbl_cnt).class_meet_group_id :=l_n_class_meet_group_id;
3452 class_meet_tab(l_n_tbl_cnt).old_max_enr_group:=class_meet_rec.old_max_enr_group;
3453 END IF;
3454 END IF;
3455
3456 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3457 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.Count_unique cmgids',
3458 'teach_cal_alternate_code:'||p_uso_cm_grp_rec.teach_cal_alternate_code||' '||'Class meet group name'
3459 ||p_uso_cm_grp_rec.class_meet_group_name||' '||'Count:'||class_meet_tab.count);
3460 END IF;
3461
3462
3463 END IF;
3464
3465 END create_uso_cm_grp;
3466
3467 PROCEDURE create_uso_clas_meet( p_uso_clas_meet_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type ) AS
3468
3469 PROCEDURE validate_parameters_item ( p_uso_clas_meet_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type ) AS
3470 BEGIN
3471
3472 /* Check for Mandatory Parameters */
3473 IF p_uso_clas_meet_rec.unit_cd IS NULL OR p_uso_clas_meet_rec.unit_cd = FND_API.G_MISS_CHAR THEN
3474 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
3475 p_uso_clas_meet_rec.status := 'E';
3476 END IF;
3477 IF p_uso_clas_meet_rec.version_number IS NULL OR p_uso_clas_meet_rec.version_number = FND_API.G_MISS_NUM THEN
3478 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
3479 p_uso_clas_meet_rec.status := 'E';
3480 END IF;
3481 IF p_uso_clas_meet_rec.teach_cal_alternate_code IS NULL OR p_uso_clas_meet_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
3482 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
3483 p_uso_clas_meet_rec.status := 'E';
3484 END IF;
3485 IF p_uso_clas_meet_rec.location_cd IS NULL OR p_uso_clas_meet_rec.location_cd = FND_API.G_MISS_CHAR THEN
3486 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
3487 p_uso_clas_meet_rec.status := 'E';
3488 END IF;
3489 IF p_uso_clas_meet_rec.unit_class IS NULL OR p_uso_clas_meet_rec.unit_class = FND_API.G_MISS_CHAR THEN
3490 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
3491 p_uso_clas_meet_rec.status := 'E';
3492 END IF;
3493 IF p_uso_clas_meet_rec.host IS NULL OR p_uso_clas_meet_rec.host = FND_API.G_MISS_CHAR THEN
3494 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'HOST', 'LEGACY_TOKENS', FALSE);
3495 p_uso_clas_meet_rec.status := 'E';
3496 END IF;
3497
3498 END validate_parameters_item;
3499
3500 -- Check for Update
3501 FUNCTION check_insert_update_item ( p_uso_clas_meet_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type ) RETURN VARCHAR2 IS
3502 CURSOR c_uso_clas_meet(cp_n_uoo_id NUMBER) IS
3503 SELECT 'X'
3504 FROM igs_ps_uso_clas_meet
3505 WHERE uoo_id = cp_n_uoo_id;
3506
3507 c_uso_clas_meet_rec c_uso_clas_meet%ROWTYPE;
3508 BEGIN
3509 OPEN c_uso_clas_meet(l_n_uoo_id);
3510 FETCH c_uso_clas_meet INTO c_uso_clas_meet_rec;
3511 IF c_uso_clas_meet%NOTFOUND THEN
3512 CLOSE c_uso_clas_meet;
3513 RETURN 'I';
3514 ELSE
3515 CLOSE c_uso_clas_meet;
3516 RETURN 'U';
3517 END IF;
3518
3519 END check_insert_update_item;
3520
3521 -- Carry out derivations and validate them
3522 PROCEDURE validate_derivations_item ( p_uso_clas_meet_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type) AS
3523
3524 l_c_message VARCHAR2(30);
3525
3526 BEGIN
3527
3528 -- Derive uoo_id
3529 l_c_message := NULL;
3530 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_uso_clas_meet_rec.unit_cd,
3531 p_ver_num => p_uso_clas_meet_rec.version_number,
3532 p_cal_type => l_c_cal_type,
3533 p_seq_num => l_n_seq_num,
3534 p_loc_cd => p_uso_clas_meet_rec.location_cd,
3535 p_unit_class => p_uso_clas_meet_rec.unit_class,
3536 p_uoo_id => l_n_uoo_id,
3537 p_message => l_c_message );
3538 IF ( l_c_message IS NOT NULL ) THEN
3539 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
3540 p_uso_clas_meet_rec.status := 'E';
3541 END IF;
3542
3543 END validate_derivations_item;
3544
3545
3546 -- Validate Database Constraints
3547 PROCEDURE validate_db_cons_cm ( p_uso_clas_meet_rec IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_rec_type,p_insert_update VARCHAR2 ) AS
3548 BEGIN
3549 IF (p_insert_update = 'I') THEN
3550 /* Unique Key Validation */
3551 IF igs_ps_uso_clas_meet_pkg.get_uk_for_validation (x_uoo_id =>l_n_uoo_id) THEN
3552 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
3553 p_uso_clas_meet_rec.status := 'W';
3554 RETURN;
3555 END IF;
3556 END IF;
3557
3558 /* Check constraint */
3559 IF p_uso_clas_meet_rec.host NOT IN ('Y','N') THEN
3560 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'HOST', 'LEGACY_TOKENS', FALSE);
3561 p_uso_clas_meet_rec.status := 'E';
3562 END IF;
3563
3564 /* Validate FK Constraints */
3565 IF NOT igs_ps_uso_cm_grp_pkg.get_pk_for_validation ( l_n_class_meet_group_id ) THEN
3566 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_MEET_WITH_CLASS_GROUP', 'LEGACY_TOKENS', FALSE);
3567 p_uso_clas_meet_rec.status := 'E';
3568 END IF;
3569
3570 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
3571 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
3572 p_uso_clas_meet_rec.status := 'E';
3573 END IF;
3574
3575 END validate_db_cons_cm;
3576
3577 -- Main section for meet with group child.
3578 BEGIN
3579
3580
3581 IF p_uso_clas_meet_rec.status = 'S' THEN
3582 validate_parameters_item(p_uso_clas_meet_rec);
3583
3584 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3585 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.status_after_validate_parameters_item',
3586 'Unit code:'||p_uso_clas_meet_rec.unit_cd||' '||'Version number:'||p_uso_clas_meet_rec.version_number||' '||'teach_cal_alternate_code:'
3587 ||p_uso_clas_meet_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_clas_meet_rec.location_cd||' '||'Unit Class:'||
3588 p_uso_clas_meet_rec.unit_class||' '||'Class meet group name:'||p_uso_clas_meet_rec.class_meet_group_name||' '||'Status:'|| p_uso_clas_meet_rec.status);
3589 END IF;
3590 END IF;
3591
3592
3593 IF p_uso_clas_meet_rec.status = 'S' THEN
3594 validate_derivations_item(p_uso_clas_meet_rec);
3595
3596 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3597 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.status_after_validate_derivations_item',
3598 'Unit code:'||p_uso_clas_meet_rec.unit_cd||' '||'Version number:'||p_uso_clas_meet_rec.version_number||' '||'teach_cal_alternate_code:'
3599 ||p_uso_clas_meet_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_clas_meet_rec.location_cd||' '||'Unit Class:'||
3600 p_uso_clas_meet_rec.unit_class||' '||'Class meet group name:'||p_uso_clas_meet_rec.class_meet_group_name||' '||'Status:'|| p_uso_clas_meet_rec.status);
3601 END IF;
3602
3603 END IF;
3604
3605 l_insert_update:='I';
3606
3607 --Find out whether it is insert/update of record
3608 IF p_uso_clas_meet_rec.status = 'S' AND p_calling_context IN ('G','S') THEN
3609 l_insert_update:= check_insert_update_item(p_uso_clas_meet_rec);
3610
3611 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3612 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.status_after_check_insert_update_item',
3613 'Unit code:'||p_uso_clas_meet_rec.unit_cd||' '||'Version number:'||p_uso_clas_meet_rec.version_number||' '||'teach_cal_alternate_code:'
3614 ||p_uso_clas_meet_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_clas_meet_rec.location_cd||' '||'Unit Class:'||
3615 p_uso_clas_meet_rec.unit_class||' '||'Class meet group name:'||p_uso_clas_meet_rec.class_meet_group_name||' '||'Status:'|| p_uso_clas_meet_rec.status);
3616 END IF;
3617
3618 END IF;
3619
3620 IF p_uso_clas_meet_rec.status = 'S' AND p_calling_context = 'S' THEN
3621 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
3622 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
3623 fnd_msg_pub.add;
3624 p_uso_clas_meet_rec.status := 'A';
3625 END IF;
3626
3627 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3628 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.status_after_check_import_allowed',
3629 'Unit code:'||p_uso_clas_meet_rec.unit_cd||' '||'Version number:'||p_uso_clas_meet_rec.version_number||' '||'teach_cal_alternate_code:'
3630 ||p_uso_clas_meet_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_clas_meet_rec.location_cd||' '||'Unit Class:'||
3631 p_uso_clas_meet_rec.unit_class||' '||'Class meet group name:'||p_uso_clas_meet_rec.class_meet_group_name||' '||'Status:'|| p_uso_clas_meet_rec.status);
3632 END IF;
3633
3634 END IF;
3635
3636 IF p_uso_clas_meet_rec.status = 'S' THEN
3637 validate_db_cons_cm(p_uso_clas_meet_rec,l_insert_update);
3638
3639 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3640 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.status_after_validate_db_cons_cm',
3641 'Unit code:'||p_uso_clas_meet_rec.unit_cd||' '||'Version number:'||p_uso_clas_meet_rec.version_number||' '||'teach_cal_alternate_code:'
3642 ||p_uso_clas_meet_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_clas_meet_rec.location_cd||' '||'Unit Class:'||
3643 p_uso_clas_meet_rec.unit_class||' '||'Class meet group name:'||p_uso_clas_meet_rec.class_meet_group_name||' '||'Status:'|| p_uso_clas_meet_rec.status);
3644 END IF;
3645
3646 END IF;
3647
3648
3649 IF p_uso_clas_meet_rec.status = 'S' THEN
3650 igs_ps_validate_generic_pkg.validate_uso_clas_meet(p_uso_clas_meet_rec,l_n_uoo_id,l_n_class_meet_group_id,l_c_cal_type,l_n_seq_num);
3651
3652 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3653 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.status_after_Business_validation',
3654 'Unit code:'||p_uso_clas_meet_rec.unit_cd||' '||'Version number:'||p_uso_clas_meet_rec.version_number||' '||'teach_cal_alternate_code:'
3655 ||p_uso_clas_meet_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_clas_meet_rec.location_cd||' '||'Unit Class:'||
3656 p_uso_clas_meet_rec.unit_class||' '||'Class meet group name:'||p_uso_clas_meet_rec.class_meet_group_name||' '||'Status:'|| p_uso_clas_meet_rec.status);
3657 END IF;
3658
3659 END IF;
3660
3661 IF p_uso_clas_meet_rec.status = 'S' THEN
3662 IF l_insert_update = 'I' THEN
3663 /* Insert Record */
3664 INSERT INTO igs_ps_uso_clas_meet
3665 ( class_meet_id,
3666 class_meet_group_id,
3667 host,
3668 created_by,
3669 creation_date,
3670 last_updated_by,
3671 last_update_date,
3672 last_update_login,
3673 uoo_id
3674 )
3675 VALUES
3676 (igs_ps_uso_clas_meet_s.NEXTVAL,
3677 l_n_class_meet_group_id,
3678 p_uso_clas_meet_rec.host,
3679 g_n_user_id,
3680 SYSDATE,
3681 g_n_user_id,
3682 SYSDATE,
3683 g_n_login_id,
3684 l_n_uoo_id
3685 );
3686
3687 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3688 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.Record_Inserted',
3689 'Unit code:'||p_uso_clas_meet_rec.unit_cd||' '||'Version number:'||p_uso_clas_meet_rec.version_number||' '||'teach_cal_alternate_code:'
3690 ||p_uso_clas_meet_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_clas_meet_rec.location_cd||' '||'Unit Class:'||
3691 p_uso_clas_meet_rec.unit_class||' '||'Class meet group name:'||p_uso_clas_meet_rec.class_meet_group_name);
3692 END IF;
3693
3694 ELSE --update
3695 UPDATE igs_ps_uso_clas_meet
3696 SET host = p_uso_clas_meet_rec.host,
3697 last_updated_by = g_n_user_id,
3698 last_update_date = SYSDATE,
3699 last_update_login = g_n_login_id
3700 WHERE uoo_id = l_n_uoo_id;
3701
3702 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3703 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.Record_Updated',
3704 'Unit code:'||p_uso_clas_meet_rec.unit_cd||' '||'Version number:'||p_uso_clas_meet_rec.version_number||' '||'teach_cal_alternate_code:'
3705 ||p_uso_clas_meet_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_uso_clas_meet_rec.location_cd||' '||'Unit Class:'||
3706 p_uso_clas_meet_rec.unit_class||' '||'Class meet group name:'||p_uso_clas_meet_rec.class_meet_group_name);
3707 END IF;
3708
3709 END IF;
3710 END IF;
3711
3712 END create_uso_clas_meet;
3713
3714
3715 /* Main Meet-With Unit Section group Sub Process */
3716 BEGIN
3717
3718 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
3719 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.start_logging_for',
3720 'Meet-With Unit Section ');
3721 END IF;
3722
3723 p_c_rec_status := 'S';
3724 FOR I in 1..p_usec_meet_with_tbl.LAST LOOP
3725 l_c_cal_type:=NULL;
3726 l_n_seq_num:=NULL;
3727 l_n_uoo_id:= NULL;
3728 l_n_class_meet_group_id:= NULL;
3729
3730 IF p_usec_meet_with_tbl.EXISTS(I) THEN
3731 p_usec_meet_with_tbl(I).status := 'S';
3732 p_usec_meet_with_tbl(I).msg_from := fnd_msg_pub.count_msg;
3733 trim_values(p_usec_meet_with_tbl(I) );
3734
3735
3736 -- create meet with class group
3737 IF p_usec_meet_with_tbl(I).status = 'S' THEN
3738
3739 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3740 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.call',
3741 'Unit code:'||p_usec_meet_with_tbl(I).unit_cd||' '||'Version number:'||p_usec_meet_with_tbl(I).version_number||' '||'teach_cal_alternate_code:'
3742 ||p_usec_meet_with_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_meet_with_tbl(I).location_cd||' '||'Unit Class:'||
3743 p_usec_meet_with_tbl(I).unit_class||' '||'Class meet group name:'||p_usec_meet_with_tbl(I).class_meet_group_name);
3744 END IF;
3745
3746 create_uso_cm_grp(p_usec_meet_with_tbl(I));
3747
3748 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3749 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_cm_grp.status_after_creating_group_record',
3750 'Unit code:'||p_usec_meet_with_tbl(I).unit_cd||' '||'Version number:'||p_usec_meet_with_tbl(I).version_number||' '||'teach_cal_alternate_code:'
3751 ||p_usec_meet_with_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_meet_with_tbl(I).location_cd||' '||'Unit Class:'||
3752 p_usec_meet_with_tbl(I).unit_class||' '||'Class meet group name:'||p_usec_meet_with_tbl(I).class_meet_group_name
3753 ||' '||'Status:'|| p_usec_meet_with_tbl(I).status);
3754 END IF;
3755
3756 END IF;
3757
3758 -- Create child
3759 IF p_usec_meet_with_tbl(I).status = 'S' THEN
3760 IF p_usec_meet_with_tbl(I).unit_cd IS NOT NULL THEN
3761
3762 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3763 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.call',
3764 'Unit code:'||p_usec_meet_with_tbl(I).unit_cd||' '||'Version number:'||p_usec_meet_with_tbl(I).version_number||' '||'teach_cal_alternate_code:'
3765 ||p_usec_meet_with_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_meet_with_tbl(I).location_cd||' '||'Unit Class:'||
3766 p_usec_meet_with_tbl(I).unit_class||' '||'Class meet group name:'||p_usec_meet_with_tbl(I).class_meet_group_name);
3767 END IF;
3768
3769 create_uso_clas_meet(p_usec_meet_with_tbl(I));
3770
3771 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3772 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.create_uso_clas_meet.status_after_creating_item_record',
3773 'Unit code:'||p_usec_meet_with_tbl(I).unit_cd||' '||'Version number:'||p_usec_meet_with_tbl(I).version_number||' '||'teach_cal_alternate_code:'
3774 ||p_usec_meet_with_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_meet_with_tbl(I).location_cd||' '||'Unit Class:'||
3775 p_usec_meet_with_tbl(I).unit_class||' '||'Class meet group name:'||p_usec_meet_with_tbl(I).class_meet_group_name
3776 ||' '||'Status:'|| p_usec_meet_with_tbl(I).status);
3777 END IF;
3778
3779 END IF;
3780 END IF;
3781
3782 IF p_usec_meet_with_tbl(I).status = 'S' THEN
3783 p_usec_meet_with_tbl(I).msg_from := NULL;
3784 p_usec_meet_with_tbl(I).msg_to := NULL;
3785 ELSIF p_usec_meet_with_tbl(I).status = 'A' THEN
3786 p_usec_meet_with_tbl(I).msg_from := p_usec_meet_with_tbl(I).msg_from + 1;
3787 p_usec_meet_with_tbl(I).msg_to := fnd_msg_pub.count_msg;
3788 ELSE
3789 p_c_rec_status := p_usec_meet_with_tbl(I).status;
3790 p_usec_meet_with_tbl(I).msg_from := p_usec_meet_with_tbl(I).msg_from + 1;
3791 p_usec_meet_with_tbl(I).msg_to := fnd_msg_pub.count_msg;
3792 IF p_c_rec_status = 'E' THEN
3793 RETURN;
3794 END IF;
3795 END IF;
3796 END IF;--exists
3797 END LOOP;
3798
3799
3800 /* Post Insert/Update Checks */
3801 IF NOT igs_ps_validate_generic_pkg.post_usec_meet_with(p_usec_meet_with_tbl,class_meet_tab) THEN
3802 p_c_rec_status := 'E';
3803 END IF;
3804
3805 class_meet_tab.DELETE;
3806
3807 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
3808 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_meet_with.after_import_status',p_c_rec_status);
3809 END IF;
3810
3811 END create_usec_meet_with;
3812
3813 --This procedure is a sub process to import records of Cross-listed Unit Section Group .
3814 PROCEDURE create_usec_cross_group(
3815 p_usec_cross_group_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_tbl_type,
3816 p_c_rec_status OUT NOCOPY VARCHAR2,
3817 p_calling_context IN VARCHAR2
3818 ) AS
3819 /***********************************************************************************************
3820 Created By : SOMMUKHE
3821 Date Created By: 17-Jun-2005
3822 Purpose : This procedure is a sub process to import records of Cross-listed Unit Section Group.
3823
3824 Known limitations,enhancements,remarks:
3825 Change History (in reverse chronological order)
3826 Who When What
3827 ********************************************************************************************** */
3828
3829 l_n_usec_x_listed_group_id igs_ps_usec_x_grp.usec_x_listed_group_id%type;
3830 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
3831 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
3832 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
3833 l_insert_update VARCHAR2(1);
3834
3835 FUNCTION ifexists(p_n_usec_x_listed_group_id igs_ps_usec_x_grp.usec_x_listed_group_id%type,
3836 p_old_max_enr_group igs_ps_usec_x_grp.max_enr_group%TYPE) RETURN BOOLEAN AS
3837 BEGIN
3838 FOR I in 1..cross_group_tab.count LOOP
3839
3840 IF p_n_usec_x_listed_group_id = cross_group_tab(i).usec_x_listed_group_id THEN
3841 cross_group_tab(i).old_max_enr_group:= p_old_max_enr_group;
3842 RETURN TRUE;
3843 END IF;
3844 END LOOP;
3845 RETURN FALSE;
3846 END ifexists;
3847
3848
3849 /* Private Procedures for create_usec_grd_sch */
3850 PROCEDURE trim_values ( p_usec_cross_group_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type ) AS
3851 BEGIN
3852 p_usec_cross_group_rec.unit_cd := trim(p_usec_cross_group_rec.unit_cd);
3853 p_usec_cross_group_rec.version_number := trim(p_usec_cross_group_rec.version_number);
3854 p_usec_cross_group_rec.teach_cal_alternate_code := trim(p_usec_cross_group_rec.teach_cal_alternate_code);
3855 p_usec_cross_group_rec.location_cd := trim(p_usec_cross_group_rec.location_cd);
3856 p_usec_cross_group_rec.unit_class := trim(p_usec_cross_group_rec.unit_class);
3857 p_usec_cross_group_rec.usec_x_listed_group_name := trim(p_usec_cross_group_rec.usec_x_listed_group_name);
3858 p_usec_cross_group_rec.location_inheritance := trim(p_usec_cross_group_rec.location_inheritance);
3859 p_usec_cross_group_rec.max_enr_group := trim(p_usec_cross_group_rec.max_enr_group);
3860 p_usec_cross_group_rec.max_ovr_group := trim(p_usec_cross_group_rec.max_ovr_group);
3861 p_usec_cross_group_rec.parent := trim(p_usec_cross_group_rec.parent);
3862
3863 END trim_values;
3864
3865
3866 PROCEDURE create_usec_x_grp( p_usec_x_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type ) AS
3867
3868 l_n_tbl_cnt NUMBER;
3869
3870 PROCEDURE validate_parameters ( p_usec_x_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type ) AS
3871 BEGIN
3872
3873 /* Check for Mandatory Parameters */
3874 IF p_usec_x_grp_rec.teach_cal_alternate_code IS NULL OR p_usec_x_grp_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
3875 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
3876 p_usec_x_grp_rec.status := 'E';
3877 END IF;
3878
3879 IF p_usec_x_grp_rec.usec_x_listed_group_name IS NULL OR p_usec_x_grp_rec.usec_x_listed_group_name = FND_API.G_MISS_CHAR THEN
3880 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'GROUP_NAME', 'LEGACY_TOKENS', FALSE);
3881 p_usec_x_grp_rec.status := 'E';
3882 END IF;
3883
3884 END validate_parameters;
3885
3886 -- Check for Update
3887 FUNCTION check_insert_update ( p_usec_x_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type ) RETURN VARCHAR2 IS
3888 CURSOR c_usec_x_grp(cp_x_grp_name VARCHAR2) IS
3889 SELECT 'X'
3890 FROM igs_ps_usec_x_grp
3891 WHERE usec_x_listed_group_name = cp_x_grp_name
3892 AND cal_type = l_c_cal_type
3893 AND ci_sequence_number = l_n_seq_num;
3894 c_usec_x_grp_rec c_usec_x_grp%ROWTYPE;
3895 BEGIN
3896 OPEN c_usec_x_grp( p_usec_x_grp_rec.usec_x_listed_group_name);
3897 FETCH c_usec_x_grp INTO c_usec_x_grp_rec;
3898 IF c_usec_x_grp%NOTFOUND THEN
3899 CLOSE c_usec_x_grp;
3900 RETURN 'I';
3901 ELSE
3902 CLOSE c_usec_x_grp;
3903 RETURN 'U';
3904 END IF;
3905 END check_insert_update;
3906
3907 -- Carry out derivations and validate them
3908 PROCEDURE validate_derivations ( p_usec_x_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type) AS
3909 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
3910 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
3911 l_c_message VARCHAR2(30);
3912 BEGIN
3913
3914 -- Derive Calander Type and Sequence Number
3915 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_x_grp_rec.teach_cal_alternate_code,
3916 p_cal_type => l_c_cal_type,
3917 p_ci_sequence_number => l_n_seq_num,
3918 p_start_dt => l_d_start_dt,
3919 p_end_dt => l_d_end_dt,
3920 p_return_status => l_c_message );
3921 IF ( l_c_message <> 'SINGLE' ) THEN
3922 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
3923 p_usec_x_grp_rec.status := 'E';
3924 END IF;
3925
3926
3927 END validate_derivations;
3928
3929 PROCEDURE Assign_default( p_usec_x_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type,p_insert_update VARCHAR2 ) AS
3930
3931 CURSOR c_usec_x_grp(cp_x_grp_name VARCHAR2) IS
3932 SELECT *
3933 FROM igs_ps_usec_x_grp
3934 WHERE usec_x_listed_group_name =cp_x_grp_name
3935 AND cal_type=l_c_cal_type
3936 AND ci_sequence_number=l_n_seq_num;
3937
3938 c_usec_x_grp_rec c_usec_x_grp%ROWTYPE;
3939
3940 BEGIN
3941
3942 IF p_insert_update = 'U' THEN
3943 OPEN c_usec_x_grp(p_usec_x_grp_rec.usec_x_listed_group_name);
3944 FETCH c_usec_x_grp INTO c_usec_x_grp_rec;
3945 CLOSE c_usec_x_grp;
3946 l_n_usec_x_listed_group_id:= c_usec_x_grp_rec.usec_x_listed_group_id;
3947
3948 IF p_usec_x_grp_rec.max_enr_group IS NULL THEN
3949 p_usec_x_grp_rec.max_enr_group := c_usec_x_grp_rec.max_enr_group;
3950 ELSIF p_usec_x_grp_rec.max_enr_group = FND_API.G_MISS_NUM THEN
3951 p_usec_x_grp_rec.max_enr_group :=NULL;
3952 END IF;
3953
3954 IF p_usec_x_grp_rec.max_ovr_group IS NULL THEN
3955 p_usec_x_grp_rec.max_ovr_group := c_usec_x_grp_rec.max_ovr_group;
3956 ELSIF p_usec_x_grp_rec.max_ovr_group = FND_API.G_MISS_NUM THEN
3957 p_usec_x_grp_rec.max_ovr_group :=NULL;
3958 END IF;
3959
3960 IF p_usec_x_grp_rec.location_inheritance IS NULL THEN
3961 p_usec_x_grp_rec.location_inheritance := c_usec_x_grp_rec.location_inheritance;
3962 ELSIF p_usec_x_grp_rec.location_inheritance = FND_API.G_MISS_CHAR THEN
3963 p_usec_x_grp_rec.location_inheritance :='N';
3964 END IF;
3965 END IF;
3966
3967 END Assign_default;
3968
3969 -- Validate Database Constraints
3970 PROCEDURE validate_db_cons ( p_usec_x_grp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type,p_insert_update VARCHAR2 ) AS
3971 BEGIN
3972 IF (p_insert_update = 'I') THEN
3973 /* Unique Key Validation */
3974 IF igs_ps_usec_x_grp_pkg.get_uk_for_validation (x_usec_x_listed_group_name=>p_usec_x_grp_rec.usec_x_listed_group_name,
3975 x_cal_type=>l_c_cal_type,
3976 x_ci_sequence_number=>l_n_seq_num) THEN
3977 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_CROSS_LIST_GROUP', 'LEGACY_TOKENS', FALSE);
3978 p_usec_x_grp_rec.status := 'W';
3979 RETURN;
3980 END IF;
3981 END IF;
3982
3983 --Check constraint
3984 IF p_usec_x_grp_rec.max_enr_group IS NOT NULL THEN
3985 IF p_usec_x_grp_rec.max_enr_group <1 OR p_usec_x_grp_rec.max_enr_group >999999 THEN
3986 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'MAX_ENR_GROUP', 'LEGACY_TOKENS', FALSE);
3987 p_usec_x_grp_rec.status := 'E';
3988 END IF;
3989
3990 --Format mask validation
3991 IF p_usec_x_grp_rec.status <> 'E' THEN
3992 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_usec_x_grp_rec.max_enr_group,6,0) THEN
3993 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'MAX_ENR_GROUP', 'LEGACY_TOKENS', FALSE);
3994 p_usec_x_grp_rec.status :='E';
3995 END IF;
3996 END IF;
3997
3998 END IF;
3999
4000
4001 IF p_usec_x_grp_rec.max_ovr_group IS NOT NULL THEN
4002 IF p_usec_x_grp_rec.max_ovr_group <1 OR p_usec_x_grp_rec.max_ovr_group >999999 THEN
4003 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'MAX_OVR_GROUP', 'LEGACY_TOKENS', FALSE);
4004 p_usec_x_grp_rec.status := 'E';
4005 END IF;
4006
4007 --Format mask validation
4008 IF p_usec_x_grp_rec.status <> 'E' THEN
4009 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_usec_x_grp_rec.max_ovr_group,6,0) THEN
4010 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_1_999999', 'MAX_OVR_GROUP', 'LEGACY_TOKENS', FALSE);
4011 p_usec_x_grp_rec.status :='E';
4012 END IF;
4013 END IF;
4014
4015 END IF;
4016
4017 /* Validate FK Constraints*/
4018 IF NOT igs_ca_inst_pkg.get_pk_for_validation (x_cal_type =>l_c_cal_type,
4019 x_sequence_number =>l_n_seq_num) THEN
4020 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
4021 p_usec_x_grp_rec.status := 'E';
4022 END IF;
4023
4024
4025 END validate_db_cons;
4026
4027 -- Main section for assesment item group.
4028 BEGIN
4029
4030 IF p_usec_x_grp_rec.status = 'S' THEN
4031 validate_parameters(p_usec_x_grp_rec);
4032
4033 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4034 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.status_after_validate_parameters',
4035 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4036 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4037 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name
4038 ||' '||'Status:'|| p_usec_x_grp_rec.status);
4039 END IF;
4040
4041 END IF;
4042
4043 IF p_usec_x_grp_rec.status = 'S' THEN
4044 validate_derivations(p_usec_x_grp_rec);
4045
4046 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4047 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.status_after_validate_derivations',
4048 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4049 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4050 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name
4051 ||' '||'Status:'|| p_usec_x_grp_rec.status);
4052 END IF;
4053
4054 END IF;
4055
4056 --Find out whether it is insert/update of record
4057 l_insert_update:='I';
4058 IF p_usec_x_grp_rec.status = 'S' AND p_calling_context IN ('G','S') THEN
4059 l_insert_update:= check_insert_update(p_usec_x_grp_rec);
4060
4061 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4062 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.status_after_check_insert_update',
4063 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4064 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4065 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name
4066 ||' '||'Status:'|| p_usec_x_grp_rec.status);
4067 END IF;
4068
4069
4070 END IF;
4071
4072 -- Find out whether record can go for import in context of cancelled/aborted
4073 IF p_usec_x_grp_rec.status = 'S' AND p_calling_context = 'S' THEN
4074 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
4075 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
4076 fnd_msg_pub.add;
4077 p_usec_x_grp_rec.status := 'A';
4078 END IF;
4079
4080 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4081 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.status_after_check_import_allowed',
4082 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4083 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4084 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name
4085 ||' '||'Status:'|| p_usec_x_grp_rec.status);
4086 END IF;
4087
4088
4089 END IF;
4090
4091 IF p_usec_x_grp_rec.status = 'S' THEN
4092 Assign_default(p_usec_x_grp_rec,l_insert_update);
4093
4094 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4095 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.status_after_Assign_default',
4096 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4097 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4098 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name
4099 ||' '||'Status:'|| p_usec_x_grp_rec.status);
4100 END IF;
4101
4102 END IF;
4103
4104 IF p_usec_x_grp_rec.status = 'S' THEN
4105 validate_db_cons(p_usec_x_grp_rec,l_insert_update);
4106
4107 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4108 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.status_after_validate_db_cons',
4109 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4110 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4111 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name
4112 ||' '||'Status:'|| p_usec_x_grp_rec.status);
4113 END IF;
4114
4115 END IF;
4116
4117 IF p_usec_x_grp_rec.status = 'S' THEN
4118 igs_ps_validate_generic_pkg.validate_usec_x_grp(p_usec_x_grp_rec, l_c_cal_type,l_n_seq_num,l_insert_update,cross_group_rec);
4119
4120 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4121 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.status_after_Business_validation',
4122 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4123 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4124 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name
4125 ||' '||'Status:'|| p_usec_x_grp_rec.status);
4126 END IF;
4127
4128 END IF;
4129
4130 IF p_usec_x_grp_rec.status = 'S' THEN
4131 IF l_insert_update = 'I' THEN
4132 /* Insert Record */
4133 INSERT INTO igs_ps_usec_x_grp
4134 (usec_x_listed_group_id,
4135 usec_x_listed_group_name,
4136 location_inheritance,
4137 cal_type,
4138 ci_sequence_number ,
4139 created_by,
4140 creation_date,
4141 last_updated_by,
4142 last_update_date,
4143 last_update_login,
4144 max_enr_group,
4145 max_ovr_group
4146 )
4147 VALUES
4148 (igs_ps_usec_x_grp_s.NEXTVAL,
4149 p_usec_x_grp_rec.usec_x_listed_group_name,
4150 NVL(p_usec_x_grp_rec.location_inheritance,'Y'),
4151 l_c_cal_type,
4152 l_n_seq_num,
4153 g_n_user_id,
4154 SYSDATE,
4155 g_n_user_id,
4156 SYSDATE,
4157 g_n_login_id,
4158 p_usec_x_grp_rec.max_enr_group,
4159 p_usec_x_grp_rec.max_ovr_group
4160 ) RETURNING usec_x_listed_group_id INTO l_n_usec_x_listed_group_id;
4161
4162 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4163 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.Record_Inserted',
4164 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4165 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4166 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name);
4167 END IF;
4168
4169 ELSE --update
4170 UPDATE igs_ps_usec_x_grp
4171 SET max_enr_group=p_usec_x_grp_rec.max_enr_group,
4172 max_ovr_group=p_usec_x_grp_rec.max_ovr_group,
4173 last_updated_by = g_n_user_id,
4174 last_update_date = SYSDATE,
4175 last_update_login = g_n_login_id
4176 WHERE usec_x_listed_group_name =p_usec_x_grp_rec.usec_x_listed_group_name
4177 AND cal_type = l_c_cal_type
4178 AND ci_sequence_number =l_n_seq_num;
4179
4180 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4181 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.Record_Updated',
4182 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4183 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4184 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name);
4185 END IF;
4186
4187 END IF;
4188
4189 --populate the plsql table with unique cmgids
4190 IF cross_group_tab.count = 0 THEN
4191 l_n_tbl_cnt :=cross_group_tab.count+1;
4192 cross_group_tab(l_n_tbl_cnt).usec_x_listed_group_name:= cross_group_rec.usec_x_listed_group_name;
4193 cross_group_tab(l_n_tbl_cnt).usec_x_listed_group_id :=l_n_usec_x_listed_group_id;
4194 cross_group_tab(l_n_tbl_cnt).old_max_enr_group:=cross_group_rec.old_max_enr_group;
4195 ELSE
4196 IF NOT ifexists(l_n_usec_x_listed_group_id,cross_group_rec.old_max_enr_group) THEN
4197 l_n_tbl_cnt :=cross_group_tab.count+1;
4198 cross_group_tab(l_n_tbl_cnt).usec_x_listed_group_name:= cross_group_rec.usec_x_listed_group_name;
4199 cross_group_tab(l_n_tbl_cnt).usec_x_listed_group_id :=l_n_usec_x_listed_group_id;
4200 cross_group_tab(l_n_tbl_cnt).old_max_enr_group:=cross_group_rec.old_max_enr_group;
4201 END IF;
4202 END IF;
4203
4204 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4205 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.Count_unique_xgids',
4206 'Unit code:'||p_usec_x_grp_rec.unit_cd||' '||'Version number:'||p_usec_x_grp_rec.version_number||' '||'teach_cal_alternate_code:'
4207 ||p_usec_x_grp_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grp_rec.location_cd||' '||'Unit Class:'||
4208 p_usec_x_grp_rec.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grp_rec.usec_x_listed_group_name
4209 ||' '||'Count:'||cross_group_tab.count);
4210 END IF;
4211
4212
4213 END IF;
4214
4215 END create_usec_x_grp;
4216
4217 PROCEDURE create_usec_x_grpmem( p_usec_x_grpmem IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type ) AS
4218
4219
4220
4221
4222
4223 PROCEDURE validate_parameters_item ( p_usec_x_grpmem IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type ) AS
4224 BEGIN
4225
4226 /* Check for Mandatory Parameters */
4227 IF p_usec_x_grpmem.unit_cd IS NULL OR p_usec_x_grpmem.unit_cd = FND_API.G_MISS_CHAR THEN
4228 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
4229 p_usec_x_grpmem.status := 'E';
4230 END IF;
4231 IF p_usec_x_grpmem.version_number IS NULL OR p_usec_x_grpmem.version_number = FND_API.G_MISS_NUM THEN
4232 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
4233 p_usec_x_grpmem.status := 'E';
4234 END IF;
4235 IF p_usec_x_grpmem.teach_cal_alternate_code IS NULL OR p_usec_x_grpmem.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
4236 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
4237 p_usec_x_grpmem.status := 'E';
4238 END IF;
4239 IF p_usec_x_grpmem.location_cd IS NULL OR p_usec_x_grpmem.location_cd = FND_API.G_MISS_CHAR THEN
4240 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
4241 p_usec_x_grpmem.status := 'E';
4242 END IF;
4243 IF p_usec_x_grpmem.unit_class IS NULL OR p_usec_x_grpmem.unit_class = FND_API.G_MISS_CHAR THEN
4244 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
4245 p_usec_x_grpmem.status := 'E';
4246 END IF;
4247 IF p_usec_x_grpmem.parent IS NULL OR p_usec_x_grpmem.parent = FND_API.G_MISS_CHAR THEN
4248 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PARENT', 'LEGACY_TOKENS', FALSE);
4249 p_usec_x_grpmem.status := 'E';
4250 END IF;
4251
4252 END validate_parameters_item;
4253
4254 -- Check for Update
4255 FUNCTION check_insert_update_item ( p_usec_x_grpmem IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type ) RETURN VARCHAR2 IS
4256 CURSOR c_usec_x_grpmem(cp_n_uoo_id NUMBER) IS
4257 SELECT 'X'
4258 FROM igs_ps_usec_x_grpmem
4259 WHERE uoo_id = cp_n_uoo_id;
4260
4261 c_usec_x_grpmem_rec c_usec_x_grpmem%ROWTYPE;
4262 BEGIN
4263 OPEN c_usec_x_grpmem(l_n_uoo_id);
4264 FETCH c_usec_x_grpmem INTO c_usec_x_grpmem_rec;
4265 IF c_usec_x_grpmem%NOTFOUND THEN
4266 CLOSE c_usec_x_grpmem;
4267 RETURN 'I';
4268 ELSE
4269 CLOSE c_usec_x_grpmem;
4270 RETURN 'U';
4271 END IF;
4272
4273 END check_insert_update_item;
4274
4275 -- Carry out derivations and validate them
4276 PROCEDURE validate_derivations_item ( p_usec_x_grpmem IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type) AS
4277
4278 l_c_message VARCHAR2(30);
4279
4280 BEGIN
4281
4282 -- Derive uoo_id
4283 l_c_message := NULL;
4284 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_x_grpmem.unit_cd,
4285 p_ver_num => p_usec_x_grpmem.version_number,
4286 p_cal_type => l_c_cal_type,
4287 p_seq_num => l_n_seq_num,
4288 p_loc_cd => p_usec_x_grpmem.location_cd,
4289 p_unit_class => p_usec_x_grpmem.unit_class,
4290 p_uoo_id => l_n_uoo_id,
4291 p_message => l_c_message );
4292 IF ( l_c_message IS NOT NULL ) THEN
4293 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
4294 p_usec_x_grpmem.status := 'E';
4295 END IF;
4296
4297 END validate_derivations_item;
4298
4299
4300 -- Validate Database Constraints
4301 PROCEDURE validate_db_cons_cm ( p_usec_x_grpmem IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_rec_type,p_insert_update VARCHAR2 ) AS
4302 BEGIN
4303
4304 IF (p_insert_update = 'I') THEN
4305 /* Unique Key Validation */
4306 IF igs_ps_usec_x_grpmem_pkg.get_uk_for_validation (x_uoo_id =>l_n_uoo_id) THEN
4307 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
4308 p_usec_x_grpmem.status := 'W';
4309 RETURN;
4310 END IF;
4311 END IF;
4312
4313 /* Check constraint */
4314 IF p_usec_x_grpmem.parent NOT IN ('Y','N') THEN
4315 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N', 'PARENT', 'LEGACY_TOKENS', FALSE);
4316 p_usec_x_grpmem.status := 'E';
4317 END IF;
4318
4319 /* Validate FK Constraints */
4320 IF NOT igs_ps_usec_x_grp_pkg.get_pk_for_validation ( l_n_usec_x_listed_group_id ) THEN
4321 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_CROSS_LIST_GROUP', 'LEGACY_TOKENS', FALSE);
4322 p_usec_x_grpmem.status := 'E';
4323 END IF;
4324
4325 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
4326 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
4327 p_usec_x_grpmem.status := 'E';
4328 END IF;
4329
4330
4331 END validate_db_cons_cm;
4332
4333 -- Main section for assesment item group.
4334 BEGIN
4335
4336 IF p_usec_x_grpmem.status = 'S' THEN
4337 validate_parameters_item(p_usec_x_grpmem);
4338
4339 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4340 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.status_after_validate_parameters_item',
4341 'Unit code:'||p_usec_x_grpmem.unit_cd||' '||'Version number:'||p_usec_x_grpmem.version_number||' '||'teach_cal_alternate_code:'
4342 ||p_usec_x_grpmem.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grpmem.location_cd||' '||'Unit Class:'||
4343 p_usec_x_grpmem.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grpmem.usec_x_listed_group_name
4344 ||' '||'Status:'|| p_usec_x_grpmem.status);
4345 END IF;
4346
4347 END IF;
4348
4349 IF p_usec_x_grpmem.status = 'S' THEN
4350 validate_derivations_item(p_usec_x_grpmem);
4351
4352 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4353 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.status_after_validate_derivations_item',
4354 'Unit code:'||p_usec_x_grpmem.unit_cd||' '||'Version number:'||p_usec_x_grpmem.version_number||' '||'teach_cal_alternate_code:'
4355 ||p_usec_x_grpmem.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grpmem.location_cd||' '||'Unit Class:'||
4356 p_usec_x_grpmem.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grpmem.usec_x_listed_group_name
4357 ||' '||'Status:'|| p_usec_x_grpmem.status);
4358 END IF;
4359
4360 END IF;
4361
4362 l_insert_update:='I';
4363 --Find out whether it is insert/update of record
4364 IF p_usec_x_grpmem.status = 'S' AND p_calling_context IN ('G','S') THEN
4365 l_insert_update:= check_insert_update_item(p_usec_x_grpmem);
4366
4367 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4368 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.status_after_check_insert_update_item',
4369 'Unit code:'||p_usec_x_grpmem.unit_cd||' '||'Version number:'||p_usec_x_grpmem.version_number||' '||'teach_cal_alternate_code:'
4370 ||p_usec_x_grpmem.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grpmem.location_cd||' '||'Unit Class:'||
4371 p_usec_x_grpmem.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grpmem.usec_x_listed_group_name
4372 ||' '||'Status:'|| p_usec_x_grpmem.status);
4373 END IF;
4374
4375 END IF;
4376
4377 IF p_usec_x_grpmem.status = 'S' AND p_calling_context = 'S' THEN
4378 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
4379 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
4380 fnd_msg_pub.add;
4381 p_usec_x_grpmem.status := 'A';
4382 END IF;
4383
4384 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4385 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.status_after_check_import_allowed',
4386 'Unit code:'||p_usec_x_grpmem.unit_cd||' '||'Version number:'||p_usec_x_grpmem.version_number||' '||'teach_cal_alternate_code:'
4387 ||p_usec_x_grpmem.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grpmem.location_cd||' '||'Unit Class:'||
4388 p_usec_x_grpmem.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grpmem.usec_x_listed_group_name
4389 ||' '||'Status:'|| p_usec_x_grpmem.status);
4390 END IF;
4391
4392 END IF;
4393
4394 IF p_usec_x_grpmem.status = 'S' THEN
4395 validate_db_cons_cm(p_usec_x_grpmem,l_insert_update);
4396
4397 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4398 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.status_after_validate_db_cons_cm',
4399 'Unit code:'||p_usec_x_grpmem.unit_cd||' '||'Version number:'||p_usec_x_grpmem.version_number||' '||'teach_cal_alternate_code:'
4400 ||p_usec_x_grpmem.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grpmem.location_cd||' '||'Unit Class:'||
4401 p_usec_x_grpmem.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grpmem.usec_x_listed_group_name
4402 ||' '||'Status:'|| p_usec_x_grpmem.status);
4403 END IF;
4404
4405 END IF;
4406
4407 IF p_usec_x_grpmem.status = 'S' THEN
4408 igs_ps_validate_generic_pkg.validate_usec_x_grpmem(p_usec_x_grpmem,l_n_uoo_id,l_n_usec_x_listed_group_id,l_c_cal_type,l_n_seq_num);
4409
4410 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4411 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.status_after_Business_validation',
4412 'Unit code:'||p_usec_x_grpmem.unit_cd||' '||'Version number:'||p_usec_x_grpmem.version_number||' '||'teach_cal_alternate_code:'
4413 ||p_usec_x_grpmem.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grpmem.location_cd||' '||'Unit Class:'||
4414 p_usec_x_grpmem.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grpmem.usec_x_listed_group_name
4415 ||' '||'Status:'|| p_usec_x_grpmem.status);
4416 END IF;
4417
4418 END IF;
4419
4420 IF p_usec_x_grpmem.status = 'S' THEN
4421 IF l_insert_update = 'I' THEN
4422 /* Insert Record */
4423 INSERT INTO igs_ps_usec_x_grpmem
4424 ( usec_x_listed_group_mem_id,
4425 usec_x_listed_group_id,
4426 parent,
4427 created_by,
4428 creation_date,
4429 last_updated_by,
4430 last_update_date,
4431 last_update_login,
4432 uoo_id
4433 )
4434 VALUES
4435 (igs_ps_usec_x_grpmem_s.NEXTVAL,
4436 l_n_usec_x_listed_group_id,
4437 p_usec_x_grpmem.parent,
4438 g_n_user_id,
4439 SYSDATE,
4440 g_n_user_id,
4441 SYSDATE,
4442 g_n_login_id,
4443 l_n_uoo_id
4444 );
4445
4446 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4447 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.Record_Inserted',
4448 'Unit code:'||p_usec_x_grpmem.unit_cd||' '||'Version number:'||p_usec_x_grpmem.version_number||' '||'teach_cal_alternate_code:'
4449 ||p_usec_x_grpmem.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grpmem.location_cd||' '||'Unit Class:'||
4450 p_usec_x_grpmem.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grpmem.usec_x_listed_group_name);
4451 END IF;
4452
4453 ELSE --update
4454 UPDATE igs_ps_usec_x_grpmem
4455 SET parent = p_usec_x_grpmem.parent,
4456 last_updated_by = g_n_user_id,
4457 last_update_date = SYSDATE,
4458 last_update_login = g_n_login_id
4459 WHERE uoo_id = l_n_uoo_id;
4460
4461 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4462 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.Record_updated',
4463 'Unit code:'||p_usec_x_grpmem.unit_cd||' '||'Version number:'||p_usec_x_grpmem.version_number||' '||'teach_cal_alternate_code:'
4464 ||p_usec_x_grpmem.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_x_grpmem.location_cd||' '||'Unit Class:'||
4465 p_usec_x_grpmem.unit_class||' '||'usec_x_listed_group_name:'||p_usec_x_grpmem.usec_x_listed_group_name);
4466 END IF;
4467
4468 END IF;
4469 END IF;
4470
4471 END create_usec_x_grpmem;
4472
4473
4474 /* Main Unit Section meet with class group Sub Process */
4475 BEGIN
4476
4477 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
4478 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.start_logging_for',
4479 'Unit Section meet with class group');
4480 END IF;
4481
4482 p_c_rec_status := 'S';
4483 FOR I in 1..p_usec_cross_group_tbl.LAST LOOP
4484 l_c_cal_type:=NULL;
4485 l_n_seq_num:=NULL;
4486 l_n_uoo_id:= NULL;
4487 l_n_usec_x_listed_group_id :=NULL;
4488
4489 IF p_usec_cross_group_tbl.EXISTS(I) THEN
4490 p_usec_cross_group_tbl(I).status := 'S';
4491 p_usec_cross_group_tbl(I).msg_from := fnd_msg_pub.count_msg;
4492 trim_values(p_usec_cross_group_tbl(I) );
4493
4494
4495 -- create crosslisted group
4496 IF p_usec_cross_group_tbl(I).status = 'S' THEN
4497
4498 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4499 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.call',
4500 'Unit code:'||p_usec_cross_group_tbl(I).unit_cd||' '||'Version number:'||p_usec_cross_group_tbl(I).version_number||' '||'teach_cal_alternate_code:'
4501 ||p_usec_cross_group_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cross_group_tbl(I).location_cd||' '||'Unit Class:'||
4502 p_usec_cross_group_tbl(I).unit_class||' '||'usec_x_listed_group_name:'||p_usec_cross_group_tbl(I).usec_x_listed_group_name);
4503 END IF;
4504
4505 create_usec_x_grp(p_usec_cross_group_tbl(I));
4506
4507 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4508 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grp.status_after_creating_group_record',
4509 'Unit code:'||p_usec_cross_group_tbl(I).unit_cd||' '||'Version number:'||p_usec_cross_group_tbl(I).version_number||' '||'teach_cal_alternate_code:'
4510 ||p_usec_cross_group_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cross_group_tbl(I).location_cd||' '||'Unit Class:'||
4511 p_usec_cross_group_tbl(I).unit_class||' '||'usec_x_listed_group_name:'||p_usec_cross_group_tbl(I).usec_x_listed_group_name
4512 ||' '||'Status:'|| p_usec_cross_group_tbl(I).status);
4513 END IF;
4514
4515 END IF;
4516
4517 -- create crosslisted group member
4518 IF p_usec_cross_group_tbl(I).status = 'S' THEN
4519 IF p_usec_cross_group_tbl(I).unit_cd IS NOT NULL THEN
4520
4521 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4522 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.call',
4523 'Unit code:'||p_usec_cross_group_tbl(I).unit_cd||' '||'Version number:'||p_usec_cross_group_tbl(I).version_number||' '||'teach_cal_alternate_code:'
4524 ||p_usec_cross_group_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cross_group_tbl(I).location_cd||' '||'Unit Class:'||
4525 p_usec_cross_group_tbl(I).unit_class||' '||'usec_x_listed_group_name:'||p_usec_cross_group_tbl(I).usec_x_listed_group_name);
4526 END IF;
4527
4528 create_usec_x_grpmem(p_usec_cross_group_tbl(I));
4529
4530 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4531 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.create_usec_x_grpmem.status_after_creating_item_record',
4532 'Unit code:'||p_usec_cross_group_tbl(I).unit_cd||' '||'Version number:'||p_usec_cross_group_tbl(I).version_number||' '||'teach_cal_alternate_code:'
4533 ||p_usec_cross_group_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_cross_group_tbl(I).location_cd||' '||'Unit Class:'||
4534 p_usec_cross_group_tbl(I).unit_class||' '||'usec_x_listed_group_name:'||p_usec_cross_group_tbl(I).usec_x_listed_group_name
4535 ||' '||'Status:'|| p_usec_cross_group_tbl(I).status);
4536 END IF;
4537
4538 END IF;
4539 END IF;
4540
4541 IF p_usec_cross_group_tbl(I).status = 'S' THEN
4542 p_usec_cross_group_tbl(I).msg_from := NULL;
4543 p_usec_cross_group_tbl(I).msg_to := NULL;
4544 ELSIF p_usec_cross_group_tbl(I).status = 'A' THEN
4545 p_usec_cross_group_tbl(I).msg_from := p_usec_cross_group_tbl(I).msg_from + 1;
4546 p_usec_cross_group_tbl(I).msg_to := fnd_msg_pub.count_msg;
4547 ELSE
4548 p_c_rec_status := p_usec_cross_group_tbl(I).status;
4549 p_usec_cross_group_tbl(I).msg_from := p_usec_cross_group_tbl(I).msg_from + 1;
4550 p_usec_cross_group_tbl(I).msg_to := fnd_msg_pub.count_msg;
4551 IF p_c_rec_status = 'E' THEN
4552 RETURN;
4553 END IF;
4554 END IF;
4555 END IF;--exists
4556 END LOOP;
4557
4558 /* Post Insert/Update Checks */
4559 IF NOT igs_ps_validate_generic_pkg.post_usec_cross_group(p_usec_cross_group_tbl,cross_group_tab) THEN
4560 p_c_rec_status := 'E';
4561 END IF;
4562
4563 cross_group_tab.DELETE;
4564
4565 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
4566 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_cross_group.after_import_status',p_c_rec_status);
4567 END IF;
4568
4569 END create_usec_cross_group;
4570
4571
4572 --Unit Section Waitlist
4573 PROCEDURE create_usec_waitlist(
4574 p_usec_waitlist_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_tbl_type,
4575 p_c_rec_status OUT NOCOPY VARCHAR2,
4576 p_calling_context IN VARCHAR2
4577 ) AS
4578 /***********************************************************************************************
4579 Created By : Sommukhe
4580 Date Created By: 18-Jun-2005
4581 Purpose : This procedure is a sub process to insert records of Unit Section Waitlist priority and preference.
4582
4583 Known limitations,enhancements,remarks:
4584 Change History (in reverse chronological order)
4585 Who When What
4586 --sommukhe 12-AUG-2005 Bug#4377818,changed the cursor cur_hzp, included table igs_pe_hz_parties in
4587 -- FROM clause and modified the WHERE clause by joining HZ_PARTIES and IGS_PE_HZ_PARTIES
4588 -- using party_id and org unit being compared with oss_org_unit_cd of IGS_PE_HZ_PARTIES.
4589 ********************************************************************************************** */
4590
4591 l_insert_update VARCHAR2(1);
4592 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
4593 l_n_wlst_usec_pri_id igs_ps_usec_wlst_pri.unit_sec_waitlist_priority_id%type;
4594 l_tbl_uoo igs_ps_create_generic_pkg.uoo_tbl_type;
4595
4596 /* Private Procedures for create_usec_waitlist */
4597 PROCEDURE trim_values ( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type ) AS
4598 BEGIN
4599 p_usec_wlst_rec.unit_cd := trim(p_usec_wlst_rec.unit_cd);
4600 p_usec_wlst_rec.version_number := trim(p_usec_wlst_rec.version_number);
4601 p_usec_wlst_rec.teach_cal_alternate_code := trim(p_usec_wlst_rec.teach_cal_alternate_code);
4602 p_usec_wlst_rec.location_cd := trim(p_usec_wlst_rec.location_cd);
4603 p_usec_wlst_rec.unit_class := trim(p_usec_wlst_rec.unit_class);
4604 p_usec_wlst_rec.priority_number := trim(p_usec_wlst_rec.priority_number);
4605 p_usec_wlst_rec.priority_value := trim(p_usec_wlst_rec.priority_value);
4606 p_usec_wlst_rec.preference_order := trim(p_usec_wlst_rec.preference_order);
4607 p_usec_wlst_rec.preference_code := trim(p_usec_wlst_rec.preference_code);
4608 p_usec_wlst_rec.preference_version := trim(p_usec_wlst_rec.preference_version);
4609
4610 END trim_values;
4611
4612 PROCEDURE create_wlstpri( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type ) AS
4613
4614 -- validate parameters passed waitlist Priority
4615 PROCEDURE validate_parameters( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type ) AS
4616 BEGIN
4617
4618 /* Check for Mandatory Parameters */
4619 IF p_usec_wlst_rec.unit_cd IS NULL OR p_usec_wlst_rec.unit_cd = FND_API.G_MISS_CHAR THEN
4620 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
4621 p_usec_wlst_rec.status := 'E';
4622 END IF;
4623 IF p_usec_wlst_rec.version_number IS NULL OR p_usec_wlst_rec.version_number = FND_API.G_MISS_NUM THEN
4624 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
4625 p_usec_wlst_rec.status := 'E';
4626 END IF;
4627 IF p_usec_wlst_rec.teach_cal_alternate_code IS NULL OR p_usec_wlst_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
4628 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
4629 p_usec_wlst_rec.status := 'E';
4630 END IF;
4631 IF p_usec_wlst_rec.location_cd IS NULL OR p_usec_wlst_rec.location_cd = FND_API.G_MISS_CHAR THEN
4632 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
4633 p_usec_wlst_rec.status := 'E';
4634 END IF;
4635 IF p_usec_wlst_rec.unit_class IS NULL OR p_usec_wlst_rec.unit_class = FND_API.G_MISS_CHAR THEN
4636 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
4637 p_usec_wlst_rec.status := 'E';
4638 END IF;
4639 IF p_usec_wlst_rec.priority_value IS NULL OR p_usec_wlst_rec.priority_value = FND_API.G_MISS_CHAR THEN
4640 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PRIORITY_VALUE', 'LEGACY_TOKENS', FALSE);
4641 p_usec_wlst_rec.status := 'E';
4642 END IF;
4643
4644 END validate_parameters ;
4645
4646
4647 --Validate the derivations
4648 PROCEDURE validate_derivations_pri ( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type,p_insert_update VARCHAR2 ) AS
4649 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
4650 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
4651 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
4652 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
4653 l_c_message VARCHAR2(30);
4654
4655 BEGIN
4656 -- Derive Calander Type and Sequence Number
4657 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_wlst_rec.teach_cal_alternate_code,
4658 p_cal_type => l_c_cal_type,
4659 p_ci_sequence_number => l_n_seq_num,
4660 p_start_dt => l_d_start_dt,
4661 p_end_dt => l_d_end_dt,
4662 p_return_status => l_c_message );
4663 IF ( l_c_message <> 'SINGLE' ) THEN
4664 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
4665 p_usec_wlst_rec.status := 'E';
4666 END IF;
4667 -- Derive uoo_id
4668 l_c_message := NULL;
4669 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_wlst_rec.unit_cd,
4670 p_ver_num => p_usec_wlst_rec.version_number,
4671 p_cal_type => l_c_cal_type,
4672 p_seq_num => l_n_seq_num,
4673 p_loc_cd => p_usec_wlst_rec.location_cd,
4674 p_unit_class => p_usec_wlst_rec.unit_class,
4675 p_uoo_id => l_n_uoo_id,
4676 p_message => l_c_message );
4677 IF ( l_c_message IS NOT NULL ) THEN
4678 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
4679 p_usec_wlst_rec.status := 'E';
4680 END IF;
4681 END validate_derivations_pri;
4682
4683 -- Check for Update
4684 FUNCTION check_insert_update ( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type,p_n_wlst_usec_pri_id NUMBER) RETURN VARCHAR2 IS
4685 CURSOR c_usec_wlst_pri(cp_n_uoo_id NUMBER,cp_priority_value VARCHAR2) IS
4686 SELECT 'X'
4687 FROM igs_ps_usec_wlst_pri
4688 WHERE uoo_id = cp_n_uoo_id
4689 AND priority_value = cp_priority_value;
4690
4691 c_usec_wlst_pri_rec c_usec_wlst_pri%ROWTYPE;
4692
4693 BEGIN
4694 OPEN c_usec_wlst_pri( l_n_uoo_id,p_usec_wlst_rec.priority_value);
4695 FETCH c_usec_wlst_pri INTO c_usec_wlst_pri_rec;
4696 IF c_usec_wlst_pri%NOTFOUND THEN
4697 CLOSE c_usec_wlst_pri;
4698 RETURN 'I';
4699 ELSE
4700 CLOSE c_usec_wlst_pri;
4701 RETURN 'U';
4702 END IF;
4703
4704 END check_insert_update;
4705
4706 PROCEDURE Assign_default(p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type,p_insert_update VARCHAR2 ) AS
4707
4708 CURSOR c_usprv(cp_n_uoo_id NUMBER,cp_priority_value VARCHAR2) IS
4709 SELECT priority_number
4710 FROM igs_ps_usec_wlst_pri
4711 WHERE uoo_id = cp_n_uoo_id
4712 AND priority_value = cp_priority_value;
4713
4714 rec_usprv c_usprv%ROWTYPE;
4715
4716 BEGIN
4717 IF p_insert_update = 'U' THEN
4718 OPEN c_usprv( l_n_uoo_id,p_usec_wlst_rec.priority_value);
4719 FETCH c_usprv INTO rec_usprv;
4720 CLOSE c_usprv;
4721
4722 IF p_usec_wlst_rec.priority_number IS NULL THEN
4723 p_usec_wlst_rec.priority_number:= rec_usprv.priority_number;
4724 ELSIF p_usec_wlst_rec.priority_number = FND_API.G_MISS_NUM THEN
4725 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PRIORITY_NUMBER', 'LEGACY_TOKENS', FALSE);
4726 p_usec_wlst_rec.status := 'E';
4727 END IF;
4728
4729 END IF;
4730 END Assign_default;
4731
4732 -- Validate Database Constraints for Waitlist seating priority.
4733 PROCEDURE validate_db_cons_wlstpri ( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type,p_insert_update VARCHAR2 ) AS
4734 BEGIN
4735 IF(p_insert_update = 'I') THEN
4736 /* Unique Key Validation */
4737 IF igs_ps_usec_wlst_pri_pkg.get_uk_for_validation ( x_priority_value =>p_usec_wlst_rec.priority_value,
4738 x_uoo_id => l_n_uoo_id) THEN
4739 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_WLST_PRI', 'LEGACY_TOKENS', FALSE);
4740 p_usec_wlst_rec.status := 'W';
4741 RETURN;
4742 END IF;
4743 END IF;
4744 /* Validate FK Constraints */
4745
4746 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
4747 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
4748 p_usec_wlst_rec.status := 'E';
4749 END IF;
4750
4751 IF NOT igs_lookups_view_pkg.get_pk_for_validation('UNIT_WAITLIST', p_usec_wlst_rec.priority_value) THEN
4752 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'PRIORITY_VALUE', 'LEGACY_TOKENS', FALSE);
4753 p_usec_wlst_rec.status := 'E';
4754 END IF;
4755 END validate_db_cons_wlstpri;
4756
4757 BEGIN
4758
4759 IF p_usec_wlst_rec.status = 'S' THEN
4760 validate_parameters(p_usec_wlst_rec);
4761
4762 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4763 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.status_after_validate_parameters',
4764 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
4765 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
4766 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||'Status:'
4767 ||p_usec_wlst_rec.status);
4768 END IF;
4769
4770 END IF;
4771
4772 IF p_usec_wlst_rec.status = 'S' THEN
4773 validate_derivations_pri(p_usec_wlst_rec,l_insert_update);
4774
4775 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4776 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.status_after_validate_derivations_pri',
4777 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
4778 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
4779 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||'Status:'
4780 ||p_usec_wlst_rec.status);
4781 END IF;
4782
4783 END IF;
4784
4785 --Find out whether it is insert/update of record
4786 l_insert_update:='I';
4787 IF p_usec_wlst_rec.status = 'S' AND p_calling_context IN ('G','S') THEN
4788 l_insert_update:= check_insert_update(p_usec_wlst_rec,l_n_wlst_usec_pri_id);
4789
4790 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4791 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.status_after_check_insert_update',
4792 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
4793 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
4794 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||'Status:'
4795 ||p_usec_wlst_rec.status);
4796 END IF;
4797
4798 END IF;
4799
4800 IF p_usec_wlst_rec.status = 'S' AND p_calling_context ='S' THEN
4801 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
4802 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
4803 fnd_msg_pub.add;
4804 p_usec_wlst_rec.status := 'A';
4805 END IF;
4806
4807 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4808 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.status_after_check_import_allowed',
4809 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
4810 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
4811 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||'Status:'
4812 ||p_usec_wlst_rec.status);
4813 END IF;
4814
4815 END IF;
4816
4817 IF p_usec_wlst_rec.status = 'S' THEN
4818 Assign_default(p_usec_wlst_rec,l_insert_update);
4819
4820 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4821 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.status_after_Assign_default',
4822 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
4823 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
4824 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||'Status:'
4825 ||p_usec_wlst_rec.status);
4826 END IF;
4827
4828 END IF;
4829
4830 IF l_tbl_uoo.count = 0 THEN
4831 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
4832 ELSE
4833 IF NOT igs_ps_validate_lgcy_pkg.isExists(l_n_uoo_id,l_tbl_uoo) THEN
4834 l_tbl_uoo(l_tbl_uoo.count+1) :=l_n_uoo_id;
4835 END IF;
4836 END IF;
4837
4838 IF p_usec_wlst_rec.status = 'S' THEN
4839 validate_db_cons_wlstpri(p_usec_wlst_rec,l_insert_update);
4840
4841 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4842 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.status_after_validate_db_cons_wlstpri',
4843 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
4844 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
4845 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||'Status:'
4846 ||p_usec_wlst_rec.status);
4847 END IF;
4848
4849 END IF;
4850
4851 IF p_usec_wlst_rec.status = 'S' THEN
4852 igs_ps_validate_generic_pkg.validate_usec_wlstpri (p_usec_wlst_rec,l_n_uoo_id,l_insert_update);
4853 END IF;
4854
4855 IF p_usec_wlst_rec.status = 'S' THEN
4856 IF l_insert_update = 'I' THEN
4857 /* Insert Record */
4858 INSERT INTO igs_ps_usec_wlst_pri
4859 ( unit_sec_waitlist_priority_id,
4860 priority_number,
4861 priority_value,
4862 created_by,
4863 creation_date,
4864 last_updated_by,
4865 last_update_date,
4866 last_update_login,
4867 uoo_id
4868 )
4869 VALUES
4870 (
4871 igs_ps_usec_wlst_pri_s.nextval,
4872 p_usec_wlst_rec.priority_number,
4873 p_usec_wlst_rec.priority_value,
4874 g_n_user_id,
4875 sysdate,
4876 g_n_user_id,
4877 sysdate,
4878 g_n_login_id,
4879 l_n_uoo_id
4880 );
4881
4882 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4883 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.Record_Inserted',
4884 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
4885 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
4886 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value);
4887 END IF;
4888
4889 ELSE --update
4890 UPDATE igs_ps_usec_wlst_pri SET
4891 priority_number= p_usec_wlst_rec.priority_number,
4892 last_updated_by = g_n_user_id,
4893 last_update_date= SYSDATE ,
4894 last_update_login= g_n_login_id
4895 WHERE uoo_id =l_n_uoo_id AND priority_value = p_usec_wlst_rec.priority_value;
4896
4897 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
4898 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.Record_updated',
4899 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
4900 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
4901 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value);
4902 END IF;
4903
4904 END IF;
4905 END IF;
4906
4907 END create_wlstpri;
4908
4909 PROCEDURE create_wlstprf( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type ) AS
4910
4911 -- validate parameters passed waitlist Priority
4912 PROCEDURE validate_parameters( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type ) AS
4913 BEGIN
4914
4915 /* Check for Mandatory Parameters */
4916 IF p_usec_wlst_rec.preference_order IS NULL OR p_usec_wlst_rec.preference_order = FND_API.G_MISS_NUM THEN
4917 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PREFERENCE_ORDER', 'LEGACY_TOKENS', FALSE);
4918 p_usec_wlst_rec.status := 'E';
4919 END IF;
4920 IF p_usec_wlst_rec.preference_code IS NULL OR p_usec_wlst_rec.preference_code = FND_API.G_MISS_CHAR THEN
4921 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PREFERENCE_CODE', 'LEGACY_TOKENS', FALSE);
4922 p_usec_wlst_rec.status := 'E';
4923 END IF;
4924
4925 IF p_usec_wlst_rec.priority_value IS NOT NULL AND p_usec_wlst_rec.priority_value IN ('PROGRAM','UNIT_SET') THEN
4926 IF p_usec_wlst_rec.preference_version IS NULL OR p_usec_wlst_rec.preference_version = FND_API.G_MISS_NUM THEN
4927 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'PREFERENCE_VERSION', 'LEGACY_TOKENS', FALSE);
4928 p_usec_wlst_rec.status := 'E';
4929 END IF;
4930 ELSIF p_usec_wlst_rec.priority_value IS NOT NULL AND p_usec_wlst_rec.priority_value NOT IN ('PROGRAM','UNIT_SET') THEN
4931 IF p_usec_wlst_rec.preference_version IS NOT NULL THEN
4932 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'PREFERENCE_VERSION', 'LEGACY_TOKENS', FALSE);
4933 p_usec_wlst_rec.status := 'E';
4934 END IF;
4935 END IF;
4936
4937 END validate_parameters ;
4938
4939
4940 -- Carry out derivations and validate them
4941 PROCEDURE validate_derivations_prf ( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type,p_insert_update VARCHAR2 ) AS
4942
4943 CURSOR c_pri_id(cp_uoo_id NUMBER, cp_priority_value igs_ps_usec_wlst_pri.priority_value%type) IS
4944 SELECT unit_sec_waitlist_priority_id
4945 FROM igs_ps_usec_wlst_pri
4946 WHERE uoo_id = cp_uoo_id
4947 AND priority_value = cp_priority_value;
4948
4949 BEGIN
4950 OPEN c_pri_id(l_n_uoo_id,p_usec_wlst_rec.priority_value);
4951 FETCH c_pri_id INTO l_n_wlst_usec_pri_id;
4952 CLOSE c_pri_id;
4953 END validate_derivations_prf;
4954
4955
4956 FUNCTION check_insert_update ( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type,p_n_wlst_usec_pri_id NUMBER) RETURN VARCHAR2 IS
4957
4958 CURSOR c_usec_wlst_prf(cp_n_wlst_usec_pri_id NUMBER,cp_preference_code VARCHAR2) IS
4959 SELECT 'X'
4960 FROM igs_ps_usec_wlst_prf
4961 WHERE unit_sec_waitlist_priority_id = cp_n_wlst_usec_pri_id
4962 AND preference_code = cp_preference_code;
4963
4964 c_usec_wlst_prf_rec c_usec_wlst_prf%ROWTYPE;
4965
4966 CURSOR c_usec_wlst_prf1(cp_n_wlst_usec_pri_id NUMBER,
4967 cp_preference_code VARCHAR2,
4968 cp_preference_version VARCHAR2) IS
4969 SELECT 'X'
4970 FROM igs_ps_usec_wlst_prf
4971 WHERE unit_sec_waitlist_priority_id = cp_n_wlst_usec_pri_id
4972 AND preference_code = cp_preference_code
4973 AND preference_version = cp_preference_version;
4974 c_usec_wlst_prf1_rec c_usec_wlst_prf1%ROWTYPE;
4975
4976 BEGIN
4977 IF p_usec_wlst_rec.priority_value IN ('PROGRAM', 'UNIT_SET') THEN
4978 OPEN c_usec_wlst_prf1(l_n_wlst_usec_pri_id,p_usec_wlst_rec.preference_code,p_usec_wlst_rec.preference_version );
4979 FETCH c_usec_wlst_prf1 INTO c_usec_wlst_prf1_rec;
4980 IF c_usec_wlst_prf1%NOTFOUND THEN
4981 CLOSE c_usec_wlst_prf1;
4982 RETURN 'I';
4983 ELSE
4984 CLOSE c_usec_wlst_prf1;
4985 RETURN 'U';
4986 END IF;
4987 ELSE
4988 OPEN c_usec_wlst_prf(l_n_wlst_usec_pri_id,p_usec_wlst_rec.preference_code );
4989 FETCH c_usec_wlst_prf INTO c_usec_wlst_prf_rec;
4990 IF c_usec_wlst_prf%NOTFOUND THEN
4991 CLOSE c_usec_wlst_prf;
4992 RETURN 'I';
4993 ELSE
4994 CLOSE c_usec_wlst_prf;
4995 RETURN 'U';
4996 END IF;
4997 END IF;
4998 END check_insert_update;
4999
5000
5001 -- Validate Database Constraints for waitlist preference.
5002 PROCEDURE validate_db_cons_wlstprf ( p_usec_wlst_rec IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_rec_type,p_insert_update VARCHAR2 ) AS
5003 CURSOR cur_hzp(cp_preference_code VARCHAR2) IS
5004 SELECT 'x'
5005 FROM hz_parties hp, igs_pe_hz_parties pe
5006 WHERE hp.party_id = pe.party_id
5007 AND pe.oss_org_unit_cd =cp_preference_code;
5008
5009 cur_hzp_rec cur_hzp%ROWTYPE;
5010 BEGIN
5011
5012 IF(p_insert_update = 'I') THEN
5013 /* Unique Key Validation */
5014 IF igs_ps_usec_wlst_prf_pkg.get_uk_for_validation(x_preference_code =>p_usec_wlst_rec.preference_code,
5015 x_preference_version=>p_usec_wlst_rec.preference_version,
5016 x_unit_sec_wlst_priority_id =>l_n_wlst_usec_pri_id) THEN
5017 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_WLST_PRF', 'LEGACY_TOKENS', FALSE);
5018 p_usec_wlst_rec.status := 'W';
5019
5020 RETURN;
5021 END IF;
5022 END IF;
5023
5024 /* Validate FK Constraints */
5025 IF (p_usec_wlst_rec.priority_value = 'PROGRAM') THEN
5026 IF NOT igs_ps_ver_pkg.get_pk_for_validation (p_usec_wlst_rec.preference_code,p_usec_wlst_rec.preference_version ) THEN
5027 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_WLST_PRF', 'LEGACY_TOKENS', FALSE);
5028 p_usec_wlst_rec.status := 'E';
5029
5030 END IF;
5031 END IF;
5032
5033 IF (p_usec_wlst_rec.priority_value = 'UNIT_SET') THEN
5034 IF NOT igs_en_unit_set_pkg.get_pk_for_validation (p_usec_wlst_rec.preference_code,p_usec_wlst_rec.preference_version) THEN
5035 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_WLST_PRF', 'LEGACY_TOKENS', FALSE);
5036 p_usec_wlst_rec.status := 'E';
5037 END IF;
5038 END IF;
5039
5040 IF (p_usec_wlst_rec.priority_value = 'CLASS_STD' ) THEN
5041 IF NOT igs_pr_class_std_pkg.get_uk_for_validation (p_usec_wlst_rec.preference_code ) THEN
5042 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_WLST_PRF', 'LEGACY_TOKENS', FALSE);
5043 p_usec_wlst_rec.status := 'E';
5044 END IF;
5045 END IF;
5046
5047 IF (p_usec_wlst_rec.priority_value = 'PROGRAM_STAGE') THEN
5048 IF NOT igs_ps_stage_type_pkg.get_pk_for_validation (p_usec_wlst_rec.preference_code ) THEN
5049 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_WLST_PRF', 'LEGACY_TOKENS', FALSE);
5050 p_usec_wlst_rec.status := 'E';
5051 END IF;
5052 END IF;
5053
5054 IF (p_usec_wlst_rec.priority_value = 'ORG_UNIT') THEN
5055 OPEN cur_hzp(p_usec_wlst_rec.preference_code );
5056 FETCH cur_hzp INTO cur_hzp_rec;
5057 IF cur_hzp%NOTFOUND THEN
5058 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'USEC_WLST_PRF', 'LEGACY_TOKENS', FALSE);
5059 p_usec_wlst_rec.status := 'E';
5060 END IF;
5061 CLOSE cur_hzp;
5062 END IF;
5063
5064 END validate_db_cons_wlstprf;
5065
5066 BEGIN
5067
5068 IF p_usec_wlst_rec.status = 'S' THEN
5069 validate_parameters(p_usec_wlst_rec);
5070
5071 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5072 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.status_after_validate_parameters',
5073 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
5074 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
5075 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||
5076 'Preference Code:'||p_usec_wlst_rec.preference_code||' '||'Status:'||p_usec_wlst_rec.status);
5077 END IF;
5078
5079 END IF;
5080
5081 IF p_usec_wlst_rec.status = 'S' THEN
5082 validate_derivations_prf(p_usec_wlst_rec,l_insert_update);
5083
5084 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5085 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.status_after_validate_derivations_prf',
5086 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
5087 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
5088 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||
5089 'Preference Code:'||p_usec_wlst_rec.preference_code||' '||'Status:'||p_usec_wlst_rec.status);
5090 END IF;
5091
5092 END IF;
5093
5094 --Find out whether it is insert/update of record
5095 l_insert_update:='I';
5096 IF p_usec_wlst_rec.status = 'S' AND p_calling_context IN ('G', 'S') THEN
5097 l_insert_update:= check_insert_update(p_usec_wlst_rec,l_n_wlst_usec_pri_id);
5098
5099 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5100 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.status_after_check_insert_update',
5101 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
5102 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
5103 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||
5104 'Preference Code:'||p_usec_wlst_rec.preference_code||' '||'Status:'||p_usec_wlst_rec.status);
5105 END IF;
5106
5107 END IF;
5108
5109
5110 IF p_usec_wlst_rec.status = 'S' THEN
5111 validate_db_cons_wlstprf(p_usec_wlst_rec,l_insert_update);
5112
5113 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5114 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.status_after_validate_db_cons_wlstprf',
5115 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
5116 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
5117 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||
5118 'Preference Code:'||p_usec_wlst_rec.preference_code||' '||'Status:'||p_usec_wlst_rec.status);
5119 END IF;
5120
5121 END IF;
5122
5123 IF p_usec_wlst_rec.status = 'S' THEN
5124 igs_ps_validate_generic_pkg.validate_usec_wlstprf(p_usec_wlst_rec,l_insert_update);
5125
5126 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5127 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.status_after_Business_validation',
5128 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
5129 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
5130 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||
5131 'Preference Code:'||p_usec_wlst_rec.preference_code||' '||'Status:'||p_usec_wlst_rec.status);
5132 END IF;
5133
5134 END IF;
5135
5136
5137
5138 IF p_usec_wlst_rec.status = 'S' THEN
5139 IF l_insert_update = 'I' THEN
5140 /* Insert Record */
5141 INSERT INTO igs_ps_usec_wlst_prf
5142 ( unit_sec_waitlist_pref_id,
5143 unit_sec_waitlist_priority_id,
5144 preference_order,
5145 preference_code,
5146 preference_version,
5147 created_by,
5148 creation_date,
5149 last_updated_by,
5150 last_update_date,
5151 last_update_login
5152 )
5153 VALUES
5154 (
5155 igs_ps_usec_wlst_prf_s.nextval,
5156 l_n_wlst_usec_pri_id,
5157 p_usec_wlst_rec.preference_order,
5158 p_usec_wlst_rec.preference_code,
5159 p_usec_wlst_rec.preference_version,
5160 g_n_user_id,
5161 sysdate,
5162 g_n_user_id,
5163 sysdate,
5164 g_n_login_id
5165 );
5166
5167 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5168 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.Record_Inserted',
5169 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
5170 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
5171 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||
5172 'Preference Code:'||p_usec_wlst_rec.preference_code);
5173 END IF;
5174
5175 ELSE ---update
5176 UPDATE igs_ps_usec_wlst_prf SET
5177 preference_order= p_usec_wlst_rec.preference_order,
5178 preference_version=p_usec_wlst_rec.preference_version,
5179 last_updated_by = g_n_user_id,
5180 last_update_date= SYSDATE ,
5181 last_update_login= g_n_login_id
5182 WHERE unit_sec_waitlist_priority_id =l_n_wlst_usec_pri_id AND preference_code = p_usec_wlst_rec.preference_code;
5183
5184 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5185 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.Record_Updated',
5186 'Unit code:'||p_usec_wlst_rec.unit_cd||' '||'Version number:'||p_usec_wlst_rec.version_number||' '||'teach_cal_alternate_code:'
5187 ||p_usec_wlst_rec.teach_cal_alternate_code||' '||'Location_cd:'||p_usec_wlst_rec.location_cd||' '||'Unit Class:'||
5188 p_usec_wlst_rec.unit_class||' '||'Priority Value:'||p_usec_wlst_rec.priority_value||' '||
5189 'Preference Code:'||p_usec_wlst_rec.preference_code);
5190 END IF;
5191
5192 END IF;
5193 END IF;
5194
5195 END create_wlstprf;
5196
5197 /* Main Unit Section waitlist Sub Process */
5198 BEGIN
5199
5200 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
5201 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.start_logging_for',
5202 'Unit Section Waitlist ');
5203 END IF;
5204
5205 p_c_rec_status := 'S';
5206 FOR I in 1..p_usec_waitlist_tbl.LAST LOOP
5207 l_n_uoo_id:= NULL;
5208 l_n_wlst_usec_pri_id:=NULL;
5209 IF p_usec_waitlist_tbl.EXISTS(I) THEN
5210 p_usec_waitlist_tbl(I).status := 'S';
5211 p_usec_waitlist_tbl(I).msg_from := fnd_msg_pub.count_msg;
5212 trim_values(p_usec_waitlist_tbl(I));
5213
5214 --create reserved seating priority
5215 IF p_usec_waitlist_tbl(I).status = 'S' THEN
5216
5217 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5218 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.call',
5219 'Unit code:'||p_usec_waitlist_tbl(I).unit_cd||' '||'Version number:'||p_usec_waitlist_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5220 ||p_usec_waitlist_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_waitlist_tbl(I).location_cd||' '||'Unit Class:'||
5221 p_usec_waitlist_tbl(I).unit_class||' '||'Priority Value:'||p_usec_waitlist_tbl(I).priority_value);
5222 END IF;
5223
5224 create_wlstpri(p_usec_waitlist_tbl(I));
5225
5226
5227 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5228 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstpri.status_after_creating_priority_record',
5229 'Unit code:'||p_usec_waitlist_tbl(I).unit_cd||' '||'Version number:'||p_usec_waitlist_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5230 ||p_usec_waitlist_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_waitlist_tbl(I).location_cd||' '||'Unit Class:'||
5231 p_usec_waitlist_tbl(I).unit_class||' '||'Priority Value:'||p_usec_waitlist_tbl(I).priority_value||' '||'Status:'
5232 ||p_usec_waitlist_tbl(I).status);
5233 END IF;
5234
5235 END IF;
5236
5237 -- Create reserved seating preference
5238 IF p_usec_waitlist_tbl(I).status = 'S' THEN
5239 IF p_usec_waitlist_tbl(I).preference_code IS NOT NULL THEN
5240
5241 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5242 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.call',
5243 'Unit code:'||p_usec_waitlist_tbl(I).unit_cd||' '||'Version number:'||p_usec_waitlist_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5244 ||p_usec_waitlist_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_waitlist_tbl(I).location_cd||' '||'Unit Class:'||
5245 p_usec_waitlist_tbl(I).unit_class||' '||'Priority Value:'||p_usec_waitlist_tbl(I).priority_value||' '||
5246 'Preference Code:'||p_usec_waitlist_tbl(I).preference_code);
5247 END IF;
5248
5249 create_wlstprf(p_usec_waitlist_tbl(I));
5250
5251 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5252 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.create_wlstprf.status_after_creating_prefenrence_record',
5253 'Unit code:'||p_usec_waitlist_tbl(I).unit_cd||' '||'Version number:'||p_usec_waitlist_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5254 ||p_usec_waitlist_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_waitlist_tbl(I).location_cd||' '||'Unit Class:'||
5255 p_usec_waitlist_tbl(I).unit_class||' '||'Priority Value:'||p_usec_waitlist_tbl(I).priority_value||' '||
5256 'Preference Code:'||p_usec_waitlist_tbl(I).preference_code||' '||'Status:'||p_usec_waitlist_tbl(I).status);
5257 END IF;
5258
5259 END IF;
5260 END IF;
5261
5262 IF p_usec_waitlist_tbl(I).status = 'S' THEN
5263 p_usec_waitlist_tbl(I).msg_from := NULL;
5264 p_usec_waitlist_tbl(I).msg_to := NULL;
5265 ELSIF p_usec_waitlist_tbl(I).status = 'A' THEN
5266 p_usec_waitlist_tbl(I).msg_from := p_usec_waitlist_tbl(I).msg_from + 1;
5267 p_usec_waitlist_tbl(I).msg_to := fnd_msg_pub.count_msg;
5268 ELSE
5269 p_c_rec_status := p_usec_waitlist_tbl(I).status;
5270 p_usec_waitlist_tbl(I).msg_from := p_usec_waitlist_tbl(I).msg_from + 1;
5271 p_usec_waitlist_tbl(I).msg_to := fnd_msg_pub.count_msg;
5272 IF p_c_rec_status = 'E' THEN
5273 RETURN;
5274 END IF;
5275 END IF;
5276
5277 END IF;--exists
5278 END LOOP;
5279
5280 /* Post Insert/Update Checks */
5281 IF NOT igs_ps_validate_generic_pkg.post_usec_wlst(p_usec_waitlist_tbl,l_tbl_uoo) THEN
5282 p_c_rec_status := 'E';
5283 END IF;
5284 l_tbl_uoo.DELETE;
5285
5286 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
5287 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_waitlist.after_import_status',p_c_rec_status);
5288 END IF;
5289
5290 END create_usec_waitlist;
5291
5292
5293 --Unit Section Notes
5294 PROCEDURE create_usec_notes(
5295 p_usec_notes_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_notes_tbl_type,
5296 p_c_rec_status OUT NOCOPY VARCHAR2,
5297 p_calling_context IN VARCHAR2
5298 ) AS
5299 /***********************************************************************************************
5300 Created By : Sommukhe
5301 Date Created By: 17-Jun-2005
5302 Purpose : This procedure is a sub process to import records of Unit Section Notes.
5303
5304 Known limitations,enhancements,remarks:
5305 Change History (in reverse chronological order)
5306 Who When What
5307 ********************************************************************************************** */
5308 l_insert_update VARCHAR2(1);
5309 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
5310 l_n_reference_number igs_ge_note.reference_number%TYPE;
5311 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
5312 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
5313
5314 /* Private Procedures for create_usec_notes */
5315 PROCEDURE trim_values ( p_usec_notes_rec IN OUT NOCOPY igs_ps_generic_pub.usec_notes_rec_type ) AS
5316 BEGIN
5317 p_usec_notes_rec.unit_cd := trim(p_usec_notes_rec.unit_cd);
5318 p_usec_notes_rec.version_number := trim(p_usec_notes_rec.version_number);
5319 p_usec_notes_rec.teach_cal_alternate_code := trim(p_usec_notes_rec.teach_cal_alternate_code);
5320 p_usec_notes_rec.location_cd := trim(p_usec_notes_rec.location_cd);
5321 p_usec_notes_rec.unit_class := trim(p_usec_notes_rec.unit_class);
5322 p_usec_notes_rec.reference_number := trim(p_usec_notes_rec.reference_number);
5323 p_usec_notes_rec.crs_note_type := trim(p_usec_notes_rec.crs_note_type);
5324 p_usec_notes_rec.note_text := trim(p_usec_notes_rec.note_text);
5325
5326 END trim_values;
5327
5328 -- validate parameters passed.
5329 PROCEDURE validate_parameters ( p_usec_notes_rec IN OUT NOCOPY igs_ps_generic_pub.usec_notes_rec_type ) AS
5330 BEGIN
5331
5332 /* Check for Mandatory Parameters */
5333 IF p_usec_notes_rec.unit_cd IS NULL OR p_usec_notes_rec.unit_cd = FND_API.G_MISS_CHAR THEN
5334 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
5335 p_usec_notes_rec.status := 'E';
5336 END IF;
5337 IF p_usec_notes_rec.version_number IS NULL OR p_usec_notes_rec.version_number = FND_API.G_MISS_NUM THEN
5338 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
5339 p_usec_notes_rec.status := 'E';
5340 END IF;
5341 IF p_usec_notes_rec.teach_cal_alternate_code IS NULL OR p_usec_notes_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
5342 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
5343 p_usec_notes_rec.status := 'E';
5344 END IF;
5345 IF p_usec_notes_rec.location_cd IS NULL OR p_usec_notes_rec.location_cd= FND_API.G_MISS_CHAR THEN
5346 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
5347 p_usec_notes_rec.status := 'E';
5348 END IF;
5349 IF p_usec_notes_rec.unit_class IS NULL OR p_usec_notes_rec.unit_class = FND_API.G_MISS_CHAR THEN
5350 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
5351 p_usec_notes_rec.status := 'E';
5352 END IF;
5353 IF p_usec_notes_rec.crs_note_type IS NULL OR p_usec_notes_rec.crs_note_type = FND_API.G_MISS_CHAR THEN
5354 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'CRS_NOTE_TYPE', 'LEGACY_TOKENS', FALSE);
5355 p_usec_notes_rec.status := 'E';
5356 END IF;
5357
5358 END validate_parameters;
5359
5360
5361 -- Check for Update
5362 FUNCTION check_insert_update ( p_usec_notes_rec IN OUT NOCOPY igs_ps_generic_pub.usec_notes_rec_type ) RETURN VARCHAR2 IS
5363
5364 BEGIN
5365
5366 IF p_usec_notes_rec.reference_number IS NULL THEN
5367 RETURN 'I';
5368 ELSE
5369 RETURN 'U';
5370 END IF;
5371 END check_insert_update;
5372
5373 -- Carry out derivations and validate them
5374 PROCEDURE validate_derivations ( p_usec_notes_rec IN OUT NOCOPY igs_ps_generic_pub.usec_notes_rec_type ) AS
5375 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
5376 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
5377 l_c_message VARCHAR2(30);
5378 BEGIN
5379
5380
5381 -- Derive Calander Type and Sequence Number
5382 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_notes_rec.teach_cal_alternate_code,
5383 p_cal_type => l_c_cal_type,
5384 p_ci_sequence_number => l_n_seq_num,
5385 p_start_dt => l_d_start_dt,
5386 p_end_dt => l_d_end_dt,
5387 p_return_status => l_c_message );
5388 IF ( l_c_message <> 'SINGLE' ) THEN
5389 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
5390 p_usec_notes_rec.status := 'E';
5391 END IF;
5392
5393
5394 -- Derive uoo_id
5395 l_c_message := NULL;
5396 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_notes_rec.unit_cd,
5397 p_ver_num => p_usec_notes_rec.version_number,
5398 p_cal_type => l_c_cal_type,
5399 p_seq_num => l_n_seq_num,
5400 p_loc_cd => p_usec_notes_rec.location_cd,
5401 p_unit_class => p_usec_notes_rec.unit_class,
5402 p_uoo_id => l_n_uoo_id,
5403 p_message => l_c_message );
5404 IF ( l_c_message IS NOT NULL ) THEN
5405 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
5406 p_usec_notes_rec.status := 'E';
5407 END IF;
5408
5409
5410 END validate_derivations;
5411
5412 -- Validate Database Constraints
5413 PROCEDURE validate_db_cons ( p_usec_notes_rec IN OUT NOCOPY igs_ps_generic_pub.usec_notes_rec_type,p_insert_update VARCHAR2 ) AS
5414 CURSOR cur_ref_num(cp_uoo_id igs_ps_unt_ofr_opt_n.uoo_id%TYPE,
5415 cp_reference_number igs_ps_unt_ofr_opt_n.reference_number%TYPE) IS
5416 SELECT b.note_text
5417 FROM igs_ps_unt_ofr_opt_n a,igs_ge_note b
5418 WHERE a.uoo_id=cp_uoo_id
5419 AND a.reference_number=cp_reference_number
5420 AND a.reference_number=b.reference_number;
5421 l_cur_ref_num cur_ref_num%ROWTYPE;
5422
5423 BEGIN
5424 IF (p_insert_update = 'U') THEN
5425
5426 /* While update check if the reference number belong to the passed unit section */
5427 OPEN cur_ref_num(l_n_uoo_id, p_usec_notes_rec.reference_number);
5428 FETCH cur_ref_num INTO l_cur_ref_num;
5429 IF cur_ref_num%NOTFOUND THEN
5430 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'REFERENCE_NUMBER', 'LEGACY_TOKENS', FALSE);
5431 p_usec_notes_rec.status := 'E';
5432 ELSE
5433 IF p_usec_notes_rec.note_text = FND_API.G_MISS_CHAR THEN
5434 p_usec_notes_rec.note_text :=NULL;
5435 ELSIF p_usec_notes_rec.note_text IS NULL THEN
5436 p_usec_notes_rec.note_text :=l_cur_ref_num.note_text;
5437 END IF;
5438 END IF;
5439 CLOSE cur_ref_num;
5440
5441 END IF;
5442
5443
5444 /* Validate FK Constraints */
5445 IF NOT igs_ps_note_type_pkg.get_pk_for_validation ( p_usec_notes_rec.crs_note_type) THEN
5446 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'CRS_NOTE_TYPE', 'LEGACY_TOKENS', FALSE);
5447 p_usec_notes_rec.status := 'E';
5448 END IF;
5449
5450 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
5451 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
5452 p_usec_notes_rec.status := 'E';
5453 END IF;
5454
5455 END validate_db_cons;
5456
5457 /* Main Unit Section Notes Sub Process */
5458 BEGIN
5459
5460 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
5461 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.start_logging_for',
5462 'Unit Section Notes');
5463 END IF;
5464
5465 p_c_rec_status := 'S';
5466 FOR I in 1..p_usec_notes_tbl.LAST LOOP
5467
5468 IF p_usec_notes_tbl.EXISTS(I) THEN
5469 l_n_uoo_id := NULL;
5470 l_c_cal_type := NULL;
5471 l_n_seq_num := NULL;
5472 p_usec_notes_tbl(I).status := 'S';
5473 p_usec_notes_tbl(I).msg_from := fnd_msg_pub.count_msg;
5474 trim_values(p_usec_notes_tbl(I) );
5475
5476 validate_parameters ( p_usec_notes_tbl(I) );
5477
5478 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5479 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.status_after_validate_parameters',
5480 'Unit code:'||p_usec_notes_tbl(I).unit_cd||' '||'Version number:'||p_usec_notes_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5481 ||p_usec_notes_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_notes_tbl(I).location_cd||' '||'Unit Class:'||
5482 p_usec_notes_tbl(I).unit_class||' '||'Crs Note Type:'||p_usec_notes_tbl(I).crs_note_type||' '||
5483 'Status:'||p_usec_notes_tbl(I).status);
5484 END IF;
5485
5486 IF p_usec_notes_tbl(I).status = 'S' THEN
5487 validate_derivations ( p_usec_notes_tbl(I));
5488
5489 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5490 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.status_after_validate_derivations',
5491 'Unit code:'||p_usec_notes_tbl(I).unit_cd||' '||'Version number:'||p_usec_notes_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5492 ||p_usec_notes_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_notes_tbl(I).location_cd||' '||'Unit Class:'||
5493 p_usec_notes_tbl(I).unit_class||' '||'Crs Note Type:'||p_usec_notes_tbl(I).crs_note_type||' '||
5494 'Status:'||p_usec_notes_tbl(I).status);
5495 END IF;
5496
5497 END IF;
5498
5499 --Find out whether it is insert/update of record
5500 l_insert_update:='I';
5501 IF p_usec_notes_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
5502 l_insert_update:= check_insert_update(p_usec_notes_tbl(I));
5503
5504 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5505 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.status_check_insert_update',
5506 'Unit code:'||p_usec_notes_tbl(I).unit_cd||' '||'Version number:'||p_usec_notes_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5507 ||p_usec_notes_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_notes_tbl(I).location_cd||' '||'Unit Class:'||
5508 p_usec_notes_tbl(I).unit_class||' '||'Crs Note Type:'||p_usec_notes_tbl(I).crs_note_type||' '||
5509 'Status:'||p_usec_notes_tbl(I).status);
5510 END IF;
5511
5512 END IF;
5513
5514 -- Find out whether record can go for import in context of cancelled/aborted
5515 IF p_usec_notes_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
5516 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
5517 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
5518 fnd_msg_pub.add;
5519 p_usec_notes_tbl(I).status := 'A';
5520 END IF;
5521
5522 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5523 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.status_after_check_import_allowed',
5524 'Unit code:'||p_usec_notes_tbl(I).unit_cd||' '||'Version number:'||p_usec_notes_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5525 ||p_usec_notes_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_notes_tbl(I).location_cd||' '||'Unit Class:'||
5526 p_usec_notes_tbl(I).unit_class||' '||'Crs Note Type:'||p_usec_notes_tbl(I).crs_note_type||' '||
5527 'Status:'||p_usec_notes_tbl(I).status);
5528 END IF;
5529
5530 END IF;
5531
5532 IF p_usec_notes_tbl(I).status = 'S' THEN
5533 validate_db_cons ( p_usec_notes_tbl(I),l_insert_update );
5534
5535 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5536 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.status_after_validate_db_cons',
5537 'Unit code:'||p_usec_notes_tbl(I).unit_cd||' '||'Version number:'||p_usec_notes_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5538 ||p_usec_notes_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_notes_tbl(I).location_cd||' '||'Unit Class:'||
5539 p_usec_notes_tbl(I).unit_class||' '||'Crs Note Type:'||p_usec_notes_tbl(I).crs_note_type||' '||
5540 'Status:'||p_usec_notes_tbl(I).status);
5541 END IF;
5542
5543 END IF;
5544
5545 /* Business Validations */
5546 /* Proceed with business validations only if the status is Success, 'S' */
5547 IF p_usec_notes_tbl(I).status = 'S' THEN
5548 igs_ps_validate_generic_pkg.validate_usec_notes ( p_usec_notes_tbl(I),l_n_uoo_id );
5549
5550 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5551 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.status_after_validate_usec_notes',
5552 'Unit code:'||p_usec_notes_tbl(I).unit_cd||' '||'Version number:'||p_usec_notes_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5553 ||p_usec_notes_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_notes_tbl(I).location_cd||' '||'Unit Class:'||
5554 p_usec_notes_tbl(I).unit_class||' '||'Crs Note Type:'||p_usec_notes_tbl(I).crs_note_type||' '||
5555 'Status:'||p_usec_notes_tbl(I).status);
5556 END IF;
5557
5558 END IF;
5559
5560 IF p_usec_notes_tbl(I).status = 'S' THEN
5561 IF l_insert_update = 'I' THEN
5562 /* Insert Record */
5563 INSERT INTO IGS_GE_NOTE
5564 (reference_number,
5565 s_note_format_type,
5566 note_text,
5567 created_by,
5568 creation_date,
5569 last_updated_by,
5570 last_update_date,
5571 last_update_login
5572 )
5573 VALUES
5574 (IGS_GE_NOTE_RF_NUM_S.nextval,
5575 'TEXT',
5576 p_usec_notes_tbl(I).note_text,
5577 g_n_user_id,
5578 SYSDATE,
5579 g_n_user_id,
5580 SYSDATE,
5581 g_n_login_id
5582 )RETURNING reference_number INTO l_n_reference_number;
5583
5584 INSERT INTO igs_ps_unt_ofr_opt_n
5585 (unit_cd,
5586 version_number,
5587 cal_type,
5588 ci_sequence_number,
5589 location_cd,
5590 unit_class,
5591 reference_number,
5592 uoo_id,
5593 crs_note_type,
5594 created_by,
5595 creation_date,
5596 last_updated_by,
5597 last_update_date,
5598 last_update_login
5599 )
5600 VALUES
5601 (p_usec_notes_tbl(I).unit_cd,
5602 p_usec_notes_tbl(I).version_number,
5603 l_c_cal_type,
5604 l_n_seq_num,
5605 p_usec_notes_tbl(I).location_cd,
5606 p_usec_notes_tbl(I).unit_class,
5607 l_n_reference_number,
5608 l_n_uoo_id,
5609 p_usec_notes_tbl(I).crs_note_type,
5610 g_n_user_id,
5611 SYSDATE,
5612 g_n_user_id,
5613 SYSDATE,
5614 g_n_login_id
5615 );
5616
5617 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5618 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.Record_Inserted',
5619 'Unit code:'||p_usec_notes_tbl(I).unit_cd||' '||'Version number:'||p_usec_notes_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5620 ||p_usec_notes_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_notes_tbl(I).location_cd||' '||'Unit Class:'||
5621 p_usec_notes_tbl(I).unit_class||' '||'Crs Note Type:'||p_usec_notes_tbl(I).crs_note_type);
5622 END IF;
5623
5624 ELSE
5625 /*Update record*/
5626 UPDATE igs_ps_unt_ofr_opt_n
5627 SET crs_note_type = p_usec_notes_tbl(I).crs_note_type,
5628 last_updated_by = g_n_user_id,
5629 last_update_date = SYSDATE,
5630 last_update_login = g_n_login_id
5631 WHERE reference_number = p_usec_notes_tbl(I).reference_number;
5632
5633 UPDATE igs_ge_note
5634 SET note_text = p_usec_notes_tbl(I).note_text,
5635 last_updated_by = g_n_user_id,
5636 last_update_date = SYSDATE,
5637 last_update_login = g_n_login_id
5638 WHERE reference_number = p_usec_notes_tbl(I).reference_number;
5639
5640 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
5641 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.Record_updated',
5642 'Unit code:'||p_usec_notes_tbl(I).unit_cd||' '||'Version number:'||p_usec_notes_tbl(I).version_number||' '||'teach_cal_alternate_code:'
5643 ||p_usec_notes_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_notes_tbl(I).location_cd||' '||'Unit Class:'||
5644 p_usec_notes_tbl(I).unit_class||' '||'Crs Note Type:'||p_usec_notes_tbl(I).crs_note_type);
5645 END IF;
5646
5647 END IF;
5648 END IF;--insert/update
5649
5650 IF p_usec_notes_tbl(I).status = 'S' THEN
5651 p_usec_notes_tbl(I).msg_from := NULL;
5652 p_usec_notes_tbl(I).msg_to := NULL;
5653 ELSIF p_usec_notes_tbl(I).status = 'A' THEN
5654 p_usec_notes_tbl(I).msg_from := p_usec_notes_tbl(I).msg_from + 1;
5655 p_usec_notes_tbl(I).msg_to := fnd_msg_pub.count_msg;
5656 ELSE
5657 p_c_rec_status := p_usec_notes_tbl(I).status;
5658 p_usec_notes_tbl(I).msg_from := p_usec_notes_tbl(I).msg_from+1;
5659 p_usec_notes_tbl(I).msg_to := fnd_msg_pub.count_msg;
5660 IF p_usec_notes_tbl(I).status = 'E' THEN
5661 RETURN;
5662 END IF;
5663 END IF;
5664
5665 END IF;--exists
5666 END LOOP;
5667
5668 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
5669 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_notes.after_import_status',p_c_rec_status);
5670 END IF;
5671
5672 END create_usec_notes;
5673
5674 ---Unit section assesment
5675 PROCEDURE create_usec_assmnt(
5676 p_usec_assmnt_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_assmnt_tbl_type,
5677 p_c_rec_status OUT NOCOPY VARCHAR2,
5678 p_calling_context IN VARCHAR2
5679 )AS
5680
5681 /***********************************************************************************************
5682 Created By : Sommukhe
5683 Date Created By: 17-Jun-2005
5684 Purpose : This procedure is a sub process to import records of Unit Section Assessment(Exam).
5685
5686 Known limitations,enhancements,remarks:
5687 Change History (in reverse chronological order)
5688 Who When What
5689 ***********************************************************************************************/
5690 l_insert_update VARCHAR2(1);
5691 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
5692 l_n_building_id NUMBER;
5693 l_n_room_id NUMBER;
5694 l_d_exam_start_time igs_ps_usec_as.exam_start_time%TYPE;
5695 l_d_exam_end_time igs_ps_usec_as.exam_end_time%TYPE;
5696
5697 /* Private Procedures for create_usec_assmnt */
5698 PROCEDURE trim_values ( p_usec_assmnt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_assmnt_rec_type ) AS
5699 BEGIN
5700
5701 p_usec_assmnt_rec.unit_cd := trim(p_usec_assmnt_rec.unit_cd);
5702 p_usec_assmnt_rec.version_number := trim(p_usec_assmnt_rec.version_number);
5703 p_usec_assmnt_rec.teach_cal_alternate_code := trim(p_usec_assmnt_rec.teach_cal_alternate_code);
5704 p_usec_assmnt_rec.location_cd := trim(p_usec_assmnt_rec.location_cd);
5705 p_usec_assmnt_rec.unit_class := trim(p_usec_assmnt_rec.unit_class);
5706 p_usec_assmnt_rec.final_exam_date := TRUNC(p_usec_assmnt_rec.final_exam_date);
5707 p_usec_assmnt_rec.exam_start_time := trim(p_usec_assmnt_rec.exam_start_time);
5708 p_usec_assmnt_rec.exam_end_time := trim(p_usec_assmnt_rec.exam_end_time);
5709 p_usec_assmnt_rec.exam_location_cd := trim(p_usec_assmnt_rec.exam_location_cd);
5710 p_usec_assmnt_rec.building_code := trim(p_usec_assmnt_rec.building_code);
5711 p_usec_assmnt_rec.room_code := trim(p_usec_assmnt_rec.room_code);
5712
5713 END trim_values;
5714
5715 -- validate parameters passed.
5716 PROCEDURE validate_parameters ( p_usec_assmnt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_assmnt_rec_type ) AS
5717 BEGIN
5718
5719 /* Check for Mandatory Parameters */
5720 IF p_usec_assmnt_rec.unit_cd IS NULL OR p_usec_assmnt_rec.unit_cd = FND_API.G_MISS_CHAR THEN
5721 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CD', 'LEGACY_TOKENS', FALSE);
5722 p_usec_assmnt_rec.status := 'E';
5723 END IF;
5724 IF p_usec_assmnt_rec.version_number IS NULL OR p_usec_assmnt_rec.version_number = FND_API.G_MISS_NUM THEN
5725 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_VER_NUM', 'LEGACY_TOKENS', FALSE);
5726 p_usec_assmnt_rec.status := 'E';
5727 END IF;
5728 IF p_usec_assmnt_rec.teach_cal_alternate_code IS NULL OR p_usec_assmnt_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
5729 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
5730 p_usec_assmnt_rec.status := 'E';
5731 END IF;
5732 IF p_usec_assmnt_rec.location_cd IS NULL OR p_usec_assmnt_rec.location_cd= FND_API.G_MISS_CHAR THEN
5733 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD', 'LEGACY_TOKENS', FALSE);
5734 p_usec_assmnt_rec.status := 'E';
5735 END IF;
5736 IF p_usec_assmnt_rec.unit_class IS NULL OR p_usec_assmnt_rec.unit_class = FND_API.G_MISS_CHAR THEN
5737 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'UNIT_CLASS', 'LEGACY_TOKENS', FALSE);
5738 p_usec_assmnt_rec.status := 'E';
5739 END IF;
5740 IF p_usec_assmnt_rec.final_exam_date IS NULL OR p_usec_assmnt_rec.final_exam_date = FND_API.G_MISS_DATE THEN
5741 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'FINAL_EXAM_DATE', 'LEGACY_TOKENS', FALSE);
5742 p_usec_assmnt_rec.status := 'E';
5743 END IF;
5744 IF p_usec_assmnt_rec.exam_start_time IS NULL OR p_usec_assmnt_rec.exam_start_time = FND_API.G_MISS_CHAR THEN
5745 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'EXAM_START_TIME', 'LEGACY_TOKENS', FALSE);
5746 p_usec_assmnt_rec.status := 'E';
5747 END IF;
5748 IF p_usec_assmnt_rec.exam_end_time IS NULL OR p_usec_assmnt_rec.exam_end_time = FND_API.G_MISS_CHAR THEN
5749 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'EXAM_END_TIME', 'LEGACY_TOKENS', FALSE);
5750 p_usec_assmnt_rec.status := 'E';
5751 END IF;
5752 IF p_usec_assmnt_rec.exam_location_cd IS NULL OR p_usec_assmnt_rec.exam_location_cd = FND_API.G_MISS_CHAR THEN
5753 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'EXAM_LOCATION_CD', 'LEGACY_TOKENS', FALSE);
5754 p_usec_assmnt_rec.status := 'E';
5755 END IF;
5756
5757 END validate_parameters;
5758
5759
5760 -- Check for Update
5761 FUNCTION check_insert_update ( p_usec_assmnt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_assmnt_rec_type ) RETURN VARCHAR2 IS
5762 CURSOR c_usec_as(cp_n_uoo_id NUMBER) IS
5763 SELECT 'X'
5764 FROM igs_ps_usec_as
5765 WHERE uoo_id = cp_n_uoo_id;
5766
5767 c_usec_as_rec c_usec_as%ROWTYPE;
5768 BEGIN
5769 OPEN c_usec_as(l_n_uoo_id);
5770 FETCH c_usec_as INTO c_usec_as_rec;
5771 IF c_usec_as%NOTFOUND THEN
5772 CLOSE c_usec_as;
5773 RETURN 'I';
5774 ELSE
5775 CLOSE c_usec_as;
5776 RETURN 'U';
5777 END IF;
5778 END check_insert_update;
5779
5780 -- Carry out derivations and validate them
5781 PROCEDURE validate_derivations ( p_usec_assmnt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_assmnt_rec_type ) AS
5782
5783 CURSOR c_bld_id ( cp_building_cd igs_ad_building_all.building_cd%TYPE,
5784 cp_location_cd igs_ad_building_all.location_cd%TYPE ) IS
5785 SELECT building_id
5786 FROM igs_ad_building_all
5787 WHERE building_cd = cp_building_cd
5788 AND location_cd = cp_location_cd;
5789
5790 CURSOR c_room_id ( cp_building_id igs_ad_building_all.building_id%TYPE,
5791 cp_room_cd igs_ad_room_all.room_cd%TYPE ) IS
5792 SELECT room_id
5793 FROM igs_ad_room_all
5794 WHERE room_cd = cp_room_cd
5795 AND building_id = cp_building_id;
5796
5797
5798 l_c_cal_type igs_ps_unit_ofr_opt_all.cal_type%TYPE;
5799 l_n_seq_num igs_ps_unit_ofr_opt_all.ci_sequence_number%TYPE;
5800 l_d_start_dt igs_ca_inst_all.start_dt%TYPE;
5801 l_d_end_dt igs_ca_inst_all.end_dt%TYPE;
5802 l_c_message VARCHAR2(30);
5803 BEGIN
5804
5805
5806 -- Derive Calander Type and Sequence Number
5807 igs_ge_gen_003.get_calendar_instance ( p_alternate_cd => p_usec_assmnt_rec.teach_cal_alternate_code,
5808 p_cal_type => l_c_cal_type,
5809 p_ci_sequence_number => l_n_seq_num,
5810 p_start_dt => l_d_start_dt,
5811 p_end_dt => l_d_end_dt,
5812 p_return_status => l_c_message );
5813 IF ( l_c_message <> 'SINGLE' ) THEN
5814 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD', 'LEGACY_TOKENS', FALSE);
5815 p_usec_assmnt_rec.status := 'E';
5816 END IF;
5817
5818
5819 -- Derive uoo_id
5820 l_c_message := NULL;
5821 igs_ps_validate_lgcy_pkg.get_uoo_id ( p_unit_cd => p_usec_assmnt_rec.unit_cd,
5822 p_ver_num => p_usec_assmnt_rec.version_number,
5823 p_cal_type => l_c_cal_type,
5824 p_seq_num => l_n_seq_num,
5825 p_loc_cd => p_usec_assmnt_rec.location_cd,
5826 p_unit_class => p_usec_assmnt_rec.unit_class,
5827 p_uoo_id => l_n_uoo_id,
5828 p_message => l_c_message );
5829 IF ( l_c_message IS NOT NULL ) THEN
5830 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
5831 p_usec_assmnt_rec.status := 'E';
5832 END IF;
5833
5834
5835 -- Derive Building Identifier and associated Room Identifier.
5836 IF p_usec_assmnt_rec.building_code IS NOT NULL AND p_usec_assmnt_rec.building_code <> FND_API.G_MISS_CHAR THEN
5837 OPEN c_bld_id ( p_usec_assmnt_rec.building_code, p_usec_assmnt_rec.exam_location_cd );
5838 FETCH c_bld_id INTO l_n_building_id;
5839 IF ( c_bld_id%NOTFOUND ) THEN
5840 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'BUILDING_CODE', 'LEGACY_TOKENS', FALSE);
5841 p_usec_assmnt_rec.status := 'E';
5842 END IF;
5843 CLOSE c_bld_id;
5844
5845 -- Derive Room Identifier
5846 IF p_usec_assmnt_rec.room_code IS NOT NULL AND p_usec_assmnt_rec.room_code <> FND_API.G_MISS_CHAR THEN
5847 OPEN c_room_id ( l_n_building_id, p_usec_assmnt_rec.room_code );
5848 FETCH c_room_id INTO l_n_room_id;
5849 IF ( c_room_id%NOTFOUND ) THEN
5850 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'ROOM_CODE', 'LEGACY_TOKENS', FALSE);
5851 p_usec_assmnt_rec.status := 'E';
5852 END IF;
5853 CLOSE c_room_id;
5854 END IF;
5855 END IF;
5856
5857
5858 --validate/derive date fields with time comp
5859 -- exam_sart_time in proper format
5860
5861 BEGIN
5862 IF (p_usec_assmnt_rec.exam_start_time IS NOT NULL) THEN
5863 l_d_exam_start_time:= TO_DATE ('1900/01/01'||p_usec_assmnt_rec.exam_start_time, 'YYYY/MM/DD HH24:MI');
5864 p_usec_assmnt_rec.exam_start_time := TO_CHAR(l_d_exam_start_time,'HH24:MI');
5865 END IF;
5866 EXCEPTION
5867 WHEN OTHERS THEN
5868 FND_MESSAGE.set_name ('IGS','IGS_GE_INVALID_DATE_FORMAT');
5869 fnd_msg_pub.add;
5870 p_usec_assmnt_rec.status := 'E';
5871 END;
5872
5873 --exam end time in proper format
5874 BEGIN
5875 IF (p_usec_assmnt_rec.exam_end_time IS NOT NULL) THEN
5876 l_d_exam_end_time:= TO_DATE ('1900/01/01'||p_usec_assmnt_rec.exam_end_time, 'YYYY/MM/DD HH24:MI');
5877 p_usec_assmnt_rec.exam_end_time := TO_CHAR(l_d_exam_end_time,'HH24:MI');
5878
5879 END IF;
5880 EXCEPTION
5881 WHEN OTHERS THEN
5882 FND_MESSAGE.set_name ('IGS','IGS_GE_INVALID_DATE_FORMAT');
5883 fnd_msg_pub.add;
5884 p_usec_assmnt_rec.status := 'E';
5885 END;
5886
5887 END validate_derivations;
5888
5889
5890 PROCEDURE assign_defaults ( p_usec_assmnt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_assmnt_rec_type, p_insert IN VARCHAR2) IS
5891 CURSOR cur_usec_exam ( cp_uoo_id IN NUMBER) IS
5892 SELECT *
5893 FROM igs_ps_usec_as
5894 WHERE uoo_id = cp_uoo_id;
5895 l_cur_usec_exam cur_usec_exam%ROWTYPE;
5896
5897 CURSOR cur_room (cp_building_id IN NUMBER, cp_room_cd IN VARCHAR2) IS
5898 SELECT room_id
5899 FROM igs_ad_room
5900 WHERE room_cd=cp_room_cd
5901 AND building_id=cp_building_id;
5902
5903 BEGIN
5904
5905 IF p_insert = 'U' THEN
5906
5907 OPEN cur_usec_exam(l_n_uoo_id);
5908 FETCH cur_usec_exam INTO l_cur_usec_exam;
5909 CLOSE cur_usec_exam;
5910
5911 IF p_usec_assmnt_rec.building_code IS NULL THEN
5912 l_n_building_id := l_cur_usec_exam.building_code;
5913 ELSIF p_usec_assmnt_rec.building_code = FND_API.G_MISS_CHAR THEN
5914 l_n_building_id := NULL;
5915 END IF;
5916
5917 IF p_usec_assmnt_rec.room_code IS NULL THEN
5918 l_n_room_id := l_cur_usec_exam.room_code;
5919 ELSIF p_usec_assmnt_rec.room_code = FND_API.G_MISS_CHAR THEN
5920 l_n_room_id := NULL;
5921 ELSIF p_usec_assmnt_rec.room_code IS NOT NULL THEN
5922 OPEN cur_room(l_n_building_id,p_usec_assmnt_rec.room_code);
5923 FETCH cur_room INTO l_n_room_id;
5924 IF cur_room%NOTFOUND THEN
5925 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'ROOM_CODE', 'LEGACY_TOKENS', FALSE);
5926 p_usec_assmnt_rec.status := 'E';
5927 END IF;
5928 CLOSE cur_room;
5929 END IF;
5930
5931 END IF;
5932
5933 END assign_defaults;
5934
5935 -- Validate Database Constraints
5936 PROCEDURE validate_db_cons ( p_usec_assmnt_rec IN OUT NOCOPY igs_ps_generic_pub.usec_assmnt_rec_type,p_insert_update VARCHAR2 ) AS
5937 CURSOR c_loc_cd(cp_location_cd igs_ad_location_all.location_cd%TYPE) IS
5938 SELECT 'X'
5939 FROM igs_ad_location_all
5940 WHERE location_cd = cp_location_cd
5941 AND closed_ind = 'N';
5942
5943 c_loc_cd_rec c_loc_cd%ROWTYPE;
5944
5945 BEGIN
5946 IF (p_insert_update = 'I') THEN
5947 /* Unique Key Validation */
5948 IF igs_ps_usec_as_pkg.get_uk_for_validation (x_building_code =>l_n_building_id,
5949 x_final_exam_date =>p_usec_assmnt_rec.final_exam_date,
5950 x_location_cd =>p_usec_assmnt_rec.exam_location_cd,
5951 x_room_code =>l_n_room_id,
5952 x_uoo_id =>l_n_uoo_id) THEN
5953 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'USEC_ASSMNT', 'LEGACY_TOKENS', FALSE);
5954 p_usec_assmnt_rec.status := 'W';
5955 RETURN;
5956 END IF;
5957 END IF;
5958
5959
5960 /* Validate FK Constraints */
5961 OPEN c_loc_cd(p_usec_assmnt_rec.exam_location_cd);
5962 FETCH c_loc_cd INTO c_loc_cd_rec;
5963 IF c_loc_cd%NOTFOUND THEN
5964 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'EXAM_LOCATION_CD', 'LEGACY_TOKENS', FALSE);
5965 p_usec_assmnt_rec.status := 'E';
5966 END IF;
5967 CLOSE c_loc_cd;
5968
5969
5970 -- Check for the existence of Buildings
5971 IF l_n_building_id IS NOT NULL THEN
5972 IF NOT igs_ad_building_pkg.get_pk_for_validation ( l_n_building_id ) THEN
5973 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'BUILDING_CODE', 'LEGACY_TOKENS', FALSE);
5974 p_usec_assmnt_rec.status := 'E';
5975 END IF;
5976 END IF;
5977
5978 -- Check for the existence of Rooms
5979 IF l_n_room_id IS NOT NULL THEN
5980 IF NOT igs_ad_room_pkg.get_pk_for_validation ( l_n_room_id ) THEN
5981 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ROOM_CODE', 'LEGACY_TOKENS', FALSE);
5982 p_usec_assmnt_rec.status := 'E';
5983 END IF;
5984 END IF;
5985
5986
5987 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation ( l_n_uoo_id ) THEN
5988 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
5989 p_usec_assmnt_rec.status := 'E';
5990 END IF;
5991
5992 END validate_db_cons;
5993
5994 /* Main Unit Section Assessment Sub Process */
5995 BEGIN
5996
5997 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
5998 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.start_logging_for',
5999 'Unit Section Assessment');
6000 END IF;
6001
6002 p_c_rec_status := 'S';
6003 FOR I in 1..p_usec_assmnt_tbl.LAST LOOP
6004
6005
6006 IF p_usec_assmnt_tbl.EXISTS(I) THEN
6007 l_n_uoo_id := NULL;
6008 l_d_exam_start_time:=NULL;
6009 l_d_exam_end_time :=NULL;
6010 l_n_building_id :=NULL;
6011 l_n_room_id :=NULL;
6012 p_usec_assmnt_tbl(I).status := 'S';
6013 p_usec_assmnt_tbl(I).msg_from := fnd_msg_pub.count_msg;
6014 trim_values(p_usec_assmnt_tbl(I) );
6015
6016 validate_parameters ( p_usec_assmnt_tbl(I) );
6017
6018 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6019 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.status_after_validate_parameters',
6020 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6021 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6022 p_usec_assmnt_tbl(I).unit_class||' '||'Status:'||p_usec_assmnt_tbl(I).status);
6023 END IF;
6024
6025 IF p_usec_assmnt_tbl(I).status = 'S' THEN
6026 validate_derivations ( p_usec_assmnt_tbl(I));
6027
6028 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6029 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.status_after_validate_derivations',
6030 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6031 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6032 p_usec_assmnt_tbl(I).unit_class||' '||'Status:'||p_usec_assmnt_tbl(I).status);
6033 END IF;
6034
6035 END IF;
6036
6037 --Find out whether it is insert/update of record
6038 l_insert_update:='I';
6039 IF p_usec_assmnt_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
6040 l_insert_update:= check_insert_update(p_usec_assmnt_tbl(I));
6041
6042 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6043 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.status_after_check_insert_update',
6044 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6045 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6046 p_usec_assmnt_tbl(I).unit_class||' '||'Status:'||p_usec_assmnt_tbl(I).status);
6047 END IF;
6048
6049 END IF;
6050
6051 -- Find out whether record can go for import in context of cancelled/aborted
6052 IF p_usec_assmnt_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
6053 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
6054 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
6055 fnd_msg_pub.add;
6056 p_usec_assmnt_tbl(I).status := 'A';
6057 END IF;
6058
6059 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6060 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.status_after_check_import_allowed',
6061 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6062 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6063 p_usec_assmnt_tbl(I).unit_class||' '||'Status:'||p_usec_assmnt_tbl(I).status);
6064 END IF;
6065
6066 END IF;
6067
6068 --Defaulting depending upon insert or update
6069 IF p_usec_assmnt_tbl(I).status = 'S' THEN
6070 assign_defaults(p_usec_assmnt_tbl(I),l_insert_update);
6071
6072 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6073 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.status_after_assign_defaults',
6074 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6075 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6076 p_usec_assmnt_tbl(I).unit_class||' '||'Status:'||p_usec_assmnt_tbl(I).status);
6077 END IF;
6078
6079 END IF;
6080
6081 IF p_usec_assmnt_tbl(I).status = 'S' THEN
6082 validate_db_cons ( p_usec_assmnt_tbl(I),l_insert_update );
6083
6084 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6085 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.status_after_validate_db_cons',
6086 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6087 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6088 p_usec_assmnt_tbl(I).unit_class||' '||'Status:'||p_usec_assmnt_tbl(I).status);
6089 END IF;
6090
6091 END IF;
6092
6093 /* Business Validations */
6094 /* Proceed with business validations only if the status is Success, 'S' */
6095 IF p_usec_assmnt_tbl(I).status = 'S' THEN
6096 igs_ps_validate_generic_pkg.validate_usec_assmnt ( p_usec_assmnt_tbl(I),l_n_uoo_id,l_d_exam_start_time,l_d_exam_end_time,l_n_building_id,l_n_room_id,l_insert_update);
6097
6098 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6099 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.status_after_Business_validation',
6100 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6101 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6102 p_usec_assmnt_tbl(I).unit_class||' '||'Status:'||p_usec_assmnt_tbl(I).status);
6103 END IF;
6104
6105 END IF;
6106
6107 IF p_usec_assmnt_tbl(I).status = 'S' THEN
6108 IF l_insert_update = 'I' THEN
6109 /* Insert Record */
6110
6111 INSERT INTO igs_ps_usec_as
6112 (unit_section_assessment_id,
6113 uoo_id,
6114 final_exam_date,
6115 exam_start_time,
6116 exam_end_time,
6117 location_cd,
6118 building_code,
6119 room_code,
6120 created_by,
6121 creation_date,
6122 last_updated_by,
6123 last_update_date,
6124 last_update_login
6125 )
6126 VALUES
6127 (igs_ps_usec_as_s.nextval,
6128 l_n_uoo_id,
6129 p_usec_assmnt_tbl(I).final_exam_date,
6130 l_d_exam_start_time,--p_usec_assmnt_tbl(I).final_exam_date,
6131 l_d_exam_end_time,--p_usec_assmnt_tbl(I).exam_start_time,
6132 p_usec_assmnt_tbl(I).exam_location_cd,
6133 l_n_building_id,
6134 l_n_room_id,
6135 g_n_user_id,
6136 SYSDATE,
6137 g_n_user_id,
6138 SYSDATE,
6139 g_n_login_id
6140 );
6141
6142 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6143 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.Record_inserted',
6144 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6145 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6146 p_usec_assmnt_tbl(I).unit_class);
6147 END IF;
6148
6149
6150 ELSE
6151
6152 /*Update record*/
6153 UPDATE igs_ps_usec_as
6154 SET final_exam_date = p_usec_assmnt_tbl(I).final_exam_date,
6155 exam_start_time=l_d_exam_start_time,--p_usec_assmnt_tbl(I).exam_start_time,
6156 exam_end_time=l_d_exam_end_time,--p_usec_assmnt_tbl(I).exam_end_time,
6157 location_cd=p_usec_assmnt_tbl(I).exam_location_cd,
6158 building_code=l_n_building_id,
6159 room_code=l_n_room_id,
6160 last_updated_by = g_n_user_id,
6161 last_update_date = SYSDATE,
6162 last_update_login = g_n_login_id
6163 WHERE uoo_id = l_n_uoo_id;
6164
6165 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6166 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.Record_updated',
6167 'Unit code:'||p_usec_assmnt_tbl(I).unit_cd||' '||'Version number:'||p_usec_assmnt_tbl(I).version_number||' '||'teach_cal_alternate_code:'
6168 ||p_usec_assmnt_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_assmnt_tbl(I).location_cd||' '||'Unit Class:'||
6169 p_usec_assmnt_tbl(I).unit_class);
6170 END IF;
6171 END IF;
6172 END IF;--insert/update
6173
6174 IF p_usec_assmnt_tbl(I).status = 'S' THEN
6175 p_usec_assmnt_tbl(I).msg_from := NULL;
6176 p_usec_assmnt_tbl(I).msg_to := NULL;
6177 ELSIF p_usec_assmnt_tbl(I).status = 'A' THEN
6178 p_usec_assmnt_tbl(I).msg_from := p_usec_assmnt_tbl(I).msg_from + 1;
6179 p_usec_assmnt_tbl(I).msg_to := fnd_msg_pub.count_msg;
6180 ELSE
6181 p_c_rec_status := p_usec_assmnt_tbl(I).status;
6182 p_usec_assmnt_tbl(I).msg_from := p_usec_assmnt_tbl(I).msg_from+1;
6183 p_usec_assmnt_tbl(I).msg_to := fnd_msg_pub.count_msg;
6184 IF p_usec_assmnt_tbl(I).status = 'E' THEN
6185 RETURN;
6186 END IF;
6187 END IF;
6188 END IF;--exists
6189 END LOOP;
6190
6191 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
6192 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_assmnt.after_import_status',p_c_rec_status);
6193 END IF;
6194
6195
6196 END create_usec_assmnt;
6197
6198
6199 PROCEDURE create_uso_ins_ovrd(p_tab_uso_ins IN OUT NOCOPY igs_ps_generic_pub.uso_ins_tbl_type
6200 ,p_c_rec_status OUT NOCOPY VARCHAR2
6201 ,p_calling_context IN VARCHAR2) IS
6202 /***********************************************************************************************
6203
6204 Created By: sarakshi
6205 Date Created By: 31-May-2005
6206 Purpose: This procedure imports(override) unit section occurrence instructor.
6207
6208 Known limitations,enhancements,remarks:
6209 Change History
6210 Who When What
6211 ***********************************************************************************************/
6212
6213 l_n_ins_id igs_ps_uso_instrctrs.instructor_id%TYPE;
6214 l_n_uso_id igs_ps_uso_instrctrs.unit_section_occurrence_id%TYPE;
6215 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
6216 l_d_start_dt igs_ps_usec_occurs_all.start_date%TYPE;
6217 l_d_end_dt igs_ps_usec_occurs_all.end_date%TYPE;
6218 l_insert_status BOOLEAN;
6219 l_delete_status BOOLEAN;
6220 l_message_name VARCHAR2(30);
6221
6222 PROCEDURE trim_values ( p_uso_ins_rec IN OUT NOCOPY igs_ps_generic_pub.uso_ins_rec_type) AS
6223 BEGIN
6224 p_uso_ins_rec.instructor_person_number := TRIM(p_uso_ins_rec.instructor_person_number);
6225 p_uso_ins_rec.production_uso_id := TRIM(p_uso_ins_rec.production_uso_id);
6226 p_uso_ins_rec.unit_cd := TRIM(p_uso_ins_rec.unit_cd);
6227 p_uso_ins_rec.version_number := TRIM(p_uso_ins_rec.version_number);
6228 p_uso_ins_rec.teach_cal_alternate_code := TRIM(p_uso_ins_rec.teach_cal_alternate_code);
6229 p_uso_ins_rec.location_cd := TRIM(p_uso_ins_rec.location_cd);
6230 p_uso_ins_rec.unit_class := TRIM(p_uso_ins_rec.unit_class);
6231 p_uso_ins_rec.occurrence_identifier := TRIM(p_uso_ins_rec.occurrence_identifier);
6232 p_uso_ins_rec.confirmed_flag := TRIM(p_uso_ins_rec.confirmed_flag);
6233 p_uso_ins_rec.wl_percentage_allocation := TRIM(p_uso_ins_rec.wl_percentage_allocation);
6234 p_uso_ins_rec.instructional_load_lecture := TRIM(p_uso_ins_rec.instructional_load_lecture);
6235 p_uso_ins_rec.instructional_load_laboratory := TRIM(p_uso_ins_rec.instructional_load_laboratory);
6236 p_uso_ins_rec.instructional_load_other := TRIM(p_uso_ins_rec.instructional_load_other);
6237 p_uso_ins_rec.lead_instructor_flag := TRIM(p_uso_ins_rec.lead_instructor_flag);
6238
6239 END trim_values;
6240
6241 PROCEDURE validate_parameters(p_uso_ins_rec IN OUT NOCOPY igs_ps_generic_pub.uso_ins_rec_type) AS
6242 /***********************************************************************************************
6243
6244 Created By: smvk
6245 Date Created By: 20-May-2003
6246 Purpose: This procedure validates all mandatory parameter required for the unit section occurrence
6247 instructor process to proceed.
6248
6249 Known limitations,enhancements,remarks:
6250 Change History
6251 Who When What
6252 ***********************************************************************************************/
6253
6254 BEGIN
6255 p_uso_ins_rec.status:='S';
6256
6257 -- Checking for the mandatory existence of Unit Code, verison number, instructor person number parameter in the record.
6258 IF p_uso_ins_rec.instructor_person_number IS NULL OR p_uso_ins_rec.instructor_person_number = FND_API.G_MISS_CHAR THEN
6259 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
6260 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY',fnd_message.get,NULL,FALSE);
6261 p_uso_ins_rec.status := 'E';
6262 END IF;
6263
6264 IF p_uso_ins_rec.unit_cd IS NULL OR p_uso_ins_rec.unit_cd = FND_API.G_MISS_CHAR THEN
6265 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
6266 p_uso_ins_rec.status := 'E';
6267 END IF;
6268
6269 IF p_uso_ins_rec.version_number IS NULL OR p_uso_ins_rec.version_number = FND_API.G_MISS_NUM THEN
6270 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
6271 p_uso_ins_rec.status := 'E';
6272 END IF;
6273
6274 -- if the production USO id is not provided then Teching calendar alternate code, location code and
6275 -- unit class are required.
6276 IF p_uso_ins_rec.production_uso_id IS NULL OR p_uso_ins_rec.production_uso_id = FND_API.G_MISS_NUM THEN
6277 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
6278 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
6279 p_uso_ins_rec.status := 'E';
6280 END IF;
6281 IF p_uso_ins_rec.location_cd IS NULL OR p_uso_ins_rec.location_cd = FND_API.G_MISS_CHAR THEN
6282 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
6283 p_uso_ins_rec.status := 'E';
6284 END IF;
6285 IF p_uso_ins_rec.unit_class IS NULL OR p_uso_ins_rec.unit_class = FND_API.G_MISS_CHAR THEN
6286 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
6287 p_uso_ins_rec.status := 'E';
6288 END IF;
6289 END IF;
6290
6291 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
6292 (p_uso_ins_rec.location_cd IS NULL OR p_uso_ins_rec.location_cd = FND_API.G_MISS_CHAR ) AND
6293 (p_uso_ins_rec.unit_class IS NULL OR p_uso_ins_rec.unit_class = FND_API.G_MISS_CHAR) THEN
6294 IF p_uso_ins_rec.production_uso_id IS NULL OR p_uso_ins_rec.production_uso_id = FND_API.G_MISS_NUM THEN
6295 fnd_message.set_name('IGS','IGS_PS_PRODUCTION_USO_ID');
6296 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY',fnd_message.get,NULL,FALSE);
6297 p_uso_ins_rec.status := 'E';
6298 END IF;
6299 END IF;
6300
6301 IF (p_uso_ins_rec.production_uso_id IS NULL OR p_uso_ins_rec.production_uso_id = FND_API.G_MISS_NUM ) AND
6302 (p_uso_ins_rec.occurrence_identifier IS NULL OR p_uso_ins_rec.occurrence_identifier = FND_API.G_MISS_CHAR) THEN
6303 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'USEC_OCCRS_ID','IGS_PS_LOG_PARAMETERS', FALSE);
6304 p_uso_ins_rec.status := 'E';
6305 END IF;
6306
6307
6308 END validate_parameters;
6309
6310 PROCEDURE validate_derivation(p_uso_ins_rec IN OUT NOCOPY igs_ps_generic_pub.uso_ins_rec_type) AS
6311 /***********************************************************************************************
6312
6313 Created By: smvk
6314 Date Created By: 20-May-2003
6315 Purpose: This procedure derives the values required for creation of unit section occurrence instructor in production table.
6316
6317 Known limitations,enhancements,remarks:
6318 Change History
6319 Who When What
6320 smvk 28-Jul-2004 Bug # 3793580. Coded to call get_uso_id procedure and removed
6321 cursors used to derive USO id.
6322 jbegum 5-June-2003 Bug#2972950
6323 For the PSP Scheduling Enhancements TD:
6324 Modified the two cursors c_tba_count,c_tba_uso_id
6325 ***********************************************************************************************/
6326
6327
6328 CURSOR c_uoo_id (cp_n_uso_id IN igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE) IS
6329 SELECT A.uoo_id
6330 FROM igs_ps_usec_occurs_all A
6331 WHERE A.unit_section_occurrence_id = cp_n_uso_id;
6332
6333 l_c_cal_type igs_ca_inst_all.cal_type%TYPE;
6334 l_n_seq_num igs_ca_inst_all.sequence_number%TYPE;
6335 l_d_start igs_ca_inst_all.start_dt%TYPE;
6336 l_d_end igs_ca_inst_all.end_dt%TYPE;
6337 l_c_ret_status VARCHAR2(30);
6338 l_c_msg VARCHAR2(30);
6339
6340 BEGIN
6341 -- Initialize the variable use to store the derived values.
6342 l_n_ins_id := NULL;
6343 l_n_uso_id := NULL;
6344 l_n_uoo_id := NULL;
6345
6346 -- Derive the Instructor identifier
6347 igs_ps_validate_lgcy_pkg.get_party_id(p_uso_ins_rec.instructor_person_number, l_n_ins_id);
6348 IF l_n_ins_id IS NULL THEN
6349 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
6350 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', fnd_message.get,NULL, FALSE);
6351 p_uso_ins_rec.status := 'E';
6352 END IF;
6353
6354 -- if the production unit section occurrence identifier is provided then validate it
6355 -- otherwise derive the production unit section occurrence identifier.
6356 IF p_uso_ins_rec.production_uso_id IS NOT NULL THEN
6357 IF igs_ps_usec_occurs_pkg.get_pk_for_validation(p_uso_ins_rec.production_uso_id) THEN
6358 l_n_uso_id := p_uso_ins_rec.production_uso_id;
6359 -- Also derive the unit section identifier uoo_id for the the unit section occurrence identifier
6360 OPEN c_uoo_id(l_n_uso_id);
6361 FETCH c_uoo_id INTO l_n_uoo_id;
6362 CLOSE c_uoo_id;
6363 ELSE
6364 fnd_message.set_name('IGS','IGS_PS_PRODUCTION_USO_ID');
6365 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', fnd_message.get,NULL, FALSE);
6366 p_uso_ins_rec.status := 'E';
6367 END IF;
6368 ELSE
6369 -- Deriving the value of Unit section Occurrence identifier
6370
6371 -- Deriving the Calendar Type and Calendar Sequence Number
6372 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);
6373 IF l_c_ret_status <> 'SINGLE' THEN
6374 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
6375 p_uso_ins_rec.status := 'E';
6376 END IF;
6377 -- Deriving the Unit Offering Option Identifier
6378 l_c_ret_status := NULL;
6379 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);
6380 IF l_c_ret_status IS NOT NULL THEN
6381 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
6382 p_uso_ins_rec.status := 'E';
6383 END IF;
6384
6385
6386 --Derive the unit section occurrence id
6387 l_c_msg := NULL;
6388 igs_ps_validate_lgcy_pkg.get_uso_id( p_uoo_id => l_n_uoo_id,
6389 p_occurrence_identifier => p_uso_ins_rec.occurrence_identifier,
6390 p_uso_id => l_n_uso_id,
6391 p_message => l_c_msg
6392 );
6393 IF l_c_msg IS NOT NULL THEN
6394 fnd_message.set_name('IGS',l_c_msg);
6395 fnd_msg_pub.add;
6396 p_uso_ins_rec.status := 'E';
6397 END IF;
6398
6399 END IF;
6400 END validate_derivation;
6401
6402 PROCEDURE validate_db_cons(p_uso_ins_rec IN OUT NOCOPY igs_ps_generic_pub.uso_ins_rec_type) AS
6403 CURSOR c_unit_ver (cp_n_uso_id igs_ps_usec_occurs_all.unit_section_occurrence_id%TYPE) IS
6404 SELECT a.unit_cd, a.version_number
6405 FROM igs_ps_unit_ofr_opt_all a, igs_ps_usec_occurs_all b
6406 WHERE a.uoo_id = b.uoo_id
6407 AND b.unit_section_occurrence_id = cp_n_uso_id;
6408
6409 rec_unit_ver c_unit_ver%ROWTYPE;
6410
6411 BEGIN
6412 -- Check uniqueness validation should not be done as it is override, after delete only it should be done
6413
6414
6415 -- Check Constraints
6416 BEGIN
6417 igs_ps_unit_ver_pkg.check_constraints( 'UNIT_CD',p_uso_ins_rec.unit_cd);
6418 EXCEPTION
6419 WHEN OTHERS THEN
6420 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','UNIT_CD','LEGACY_TOKENS',TRUE);
6421 p_uso_ins_rec.status :='E';
6422 END;
6423
6424 BEGIN
6425 igs_ps_unit_ver_pkg.check_constraints('VERSION_NUMBER',p_uso_ins_rec.version_number);
6426 EXCEPTION
6427 WHEN OTHERS THEN
6428 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VER_NUM_1_999',NULL,NULL,TRUE);
6429 p_uso_ins_rec.status :='E';
6430 END;
6431
6432 -- Foreign Key Checking
6433 IF NOT igs_pe_person_pkg.get_pk_for_validation(l_n_ins_id ) THEN
6434 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
6435 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', fnd_message.get, NULL, FALSE);
6436 p_uso_ins_rec.status := 'E';
6437 END IF;
6438 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
6439 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
6440 p_uso_ins_rec.status := 'E';
6441 END IF;
6442
6443 IF p_uso_ins_rec.production_uso_id IS NOT NULL THEN
6444
6445 -- validate the production USO ID with unit_cd, version_number
6446 OPEN c_unit_ver(p_uso_ins_rec.production_uso_id);
6447 FETCH c_unit_ver INTO rec_unit_ver;
6448 IF c_unit_ver%FOUND THEN
6449 IF p_uso_ins_rec.unit_cd <> rec_unit_ver.unit_cd OR
6450 p_uso_ins_rec.version_number <> rec_unit_ver.version_number THEN
6451 fnd_message.set_name('IGS','IGS_PS_LGCY_UNIT_VER_NOT_USO');
6452 fnd_msg_pub.add;
6453 p_uso_ins_rec.status :='E';
6454 END IF;
6455 ELSE
6456 fnd_message.set_name('IGS','IGS_PS_LGCY_UNIT_VER_NOT_USO');
6457 fnd_msg_pub.add;
6458 p_uso_ins_rec.status :='E';
6459 END IF;
6460 CLOSE c_unit_ver;
6461
6462 END IF;
6463
6464 END validate_db_cons;
6465
6466 PROCEDURE delete_records(p_delete_status OUT NOCOPY BOOLEAN) IS
6467 CURSOR cur_ins_exists(cp_uso_id IN NUMBER) IS
6468 SELECT 'X'
6469 FROM igs_ps_uso_instrctrs
6470 WHERE unit_section_occurrence_id =cp_uso_id;
6471
6472 CURSOR cur_resp_exists(cp_uoo_id IN NUMBER,cp_ins_id IN NUMBER) IS
6473 SELECT 'X'
6474 FROM igs_ps_usec_tch_resp
6475 WHERE uoo_id =cp_uoo_id
6476 AND instructor_id=cp_ins_id
6477 AND NOT EXISTS (SELECT 'X' FROM igs_ps_uso_instrctrs a,igs_ps_usec_occurs_all b
6478 WHERE a.unit_section_occurrence_id=b.unit_section_occurrence_id
6479 AND b.uoo_id=cp_uoo_id
6480 AND a.instructor_id=cp_ins_id);
6481
6482 CURSOR cur_enr(cp_uoo_id IN NUMBER) IS
6483 SELECT 'X'
6484 FROM igs_ps_unit_ofr_opt_all
6485 WHERE uoo_id= cp_uoo_id
6486 AND ENROLLMENT_ACTUAL > 0;
6487
6488 l_c_var VARCHAR2(1);
6489 BEGIN
6490 p_delete_status:= TRUE;
6491
6492 FOR I in 1..p_tab_uso_ins.LAST LOOP
6493 IF p_tab_uso_ins.EXISTS(I) AND p_tab_uso_ins(I).status = 'S' THEN
6494 p_tab_uso_ins(I).msg_from := fnd_msg_pub.count_msg;
6495
6496 OPEN cur_ins_exists(p_tab_uso_ins(I).system_uso_id);
6497 FETCH cur_ins_exists INTO l_c_var;
6498 IF cur_ins_exists%FOUND THEN
6499 DELETE igs_ps_uso_instrctrs WHERE unit_section_occurrence_id=p_tab_uso_ins(I).system_uso_id ;
6500 END IF;
6501 CLOSE cur_ins_exists;
6502
6503 OPEN cur_resp_exists(p_tab_uso_ins(I).system_uoo_id,p_tab_uso_ins(I).system_instructor_id);
6504 FETCH cur_resp_exists INTO l_c_var;
6505 IF cur_resp_exists%FOUND THEN
6506
6507 OPEN cur_enr(p_tab_uso_ins(I).system_uoo_id);
6508 FETCH cur_enr INTO l_c_var;
6509 IF cur_enr%FOUND THEN
6510 fnd_message.set_name('IGS','IGS_PS_ENR_EXISTS_NO_IMPORT');
6511 fnd_msg_pub.add;
6512 p_tab_uso_ins(I).status := 'E';
6513 p_c_rec_status := p_tab_uso_ins(I).status;
6514 p_tab_uso_ins(I).msg_from := p_tab_uso_ins(I).msg_from+1;
6515 p_tab_uso_ins(I).msg_to := fnd_msg_pub.count_msg;
6516 p_delete_status:= FALSE;
6517 RETURN;
6518 ELSE
6519 DELETE igs_ps_usec_tch_resp WHERE instructor_id=p_tab_uso_ins(I).system_instructor_id AND
6520 uoo_id = p_tab_uso_ins(I).system_uoo_id ;
6521
6522 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6523 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.Delete_for_IGS_PS_USO_INSTRCTRS',
6524 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
6525 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
6526 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
6527 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
6528 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id);
6529 END IF;
6530
6531 END IF;
6532 CLOSE cur_enr;
6533
6534 END IF;
6535 CLOSE cur_resp_exists;
6536
6537 END IF;
6538 END LOOP;
6539
6540 END delete_records;
6541
6542 PROCEDURE insert_instructors(p_insert_status OUT NOCOPY BOOLEAN) IS
6543
6544 BEGIN
6545 p_insert_status:= TRUE;
6546 FOR I in 1..p_tab_uso_ins.LAST LOOP
6547 IF p_tab_uso_ins.EXISTS(I) AND p_tab_uso_ins(I).status = 'S' THEN
6548 p_tab_uso_ins(I).msg_from := fnd_msg_pub.count_msg;
6549
6550 -- Check uniqueness validation
6551 IF igs_ps_uso_instrctrs_pkg.get_uk_for_validation(p_tab_uso_ins(I).system_uso_id, p_tab_uso_ins(I).system_instructor_id) THEN
6552 p_tab_uso_ins(I).status :='E';
6553 fnd_message.set_name('IGS','IGS_PS_USO_INS');
6554 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', fnd_message.get, NULL, FALSE);
6555 p_c_rec_status := p_tab_uso_ins(I).status;
6556 p_tab_uso_ins(I).msg_from := p_tab_uso_ins(I).msg_from+1;
6557 p_tab_uso_ins(I).msg_to := fnd_msg_pub.count_msg;
6558 p_insert_status:= FALSE;
6559 RETURN;
6560 ELSE
6561
6562 INSERT INTO IGS_PS_USO_INSTRCTRS (
6563 USO_INSTRUCTOR_ID,
6564 UNIT_SECTION_OCCURRENCE_ID,
6565 INSTRUCTOR_ID,
6566 CREATED_BY ,
6567 CREATION_DATE,
6568 LAST_UPDATED_BY,
6569 LAST_UPDATE_DATE ,
6570 LAST_UPDATE_LOGIN
6571 ) VALUES (
6572 igs_ps_uso_instrctrs_s.nextval,
6573 p_tab_uso_ins(I).system_uso_id,
6574 p_tab_uso_ins(I).system_instructor_id,
6575 g_n_user_id,
6576 sysdate,
6577 g_n_user_id,
6578 sysdate,
6579 g_n_login_id
6580 );
6581 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6582 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.Insert_for_IGS_PS_USO_INSTRCTRS',
6583 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
6584 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
6585 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
6586 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
6587 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id);
6588 END IF;
6589
6590 igs_ps_validate_lgcy_pkg.post_uso_ins(p_tab_uso_ins(I).system_instructor_id,
6591 p_tab_uso_ins(I).system_uoo_id,
6592 p_tab_uso_ins(I),I);
6593
6594 IF p_tab_uso_ins(I).status <> 'S' THEN
6595 p_c_rec_status := p_tab_uso_ins(I).status;
6596 p_tab_uso_ins(I).msg_from := p_tab_uso_ins(I).msg_from+1;
6597 p_tab_uso_ins(I).msg_to := fnd_msg_pub.count_msg;
6598 p_insert_status:= FALSE;
6599 RETURN;
6600 END IF;
6601 END IF;
6602
6603 END IF;
6604 END LOOP;
6605
6606 END insert_instructors;
6607
6608 BEGIN
6609
6610 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
6611 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.start_logging_for',
6612 'Unit Section Occurrence Instructor Ovrd');
6613 END IF;
6614
6615 IF p_calling_context = 'G' THEN
6616 igs_ps_unit_lgcy_pkg.create_uso_ins( p_tab_uso_ins => p_tab_uso_ins,
6617 p_c_rec_status => p_c_rec_status );
6618
6619 ELSE
6620 p_c_rec_status := 'S';
6621 FOR I in 1..p_tab_uso_ins.LAST LOOP
6622 IF p_tab_uso_ins.EXISTS(I) THEN
6623 p_tab_uso_ins(I).status := 'S';
6624 p_tab_uso_ins(I).msg_from := fnd_msg_pub.count_msg;
6625 trim_values(p_tab_uso_ins(I));
6626 validate_parameters(p_tab_uso_ins(I));
6627
6628 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6629 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.status_after_validate_parameters',
6630 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
6631 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
6632 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
6633 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
6634 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
6635 END IF;
6636
6637 IF p_tab_uso_ins(I).status = 'S' THEN
6638 validate_derivation(p_tab_uso_ins(I));
6639 END IF;
6640
6641 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6642 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.status_after_validate_derivation',
6643 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
6644 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
6645 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
6646 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
6647 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
6648 END IF;
6649
6650 IF p_tab_uso_ins(I).status = 'S' THEN
6651 validate_db_cons ( p_tab_uso_ins(I) );
6652
6653 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6654 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.status_after_validate_db_cons',
6655 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
6656 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
6657 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
6658 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
6659 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
6660 END IF;
6661
6662 END IF;
6663
6664 IF p_tab_uso_ins(I).status = 'S' THEN
6665 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,l_n_uso_id) = FALSE THEN
6666 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
6667 fnd_msg_pub.add;
6668 p_tab_uso_ins(I).status := 'A';
6669 END IF;
6670
6671 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6672 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.status_after_check_import_allowed',
6673 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
6674 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
6675 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
6676 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
6677 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
6678 END IF;
6679
6680 END IF;
6681
6682 --Business validations
6683 IF p_tab_uso_ins(I).status = 'S' THEN
6684 --Check if the unit is INACTIVE, then do not allow to import
6685 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_tab_uso_ins(I).unit_cd, p_tab_uso_ins(I).version_number,l_message_name)=FALSE THEN
6686 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
6687 fnd_msg_pub.add;
6688 p_tab_uso_ins(I).status := 'E';
6689 END IF;
6690
6691 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6692 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.status_after_check_import_allowed',
6693 'Unit code:'||p_tab_uso_ins(I).unit_cd||' '||'Version number:'||p_tab_uso_ins(I).version_number||' '||
6694 'teach_cal_alternate_code:'||p_tab_uso_ins(I).teach_cal_alternate_code||' '||'Location_cd:'||p_tab_uso_ins(I).location_cd
6695 ||' '||'Unit Class:'||p_tab_uso_ins(I).unit_class||' '||'instructor_person_number:'||p_tab_uso_ins(I).instructor_person_number
6696 ||' '||'occurrence_identifier'||p_tab_uso_ins(I).occurrence_identifier
6697 ||' '||'production_uso_id:'||p_tab_uso_ins(I).production_uso_id||' '||'Status:'|| p_tab_uso_ins(I).status);
6698 END IF;
6699
6700 END IF;
6701
6702 IF p_tab_uso_ins(I).status = 'S' THEN
6703 p_tab_uso_ins(I).system_uoo_id:=l_n_uoo_id;
6704 p_tab_uso_ins(I).system_uso_id:=l_n_uso_id;
6705 p_tab_uso_ins(I).system_instructor_id:=l_n_ins_id;
6706
6707 --Insert is done in insert_instructors
6708 END IF;
6709
6710 --Post validation is also done at insert_instructors
6711
6712 IF p_tab_uso_ins(I).status = 'S' THEN
6713 p_tab_uso_ins(I).msg_from := NULL;
6714 p_tab_uso_ins(I).msg_to := NULL;
6715 ELSIF p_tab_uso_ins(I).status = 'A' THEN
6716 p_tab_uso_ins(I).msg_from := p_tab_uso_ins(I).msg_from + 1;
6717 p_tab_uso_ins(I).msg_to := fnd_msg_pub.count_msg;
6718 ELSE
6719 p_c_rec_status := p_tab_uso_ins(I).status;
6720 p_tab_uso_ins(I).msg_from := p_tab_uso_ins(I).msg_from+1;
6721 p_tab_uso_ins(I).msg_to := fnd_msg_pub.count_msg;
6722 IF p_tab_uso_ins(I).status = 'E' THEN
6723 RETURN;
6724 END IF;
6725 END IF;
6726
6727 END IF;
6728 END LOOP;
6729
6730 --Delete the existing records
6731 delete_records(l_delete_status);
6732
6733 IF l_delete_status = FALSE THEN
6734 RETURN;
6735 END IF;
6736 --Insert the instructors
6737 insert_instructors(l_insert_status);
6738 IF l_insert_status = FALSE THEN
6739 RETURN;
6740 END IF;
6741
6742
6743 IF NOT igs_ps_validate_lgcy_pkg.post_uso_ins_busi(p_tab_uso_ins) THEN
6744 p_c_rec_status := 'E';
6745 END IF;
6746
6747 END IF; --Scheduling
6748
6749 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
6750 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_uso_ins_ovrd.after_import_status',p_c_rec_status);
6751 END IF;
6752
6753
6754 END create_uso_ins_ovrd;
6755
6756 PROCEDURE create_usec_teach_resp(p_usec_teach_resp_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_tbl_type
6757 ,p_c_rec_status OUT NOCOPY VARCHAR2
6758 ,p_calling_context IN VARCHAR2) IS
6759 /***********************************************************************************************
6760
6761 Created By: sarakshi
6762 Date Created By: 31-May-2005
6763 Purpose: This procedure imports(Updates) unit section Teaching Responsibilities.
6764
6765 Known limitations,enhancements,remarks:
6766 Change History
6767 Who When What
6768 ***********************************************************************************************/
6769 l_n_ins_id igs_ps_uso_instrctrs.instructor_id%TYPE;
6770 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
6771 l_d_start_dt igs_ps_usec_occurs_all.start_date%TYPE;
6772 l_d_end_dt igs_ps_usec_occurs_all.end_date%TYPE;
6773 l_message_name VARCHAR2(30);
6774
6775
6776 -- for doing certain validation at unit section level while importing unit section occurrence of instructors
6777 TYPE usec_sr_rectype IS RECORD( uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE,
6778 instr_index NUMBER);
6779 TYPE usec_sr_tbltype IS TABLE OF usec_sr_rectype INDEX BY BINARY_INTEGER;
6780 v_tab_usec_sr usec_sr_tbltype;
6781
6782 PROCEDURE trim_values ( p_usec_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_rec_type) AS
6783 BEGIN
6784 p_usec_teach_resp_rec.instructor_person_number := TRIM(p_usec_teach_resp_rec.instructor_person_number);
6785 p_usec_teach_resp_rec.unit_cd := TRIM(p_usec_teach_resp_rec.unit_cd);
6786 p_usec_teach_resp_rec.version_number := TRIM(p_usec_teach_resp_rec.version_number);
6787 p_usec_teach_resp_rec.teach_cal_alternate_code := TRIM(p_usec_teach_resp_rec.teach_cal_alternate_code);
6788 p_usec_teach_resp_rec.location_cd := TRIM(p_usec_teach_resp_rec.location_cd);
6789 p_usec_teach_resp_rec.unit_class := TRIM(p_usec_teach_resp_rec.unit_class);
6790 p_usec_teach_resp_rec.confirmed_flag := TRIM(p_usec_teach_resp_rec.confirmed_flag);
6791 p_usec_teach_resp_rec.wl_percentage_allocation := TRIM(p_usec_teach_resp_rec.wl_percentage_allocation);
6792 p_usec_teach_resp_rec.instructional_load_lecture := TRIM(p_usec_teach_resp_rec.instructional_load_lecture);
6793 p_usec_teach_resp_rec.instructional_load_laboratory := TRIM(p_usec_teach_resp_rec.instructional_load_laboratory);
6794 p_usec_teach_resp_rec.instructional_load_other := TRIM(p_usec_teach_resp_rec.instructional_load_other);
6795 p_usec_teach_resp_rec.lead_instructor_flag := TRIM(p_usec_teach_resp_rec.lead_instructor_flag);
6796
6797 END trim_values;
6798
6799 PROCEDURE validate_parameters(p_usec_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_rec_type) AS
6800
6801 BEGIN
6802 p_usec_teach_resp_rec.status:='S';
6803
6804 -- Checking for the mandatory existence of Unit Code, verison number, instructor person number parameter in the record.
6805 IF p_usec_teach_resp_rec.instructor_person_number IS NULL OR p_usec_teach_resp_rec.instructor_person_number = FND_API.G_MISS_CHAR THEN
6806 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
6807 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY',fnd_message.get,NULL,FALSE);
6808 p_usec_teach_resp_rec.status := 'E';
6809 END IF;
6810
6811 IF p_usec_teach_resp_rec.unit_cd IS NULL OR p_usec_teach_resp_rec.unit_cd = FND_API.G_MISS_CHAR THEN
6812 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
6813 p_usec_teach_resp_rec.status := 'E';
6814 END IF;
6815
6816 IF p_usec_teach_resp_rec.version_number IS NULL OR p_usec_teach_resp_rec.version_number = FND_API.G_MISS_NUM THEN
6817 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
6818 p_usec_teach_resp_rec.status := 'E';
6819 END IF;
6820
6821 IF p_usec_teach_resp_rec.teach_cal_alternate_code IS NULL OR p_usec_teach_resp_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
6822 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
6823 p_usec_teach_resp_rec.status := 'E';
6824 END IF;
6825
6826 IF p_usec_teach_resp_rec.location_cd IS NULL OR p_usec_teach_resp_rec.location_cd = FND_API.G_MISS_CHAR THEN
6827 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
6828 p_usec_teach_resp_rec.status := 'E';
6829 END IF;
6830
6831 IF p_usec_teach_resp_rec.unit_class IS NULL OR p_usec_teach_resp_rec.unit_class = FND_API.G_MISS_CHAR THEN
6832 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
6833 p_usec_teach_resp_rec.status := 'E';
6834 END IF;
6835
6836 END validate_parameters;
6837
6838 PROCEDURE validate_derivation(p_usec_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_rec_type) AS
6839
6840 l_c_cal_type igs_ca_inst_all.cal_type%TYPE;
6841 l_n_seq_num igs_ca_inst_all.sequence_number%TYPE;
6842 l_d_start igs_ca_inst_all.start_dt%TYPE;
6843 l_d_end igs_ca_inst_all.end_dt%TYPE;
6844 l_c_ret_status VARCHAR2(30);
6845
6846 BEGIN
6847 -- Initialize the variable use to store the derived values.
6848 l_n_ins_id := NULL;
6849 l_n_uoo_id := NULL;
6850
6851 -- Derive the Instructor identifier
6852 igs_ps_validate_lgcy_pkg.get_party_id(p_usec_teach_resp_rec.instructor_person_number, l_n_ins_id);
6853 IF l_n_ins_id IS NULL THEN
6854 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
6855 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', fnd_message.get,NULL, FALSE);
6856 p_usec_teach_resp_rec.status := 'E';
6857 END IF;
6858
6859
6860 -- Deriving the Calendar Type and Calendar Sequence Number
6861 igs_ge_gen_003.get_calendar_instance(p_usec_teach_resp_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
6862 IF l_c_ret_status <> 'SINGLE' THEN
6863 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
6864 p_usec_teach_resp_rec.status := 'E';
6865 END IF;
6866
6867 -- Deriving the Unit Offering Option Identifier
6868 l_c_ret_status := NULL;
6869 igs_ps_validate_lgcy_pkg.get_uoo_id(p_usec_teach_resp_rec.unit_cd, p_usec_teach_resp_rec.version_number, l_c_cal_type, l_n_seq_num, p_usec_teach_resp_rec.location_cd, p_usec_teach_resp_rec.unit_class, l_n_uoo_id, l_c_ret_status);
6870 IF l_c_ret_status IS NOT NULL THEN
6871 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
6872 p_usec_teach_resp_rec.status := 'E';
6873 END IF;
6874
6875 END validate_derivation;
6876
6877 PROCEDURE validate_db_cons(p_usec_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_rec_type) AS
6878
6879 BEGIN
6880
6881 -- Check Constraints
6882 BEGIN
6883 igs_ps_unit_ver_pkg.check_constraints( 'UNIT_CD',p_usec_teach_resp_rec.unit_cd);
6884 EXCEPTION
6885 WHEN OTHERS THEN
6886 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','UNIT_CD','LEGACY_TOKENS',TRUE);
6887 p_usec_teach_resp_rec.status :='E';
6888 END;
6889
6890 BEGIN
6891 igs_ps_unit_ver_pkg.check_constraints('VERSION_NUMBER',p_usec_teach_resp_rec.version_number);
6892 EXCEPTION
6893 WHEN OTHERS THEN
6894 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VER_NUM_1_999',NULL,NULL,TRUE);
6895 p_usec_teach_resp_rec.status :='E';
6896 END;
6897
6898 BEGIN
6899 igs_ps_usec_tch_resp_pkg.check_constraints('LEAD_INSTRUCTOR_FLAG', p_usec_teach_resp_rec.lead_instructor_flag);
6900 EXCEPTION
6901 WHEN OTHERS THEN
6902 fnd_message.set_name('IGS','IGS_PS_LEAD_INSTRUCTOR_FLAG');
6903 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N',fnd_message.get, NULL,TRUE);
6904 p_usec_teach_resp_rec.status :='E';
6905 END;
6906
6907 BEGIN
6908 igs_ps_usec_tch_resp_pkg.check_constraints('CONFIRMED_FLAG', p_usec_teach_resp_rec.confirmed_flag);
6909 EXCEPTION
6910 WHEN OTHERS THEN
6911 fnd_message.set_name('IGS','IGS_PS_CONFIRMED_FLAG');
6912 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N',fnd_message.get, NULL,TRUE);
6913 p_usec_teach_resp_rec.status :='E';
6914 END;
6915
6916 IF p_usec_teach_resp_rec.wl_percentage_allocation IS NOT NULL THEN
6917 BEGIN
6918 igs_ps_usec_tch_resp_pkg.check_constraints('PERCENTAGE_ALLOCATION', p_usec_teach_resp_rec.wl_percentage_allocation);
6919 EXCEPTION
6920 WHEN OTHERS THEN
6921 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_PTS_RANGE_0_999','PERCENTAGE','LEGACY_TOKENS',TRUE);
6922 p_usec_teach_resp_rec.status :='E';
6923 END;
6924 END IF;
6925
6926 IF p_usec_teach_resp_rec.instructional_load_lecture IS NOT NULL THEN
6927 BEGIN
6928 igs_ps_usec_tch_resp_pkg.check_constraints('INSTRUCTIONAL_LOAD_LECTURE', p_usec_teach_resp_rec.instructional_load_lecture);
6929 EXCEPTION
6930 WHEN OTHERS THEN
6931 fnd_message.set_name('IGS','IGS_PS_INS_LOAD_LECTURE');
6932 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_9999D99',fnd_message.get, NULL,TRUE);
6933 p_usec_teach_resp_rec.status :='E';
6934 END;
6935 END IF;
6936
6937 IF p_usec_teach_resp_rec.instructional_load_laboratory IS NOT NULL THEN
6938 BEGIN
6939 igs_ps_usec_tch_resp_pkg.check_constraints('INSTRUCTIONAL_LOAD_LAB', p_usec_teach_resp_rec.instructional_load_laboratory);
6940 EXCEPTION
6941 WHEN OTHERS THEN
6942 fnd_message.set_name('IGS','IGS_PS_INS_LOAD_LAB');
6943 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_9999D99',fnd_message.get,NULL,TRUE);
6944 p_usec_teach_resp_rec.status :='E';
6945 END;
6946 END IF;
6947
6948 IF p_usec_teach_resp_rec.instructional_load_other IS NOT NULL THEN
6949 BEGIN
6950 igs_ps_usec_tch_resp_pkg.check_constraints('INSTRUCTIONAL_LOAD', p_usec_teach_resp_rec.instructional_load_other);
6951 EXCEPTION
6952 WHEN OTHERS THEN
6953 fnd_message.set_name('IGS','IGS_PS_INS_LOAD_OTHER');
6954 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_9999D99',fnd_message.get,NULL,TRUE);
6955 p_usec_teach_resp_rec.status :='E';
6956 END;
6957 END IF;
6958
6959 -- Foreign Key Checking
6960 IF NOT igs_pe_person_pkg.get_pk_for_validation(l_n_ins_id ) THEN
6961 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
6962 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', fnd_message.get, NULL, FALSE);
6963 p_usec_teach_resp_rec.status := 'E';
6964 END IF;
6965
6966 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
6967 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
6968 p_usec_teach_resp_rec.status := 'E';
6969 END IF;
6970
6971 END validate_db_cons;
6972
6973 PROCEDURE Assign_default(p_usec_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_rec_type) AS
6974 CURSOR cur_resp(cp_n_uoo_id IN NUMBER,cp_n_ins_id IN NUMBER) IS
6975 SELECT *
6976 FROM igs_ps_usec_tch_resp
6977 WHERE instructor_id = cp_n_ins_id
6978 AND uoo_id = cp_n_uoo_id;
6979 l_cur_resp cur_resp%ROWTYPE;
6980
6981 BEGIN
6982
6983 OPEN cur_resp(l_n_uoo_id,l_n_ins_id);
6984 FETCH cur_resp into l_cur_resp;
6985 IF cur_resp%FOUND THEN
6986
6987 IF p_usec_teach_resp_rec.confirmed_flag IS NULL THEN
6988 p_usec_teach_resp_rec.confirmed_flag := l_cur_resp.confirmed_flag;
6989 ELSIF p_usec_teach_resp_rec.confirmed_flag = FND_API.G_MISS_CHAR THEN
6990 p_usec_teach_resp_rec.confirmed_flag := 'N';
6991 END IF;
6992
6993 IF p_usec_teach_resp_rec.lead_instructor_flag IS NULL THEN
6994 p_usec_teach_resp_rec.lead_instructor_flag := l_cur_resp.lead_instructor_flag;
6995 ELSIF p_usec_teach_resp_rec.lead_instructor_flag = FND_API.G_MISS_CHAR THEN
6996 p_usec_teach_resp_rec.lead_instructor_flag := 'N';
6997 END IF;
6998
6999 IF p_usec_teach_resp_rec.wl_percentage_allocation IS NULL THEN
7000 p_usec_teach_resp_rec.wl_percentage_allocation := l_cur_resp.percentage_allocation;
7001 ELSIF p_usec_teach_resp_rec.wl_percentage_allocation = FND_API.G_MISS_NUM THEN
7002 p_usec_teach_resp_rec.wl_percentage_allocation := NULL;
7003 END IF;
7004
7005 IF p_usec_teach_resp_rec.instructional_load_lecture IS NULL THEN
7006 p_usec_teach_resp_rec.instructional_load_lecture := l_cur_resp.instructional_load_lecture;
7007 ELSIF p_usec_teach_resp_rec.instructional_load_lecture = FND_API.G_MISS_NUM THEN
7008 p_usec_teach_resp_rec.instructional_load_lecture := NULL;
7009 END IF;
7010
7011 IF p_usec_teach_resp_rec.instructional_load_laboratory IS NULL THEN
7012 p_usec_teach_resp_rec.instructional_load_laboratory := l_cur_resp.instructional_load_lab;
7013 ELSIF p_usec_teach_resp_rec.instructional_load_laboratory = FND_API.G_MISS_NUM THEN
7014 p_usec_teach_resp_rec.instructional_load_laboratory := NULL;
7015 END IF;
7016
7017 IF p_usec_teach_resp_rec.instructional_load_other IS NULL THEN
7018 p_usec_teach_resp_rec.instructional_load_other := l_cur_resp.instructional_load;
7019 ELSIF p_usec_teach_resp_rec.instructional_load_other = FND_API.G_MISS_NUM THEN
7020 p_usec_teach_resp_rec.instructional_load_other := NULL;
7021 END IF;
7022
7023 ELSE
7024 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'TEACHING_RESPONSIBILITY', 'LEGACY_TOKENS', FALSE);
7025 p_usec_teach_resp_rec.status := 'E';
7026 END IF;
7027 CLOSE cur_resp;
7028
7029 END Assign_default;
7030
7031 PROCEDURE Business_validation(p_usec_teach_resp_rec IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_rec_type) AS
7032 CURSOR c_lead_cnd (cp_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%type) IS
7033 SELECT COUNT(*)
7034 FROM IGS_PS_USEC_TCH_RESP
7035 WHERE lead_instructor_flag='Y'
7036 AND uoo_id = cp_n_uoo_id
7037 AND ROWNUM = 1;
7038
7039 CURSOR c_cal_inst (cp_n_uoo_id IN NUMBER) IS
7040 SELECT A.cal_type,
7041 A.ci_sequence_number,
7042 A.unit_section_status
7043 FROM IGS_PS_UNIT_OFR_OPT_ALL A
7044 WHERE A.uoo_id = cp_n_uoo_id;
7045
7046 CURSOR c_cal_setup IS
7047 SELECT 'x'
7048 FROM IGS_PS_EXP_WL
7049 WHERE ROWNUM=1;
7050
7051 rec_cal_inst c_cal_inst%ROWTYPE;
7052
7053 l_n_t_lecture igs_ps_usec_tch_resp.instructional_load_lecture%TYPE :=0;
7054 l_n_t_lab igs_ps_usec_tch_resp.instructional_load_lab%TYPE :=0;
7055 l_n_t_other igs_ps_usec_tch_resp.instructional_load%TYPE :=0;
7056 l_n_total_wl NUMBER(10,2);
7057 l_n_exp_wl NUMBER(6,2);
7058 l_n_tot_fac_wl NUMBER(10,2);
7059 l_c_cal VARCHAR2(1);
7060 l_n_no_of_instructor NUMBER;
7061 l_n_count NUMBER;
7062 BEGIN
7063 --Check if the unit is INACTIVE, then do not allow to import
7064 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_usec_teach_resp_rec.unit_cd, p_usec_teach_resp_rec.version_number,l_message_name)=FALSE THEN
7065 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
7066 fnd_msg_pub.add;
7067 p_usec_teach_resp_rec.status := 'E';
7068 END IF;
7069
7070 -- Validation : Either percentage allocation or workload value should be provided. Both cannot be null
7071 -- Presently coded the mandatory validation for confirmed records.
7072 IF p_usec_teach_resp_rec.confirmed_flag = 'Y' AND
7073 p_usec_teach_resp_rec.wl_percentage_allocation IS NULL AND
7074 p_usec_teach_resp_rec.instructional_load_lecture IS NULL AND
7075 p_usec_teach_resp_rec.instructional_load_laboratory IS NULL AND
7076 p_usec_teach_resp_rec.instructional_load_other IS NULL THEN
7077 fnd_message.set_name('IGS','IGS_PS_PERCENT_WKLD_MANDATORY');
7078 fnd_msg_pub.add;
7079 p_usec_teach_resp_rec.status := 'E';
7080 END IF;
7081
7082
7083 --Instructor should be staff or faculty
7084 IF igs_ps_validate_lgcy_pkg.validate_staff_faculty (p_person_id => l_n_ins_id) = FALSE THEN
7085 p_usec_teach_resp_rec.status :='E';
7086 fnd_message.set_name('IGS','IGS_PS_INST_NOT_FACULTY_STAFF');
7087 fnd_msg_pub.add;
7088 END IF;
7089
7090 -- if workload percentage is provided need to dervie the lecture /lab / other workloads.
7091 IF p_usec_teach_resp_rec.wl_percentage_allocation IS NOT NULL AND
7092 p_usec_teach_resp_rec.instructional_load_lecture IS NULL AND
7093 p_usec_teach_resp_rec.instructional_load_laboratory IS NULL AND
7094 p_usec_teach_resp_rec.instructional_load_other IS NULL THEN
7095
7096 igs_ps_fac_credt_wrkload.calculate_teach_work_load(l_n_uoo_id, p_usec_teach_resp_rec.wl_percentage_allocation, l_n_t_lab , l_n_t_lecture, l_n_t_other);
7097 p_usec_teach_resp_rec.instructional_load_lecture := l_n_t_lecture;
7098 p_usec_teach_resp_rec.instructional_load_laboratory := l_n_t_lab;
7099 p_usec_teach_resp_rec.instructional_load_other := l_n_t_other;
7100 END IF;
7101
7102
7103 IF p_usec_teach_resp_rec.confirmed_flag = 'Y' THEN
7104 OPEN c_cal_setup;
7105 FETCH c_cal_setup INTO l_c_cal;
7106 CLOSE c_cal_setup;
7107 IF l_c_cal IS NULL THEN
7108 p_usec_teach_resp_rec.status :='E';
7109 fnd_message.set_name('IGS','IGS_PS_NO_CAL_CAT_SETUP');
7110 fnd_msg_pub.add;
7111 ELSIF l_c_cal = 'x' THEN
7112 l_n_total_wl := NVL(p_usec_teach_resp_rec.instructional_load_lecture,0) +
7113 NVL(p_usec_teach_resp_rec.instructional_load_laboratory,0) +
7114 NVL(p_usec_teach_resp_rec.instructional_load_other,0);
7115
7116 OPEN c_cal_inst(l_n_uoo_id);
7117 FETCH c_cal_inst INTO rec_cal_inst;
7118 IF c_cal_inst%FOUND THEN
7119 IF rec_cal_inst.unit_section_status NOT IN ('CANCELLED','NOT_OFFERED') THEN
7120 IF igs_ps_gen_001.teach_fac_wl (rec_cal_inst.cal_type,
7121 rec_cal_inst.ci_sequence_number,
7122 l_n_ins_id,
7123 l_n_total_wl,
7124 l_n_tot_fac_wl,
7125 l_n_exp_wl
7126 ) THEN
7127 p_usec_teach_resp_rec.status :='E';
7128 fnd_message.set_name('IGS','IGS_PS_FAC_EXCEED_EXP_WL');
7129 fnd_msg_pub.add;
7130 END IF;
7131 IF l_n_exp_wl IS NULL OR l_n_exp_wl = 0 THEN
7132 p_usec_teach_resp_rec.status :='E';
7133 fnd_message.set_name('IGS','IGS_PS_NO_SETUP_FAC_EXCEED');
7134 fnd_msg_pub.add;
7135 END IF;
7136 END IF;
7137 END IF;
7138 CLOSE c_cal_inst;
7139 END IF;
7140 END IF;
7141
7142
7143 END Business_validation;
7144
7145 FUNCTION post_uso_resp_busi (p_usec_teach_resp_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_tbl_type) RETURN BOOLEAN AS
7146
7147
7148 l_tab_uoo igs_ps_create_generic_pkg.uoo_tbl_type;
7149
7150 CURSOR c_count_lead (cp_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE) IS
7151 SELECT count(*)
7152 FROM IGS_PS_USEC_TCH_RESP
7153 WHERE uoo_id = cp_n_uoo_id
7154 AND lead_instructor_flag = 'Y';
7155
7156 CURSOR c_count_percent(cp_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE) IS
7157 SELECT SUM(PERCENTAGE_ALLOCATION)
7158 FROM IGS_PS_USEC_TCH_RESP
7159 WHERE confirmed_flag = 'Y'
7160 AND uoo_id = cp_n_uoo_id;
7161
7162 CURSOR c_unit_dtls (cp_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE) IS
7163 SELECT unit_cd,
7164 version_number
7165 FROM igs_ps_unit_ofr_opt_all
7166 WHERE uoo_id = cp_n_uoo_id
7167 AND ROWNUM < 2;
7168
7169 CURSOR c_null IS
7170 SELECT message_text
7171 FROM fnd_new_messages
7172 WHERE message_name = 'IGS_PS_NULL'
7173 AND application_id = 8405
7174 AND LANGUAGE_CODE = USERENV('LANG');
7175
7176 l_c_null fnd_new_messages.message_text%TYPE;
7177
7178 l_n_count NUMBER;
7179 l_n_from NUMBER;
7180 l_n_to NUMBER;
7181 l_b_validation BOOLEAN;
7182 l_b_status BOOLEAN;
7183 l_b_wl_validation BOOLEAN;
7184 l_n_tot_lec NUMBER;
7185 l_n_tot_lab NUMBER;
7186 l_n_tot_oth NUMBER;
7187 rec_unit_dtls c_unit_dtls%ROWTYPE;
7188 l_c_validation_type igs_ps_unit_ver_all.workload_val_code%TYPE;
7189
7190
7191 BEGIN
7192 l_b_validation := TRUE;
7193 l_b_status :=TRUE;
7194 l_b_wl_validation := TRUE;
7195
7196 IF v_tab_usec_sr.EXISTS(1) THEN
7197 l_tab_uoo(1) := v_tab_usec_sr(1).uoo_id;
7198
7199 FOR I in 2.. v_tab_usec_sr.COUNT LOOP
7200 IF NOT igs_ps_validate_lgcy_pkg.isExists(v_tab_usec_sr(I).uoo_id,l_tab_uoo) THEN
7201 l_tab_uoo(l_tab_uoo.count+1) := v_tab_usec_sr(I).uoo_id;
7202 END IF;
7203 END LOOP;
7204
7205 -- Get the parent unit version.
7206 OPEN c_unit_dtls (l_tab_uoo(1));
7207 FETCH c_unit_dtls INTO rec_unit_dtls;
7208 CLOSE c_unit_dtls;
7209
7210 -- Get the workload validation type
7211 l_c_validation_type := igs_ps_fac_credt_wrkload.get_validation_type (rec_unit_dtls.unit_cd, rec_unit_dtls.version_number);
7212
7213 FOR I in 1.. l_tab_uoo.count LOOP
7214
7215 l_n_from := fnd_msg_pub.count_msg;
7216 l_b_validation := TRUE;
7217 l_b_wl_validation := TRUE;
7218 OPEN c_count_lead(l_tab_uoo(I));
7219 FETCH c_count_lead INTO l_n_count;
7220 CLOSE c_count_lead;
7221 IF l_n_count < 1 THEN
7222 fnd_message.set_name('IGS','IGS_PS_ATLST_ONE_LD_INSTRCTR');
7223 fnd_msg_pub.add;
7224 l_b_validation :=FALSE;
7225 ELSIF l_n_count > 1 THEN
7226 fnd_message.set_name ('IGS','IGS_PS_LEAD_INSTRUCTOR_ONE');
7227 fnd_msg_pub.add;
7228 l_b_validation :=FALSE;
7229 END IF;
7230
7231 IF l_c_validation_type <> 'NONE' THEN
7232 OPEN c_count_percent(l_tab_uoo(I));
7233 FETCH c_count_percent INTO l_n_count;
7234 CLOSE c_count_percent;
7235
7236 IF l_n_count <> 100 THEN
7237 fnd_message.set_name('IGS', 'IGS_PS_US_TCHRESP_NOTTOTAL_100');
7238 fnd_msg_pub.add;
7239 l_b_wl_validation :=FALSE;
7240 END IF;
7241
7242 IF NOT igs_ps_fac_credt_wrkload.validate_workload(l_tab_uoo(I),l_n_tot_lec,l_n_tot_lab,l_n_tot_oth) THEN
7243 fnd_message.set_name('IGS','IGS_PS_WKLOAD_VALIDATION');
7244 OPEN c_null;
7245 FETCH c_null INTO l_c_null;
7246 CLOSE c_null;
7247
7248 IF l_n_tot_lec = -999 THEN
7249 fnd_message.set_token('WKLOAD_LECTURE',l_c_null);
7250 ELSE
7251 fnd_message.set_token('WKLOAD_LECTURE',l_n_tot_lec);
7252 END IF;
7253
7254 IF l_n_tot_lab = -999 THEN
7255 fnd_message.set_token('WKLOAD_LAB',l_c_null);
7256 ELSE
7257 fnd_message.set_token('WKLOAD_LAB',l_n_tot_lab);
7258 END IF;
7259
7260 IF l_n_tot_oth = -999 THEN
7261 fnd_message.set_token('WKLOAD_OTHER',l_c_null);
7262 ELSE
7263 fnd_message.set_token('WKLOAD_OTHER',l_n_tot_oth);
7264 END IF;
7265
7266 fnd_msg_pub.add;
7267 l_b_wl_validation :=FALSE; -- modified as a part of Bug # 3568858.
7268 END IF;
7269 END IF;
7270
7271 IF NOT (l_b_validation AND l_b_wl_validation) THEN
7272 l_n_to := fnd_msg_pub.count_msg;
7273 FOR j in 1.. v_tab_usec_sr.COUNT LOOP
7274 IF l_tab_uoo(I) = v_tab_usec_sr(j).uoo_id AND p_usec_teach_resp_tbl(v_tab_usec_sr(j).instr_index).status = 'S' THEN
7275 -- Setting the status of the record properly
7276 -- Set the status of records as error and return status (l_b_status) as error when
7277 -- 1) if the lead instructor validation is fails
7278 -- 2) if the percentage allocation or workload validation fails, when the workload validation type is 'DENY'.
7279 -- Set the status of record as warning
7280 -- 1) if the percentage allocation or workload validation fails, when the workload validation type is 'WARN'.
7281 IF NOT l_b_validation THEN
7282 -- Failure of lead instructor validation.
7283 p_usec_teach_resp_tbl(v_tab_usec_sr(j).instr_index).status := 'E';
7284 l_b_status :=FALSE;
7285 ELSE
7286 -- when workload validation type is not equal to NONE
7287 IF l_c_validation_type = 'WARN' THEN
7288 -- setting the status as warning for the record and not setting the value for l_b_status.
7289 p_usec_teach_resp_tbl(v_tab_usec_sr(j).instr_index).status := 'W';
7290 ELSE -- workload workload validation type is DENY
7291 -- setting the status of the record and l_b_status as error.
7292 p_usec_teach_resp_tbl(v_tab_usec_sr(j).instr_index).status := 'E';
7293 l_b_status :=FALSE;
7294 END IF;
7295 END IF;
7296
7297 p_usec_teach_resp_tbl(v_tab_usec_sr(j).instr_index).msg_from := l_n_from +1;
7298 p_usec_teach_resp_tbl(v_tab_usec_sr(j).instr_index).msg_to := l_n_to;
7299 END IF;
7300 END LOOP;
7301 END IF;
7302
7303 END LOOP;
7304
7305 v_tab_usec_sr.delete;
7306 return l_b_status;
7307 ELSE
7308
7309 RETURN TRUE;
7310 END IF;
7311 END post_uso_resp_busi;
7312
7313 BEGIN
7314
7315 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
7316 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.start_logging_for',
7317 'Unit Section ');
7318 END IF;
7319
7320 p_c_rec_status := 'S';
7321 FOR I in 1..p_usec_teach_resp_tbl.LAST LOOP
7322 IF p_usec_teach_resp_tbl.EXISTS(I) THEN
7323 p_usec_teach_resp_tbl(I).status := 'S';
7324 p_usec_teach_resp_tbl(I).msg_from := fnd_msg_pub.count_msg;
7325 trim_values(p_usec_teach_resp_tbl(I));
7326 validate_parameters(p_usec_teach_resp_tbl(I));
7327
7328 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7329 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.status_after_validate_parameters',
7330 'Unit code:'||p_usec_teach_resp_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7331 ||p_usec_teach_resp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_tbl(I).location_cd||' '||'Unit Class:'||
7332 p_usec_teach_resp_tbl(I).unit_class||' '||'instructor_person_number:'||p_usec_teach_resp_tbl(I).instructor_person_number
7333 ||' '||'Status:'|| p_usec_teach_resp_tbl(I).status);
7334 END IF;
7335
7336 IF p_usec_teach_resp_tbl(I).status = 'S' THEN
7337 validate_derivation(p_usec_teach_resp_tbl(I));
7338
7339 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7340 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.status_after_validate_derivation',
7341 'Unit code:'||p_usec_teach_resp_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7342 ||p_usec_teach_resp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_tbl(I).location_cd||' '||'Unit Class:'||
7343 p_usec_teach_resp_tbl(I).unit_class||' '||'instructor_person_number:'||p_usec_teach_resp_tbl(I).instructor_person_number
7344 ||' '||'Status:'|| p_usec_teach_resp_tbl(I).status);
7345 END IF;
7346
7347 END IF;
7348
7349
7350 IF p_usec_teach_resp_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
7351 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
7352 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
7353 fnd_msg_pub.add;
7354 p_usec_teach_resp_tbl(I).status := 'A';
7355 END IF;
7356
7357 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7358 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.status_after_check_import_allowed',
7359 'Unit code:'||p_usec_teach_resp_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7360 ||p_usec_teach_resp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_tbl(I).location_cd||' '||'Unit Class:'||
7361 p_usec_teach_resp_tbl(I).unit_class||' '||'instructor_person_number:'||p_usec_teach_resp_tbl(I).instructor_person_number
7362 ||' '||'Status:'|| p_usec_teach_resp_tbl(I).status);
7363 END IF;
7364
7365 END IF;
7366
7367
7368 IF p_usec_teach_resp_tbl(I).status = 'S' THEN
7369 Assign_default(p_usec_teach_resp_tbl(I));
7370
7371 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7372 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.status_after_Assign_default',
7373 'Unit code:'||p_usec_teach_resp_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7374 ||p_usec_teach_resp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_tbl(I).location_cd||' '||'Unit Class:'||
7375 p_usec_teach_resp_tbl(I).unit_class||' '||'instructor_person_number:'||p_usec_teach_resp_tbl(I).instructor_person_number
7376 ||' '||'Status:'|| p_usec_teach_resp_tbl(I).status);
7377 END IF;
7378
7379 END IF;
7380
7381 IF p_usec_teach_resp_tbl(I).status = 'S' THEN
7382 validate_db_cons ( p_usec_teach_resp_tbl(I) );
7383
7384 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7385 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.status_after_validate_db_cons',
7386 'Unit code:'||p_usec_teach_resp_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7387 ||p_usec_teach_resp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_tbl(I).location_cd||' '||'Unit Class:'||
7388 p_usec_teach_resp_tbl(I).unit_class||' '||'instructor_person_number:'||p_usec_teach_resp_tbl(I).instructor_person_number
7389 ||' '||'Status:'|| p_usec_teach_resp_tbl(I).status);
7390 END IF;
7391
7392 END IF;
7393
7394
7395 --Business validations
7396 IF p_usec_teach_resp_tbl(I).status = 'S' THEN
7397 Business_validation(p_usec_teach_resp_tbl(I));
7398
7399 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7400 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.status_after_Business_validation',
7401 'Unit code:'||p_usec_teach_resp_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7402 ||p_usec_teach_resp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_tbl(I).location_cd||' '||'Unit Class:'||
7403 p_usec_teach_resp_tbl(I).unit_class||' '||'instructor_person_number:'||p_usec_teach_resp_tbl(I).instructor_person_number
7404 ||' '||'Status:'|| p_usec_teach_resp_tbl(I).status);
7405 END IF;
7406 END IF;
7407
7408 IF p_usec_teach_resp_tbl(I).status = 'S' THEN
7409
7410 UPDATE IGS_PS_USEC_TCH_RESP SET
7411 confirmed_flag = p_usec_teach_resp_tbl(I).confirmed_flag ,
7412 lead_instructor_flag = p_usec_teach_resp_tbl(I).lead_instructor_flag,
7413 instructional_load = p_usec_teach_resp_tbl(I).instructional_load_other,
7414 instructional_load_lab = p_usec_teach_resp_tbl(I).instructional_load_laboratory,
7415 instructional_load_lecture = p_usec_teach_resp_tbl(I).instructional_load_lecture,
7416 percentage_allocation = p_usec_teach_resp_tbl(I).wl_percentage_allocation,
7417 last_updated_by = g_n_user_id ,
7418 last_update_date = sysdate ,
7419 last_update_login = g_n_login_id
7420 WHERE uoo_id=l_n_uoo_id AND instructor_id=l_n_ins_id;
7421
7422 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7423 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.Record_updated',
7424 'Unit code:'||p_usec_teach_resp_tbl(I).unit_cd||' '||'Version number:'||p_usec_teach_resp_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7425 ||p_usec_teach_resp_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_teach_resp_tbl(I).location_cd||' '||'Unit Class:'||
7426 p_usec_teach_resp_tbl(I).unit_class||' '||'instructor_person_number:'||p_usec_teach_resp_tbl(I).instructor_person_number);
7427 END IF;
7428
7429 v_tab_usec_sr(v_tab_usec_sr.count +1).uoo_id := l_n_uoo_id;
7430 v_tab_usec_sr(v_tab_usec_sr.count).instr_index := I;
7431
7432 END IF;
7433
7434
7435 IF p_usec_teach_resp_tbl(I).status = 'S' THEN
7436 p_usec_teach_resp_tbl(I).msg_from := NULL;
7437 p_usec_teach_resp_tbl(I).msg_to := NULL;
7438 ELSIF p_usec_teach_resp_tbl(I).status = 'A' THEN
7439 p_usec_teach_resp_tbl(I).msg_from := p_usec_teach_resp_tbl(I).msg_from + 1;
7440 p_usec_teach_resp_tbl(I).msg_to := fnd_msg_pub.count_msg;
7441 ELSE
7442 p_c_rec_status := p_usec_teach_resp_tbl(I).status;
7443 p_usec_teach_resp_tbl(I).msg_from := p_usec_teach_resp_tbl(I).msg_from+1;
7444 p_usec_teach_resp_tbl(I).msg_to := fnd_msg_pub.count_msg;
7445 IF p_usec_teach_resp_tbl(I).status = 'E' THEN
7446 RETURN;
7447 END IF;
7448 END IF;
7449
7450 END IF;
7451 END LOOP;
7452
7453 IF NOT post_uso_resp_busi(p_usec_teach_resp_tbl) THEN
7454 p_c_rec_status := 'E';
7455 END IF;
7456
7457 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
7458 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_teach_resp.after_import_status',p_c_rec_status);
7459 END IF;
7460
7461 END create_usec_teach_resp;
7462
7463
7464 PROCEDURE create_usec_sp_fee(p_usec_sp_fee_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_tbl_type
7465 ,p_c_rec_status OUT NOCOPY VARCHAR2
7466 ,p_calling_context IN VARCHAR2) IS
7467 /***********************************************************************************************
7468
7469 Created By: sarakshi
7470 Date Created By: 31-May-2005
7471 Purpose: This procedure imports unit section special Fees.
7472
7473 Known limitations,enhancements,remarks:
7474 Change History
7475 Who When What
7476 abshriva 12-May-2006 Bug #5217319, added the call to precision method to get the correct precision value
7477 on insert and update, removed the hard coded format checks.
7478 sommukhe 18-Jan-2006 Bug#4926548, modified cursorc_fee_type_exists to address the performance issue.
7479 Created local procedures and functions.
7480 ***********************************************************************************************/
7481 l_c_cal_type igs_ca_inst_all.cal_type%TYPE;
7482 l_n_seq_num igs_ca_inst_all.sequence_number%TYPE;
7483 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
7484 l_insert_update VARCHAR2(1);
7485
7486 PROCEDURE trim_values ( p_usec_sp_fee_rec IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_rec_type) AS
7487 BEGIN
7488
7489 p_usec_sp_fee_rec.unit_cd := TRIM(p_usec_sp_fee_rec.unit_cd);
7490 p_usec_sp_fee_rec.version_number := TRIM(p_usec_sp_fee_rec.version_number);
7491 p_usec_sp_fee_rec.teach_cal_alternate_code := TRIM(p_usec_sp_fee_rec.teach_cal_alternate_code);
7492 p_usec_sp_fee_rec.location_cd := TRIM(p_usec_sp_fee_rec.location_cd);
7493 p_usec_sp_fee_rec.unit_class := TRIM(p_usec_sp_fee_rec.unit_class);
7494 p_usec_sp_fee_rec.fee_type := TRIM(p_usec_sp_fee_rec.fee_type);
7495 p_usec_sp_fee_rec.sp_fee_amt := TRIM(p_usec_sp_fee_rec.sp_fee_amt);
7496 p_usec_sp_fee_rec.closed_flag := TRIM(p_usec_sp_fee_rec.closed_flag);
7497
7498 END trim_values;
7499
7500 PROCEDURE validate_parameters(p_usec_sp_fee_rec IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_rec_type) AS
7501
7502 BEGIN
7503 p_usec_sp_fee_rec.status:='S';
7504
7505
7506 IF p_usec_sp_fee_rec.unit_cd IS NULL OR p_usec_sp_fee_rec.unit_cd = FND_API.G_MISS_CHAR THEN
7507 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
7508 p_usec_sp_fee_rec.status := 'E';
7509 END IF;
7510
7511 IF p_usec_sp_fee_rec.version_number IS NULL OR p_usec_sp_fee_rec.version_number = FND_API.G_MISS_NUM THEN
7512 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
7513 p_usec_sp_fee_rec.status := 'E';
7514 END IF;
7515
7516 IF p_usec_sp_fee_rec.teach_cal_alternate_code IS NULL OR p_usec_sp_fee_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
7517 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
7518 p_usec_sp_fee_rec.status := 'E';
7519 END IF;
7520
7521 IF p_usec_sp_fee_rec.location_cd IS NULL OR p_usec_sp_fee_rec.location_cd = FND_API.G_MISS_CHAR THEN
7522 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
7523 p_usec_sp_fee_rec.status := 'E';
7524 END IF;
7525
7526 IF p_usec_sp_fee_rec.unit_class IS NULL OR p_usec_sp_fee_rec.unit_class = FND_API.G_MISS_CHAR THEN
7527 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
7528 p_usec_sp_fee_rec.status := 'E';
7529 END IF;
7530
7531 IF p_usec_sp_fee_rec.fee_type IS NULL OR p_usec_sp_fee_rec.fee_type = FND_API.G_MISS_CHAR THEN
7532 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','FEE_TYPE','IGS_FI_LOCKBOX',FALSE);
7533 p_usec_sp_fee_rec.status := 'E';
7534 END IF;
7535
7536 IF p_usec_sp_fee_rec.sp_fee_amt IS NULL OR p_usec_sp_fee_rec.sp_fee_amt = FND_API.G_MISS_NUM THEN
7537 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','FEE_AMOUNT','LEGACY_TOKENS',FALSE);
7538 p_usec_sp_fee_rec.status := 'E';
7539 END IF;
7540
7541 END validate_parameters;
7542
7543 PROCEDURE validate_derivation(p_usec_sp_fee_rec IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_rec_type) AS
7544
7545 l_d_start igs_ca_inst_all.start_dt%TYPE;
7546 l_d_end igs_ca_inst_all.end_dt%TYPE;
7547 l_c_ret_status VARCHAR2(30);
7548
7549 BEGIN
7550
7551 -- Deriving the Calendar Type and Calendar Sequence Number
7552 igs_ge_gen_003.get_calendar_instance(p_usec_sp_fee_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
7553 IF l_c_ret_status <> 'SINGLE' THEN
7554 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
7555 p_usec_sp_fee_rec.status := 'E';
7556 END IF;
7557
7558 -- Deriving the Unit Offering Option Identifier
7559 l_c_ret_status := NULL;
7560 igs_ps_validate_lgcy_pkg.get_uoo_id(p_usec_sp_fee_rec.unit_cd, p_usec_sp_fee_rec.version_number, l_c_cal_type, l_n_seq_num, p_usec_sp_fee_rec.location_cd, p_usec_sp_fee_rec.unit_class, l_n_uoo_id, l_c_ret_status);
7561 IF l_c_ret_status IS NOT NULL THEN
7562 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
7563 p_usec_sp_fee_rec.status := 'E';
7564 END IF;
7565
7566 END validate_derivation;
7567
7568 PROCEDURE validate_db_cons(p_usec_sp_fee_rec IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_rec_type,p_insert_update IN VARCHAR2) AS
7569
7570 BEGIN
7571
7572 IF p_insert_update = 'I' THEN
7573 /* Unique Key Validation */
7574 IF igs_ps_usec_sp_fees_pkg.get_uk_for_validation ( x_fee_type => p_usec_sp_fee_rec.fee_type,
7575 x_uoo_id => l_n_uoo_id ) THEN
7576 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'FEE_TYPE', 'IGS_FI_LOCKBOX', FALSE);
7577 p_usec_sp_fee_rec.status := 'W';
7578 RETURN;
7579 END IF;
7580 END IF;
7581
7582 -- Check Constraints
7583 BEGIN
7584 igs_ps_unit_ver_pkg.check_constraints( 'UNIT_CD',p_usec_sp_fee_rec.unit_cd);
7585 EXCEPTION
7586 WHEN OTHERS THEN
7587 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_UPPER_CASE','UNIT_CD','LEGACY_TOKENS',TRUE);
7588 p_usec_sp_fee_rec.status :='E';
7589 END;
7590
7591 BEGIN
7592 igs_ps_unit_ver_pkg.check_constraints('VERSION_NUMBER',p_usec_sp_fee_rec.version_number);
7593 EXCEPTION
7594 WHEN OTHERS THEN
7595 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VER_NUM_1_999',NULL,NULL,TRUE);
7596 p_usec_sp_fee_rec.status :='E';
7597 END;
7598
7599 BEGIN
7600 igs_ps_usec_sp_fees_pkg.check_constraints('CLOSED_FLAG', p_usec_sp_fee_rec.closed_flag);
7601 EXCEPTION
7602 WHEN OTHERS THEN
7603 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_Y_OR_N','CLOSED_FLAG','LEGACY_TOKENS',TRUE);
7604 p_usec_sp_fee_rec.status :='E';
7605 END;
7606
7607 BEGIN
7608 igs_ps_usec_sp_fees_pkg.check_constraints('SP_FEE_AMT', p_usec_sp_fee_rec.sp_fee_amt);
7609 EXCEPTION
7610 WHEN OTHERS THEN
7611 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_9999D99','FEE_AMOUNT','LEGACY_TOKENS',TRUE);
7612 p_usec_sp_fee_rec.status :='E';
7613 END;
7614
7615
7616 -- Foreign Key Checking
7617
7618 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
7619 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
7620 p_usec_sp_fee_rec.status := 'E';
7621 END IF;
7622
7623 IF NOT igs_fi_fee_type_pkg.get_pk_for_validation (p_usec_sp_fee_rec.fee_type ) THEN
7624 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'FEE_TYPE', 'IGS_FI_LOCKBOX', FALSE);
7625 p_usec_sp_fee_rec.status := 'E';
7626 END IF;
7627
7628 END validate_db_cons;
7629
7630 -- Check for Update/Insert
7631 FUNCTION check_insert_update ( p_usec_sp_fee_rec IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_rec_type) RETURN VARCHAR2 IS
7632
7633 CURSOR c_sp_fee IS
7634 SELECT 'X'
7635 FROM igs_ps_usec_sp_fees
7636 WHERE uoo_id = l_n_uoo_id
7637 AND fee_type =p_usec_sp_fee_rec.fee_type;
7638
7639 l_c_sp_fee c_sp_fee%ROWTYPE;
7640
7641 BEGIN
7642
7643 OPEN c_sp_fee;
7644 FETCH c_sp_fee INTO l_c_sp_fee;
7645 IF c_sp_fee%FOUND THEN
7646 CLOSE c_sp_fee;
7647 RETURN 'U';
7648 ELSE
7649 CLOSE c_sp_fee;
7650 RETURN 'I';
7651 END IF;
7652
7653 END check_insert_update;
7654
7655 PROCEDURE Assign_default(p_usec_sp_fee_rec IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_rec_type,p_insert_update IN VARCHAR2) AS
7656 CURSOR cur_sp_fees(cp_n_uoo_id IN NUMBER,cp_c_fee_type IN VARCHAR2) IS
7657 SELECT *
7658 FROM igs_ps_usec_sp_fees
7659 WHERE uoo_id = cp_n_uoo_id
7660 AND fee_type = cp_c_fee_type;
7661
7662 l_cur_sp_fees cur_sp_fees%ROWTYPE;
7663
7664 BEGIN
7665 IF p_insert_update = 'I' THEN
7666
7667 IF p_usec_sp_fee_rec.closed_flag IS NULL THEN
7668 p_usec_sp_fee_rec.closed_flag := 'N';
7669 END IF;
7670
7671 ELSE
7672
7673 OPEN cur_sp_fees(l_n_uoo_id,p_usec_sp_fee_rec.fee_type);
7674 FETCH cur_sp_fees into l_cur_sp_fees;
7675 CLOSE cur_sp_fees;
7676
7677 IF p_usec_sp_fee_rec.closed_flag IS NULL THEN
7678 p_usec_sp_fee_rec.closed_flag := l_cur_sp_fees.closed_flag;
7679 ELSIF p_usec_sp_fee_rec.closed_flag = FND_API.G_MISS_CHAR THEN
7680 p_usec_sp_fee_rec.closed_flag := 'N';
7681 END IF;
7682
7683 END IF;
7684
7685 END Assign_default;
7686
7687 PROCEDURE Business_validation(p_usec_sp_fee_rec IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_rec_type,p_insert_update IN VARCHAR2) AS
7688
7689 CURSOR c_fee_type_exists(cp_source_fee_type igs_fi_fee_type.fee_type%TYPE) IS
7690 SELECT ci.cal_type cal_type,ci.sequence_number sequence_number
7691 FROM igs_fi_fee_type ft,
7692 igs_fi_f_typ_ca_inst ftci,
7693 igs_ca_inst ci,
7694 igs_ca_type ct,
7695 igs_ca_stat cs
7696 WHERE ft.s_fee_type = 'SPECIAL'
7697 AND ft.closed_ind = 'N'
7698 AND ft.fee_type = ftci.fee_type
7699 AND ft.fee_type = cp_source_fee_type
7700 AND ftci.fee_cal_type = ci.cal_type
7701 AND ftci.fee_ci_sequence_number = ci.sequence_number
7702 AND ci.cal_type = ct.cal_type
7703 AND ct.s_cal_cat = 'FEE'
7704 AND ci.cal_status = cs.cal_status
7705 AND cs.s_cal_status = 'ACTIVE' ;
7706
7707 c_fee_type_exists_rec c_fee_type_exists%ROWTYPE;
7708
7709 l_message_name VARCHAR2(30);
7710 l_c_var VARCHAR2(1);
7711
7712 TYPE teach_cal_rec IS RECORD(
7713 cal_type igs_ca_inst_all.cal_type%TYPE,
7714 sequence_number igs_ca_inst_all.sequence_number%TYPE
7715 );
7716 TYPE teachCalendar IS TABLE OF teach_cal_rec INDEX BY BINARY_INTEGER;
7717 teachCalendar_tbl teachCalendar;
7718 l_n_counter NUMBER(10);
7719 l_c_proceed BOOLEAN ;
7720
7721
7722 PROCEDURE createCalendar IS
7723
7724 CURSOR cur_cal_teach(cp_load_cal igs_ca_teach_to_load_v.load_cal_type%TYPE,
7725 cp_load_seq igs_ca_teach_to_load_v.load_ci_sequence_number%TYPE) IS
7726 SELECT sup_cal_type,sup_ci_sequence_number
7727 FROM igs_ca_inst_rel
7728 WHERE sub_cal_type = cp_load_cal
7729 AND sub_ci_sequence_number = cp_load_seq;
7730
7731 CURSOR cur_cal_load IS
7732 SELECT load_cal_type,load_ci_sequence_number
7733 FROM igs_ca_teach_to_load_v
7734 WHERE teach_cal_type=l_c_cal_type
7735 AND teach_ci_sequence_number=l_n_seq_num;
7736
7737 BEGIN
7738 --populate the pl-sql table with the superior calendar's by mapping the teach calendars.
7739 l_n_counter :=1;
7740 FOR rec_cur_cal_load IN cur_cal_load LOOP
7741 FOR rec_cur_cal_teach IN cur_cal_teach(rec_cur_cal_load.load_cal_type ,rec_cur_cal_load.load_ci_sequence_number) LOOP
7742 teachCalendar_tbl(l_n_counter).cal_type :=rec_cur_cal_teach.sup_cal_type;
7743 teachCalendar_tbl(l_n_counter).sequence_number :=rec_cur_cal_teach.sup_ci_sequence_number;
7744 l_n_counter:=l_n_counter+1;
7745 END LOOP;
7746 END LOOP;
7747
7748 END createCalendar;
7749
7750 FUNCTION testCalendar(cp_cal_type igs_ca_inst_all.cal_type%TYPE,
7751 cp_sequence_number igs_ca_inst_all.sequence_number%TYPE) RETURN BOOLEAN AS
7752 BEGIN
7753 IF teachCalendar_tbl.EXISTS(1) THEN
7754 FOR i IN 1..teachCalendar_tbl.last LOOP
7755 IF cp_cal_type=teachCalendar_tbl(i).cal_type AND
7756 cp_sequence_number=teachCalendar_tbl(i).sequence_number THEN
7757 RETURN TRUE;
7758 END IF;
7759 END LOOP;
7760 END IF;
7761 RETURN FALSE;
7762 END testCalendar;
7763
7764
7765 BEGIN
7766
7767 --Store the superior calendars in a pl-sql tables for the input teaching calendars
7768 createCalendar;
7769 --Check if the unit is INACTIVE, then do not allow to import
7770 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_usec_sp_fee_rec.unit_cd, p_usec_sp_fee_rec.version_number,l_message_name)=FALSE THEN
7771 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
7772 fnd_msg_pub.add;
7773 p_usec_sp_fee_rec.status := 'E';
7774 END IF;
7775
7776 --If enrollment exists for this unit section then insert/update
7777 IF igs_ps_gen_003.enrollment_for_uoo_check(l_n_uoo_id) = TRUE THEN
7778 fnd_message.set_name ( 'IGS', 'IGS_PS_US_FEE_TYP_USED_ENROLL' );
7779 fnd_msg_pub.add;
7780 p_usec_sp_fee_rec.status := 'E';
7781 END IF;
7782
7783 IF p_insert_update = 'I' THEN
7784 l_c_proceed:= FALSE;
7785 FOR rec_c_fee_type_exists IN c_fee_type_exists(p_usec_sp_fee_rec.fee_type) LOOP
7786 IF testCalendar(rec_c_fee_type_exists.cal_type ,rec_c_fee_type_exists.sequence_number ) THEN
7787 l_c_proceed:= TRUE;
7788 EXIT;
7789 END IF;
7790 END LOOP;
7791
7792 IF l_c_proceed = FALSE THEN
7793 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'FEE_TYPE', 'IGS_FI_LOCKBOX', FALSE);
7794 p_usec_sp_fee_rec.status := 'E';
7795 END IF;
7796 END IF;
7797
7798 IF teachCalendar_tbl.EXISTS(1) THEN
7799 teachCalendar_tbl.DELETE;
7800 END IF;
7801
7802
7803 END Business_validation;
7804
7805 BEGIN
7806
7807 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
7808 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.start_logging_for',
7809 'Unit Section Special Fees');
7810 END IF;
7811
7812 p_c_rec_status := 'S';
7813 FOR I in 1..p_usec_sp_fee_tbl.LAST LOOP
7814 IF p_usec_sp_fee_tbl.EXISTS(I) THEN
7815 -- Initialize the variable use to store the derived values.
7816 l_n_uoo_id := NULL;
7817 l_c_cal_type:= NULL;
7818 l_n_seq_num := NULL;
7819 p_usec_sp_fee_tbl(I).status := 'S';
7820 p_usec_sp_fee_tbl(I).msg_from := fnd_msg_pub.count_msg;
7821 trim_values(p_usec_sp_fee_tbl(I));
7822 validate_parameters(p_usec_sp_fee_tbl(I));
7823
7824 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7825 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.status_after_validate_parameters',
7826 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7827 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7828 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type||' '||'Status:'||
7829 p_usec_sp_fee_tbl(I).status);
7830 END IF;
7831
7832 IF p_usec_sp_fee_tbl(I).status = 'S' THEN
7833 validate_derivation(p_usec_sp_fee_tbl(I));
7834
7835 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7836 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.status_after_validate_derivation',
7837 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7838 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7839 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type
7840 ||' '||'Status:'||p_usec_sp_fee_tbl(I).status);
7841 END IF;
7842
7843 END IF;
7844
7845 --Find out whether it is insert/update of record
7846 l_insert_update:='I';
7847 IF p_usec_sp_fee_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
7848 l_insert_update:= check_insert_update(p_usec_sp_fee_tbl(I));
7849
7850 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7851 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.status_after_check_insert_update',
7852 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7853 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7854 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type
7855 ||' '||'Status:'||p_usec_sp_fee_tbl(I).status);
7856 END IF;
7857
7858 END IF;
7859
7860 IF p_usec_sp_fee_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
7861 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
7862 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
7863 fnd_msg_pub.add;
7864 p_usec_sp_fee_tbl(I).status := 'A';
7865 END IF;
7866
7867 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7868 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.status_after_check_import_allowed',
7869 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7870 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7871 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type
7872 ||' '||'Status:'||p_usec_sp_fee_tbl(I).status);
7873 END IF;
7874
7875 END IF;
7876
7877
7878 IF p_usec_sp_fee_tbl(I).status = 'S' THEN
7879 Assign_default(p_usec_sp_fee_tbl(I),l_insert_update);
7880
7881 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7882 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.status_after_Assign_default',
7883 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7884 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7885 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type
7886 ||' '||'Status:'||p_usec_sp_fee_tbl(I).status);
7887 END IF;
7888
7889 END IF;
7890
7891 IF p_usec_sp_fee_tbl(I).status = 'S' THEN
7892 validate_db_cons ( p_usec_sp_fee_tbl(I),l_insert_update);
7893
7894 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7895 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.status_after_validate_db_cons',
7896 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7897 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7898 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type
7899 ||' '||'Status:'||p_usec_sp_fee_tbl(I).status);
7900 END IF;
7901
7902 END IF;
7903
7904
7905 --Business validations
7906 IF p_usec_sp_fee_tbl(I).status = 'S' THEN
7907 Business_validation(p_usec_sp_fee_tbl(I),l_insert_update);
7908
7909 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7910 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.status_after_Business_validation',
7911 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7912 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7913 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type
7914 ||' '||'Status:'||p_usec_sp_fee_tbl(I).status);
7915 END IF;
7916
7917 END IF;
7918
7919 IF p_usec_sp_fee_tbl(I).status = 'S' THEN
7920 p_usec_sp_fee_tbl(I).sp_fee_amt :=igs_fi_gen_gl.get_formatted_amount(p_usec_sp_fee_tbl(I).sp_fee_amt);
7921 IF l_insert_update = 'I' THEN
7922 INSERT INTO IGS_PS_USEC_SP_FEES(
7923 USEC_SP_FEES_ID,
7924 UOO_ID,
7925 FEE_TYPE,
7926 SP_FEE_AMT,
7927 CLOSED_FLAG,
7928 CREATED_BY,
7929 CREATION_DATE,
7930 LAST_UPDATED_BY,
7931 LAST_UPDATE_DATE,
7932 LAST_UPDATE_LOGIN )
7933 VALUES (
7934 igs_ps_usec_sp_fees_s.NEXTVAL,
7935 l_n_uoo_id,
7936 p_usec_sp_fee_tbl(I).fee_type,
7937 p_usec_sp_fee_tbl(I).sp_fee_amt,
7938 p_usec_sp_fee_tbl(I).closed_flag,
7939 g_n_user_id,
7940 SYSDATE,
7941 g_n_user_id,
7942 SYSDATE,
7943 g_n_login_id);
7944
7945 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7946 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.Record_Inserted',
7947 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7948 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7949 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type);
7950 END IF;
7951
7952 ELSE
7953 UPDATE IGS_PS_USEC_SP_FEES SET
7954 SP_FEE_AMT = p_usec_sp_fee_tbl(I).sp_fee_amt,
7955 CLOSED_FLAG = p_usec_sp_fee_tbl(I).closed_flag,
7956 last_updated_by = g_n_user_id ,
7957 last_update_date = sysdate ,
7958 last_update_login = g_n_login_id
7959 WHERE uoo_id=l_n_uoo_id AND fee_type=p_usec_sp_fee_tbl(I).fee_type;
7960
7961 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7962 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.Record_Updated',
7963 'Unit code:'||p_usec_sp_fee_tbl(I).unit_cd||' '||'Version number:'||p_usec_sp_fee_tbl(I).version_number||' '||'teach_cal_alternate_code:'
7964 ||p_usec_sp_fee_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_sp_fee_tbl(I).location_cd||' '||'Unit Class:'||
7965 p_usec_sp_fee_tbl(I).unit_class||' '||'Fee type:'||p_usec_sp_fee_tbl(I).fee_type);
7966 END IF;
7967
7968 END IF;
7969
7970 END IF;
7971
7972
7973 IF p_usec_sp_fee_tbl(I).status = 'S' THEN
7974 p_usec_sp_fee_tbl(I).msg_from := NULL;
7975 p_usec_sp_fee_tbl(I).msg_to := NULL;
7976 ELSIF p_usec_sp_fee_tbl(I).status = 'A' THEN
7977 p_usec_sp_fee_tbl(I).msg_from := p_usec_sp_fee_tbl(I).msg_from + 1;
7978 p_usec_sp_fee_tbl(I).msg_to := fnd_msg_pub.count_msg;
7979 ELSE
7980 p_c_rec_status := p_usec_sp_fee_tbl(I).status;
7981 p_usec_sp_fee_tbl(I).msg_from := p_usec_sp_fee_tbl(I).msg_from+1;
7982 p_usec_sp_fee_tbl(I).msg_to := fnd_msg_pub.count_msg;
7983 IF p_usec_sp_fee_tbl(I).status = 'E' THEN
7984 RETURN;
7985 END IF;
7986 END IF;
7987
7988 END IF;
7989 END LOOP;
7990
7991 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
7992 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_sp_fee.after_import_status',p_c_rec_status);
7993 END IF;
7994
7995
7996 END create_usec_sp_fee;
7997
7998 PROCEDURE create_usec_plus_hr(p_usec_plus_hr_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_tbl_type
7999 ,p_c_rec_status OUT NOCOPY VARCHAR2
8000 ,p_calling_context IN VARCHAR2) IS
8001 /***********************************************************************************************
8002
8003 Created By: sarakshi
8004 Date Created By: 01-Jun-2005
8005 Purpose: This procedure imports unit section Plus Hours.
8006
8007 Known limitations,enhancements,remarks:
8008 Change History
8009 Who When What
8010 ***********************************************************************************************/
8011
8012 l_n_uoo_id NUMBER;
8013 l_n_activity_id NUMBER;
8014 l_n_building_id NUMBER;
8015 l_n_room_id NUMBER;
8016 l_n_ins_id NUMBER;
8017 l_insert_update VARCHAR2(1);
8018
8019 PROCEDURE trim_values ( p_usec_plus_hr_rec IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_rec_type) AS
8020 BEGIN
8021
8022 p_usec_plus_hr_rec.unit_cd := TRIM(p_usec_plus_hr_rec.unit_cd);
8023 p_usec_plus_hr_rec.version_number := TRIM(p_usec_plus_hr_rec.version_number);
8024 p_usec_plus_hr_rec.teach_cal_alternate_code := TRIM(p_usec_plus_hr_rec.teach_cal_alternate_code);
8025 p_usec_plus_hr_rec.location_cd := TRIM(p_usec_plus_hr_rec.location_cd);
8026 p_usec_plus_hr_rec.unit_class := TRIM(p_usec_plus_hr_rec.unit_class);
8027 p_usec_plus_hr_rec.activity_type_code := TRIM(p_usec_plus_hr_rec.activity_type_code);
8028 p_usec_plus_hr_rec.activity_location_cd := TRIM(p_usec_plus_hr_rec.activity_location_cd);
8029 p_usec_plus_hr_rec.building_cd := TRIM(p_usec_plus_hr_rec.building_cd);
8030 p_usec_plus_hr_rec.room_cd := TRIM(p_usec_plus_hr_rec.room_cd);
8031 p_usec_plus_hr_rec.number_of_students := TRIM(p_usec_plus_hr_rec.number_of_students);
8032 p_usec_plus_hr_rec.hours_per_student := TRIM(p_usec_plus_hr_rec.hours_per_student);
8033 p_usec_plus_hr_rec.hours_per_faculty := TRIM(p_usec_plus_hr_rec.hours_per_faculty);
8034 p_usec_plus_hr_rec.instructor_number := TRIM(p_usec_plus_hr_rec.instructor_number);
8035
8036 END trim_values;
8037
8038 PROCEDURE validate_parameters(p_usec_plus_hr_rec IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_rec_type) AS
8039
8040 BEGIN
8041 p_usec_plus_hr_rec.status:='S';
8042
8043
8044 IF p_usec_plus_hr_rec.unit_cd IS NULL OR p_usec_plus_hr_rec.unit_cd = FND_API.G_MISS_CHAR THEN
8045 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
8046 p_usec_plus_hr_rec.status := 'E';
8047 END IF;
8048
8049 IF p_usec_plus_hr_rec.version_number IS NULL OR p_usec_plus_hr_rec.version_number = FND_API.G_MISS_NUM THEN
8050 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
8051 p_usec_plus_hr_rec.status := 'E';
8052 END IF;
8053
8054 IF p_usec_plus_hr_rec.teach_cal_alternate_code IS NULL OR p_usec_plus_hr_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
8055 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
8056 p_usec_plus_hr_rec.status := 'E';
8057 END IF;
8058
8059 IF p_usec_plus_hr_rec.location_cd IS NULL OR p_usec_plus_hr_rec.location_cd = FND_API.G_MISS_CHAR THEN
8060 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
8061 p_usec_plus_hr_rec.status := 'E';
8062 END IF;
8063
8064 IF p_usec_plus_hr_rec.unit_class IS NULL OR p_usec_plus_hr_rec.unit_class = FND_API.G_MISS_CHAR THEN
8065 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
8066 p_usec_plus_hr_rec.status := 'E';
8067 END IF;
8068
8069 IF p_usec_plus_hr_rec.activity_type_code IS NULL OR p_usec_plus_hr_rec.activity_type_code = FND_API.G_MISS_CHAR THEN
8070 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','ACTIVITY_TYPE_CODE','LEGACY_TOKENS',FALSE);
8071 p_usec_plus_hr_rec.status := 'E';
8072 END IF;
8073
8074 IF p_usec_plus_hr_rec.activity_location_cd IS NULL OR p_usec_plus_hr_rec.activity_location_cd = FND_API.G_MISS_CHAR THEN
8075 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','ACTIVITY_LOCATION_CD','LEGACY_TOKENS',FALSE);
8076 p_usec_plus_hr_rec.status := 'E';
8077 END IF;
8078
8079 IF p_usec_plus_hr_rec.building_cd IS NULL OR p_usec_plus_hr_rec.building_cd = FND_API.G_MISS_CHAR THEN
8080 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','BUILDING_CODE','LEGACY_TOKENS',FALSE);
8081 p_usec_plus_hr_rec.status := 'E';
8082 END IF;
8083
8084 IF p_usec_plus_hr_rec.room_cd IS NULL OR p_usec_plus_hr_rec.room_cd = FND_API.G_MISS_CHAR THEN
8085 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','ROOM_CODE','LEGACY_TOKENS',FALSE);
8086 p_usec_plus_hr_rec.status := 'E';
8087 END IF;
8088
8089 IF p_usec_plus_hr_rec.number_of_students IS NULL OR p_usec_plus_hr_rec.number_of_students = FND_API.G_MISS_NUM THEN
8090 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','NUMBER_OF_STUDENTS','LEGACY_TOKENS',FALSE);
8091 p_usec_plus_hr_rec.status := 'E';
8092 END IF;
8093
8094 IF p_usec_plus_hr_rec.hours_per_student IS NULL OR p_usec_plus_hr_rec.hours_per_student = FND_API.G_MISS_NUM THEN
8095 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','HOURS_PER_STUDENT','LEGACY_TOKENS',FALSE);
8096 p_usec_plus_hr_rec.status := 'E';
8097 END IF;
8098
8099 IF p_usec_plus_hr_rec.hours_per_faculty IS NULL OR p_usec_plus_hr_rec.hours_per_faculty = FND_API.G_MISS_NUM THEN
8100 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','HOURS_PER_FACULTY','LEGACY_TOKENS',FALSE);
8101 p_usec_plus_hr_rec.status := 'E';
8102 END IF;
8103
8104
8105 END validate_parameters;
8106
8107 PROCEDURE validate_derivation(p_usec_plus_hr_rec IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_rec_type) AS
8108 l_c_cal_type VARCHAR2(10);
8109 l_n_seq_num NUMBER;
8110 l_d_start igs_ca_inst_all.start_dt%TYPE;
8111 l_d_end igs_ca_inst_all.end_dt%TYPE;
8112 l_c_ret_status VARCHAR2(30);
8113
8114 CURSOR cur_activity_cd(cp_activity_type_code IN VARCHAR2) IS
8115 SELECT activity_type_id
8116 FROM igs_ps_usec_act_type
8117 WHERE activity_type_code=cp_activity_type_code;
8118
8119 CURSOR cur_building(cp_location_cd IN VARCHAR2,cp_building_code IN VARCHAR2) IS
8120 SELECT building_id
8121 FROM igs_ad_building
8122 WHERE location_cd = cp_location_cd
8123 AND building_cd=cp_building_code;
8124
8125 CURSOR cur_room(cp_building_id IN VARCHAR2,cp_room_cd IN VARCHAR2) IS
8126 SELECT room_id
8127 FROM igs_ad_room
8128 WHERE building_id=cp_building_id
8129 AND room_cd= cp_room_cd;
8130
8131 BEGIN
8132
8133 -- Deriving the Calendar Type and Calendar Sequence Number
8134 igs_ge_gen_003.get_calendar_instance(p_usec_plus_hr_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
8135 IF l_c_ret_status <> 'SINGLE' THEN
8136 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
8137 p_usec_plus_hr_rec.status := 'E';
8138 END IF;
8139
8140 -- Deriving the Unit Offering Option Identifier
8141 l_c_ret_status := NULL;
8142 igs_ps_validate_lgcy_pkg.get_uoo_id(p_usec_plus_hr_rec.unit_cd, p_usec_plus_hr_rec.version_number, l_c_cal_type, l_n_seq_num, p_usec_plus_hr_rec.location_cd, p_usec_plus_hr_rec.unit_class, l_n_uoo_id, l_c_ret_status);
8143 IF l_c_ret_status IS NOT NULL THEN
8144 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
8145 p_usec_plus_hr_rec.status := 'E';
8146 END IF;
8147
8148 --Derive the activity id
8149 OPEN cur_activity_cd(p_usec_plus_hr_rec.activity_type_code);
8150 FETCH cur_activity_cd INTO l_n_activity_id;
8151 CLOSE cur_activity_cd;
8152
8153 --Derive the building code
8154 OPEN cur_building(p_usec_plus_hr_rec.activity_location_cd,p_usec_plus_hr_rec.building_cd);
8155 FETCH cur_building INTO l_n_building_id;
8156 IF cur_building%NOTFOUND THEN
8157 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','BUILDING_CODE' ,'LEGACY_TOKENS', FALSE);
8158 p_usec_plus_hr_rec.status := 'E';
8159 END IF;
8160 CLOSE cur_building;
8161
8162 --Derive the room code
8163 OPEN cur_room(l_n_building_id,p_usec_plus_hr_rec.room_cd);
8164 FETCH cur_room INTO l_n_room_id;
8165 IF cur_room%NOTFOUND THEN
8166 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','ROOM_CODE' ,'LEGACY_TOKENS', FALSE);
8167 p_usec_plus_hr_rec.status := 'E';
8168 END IF;
8169 CLOSE cur_room;
8170
8171 -- Derive the Instructor identifier
8172 IF p_usec_plus_hr_rec.instructor_number IS NOT NULL AND p_usec_plus_hr_rec.instructor_number <> FND_API.G_MISS_CHAR THEN
8173 igs_ps_validate_lgcy_pkg.get_party_id(p_usec_plus_hr_rec.instructor_number, l_n_ins_id);
8174 IF l_n_ins_id IS NULL THEN
8175 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
8176 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', fnd_message.get,NULL, FALSE);
8177 p_usec_plus_hr_rec.status := 'E';
8178 END IF;
8179 END IF;
8180
8181
8182 END validate_derivation;
8183
8184 PROCEDURE validate_db_cons(p_usec_plus_hr_rec IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_rec_type,p_insert_update IN VARCHAR2) AS
8185
8186 BEGIN
8187
8188 IF p_insert_update = 'I' THEN
8189 -- Unique Key Validation
8190 IF igs_ps_us_unsched_cl_pkg.get_uk_for_validation ( x_uoo_id => l_n_uoo_id,
8191 x_activity_type_id => l_n_activity_id,
8192 x_location_cd => p_usec_plus_hr_rec.activity_location_cd,
8193 x_building_id => l_n_building_id,
8194 x_room_id => l_n_room_id ) THEN
8195 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'PLUS_HOUR', 'LEGACY_TOKENS', FALSE);
8196 p_usec_plus_hr_rec.status := 'W';
8197 RETURN;
8198 END IF;
8199 END IF;
8200
8201 -- Check Constraints
8202
8203 BEGIN
8204 igs_ps_us_unsched_cl_pkg.check_constraints('NUMBER_OF_STUDENTS', p_usec_plus_hr_rec.number_of_students);
8205 EXCEPTION
8206 WHEN OTHERS THEN
8207 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_9999999999','NUMBER_OF_STUDENTS','LEGACY_TOKENS',TRUE);
8208 p_usec_plus_hr_rec.status :='E';
8209 END;
8210
8211 BEGIN
8212 igs_ps_us_unsched_cl_pkg.check_constraints('HOURS_PER_STUDENT', p_usec_plus_hr_rec.hours_per_student);
8213 EXCEPTION
8214 WHEN OTHERS THEN
8215 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','HOURS_PER_STUDENT','LEGACY_TOKENS',TRUE);
8216 p_usec_plus_hr_rec.status :='E';
8217 END;
8218
8219 BEGIN
8220 igs_ps_us_unsched_cl_pkg.check_constraints('HOURS_PER_FACULTY', p_usec_plus_hr_rec.hours_per_faculty);
8221 EXCEPTION
8222 WHEN OTHERS THEN
8223 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_VAL_0_999D99','HOURS_PER_FACULTY','LEGACY_TOKENS',TRUE);
8224 p_usec_plus_hr_rec.status :='E';
8225 END;
8226
8227 -- Foreign Key Checking
8228 --Check for the existence of the unit section
8229 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
8230 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
8231 p_usec_plus_hr_rec.status := 'E';
8232 END IF;
8233
8234 -- Check for existence of Activity Code
8235 IF NOT igs_ps_usec_act_type_pkg.get_pk_for_validation ( l_n_activity_id ) THEN
8236 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ACTIVITY_TYPE_CODE', 'LEGACY_TOKENS', FALSE);
8237 p_usec_plus_hr_rec.status := 'E';
8238 END IF;
8239
8240 -- Check for existence of Activity Location Code
8241 IF NOT igs_ad_location_pkg.get_pk_for_validation ( p_usec_plus_hr_rec.activity_location_cd ) THEN
8242 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ACTIVITY_LOCATION_CD', 'LEGACY_TOKENS', FALSE);
8243 p_usec_plus_hr_rec.status := 'E';
8244 END IF;
8245
8246 -- Check for existence of Building Code Code
8247 IF NOT igs_ad_building_pkg.get_pk_for_validation ( l_n_building_id ) THEN
8248 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'BUILDING_CODE', 'LEGACY_TOKENS', FALSE);
8249 p_usec_plus_hr_rec.status := 'E';
8250 END IF;
8251
8252 -- Check for existence of Room Code Code
8253 IF NOT igs_ad_room_pkg.get_pk_for_validation ( l_n_room_id ) THEN
8254 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ROOM_CODE', 'LEGACY_TOKENS', FALSE);
8255 p_usec_plus_hr_rec.status := 'E';
8256 END IF;
8257
8258 -- Check for existence of instructor number
8259 IF l_n_ins_id IS NOT NULL THEN
8260 IF NOT igs_pe_person_pkg.get_pk_for_validation(l_n_ins_id ) THEN
8261 fnd_message.set_name('IGS','IGS_PS_INS_PERSON_NUMBER');
8262 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', fnd_message.get, NULL, FALSE);
8263 p_usec_plus_hr_rec.status := 'E';
8264 END IF;
8265 END IF;
8266
8267 END validate_db_cons;
8268
8269 -- Check for Update/Insert
8270 FUNCTION check_insert_update ( p_usec_plus_hr_rec IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_rec_type) RETURN VARCHAR2 IS
8271
8272 CURSOR c_plus_hr IS
8273 SELECT 'X'
8274 FROM igs_ps_us_unsched_cl
8275 WHERE uoo_id = l_n_uoo_id
8276 AND activity_type_id = l_n_activity_id
8277 AND location_cd = p_usec_plus_hr_rec.activity_location_cd
8278 AND building_id = l_n_building_id
8279 AND room_id = l_n_room_id;
8280
8281
8282 l_c_plus_hr c_plus_hr%ROWTYPE;
8283
8284 BEGIN
8285
8286 OPEN c_plus_hr;
8287 FETCH c_plus_hr INTO l_c_plus_hr;
8288 IF c_plus_hr%FOUND THEN
8289 CLOSE c_plus_hr;
8290 RETURN 'U';
8291 ELSE
8292 CLOSE c_plus_hr;
8293 RETURN 'I';
8294 END IF;
8295
8296 END check_insert_update;
8297
8298 PROCEDURE Assign_default(p_usec_plus_hr_rec IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_rec_type,p_insert_update IN VARCHAR2) AS
8299 CURSOR cur_plus_hr IS
8300 SELECT *
8301 FROM IGS_PS_US_UNSCHED_CL
8302 WHERE uoo_id = l_n_uoo_id
8303 AND activity_type_id = l_n_activity_id
8304 AND location_cd = p_usec_plus_hr_rec.activity_location_cd
8305 AND building_id = l_n_building_id
8306 AND room_id = l_n_room_id;
8307
8308 l_cur_plus_hr cur_plus_hr%ROWTYPE;
8309
8310 BEGIN
8311 IF p_insert_update = 'I' THEN
8312
8313 IF p_usec_plus_hr_rec.instructor_number IS NULL THEN
8314 l_n_ins_id := NULL;
8315 END IF;
8316
8317 ELSE
8318
8319 OPEN cur_plus_hr;
8320 FETCH cur_plus_hr INTO l_cur_plus_hr;
8321 CLOSE cur_plus_hr;
8322
8323 IF p_usec_plus_hr_rec.instructor_number IS NULL THEN
8324 l_n_ins_id := l_cur_plus_hr.instructor_id;
8325 ELSIF p_usec_plus_hr_rec.instructor_number = FND_API.G_MISS_CHAR THEN
8326 l_n_ins_id := NULL;
8327 END IF;
8328
8329 END IF;
8330
8331 END Assign_default;
8332
8333 PROCEDURE Business_validation(p_usec_plus_hr_rec IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_rec_type) AS
8334
8335 l_message_name VARCHAR2(30);
8336 l_preferred_name igs_pe_person.preferred_name%TYPE;
8337 BEGIN
8338 --Check if the unit is INACTIVE, then do not allow to import
8339 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_usec_plus_hr_rec.unit_cd, p_usec_plus_hr_rec.version_number,l_message_name)=FALSE THEN
8340 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
8341 fnd_msg_pub.add;
8342 p_usec_plus_hr_rec.status := 'E';
8343 END IF;
8344
8345 --Instructor should be staff
8346 IF l_n_ins_id IS NOT NULL THEN
8347 IF igs_ge_mnt_sdtt.pid_val_staff (p_person_id => l_n_ins_id,p_preferred_name=>l_preferred_name) = FALSE THEN
8348 p_usec_plus_hr_rec.status :='E';
8349 fnd_message.set_name('IGS','IGS_PS_INST_NOT_STAFF');
8350 fnd_msg_pub.add;
8351 END IF;
8352 END IF;
8353
8354 END Business_validation;
8355
8356
8357 BEGIN
8358
8359 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
8360 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.start_logging_for',
8361 'Unit Section Plus Hours');
8362 END IF;
8363
8364 p_c_rec_status := 'S';
8365 FOR I in 1..p_usec_plus_hr_tbl.LAST LOOP
8366 IF p_usec_plus_hr_tbl.EXISTS(I) THEN
8367 -- Initialize the variable use to store the derived values.
8368 l_n_uoo_id := NULL;
8369 l_n_activity_id := NULL;
8370 l_n_building_id := NULL;
8371 l_n_room_id := NULL;
8372 l_n_ins_id := NULL;
8373
8374 p_usec_plus_hr_tbl(I).status := 'S';
8375 p_usec_plus_hr_tbl(I).msg_from := fnd_msg_pub.count_msg;
8376 trim_values(p_usec_plus_hr_tbl(I));
8377 validate_parameters(p_usec_plus_hr_tbl(I));
8378
8379 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8380 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.status_after_validate_parameters',
8381 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8382 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8383 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_type_code:'||p_usec_plus_hr_tbl(I).activity_type_code
8384 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_cd:'||p_usec_plus_hr_tbl(I).building_cd
8385 ||' '||'room_cd:'||p_usec_plus_hr_tbl(I).room_cd||' '||'Status:'|| p_usec_plus_hr_tbl(I).status);
8386 END IF;
8387
8388 IF p_usec_plus_hr_tbl(I).status = 'S' THEN
8389 validate_derivation(p_usec_plus_hr_tbl(I));
8390
8391 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8392 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.status_after_validate_derivation',
8393 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8394 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8395 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_id:'||l_n_activity_id
8396 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_id:'||l_n_building_id
8397 ||' '||'room_id:'||l_n_room_id||' '||'Status:'|| p_usec_plus_hr_tbl(I).status);
8398 END IF;
8399
8400 END IF;
8401
8402 --Find out whether it is insert/update of record
8403 l_insert_update:='I';
8404 IF p_usec_plus_hr_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
8405 l_insert_update:= check_insert_update(p_usec_plus_hr_tbl(I));
8406
8407 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8408 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.status_after_check_insert_update',
8409 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8410 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8411 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_id:'||l_n_activity_id
8412 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_id:'||l_n_building_id
8413 ||' '||'room_id:'||l_n_room_id||' '||'Status:'|| p_usec_plus_hr_tbl(I).status);
8414 END IF;
8415
8416 END IF;
8417
8418 IF p_usec_plus_hr_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
8419 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
8420 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
8421 fnd_msg_pub.add;
8422 p_usec_plus_hr_tbl(I).status := 'A';
8423 END IF;
8424
8425 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8426 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.status_after_check_import_allowed',
8427 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8428 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8429 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_id:'||l_n_activity_id
8430 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_id:'||l_n_building_id
8431 ||' '||'room_id:'||l_n_room_id||' '||'Status:'|| p_usec_plus_hr_tbl(I).status);
8432 END IF;
8433
8434 END IF;
8435
8436 IF p_usec_plus_hr_tbl(I).status = 'S' THEN
8437 Assign_default(p_usec_plus_hr_tbl(I),l_insert_update);
8438
8439 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8440 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.status_after_Assign_default',
8441 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8442 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8443 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_id:'||l_n_activity_id
8444 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_id:'||l_n_building_id
8445 ||' '||'room_id:'||l_n_room_id||' '||'Status:'|| p_usec_plus_hr_tbl(I).status);
8446 END IF;
8447
8448 END IF;
8449
8450 IF p_usec_plus_hr_tbl(I).status = 'S' THEN
8451 validate_db_cons ( p_usec_plus_hr_tbl(I),l_insert_update);
8452
8453 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8454 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.status_after_validate_db_cons',
8455 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8456 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8457 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_id:'||l_n_activity_id
8458 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_id:'||l_n_building_id
8459 ||' '||'room_id:'||l_n_room_id||' '||'Status:'|| p_usec_plus_hr_tbl(I).status);
8460 END IF;
8461
8462 END IF;
8463
8464 --Business validations
8465 IF p_usec_plus_hr_tbl(I).status = 'S' THEN
8466 Business_validation(p_usec_plus_hr_tbl(I));
8467
8468 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8469 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.status_after_Business_validation',
8470 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8471 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8472 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_id:'||l_n_activity_id
8473 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_id:'||l_n_building_id
8474 ||' '||'room_id:'||l_n_room_id||' '||'Status:'|| p_usec_plus_hr_tbl(I).status);
8475 END IF;
8476
8477 END IF;
8478
8479 IF p_usec_plus_hr_tbl(I).status = 'S' THEN
8480
8481 IF l_insert_update = 'I' THEN
8482 INSERT INTO IGS_PS_US_UNSCHED_CL(
8483 us_unscheduled_cl_id,
8484 uoo_id,
8485 activity_type_id,
8486 location_cd,
8487 building_id,
8488 room_id,
8489 number_of_students,
8490 hours_per_student,
8491 hours_per_faculty,
8492 instructor_id,
8493 created_by,
8494 creation_date,
8495 last_updated_by,
8496 last_update_date,
8497 last_update_login )
8498 VALUES (
8499 igs_ps_us_unsched_cl_s.NEXTVAL,
8500 l_n_uoo_id,
8501 l_n_activity_id,
8502 p_usec_plus_hr_tbl(I).activity_location_cd,
8503 l_n_building_id,
8504 l_n_room_id,
8505 p_usec_plus_hr_tbl(I).number_of_students,
8506 p_usec_plus_hr_tbl(I).hours_per_student,
8507 p_usec_plus_hr_tbl(I).hours_per_faculty,
8508 l_n_ins_id,
8509 g_n_user_id,
8510 SYSDATE,
8511 g_n_user_id,
8512 SYSDATE,
8513 g_n_login_id);
8514
8515
8516 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8517 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.Record_Inserted',
8518 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8519 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8520 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_id:'||l_n_activity_id
8521 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_id:'||l_n_building_id
8522 ||' '||'room_id:'||l_n_room_id);
8523 END IF;
8524
8525 ELSE
8526
8527 UPDATE IGS_PS_US_UNSCHED_CL SET
8528 number_of_students = p_usec_plus_hr_tbl(I).number_of_students,
8529 hours_per_student = p_usec_plus_hr_tbl(I).hours_per_student,
8530 hours_per_faculty = p_usec_plus_hr_tbl(I).hours_per_faculty,
8531 instructor_id = l_n_ins_id,
8532 last_updated_by = g_n_user_id ,
8533 last_update_date = sysdate ,
8534 last_update_login = g_n_login_id
8535 WHERE uoo_id=l_n_uoo_id AND activity_type_id=l_n_activity_id AND location_cd= p_usec_plus_hr_tbl(I).activity_location_cd
8536 AND building_id = l_n_building_id AND room_id = l_n_room_id;
8537
8538 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8539 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.Record_Updated',
8540 'Unit code:'||p_usec_plus_hr_tbl(I).unit_cd||' '||'Version number:'||p_usec_plus_hr_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8541 ||p_usec_plus_hr_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_plus_hr_tbl(I).location_cd||' '||'Unit Class:'||
8542 p_usec_plus_hr_tbl(I).unit_class||' '||'Activity_id:'||l_n_activity_id
8543 ||' '||'activity_location_cd:'||p_usec_plus_hr_tbl(I).activity_location_cd||' '||'building_id:'||l_n_building_id
8544 ||' '||'room_id:'||l_n_room_id);
8545 END IF;
8546
8547 END IF;
8548
8549 END IF;
8550
8551
8552 IF p_usec_plus_hr_tbl(I).status = 'S' THEN
8553 p_usec_plus_hr_tbl(I).msg_from := NULL;
8554 p_usec_plus_hr_tbl(I).msg_to := NULL;
8555 ELSIF p_usec_plus_hr_tbl(I).status = 'A' THEN
8556 p_usec_plus_hr_tbl(I).msg_from := p_usec_plus_hr_tbl(I).msg_from + 1;
8557 p_usec_plus_hr_tbl(I).msg_to := fnd_msg_pub.count_msg;
8558 ELSE
8559 p_c_rec_status := p_usec_plus_hr_tbl(I).status;
8560 p_usec_plus_hr_tbl(I).msg_from := p_usec_plus_hr_tbl(I).msg_from+1;
8561 p_usec_plus_hr_tbl(I).msg_to := fnd_msg_pub.count_msg;
8562 IF p_usec_plus_hr_tbl(I).status = 'E' THEN
8563 RETURN;
8564 END IF;
8565 END IF;
8566
8567 END IF;
8568 END LOOP;
8569
8570 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
8571 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_plus_hr.after_import_status',p_c_rec_status);
8572 END IF;
8573
8574 END create_usec_plus_hr;
8575
8576 PROCEDURE create_usec_rule(p_usec_rule_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_rule_tbl_type,
8577 p_c_rec_status OUT NOCOPY VARCHAR2,
8578 p_calling_context IN VARCHAR2) IS
8579 /***********************************************************************************************
8580
8581 Created By: sarakshi
8582 Date Created By: 01-Jun-2005
8583 Purpose: This procedure imports unit section Rules.
8584
8585 Known limitations,enhancements,remarks:
8586 Change History
8587 Who When What
8588 ***********************************************************************************************/
8589
8590 l_n_uoo_id NUMBER;
8591 l_n_select_group NUMBER;
8592 l_c_rule_desc igs_ru_description.rule_description%TYPE;
8593 l_n_rule_number NUMBER;
8594 l_success BOOLEAN;
8595 l_c_rule_unprocessed VARCHAR2(4500);
8596 l_n_lov_number NUMBER;
8597 l_insert_update VARCHAR2(1);
8598
8599 PROCEDURE trim_values ( p_usec_rule_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rule_rec_type) AS
8600 BEGIN
8601
8602 p_usec_rule_rec.unit_cd := TRIM(p_usec_rule_rec.unit_cd);
8603 p_usec_rule_rec.version_number := TRIM(p_usec_rule_rec.version_number);
8604 p_usec_rule_rec.teach_cal_alternate_code := TRIM(p_usec_rule_rec.teach_cal_alternate_code);
8605 p_usec_rule_rec.location_cd := TRIM(p_usec_rule_rec.location_cd);
8606 p_usec_rule_rec.unit_class := TRIM(p_usec_rule_rec.unit_class);
8607 p_usec_rule_rec.s_rule_call_cd := TRIM(p_usec_rule_rec.s_rule_call_cd);
8608 p_usec_rule_rec.rule_text := TRIM(p_usec_rule_rec.rule_text);
8609
8610 END trim_values;
8611
8612 PROCEDURE validate_parameters(p_usec_rule_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rule_rec_type) AS
8613
8614 BEGIN
8615 p_usec_rule_rec.status:='S';
8616
8617
8618 IF p_usec_rule_rec.unit_cd IS NULL OR p_usec_rule_rec.unit_cd = FND_API.G_MISS_CHAR THEN
8619 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
8620 p_usec_rule_rec.status := 'E';
8621 END IF;
8622
8623 IF p_usec_rule_rec.version_number IS NULL OR p_usec_rule_rec.version_number = FND_API.G_MISS_NUM THEN
8624 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
8625 p_usec_rule_rec.status := 'E';
8626 END IF;
8627
8628 IF p_usec_rule_rec.teach_cal_alternate_code IS NULL OR p_usec_rule_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
8629 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
8630 p_usec_rule_rec.status := 'E';
8631 END IF;
8632
8633 IF p_usec_rule_rec.location_cd IS NULL OR p_usec_rule_rec.location_cd = FND_API.G_MISS_CHAR THEN
8634 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
8635 p_usec_rule_rec.status := 'E';
8636 END IF;
8637
8638 IF p_usec_rule_rec.unit_class IS NULL OR p_usec_rule_rec.unit_class = FND_API.G_MISS_CHAR THEN
8639 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
8640 p_usec_rule_rec.status := 'E';
8641 END IF;
8642
8643 IF p_usec_rule_rec.s_rule_call_cd IS NULL OR p_usec_rule_rec.s_rule_call_cd = FND_API.G_MISS_CHAR THEN
8644 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','S_RULE_CALL_CD','LEGACY_TOKENS',FALSE);
8645 p_usec_rule_rec.status := 'E';
8646 END IF;
8647
8648 IF p_usec_rule_rec.rule_text IS NULL OR p_usec_rule_rec.rule_text = FND_API.G_MISS_CHAR THEN
8649 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','RULE_TEXT','LEGACY_TOKENS',FALSE);
8650 p_usec_rule_rec.status := 'E';
8651 END IF;
8652
8653 END validate_parameters;
8654
8655 PROCEDURE validate_derivation(p_usec_rule_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rule_rec_type) AS
8656 l_c_cal_type VARCHAR2(10);
8657 l_n_seq_num NUMBER;
8658 l_d_start igs_ca_inst_all.start_dt%TYPE;
8659 l_d_end igs_ca_inst_all.end_dt%TYPE;
8660 l_c_ret_status VARCHAR2(30);
8661
8662
8663 BEGIN
8664
8665 -- Deriving the Calendar Type and Calendar Sequence Number
8666 igs_ge_gen_003.get_calendar_instance(p_usec_rule_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
8667 IF l_c_ret_status <> 'SINGLE' THEN
8668 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
8669 p_usec_rule_rec.status := 'E';
8670 END IF;
8671
8672 -- Deriving the Unit Offering Option Identifier
8673 l_c_ret_status := NULL;
8674 igs_ps_validate_lgcy_pkg.get_uoo_id(p_usec_rule_rec.unit_cd, p_usec_rule_rec.version_number, l_c_cal_type, l_n_seq_num, p_usec_rule_rec.location_cd, p_usec_rule_rec.unit_class, l_n_uoo_id, l_c_ret_status);
8675 IF l_c_ret_status IS NOT NULL THEN
8676 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
8677 p_usec_rule_rec.status := 'E';
8678 END IF;
8679
8680
8681 END validate_derivation;
8682
8683 PROCEDURE validate_db_cons(p_usec_rule_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rule_rec_type,p_insert_update IN VARCHAR2) AS
8684
8685 BEGIN
8686
8687 IF p_insert_update = 'I' THEN
8688 -- Unique Key Validation
8689 IF igs_ps_usec_ru_pkg.get_uk_for_validation ( x_uoo_id => l_n_uoo_id,
8690 x_s_rule_call_cd => p_usec_rule_rec.s_rule_call_cd ) THEN
8691 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'RULE', 'LEGACY_TOKENS', FALSE);
8692 p_usec_rule_rec.status := 'W';
8693 RETURN;
8694 END IF;
8695 END IF;
8696
8697 -- Foreign Key Checking
8698 --Check for the existence of the unit section
8699 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
8700 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
8701 p_usec_rule_rec.status := 'E';
8702 END IF;
8703
8704 IF NOT igs_ru_call_pkg.get_pk_for_validation (p_usec_rule_rec.s_rule_call_cd ) THEN
8705 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'S_RULE_CALL_CD', 'LEGACY_TOKENS', FALSE);
8706 p_usec_rule_rec.status := 'E';
8707 END IF;
8708
8709
8710 END validate_db_cons;
8711
8712 -- Check for Update/Insert
8713 FUNCTION check_insert_update ( p_usec_rule_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rule_rec_type) RETURN VARCHAR2 IS
8714
8715 CURSOR c_rule IS
8716 SELECT rul_sequence_number
8717 FROM igs_ps_usec_ru
8718 WHERE uoo_id = l_n_uoo_id
8719 AND s_rule_call_cd = p_usec_rule_rec.s_rule_call_cd;
8720
8721 BEGIN
8722
8723 OPEN c_rule;
8724 FETCH c_rule INTO l_n_rule_number;
8725 IF c_rule%FOUND THEN
8726 CLOSE c_rule;
8727 RETURN 'U';
8728 ELSE
8729 CLOSE c_rule;
8730 RETURN 'I';
8731 END IF;
8732
8733 END check_insert_update;
8734
8735
8736 PROCEDURE Business_validation(p_usec_rule_rec IN OUT NOCOPY igs_ps_generic_pub.usec_rule_rec_type) AS
8737
8738 CURSOR cur_rule_check IS
8739 SELECT rc.select_group,rd.rule_description
8740 FROM igs_ru_call rc,igs_ru_description rd
8741 WHERE rc.s_rule_type_cd = 'USEC'
8742 AND rc.s_rule_call_cd = p_usec_rule_rec.s_rule_call_cd
8743 AND rc.rud_sequence_number = rd.sequence_number;
8744
8745 l_message_name VARCHAR2(30);
8746 l_c_var VARCHAR2(1);
8747
8748 BEGIN
8749 --Check if the unit is INACTIVE, then do not allow to import
8750 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_usec_rule_rec.unit_cd, p_usec_rule_rec.version_number,l_message_name)=FALSE THEN
8751 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
8752 fnd_msg_pub.add;
8753 p_usec_rule_rec.status := 'E';
8754 END IF;
8755
8756 -- s_rule_call_cd must exists in igs_ru_call with S_RULE_TYPE_CD='USEC'
8757 --Valid values of S_RULE_CALL_CD are 'USECCOREQ' and 'USECPREREQ'
8758 OPEN cur_rule_check;
8759 FETCH cur_rule_check INTO l_n_select_group,l_c_rule_desc;
8760 IF cur_rule_check%NOTFOUND THEN
8761 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'S_RULE_CALL_CD','LEGACY_TOKENS', FALSE);
8762 p_usec_rule_rec.status := 'E';
8763 END IF;
8764 CLOSE cur_rule_check;
8765
8766 END Business_validation;
8767
8768 BEGIN
8769
8770 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
8771 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.start_logging_for',
8772 'Unit Section Rules');
8773 END IF;
8774
8775 p_c_rec_status := 'S';
8776 FOR I in 1..p_usec_rule_tbl.LAST LOOP
8777 IF p_usec_rule_tbl.EXISTS(I) THEN
8778 -- Initialize the variable use to store the derived values.
8779 l_n_uoo_id := NULL;
8780 l_n_select_group := NULL;
8781 l_c_rule_desc := NULL;
8782 l_n_rule_number := NULL;
8783 l_success := FALSE;
8784 l_c_rule_unprocessed := NULL;
8785 l_n_lov_number := NULL;
8786
8787
8788 p_usec_rule_tbl(I).status := 'S';
8789 p_usec_rule_tbl(I).msg_from := fnd_msg_pub.count_msg;
8790 trim_values(p_usec_rule_tbl(I));
8791 validate_parameters(p_usec_rule_tbl(I));
8792
8793 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8794 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.status_after_validate_parameters',
8795 'Unit code:'||p_usec_rule_tbl(I).unit_cd||' '||'Version number:'||p_usec_rule_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8796 ||p_usec_rule_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rule_tbl(I).location_cd||' '||'Unit Class:'||
8797 p_usec_rule_tbl(I).unit_class||' '||'s_rule_call_cd:'||p_usec_rule_tbl(I).s_rule_call_cd||' '||'Status:'||
8798 p_usec_rule_tbl(I).status);
8799 END IF;
8800
8801 IF p_usec_rule_tbl(I).status = 'S' THEN
8802 validate_derivation(p_usec_rule_tbl(I));
8803
8804 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8805 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.status_after_validate_derivation',
8806 'Unit code:'||p_usec_rule_tbl(I).unit_cd||' '||'Version number:'||p_usec_rule_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8807 ||p_usec_rule_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rule_tbl(I).location_cd||' '||'Unit Class:'||
8808 p_usec_rule_tbl(I).unit_class||' '||'s_rule_call_cd:'||p_usec_rule_tbl(I).s_rule_call_cd||' '||'Status:'||
8809 p_usec_rule_tbl(I).status);
8810 END IF;
8811
8812 END IF;
8813
8814 --Find out whether it is insert/update of record
8815 l_insert_update:='I';
8816 IF p_usec_rule_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
8817 l_insert_update:= check_insert_update(p_usec_rule_tbl(I));
8818
8819 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8820 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.status_after_check_insert_update',
8821 'Unit code:'||p_usec_rule_tbl(I).unit_cd||' '||'Version number:'||p_usec_rule_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8822 ||p_usec_rule_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rule_tbl(I).location_cd||' '||'Unit Class:'||
8823 p_usec_rule_tbl(I).unit_class||' '||'s_rule_call_cd:'||p_usec_rule_tbl(I).s_rule_call_cd||' '||'Status:'||
8824 p_usec_rule_tbl(I).status);
8825 END IF;
8826
8827 END IF;
8828
8829 IF p_usec_rule_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
8830 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
8831 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
8832 fnd_msg_pub.add;
8833 p_usec_rule_tbl(I).status := 'A';
8834 END IF;
8835
8836 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8837 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.status_after_check_import_allowed',
8838 'Unit code:'||p_usec_rule_tbl(I).unit_cd||' '||'Version number:'||p_usec_rule_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8839 ||p_usec_rule_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rule_tbl(I).location_cd||' '||'Unit Class:'||
8840 p_usec_rule_tbl(I).unit_class||' '||'s_rule_call_cd:'||p_usec_rule_tbl(I).s_rule_call_cd||' '||'Status:'||
8841 p_usec_rule_tbl(I).status);
8842 END IF;
8843
8844 END IF;
8845
8846
8847
8848 IF p_usec_rule_tbl(I).status = 'S' THEN
8849 validate_db_cons ( p_usec_rule_tbl(I),l_insert_update);
8850
8851 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8852 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.status_after_validate_db_cons',
8853 'Unit code:'||p_usec_rule_tbl(I).unit_cd||' '||'Version number:'||p_usec_rule_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8854 ||p_usec_rule_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rule_tbl(I).location_cd||' '||'Unit Class:'||
8855 p_usec_rule_tbl(I).unit_class||' '||'s_rule_call_cd:'||p_usec_rule_tbl(I).s_rule_call_cd||' '||'Status:'||
8856 p_usec_rule_tbl(I).status);
8857 END IF;
8858
8859 END IF;
8860
8861
8862 --Business validations
8863 IF p_usec_rule_tbl(I).status = 'S' THEN
8864 Business_validation(p_usec_rule_tbl(I));
8865
8866 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8867 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.status_after_Business_validation',
8868 'Unit code:'||p_usec_rule_tbl(I).unit_cd||' '||'Version number:'||p_usec_rule_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8869 ||p_usec_rule_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rule_tbl(I).location_cd||' '||'Unit Class:'||
8870 p_usec_rule_tbl(I).unit_class||' '||'s_rule_call_cd:'||p_usec_rule_tbl(I).s_rule_call_cd||' '||'Status:'||
8871 p_usec_rule_tbl(I).status);
8872 END IF;
8873
8874 END IF;
8875
8876 IF p_usec_rule_tbl(I).status = 'S' THEN
8877
8878 l_success:= igs_ru_gen_002.rulp_ins_parser (
8879 p_group => l_n_select_group, -- 8 for Unit Co-requisite,2 for Unit Pre-requisite
8880 p_return_type => 'BOOLEAN', -- pass BOOLEAN
8881 p_rule_description => l_c_rule_desc, -- <Unit Co-requisite/Unit Pre-requisite>
8882 p_rule_processed => p_usec_rule_tbl(I).rule_text, -- Pass the rule_text
8883 p_rule_unprocessed => l_c_rule_unprocessed, -- id column out parameter
8884 p_generate_rule => TRUE, -- pass TRUE
8885 p_rule_number => l_n_rule_number, -- id column out parameter
8886 p_lov_number => l_n_lov_number ); -- id column out parameter
8887
8888 IF l_success THEN
8889
8890 IF l_insert_update = 'I' THEN
8891 INSERT INTO IGS_PS_USEC_RU(
8892 usecru_id,
8893 uoo_id,
8894 s_rule_call_cd,
8895 rul_sequence_number,
8896 created_by,
8897 creation_date,
8898 last_updated_by,
8899 last_update_date,
8900 last_update_login )
8901 VALUES (
8902 igs_ps_usec_ru_s.NEXTVAL,
8903 l_n_uoo_id,
8904 p_usec_rule_tbl(I).s_rule_call_cd,
8905 l_n_rule_number,
8906 g_n_user_id,
8907 SYSDATE,
8908 g_n_user_id,
8909 SYSDATE,
8910 g_n_login_id);
8911
8912 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
8913 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.Record_Inserted',
8914 'Unit code:'||p_usec_rule_tbl(I).unit_cd||' '||'Version number:'||p_usec_rule_tbl(I).version_number||' '||'teach_cal_alternate_code:'
8915 ||p_usec_rule_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_rule_tbl(I).location_cd||' '||'Unit Class:'||
8916 p_usec_rule_tbl(I).unit_class||' '||'s_rule_call_cd:'||p_usec_rule_tbl(I).s_rule_call_cd);
8917 END IF;
8918 --Note: Update is not required as it does not update the base table, only rule table,
8919 --which is getting done by igs_ru_gen_002.rulp_ins_parse function
8920
8921 END IF;
8922
8923 ELSE
8924 --Error in Rule Text cannot import
8925 fnd_message.set_name ( 'IGS', 'IGS_PS_INCORRECT_RULE' );
8926 fnd_msg_pub.add;
8927 p_usec_rule_tbl(I).status := 'E';
8928 END IF; --If l_success
8929
8930 END IF;
8931
8932
8933 IF p_usec_rule_tbl(I).status = 'S' THEN
8934 p_usec_rule_tbl(I).msg_from := NULL;
8935 p_usec_rule_tbl(I).msg_to := NULL;
8936 ELSIF p_usec_rule_tbl(I).status = 'A' THEN
8937 p_usec_rule_tbl(I).msg_from := p_usec_rule_tbl(I).msg_from + 1;
8938 p_usec_rule_tbl(I).msg_to := fnd_msg_pub.count_msg;
8939 ELSE
8940 p_c_rec_status := p_usec_rule_tbl(I).status;
8941 p_usec_rule_tbl(I).msg_from := p_usec_rule_tbl(I).msg_from+1;
8942 p_usec_rule_tbl(I).msg_to := fnd_msg_pub.count_msg;
8943 IF p_usec_rule_tbl(I).status = 'E' THEN
8944 RETURN;
8945 END IF;
8946 END IF;
8947
8948 END IF;
8949 END LOOP;
8950
8951 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
8952 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_rule.after_import_status',p_c_rec_status);
8953 END IF;
8954
8955 END create_usec_rule;
8956
8957
8958 PROCEDURE create_usec_enr_dead(p_usec_enr_dead_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_tbl_type,
8959 p_c_rec_status OUT NOCOPY VARCHAR2,
8960 p_calling_context IN VARCHAR2) IS
8961 /***********************************************************************************************
8962
8963 Created By: sarakshi
8964 Date Created By: 01-Jun-2005
8965 Purpose: This procedure imports unit section Enrollment Deadline.
8966
8967 Known limitations,enhancements,remarks:
8968 Change History
8969 Who When What
8970 Sommukhe 13-Jan-2006 Bug #4926548 replaced igs_en_nsu_dlstp with igs_en_nsu_dlstp_all for cursor cur_dead_details
8971 in proccedure Assign_defaults
8972 ***********************************************************************************************/
8973 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
8974 l_n_non_std_usec_dls_id igs_en_nsu_dlstp.non_std_usec_dls_id%TYPE;
8975 l_c_org_unit_code igs_en_nsu_dlstp.org_unit_code%TYPE;
8976 l_c_definition_code igs_en_nsu_dlstp.definition_code%TYPE;
8977 l_c_formula_method igs_en_nsu_dlstp.formula_method%TYPE;
8978 l_c_round_method igs_en_nsu_dlstp.round_method%TYPE;
8979 l_n_offset_duration igs_en_nsu_dlstp.offset_duration%TYPE;
8980 l_c_offset_dt_code igs_en_nsu_dlstp.offset_dt_code%TYPE;
8981 l_n_duration_days igs_en_nstd_usec_dl.enr_dl_total_days%TYPE;
8982 l_n_offset_days igs_en_nstd_usec_dl.enr_dl_offset_days%TYPE;
8983 l_d_enr_dl_date igs_en_nstd_usec_dl.enr_dl_date%TYPE;
8984 l_insert_update VARCHAR2(1);
8985
8986 PROCEDURE trim_values ( p_usec_enr_dead_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_rec_type) AS
8987 BEGIN
8988
8989 p_usec_enr_dead_rec.unit_cd := TRIM(p_usec_enr_dead_rec.unit_cd);
8990 p_usec_enr_dead_rec.version_number := TRIM(p_usec_enr_dead_rec.version_number);
8991 p_usec_enr_dead_rec.teach_cal_alternate_code := TRIM(p_usec_enr_dead_rec.teach_cal_alternate_code);
8992 p_usec_enr_dead_rec.location_cd := TRIM(p_usec_enr_dead_rec.location_cd);
8993 p_usec_enr_dead_rec.unit_class := TRIM(p_usec_enr_dead_rec.unit_class);
8994 p_usec_enr_dead_rec.function_name := TRIM(p_usec_enr_dead_rec.function_name);
8995 p_usec_enr_dead_rec.enr_dl_date := TRUNC(p_usec_enr_dead_rec.enr_dl_date);
8996
8997 END trim_values;
8998
8999 PROCEDURE validate_parameters( p_usec_enr_dead_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_rec_type) AS
9000
9001 BEGIN
9002 p_usec_enr_dead_rec.status:='S';
9003
9004
9005 IF p_usec_enr_dead_rec.unit_cd IS NULL OR p_usec_enr_dead_rec.unit_cd = FND_API.G_MISS_CHAR THEN
9006 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
9007 p_usec_enr_dead_rec.status := 'E';
9008 END IF;
9009
9010 IF p_usec_enr_dead_rec.version_number IS NULL OR p_usec_enr_dead_rec.version_number = FND_API.G_MISS_NUM THEN
9011 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
9012 p_usec_enr_dead_rec.status := 'E';
9013 END IF;
9014
9015 IF p_usec_enr_dead_rec.teach_cal_alternate_code IS NULL OR p_usec_enr_dead_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
9016 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
9017 p_usec_enr_dead_rec.status := 'E';
9018 END IF;
9019
9020 IF p_usec_enr_dead_rec.location_cd IS NULL OR p_usec_enr_dead_rec.location_cd = FND_API.G_MISS_CHAR THEN
9021 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
9022 p_usec_enr_dead_rec.status := 'E';
9023 END IF;
9024
9025 IF p_usec_enr_dead_rec.unit_class IS NULL OR p_usec_enr_dead_rec.unit_class = FND_API.G_MISS_CHAR THEN
9026 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
9027 p_usec_enr_dead_rec.status := 'E';
9028 END IF;
9029
9030 IF p_usec_enr_dead_rec.function_name IS NULL OR p_usec_enr_dead_rec.function_name = FND_API.G_MISS_CHAR THEN
9031 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','FUNCTION_NAME','LEGACY_TOKENS',FALSE);
9032 p_usec_enr_dead_rec.status := 'E';
9033 END IF;
9034
9035 -- Function name should be one among 'GRADING_SCHEMA' ,'RECORD_CUTOFF' ,'VARIATION_CUTOFF'
9036 IF p_usec_enr_dead_rec.function_name NOT IN ('GRADING_SCHEMA' ,'RECORD_CUTOFF' ,'VARIATION_CUTOFF') THEN
9037 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'FUNCTION_NAME','LEGACY_TOKENS', FALSE);
9038 p_usec_enr_dead_rec.status := 'E';
9039 END IF;
9040
9041 END validate_parameters;
9042
9043 PROCEDURE validate_derivation(p_usec_enr_dead_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_rec_type) AS
9044
9045 l_c_cal_type VARCHAR2(10);
9046 l_n_seq_num NUMBER;
9047 l_d_start igs_ca_inst_all.start_dt%TYPE;
9048 l_d_end igs_ca_inst_all.end_dt%TYPE;
9049 l_c_ret_status VARCHAR2(30);
9050
9051
9052 BEGIN
9053
9054 -- Deriving the Calendar Type and Calendar Sequence Number
9055 igs_ge_gen_003.get_calendar_instance(p_usec_enr_dead_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
9056 IF l_c_ret_status <> 'SINGLE' THEN
9057 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
9058 p_usec_enr_dead_rec.status := 'E';
9059 END IF;
9060
9061 -- Deriving the Unit Offering Option Identifier
9062 l_c_ret_status := NULL;
9063 igs_ps_validate_lgcy_pkg.get_uoo_id(p_usec_enr_dead_rec.unit_cd, p_usec_enr_dead_rec.version_number, l_c_cal_type, l_n_seq_num, p_usec_enr_dead_rec.location_cd, p_usec_enr_dead_rec.unit_class, l_n_uoo_id, l_c_ret_status);
9064 IF l_c_ret_status IS NOT NULL THEN
9065 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
9066 p_usec_enr_dead_rec.status := 'E';
9067 END IF;
9068
9069 END validate_derivation;
9070
9071 PROCEDURE validate_db_cons(p_usec_enr_dead_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_rec_type,p_insert_update IN VARCHAR2) AS
9072
9073 BEGIN
9074
9075 IF p_insert_update = 'I' THEN
9076 -- Unique Key Validation
9077 IF igs_en_nstd_usec_dl_pkg.get_uk_for_validation ( x_uoo_id => l_n_uoo_id,
9078 x_function_name => p_usec_enr_dead_rec.function_name ) THEN
9079 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'ENR_DEADLINE', 'LEGACY_TOKENS', FALSE);
9080 p_usec_enr_dead_rec.status := 'W';
9081 RETURN;
9082 END IF;
9083 END IF;
9084
9085 -- Foreign Key Checking
9086 --Check for the existence of the unit section
9087 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
9088 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
9089 p_usec_enr_dead_rec.status := 'E';
9090 END IF;
9091
9092
9093 IF l_n_non_std_usec_dls_id IS NOT NULL THEN
9094 IF NOT igs_en_nsu_dlstp_pkg.get_pk_for_validation ( l_n_non_std_usec_dls_id) THEN
9095 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'NON_STD_USEC_DLS_ID', 'LEGACY_TOKENS', FALSE);
9096 p_usec_enr_dead_rec.status := 'E';
9097 END IF;
9098 END IF;
9099
9100 END validate_db_cons;
9101
9102 -- Check for Update/Insert
9103 FUNCTION check_insert_update ( p_usec_enr_dead_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_rec_type) RETURN VARCHAR2 IS
9104
9105 CURSOR c_enr_dead IS
9106 SELECT 'X'
9107 FROM igs_en_nstd_usec_dl
9108 WHERE uoo_id = l_n_uoo_id
9109 AND function_name = p_usec_enr_dead_rec.function_name;
9110 l_c_var VARCHAR2(1);
9111
9112 BEGIN
9113
9114 OPEN c_enr_dead;
9115 FETCH c_enr_dead INTO l_c_var;
9116 IF c_enr_dead%FOUND THEN
9117 CLOSE c_enr_dead;
9118 RETURN 'U';
9119 ELSE
9120 CLOSE c_enr_dead;
9121 RETURN 'I';
9122 END IF;
9123
9124 END check_insert_update;
9125
9126 PROCEDURE Assign_defaults (p_usec_enr_dead_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_rec_type,p_insert_update IN VARCHAR2) AS
9127
9128 CURSOR cur_usec(cp_uoo_id IN NUMBER) IS
9129 SELECT owner_org_unit_cd
9130 FROM igs_ps_unit_ofr_opt_all
9131 WHERE uoo_id=cp_uoo_id;
9132 l_c_org_unit_cd igs_ps_unit_ofr_opt_all.owner_org_unit_cd%TYPE;
9133
9134 CURSOR cur_dead_details (cp_org_unit_cd IN VARCHAR2,cp_function_name IN VARCHAR2) IS
9135 SELECT formula_method,round_method,offset_duration,non_std_usec_dls_id,offset_dt_code,org_unit_code,definition_code
9136 FROM igs_en_nsu_dlstp_all
9137 WHERE ((org_unit_code = cp_org_unit_cd AND definition_code = 'ORGANIZATIONAL_UNIT') OR definition_code = 'INSTITUTION')
9138 AND function_name = cp_function_name;
9139 l_cur_dead_details cur_dead_details%ROWTYPE;
9140
9141 CURSOR c_enr_dead IS
9142 SELECT *
9143 FROM igs_en_nstd_usec_dl
9144 WHERE uoo_id = l_n_uoo_id
9145 AND function_name = p_usec_enr_dead_rec.function_name;
9146 l_c_enr_dead c_enr_dead%ROWTYPE;
9147
9148 l_c_message VARCHAR2(30);
9149
9150 BEGIN
9151 IF p_insert_update = 'I' THEN
9152 -- Dervie the attributes from the org/institution level table
9153 OPEN cur_usec(l_n_uoo_id);
9154 FETCH cur_usec INTO l_c_org_unit_cd;
9155 CLOSE cur_usec;
9156
9157
9158 OPEN cur_dead_details(l_c_org_unit_cd,p_usec_enr_dead_rec.function_name);
9159 FETCH cur_dead_details INTO l_cur_dead_details;
9160 IF cur_dead_details%FOUND THEN
9161
9162
9163 l_n_non_std_usec_dls_id :=l_cur_dead_details.non_std_usec_dls_id;
9164 l_c_org_unit_code := l_cur_dead_details.org_unit_code;
9165 l_c_definition_code := l_cur_dead_details.definition_code;
9166 l_c_formula_method := l_cur_dead_details.formula_method;
9167 l_c_round_method := l_cur_dead_details.round_method;
9168 l_n_offset_duration := l_cur_dead_details.offset_duration;
9169 l_c_offset_dt_code := l_cur_dead_details.offset_dt_code;
9170
9171 l_d_enr_dl_date:= igs_ps_gen_004.recal_dl_date (
9172 p_v_uoo_id =>l_n_uoo_id,
9173 p_formula_method =>l_cur_dead_details.formula_method,
9174 p_durationdays =>l_n_duration_days,--out
9175 p_round_method =>l_cur_dead_details.round_method,
9176 p_OffsetDuration =>l_cur_dead_details.offset_duration,
9177 p_OffsetDays =>l_n_offset_days,--out
9178 p_function_name =>p_usec_enr_dead_rec.function_name,
9179 p_setup_id =>l_cur_dead_details.non_std_usec_dls_id,
9180 p_offset_dt_code =>l_cur_dead_details.offset_dt_code,
9181 p_msg =>l_c_message --out
9182 );
9183 IF p_usec_enr_dead_rec.enr_dl_date IS NOT NULL THEN
9184 l_d_enr_dl_date := p_usec_enr_dead_rec.enr_dl_date;
9185 END IF;
9186 ELSE
9187 IF p_usec_enr_dead_rec.enr_dl_date IS NULL THEN
9188 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','ENR_DEAD_DATE','LEGACY_TOKENS',FALSE);
9189 p_usec_enr_dead_rec.status := 'E';
9190 ELSE
9191 l_d_enr_dl_date := p_usec_enr_dead_rec.enr_dl_date;
9192 END IF;
9193 END IF;
9194 CLOSE cur_dead_details;
9195
9196 ELSE --update
9197
9198 OPEN c_enr_dead;
9199 FETCH c_enr_dead INTO l_c_enr_dead;
9200 CLOSE c_enr_dead;
9201
9202 --Set the values to the databse values
9203 l_n_non_std_usec_dls_id :=l_c_enr_dead.non_std_usec_dls_id;
9204 l_c_org_unit_code := l_c_enr_dead.org_unit_code;
9205 l_c_definition_code := l_c_enr_dead.definition_code;
9206 l_c_formula_method := l_c_enr_dead.formula_method;
9207 l_c_round_method := l_c_enr_dead.round_method;
9208 l_n_offset_duration := l_c_enr_dead.offset_duration;
9209 l_c_offset_dt_code := l_c_enr_dead.offset_dt_code;
9210 l_n_duration_days := l_c_enr_dead.enr_dl_total_days;
9211 l_n_offset_days := l_c_enr_dead.enr_dl_offset_days;
9212
9213 IF l_c_enr_dead.non_std_usec_dls_id IS NOT NULL THEN
9214 -- Dervie the attributes from the org/institution level table
9215 OPEN cur_usec(l_n_uoo_id);
9216 FETCH cur_usec INTO l_c_org_unit_cd;
9217 CLOSE cur_usec;
9218
9219
9220 OPEN cur_dead_details(l_c_org_unit_cd,p_usec_enr_dead_rec.function_name);
9221 FETCH cur_dead_details INTO l_cur_dead_details;
9222 IF cur_dead_details%FOUND THEN
9223 IF (l_c_enr_dead.formula_method <> l_cur_dead_details.formula_method OR
9224 l_c_enr_dead.round_method <> l_cur_dead_details.round_method OR
9225 l_c_enr_dead.offset_dt_code <> l_cur_dead_details.offset_dt_code OR
9226 l_c_enr_dead.offset_duration <> l_cur_dead_details.offset_duration ) THEN
9227
9228 l_n_non_std_usec_dls_id :=l_cur_dead_details.non_std_usec_dls_id;
9229 l_c_org_unit_code := l_cur_dead_details.org_unit_code;
9230 l_c_definition_code := l_cur_dead_details.definition_code;
9231 l_c_formula_method := l_cur_dead_details.formula_method;
9232 l_c_round_method := l_cur_dead_details.round_method;
9233 l_n_offset_duration := l_cur_dead_details.offset_duration;
9234 l_c_offset_dt_code := l_cur_dead_details.offset_dt_code;
9235
9236 l_d_enr_dl_date:= igs_ps_gen_004.recal_dl_date (
9237 p_v_uoo_id =>l_n_uoo_id,
9238 p_formula_method =>l_cur_dead_details.formula_method,
9239 p_durationdays =>l_n_duration_days,--out
9240 p_round_method =>l_cur_dead_details.round_method,
9241 p_OffsetDuration =>l_cur_dead_details.offset_duration,
9242 p_OffsetDays =>l_n_offset_days,--out
9243 p_function_name =>p_usec_enr_dead_rec.function_name,
9244 p_setup_id =>l_cur_dead_details.non_std_usec_dls_id,
9245 p_offset_dt_code =>l_cur_dead_details.offset_dt_code,
9246 p_msg =>l_c_message --out
9247 );
9248
9249 END IF;
9250 END IF;
9251 CLOSE cur_dead_details;
9252
9253 END IF;
9254
9255 IF p_usec_enr_dead_rec.enr_dl_date IS NOT NULL THEN
9256 l_d_enr_dl_date := p_usec_enr_dead_rec.enr_dl_date;
9257 ELSE
9258 l_d_enr_dl_date := l_c_enr_dead.enr_dl_date;
9259 END IF;
9260
9261 END IF; --insert/update
9262
9263 END Assign_defaults;
9264
9265 PROCEDURE Business_validation(p_usec_enr_dead_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_rec_type) AS
9266 CURSOR cur_check_ns_usec(cp_n_uoo_id IN NUMBER) IS
9267 SELECT 'X'
9268 FROM igs_ps_unit_ofr_opt_all
9269 WHERE uoo_id = cp_n_uoo_id
9270 AND non_std_usec_ind = 'Y';
9271 l_c_var VARCHAR2(1);
9272
9273 l_message_name VARCHAR2(30);
9274
9275 BEGIN
9276 --Check if the unit is INACTIVE, then do not allow to import
9277 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_usec_enr_dead_rec.unit_cd, p_usec_enr_dead_rec.version_number,l_message_name)=FALSE THEN
9278 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
9279 fnd_msg_pub.add;
9280 p_usec_enr_dead_rec.status := 'E';
9281 END IF;
9282
9283 --Check if the Unit Scetion is not Not standard then insert/update is not allowed
9284 OPEN cur_check_ns_usec(l_n_uoo_id);
9285 FETCH cur_check_ns_usec INTO l_c_var;
9286 IF cur_check_ns_usec%NOTFOUND THEN
9287 fnd_message.set_name ( 'IGS', 'IGS_PS_NON_STD_USEC_NOT_IMP' );
9288 fnd_message.set_token('RECORD',igs_ps_validate_lgcy_pkg.get_lkup_meaning('ENR_DEADLINE','LEGACY_TOKENS'));
9289 fnd_msg_pub.add;
9290 /*igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_NON_STD_USEC_NOT_IMP','ENR_DEADLINE','LEGACY_TOKENS',FALSE);*/
9291 p_usec_enr_dead_rec.status := 'E';
9292 END IF;
9293 CLOSE cur_check_ns_usec;
9294
9295 END Business_validation;
9296
9297 BEGIN
9298
9299 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
9300 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.start_logging_for',
9301 'Unit Section Enrollment Deadline ');
9302 END IF;
9303
9304 p_c_rec_status := 'S';
9305 FOR I in 1..p_usec_enr_dead_tbl.LAST LOOP
9306 IF p_usec_enr_dead_tbl.EXISTS(I) THEN
9307 -- Initialize the variable use to store the derived values.
9308 l_n_uoo_id := NULL;
9309 l_n_non_std_usec_dls_id :=NULL;
9310 l_c_org_unit_code :=NULL;
9311 l_c_definition_code :=NULL;
9312 l_c_formula_method :=NULL;
9313 l_c_round_method :=NULL;
9314 l_n_offset_duration :=NULL;
9315 l_c_offset_dt_code :=NULL;
9316 l_n_duration_days :=NULL;
9317 l_n_offset_days :=NULL;
9318 l_d_enr_dl_date :=NULL;
9319
9320 p_usec_enr_dead_tbl(I).status := 'S';
9321 p_usec_enr_dead_tbl(I).msg_from := fnd_msg_pub.count_msg;
9322 trim_values(p_usec_enr_dead_tbl(I));
9323
9324 validate_parameters(p_usec_enr_dead_tbl(I));
9325
9326
9327 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9328 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.status_after_validate_parameters',
9329 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9330 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9331 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name||' '||'Status:'||
9332 p_usec_enr_dead_tbl(I).status);
9333 END IF;
9334
9335 IF p_usec_enr_dead_tbl(I).status = 'S' THEN
9336 validate_derivation(p_usec_enr_dead_tbl(I));
9337
9338 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9339 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.status_after_validate_derivation',
9340 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9341 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9342 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name||' '||'Status:'||
9343 p_usec_enr_dead_tbl(I).status);
9344 END IF;
9345
9346 END IF;
9347
9348 --Find out whether it is insert/update of record
9349 l_insert_update:='I';
9350 IF p_usec_enr_dead_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
9351 l_insert_update:= check_insert_update(p_usec_enr_dead_tbl(I));
9352
9353 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9354 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.status_after_check_insert_update',
9355 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9356 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9357 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name||' '||'Status:'||
9358 p_usec_enr_dead_tbl(I).status);
9359 END IF;
9360
9361
9362 END IF;
9363
9364 IF p_usec_enr_dead_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
9365 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
9366 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
9367 fnd_msg_pub.add;
9368 p_usec_enr_dead_tbl(I).status := 'A';
9369 END IF;
9370
9371 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9372 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.status_after_check_import_allowed',
9373 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9374 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9375 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name||' '||'Status:'||
9376 p_usec_enr_dead_tbl(I).status);
9377 END IF;
9378
9379 END IF;
9380
9381 IF p_usec_enr_dead_tbl(I).status = 'S' THEN
9382 assign_defaults(p_usec_enr_dead_tbl(I),l_insert_update);
9383
9384 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9385 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.status_after_assign_defaults',
9386 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9387 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9388 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name||' '||'Status:'||
9389 p_usec_enr_dead_tbl(I).status);
9390 END IF;
9391
9392 END IF;
9393
9394 IF p_usec_enr_dead_tbl(I).status = 'S' THEN
9395 validate_db_cons ( p_usec_enr_dead_tbl(I),l_insert_update);
9396
9397 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9398 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.status_after_validate_db_cons',
9399 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9400 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9401 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name||' '||'Status:'||
9402 p_usec_enr_dead_tbl(I).status);
9403 END IF;
9404
9405 END IF;
9406
9407
9408 --Business validations
9409 IF p_usec_enr_dead_tbl(I).status = 'S' THEN
9410 Business_validation(p_usec_enr_dead_tbl(I));
9411
9412 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9413 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.status_after_Business_validation',
9414 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9415 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9416 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name||' '||'Status:'||
9417 p_usec_enr_dead_tbl(I).status);
9418 END IF;
9419
9420 END IF;
9421
9422 IF p_usec_enr_dead_tbl(I).status = 'S' THEN
9423
9424 IF l_insert_update = 'I' THEN
9425 INSERT INTO IGS_EN_NSTD_USEC_DL(
9426 nstd_usec_dl_id ,
9427 non_std_usec_dls_id ,
9428 function_name ,
9429 definition_code ,
9430 org_unit_code ,
9431 formula_method ,
9432 round_method ,
9433 offset_dt_code ,
9434 offset_duration ,
9435 uoo_id ,
9436 enr_dl_date ,
9437 enr_dl_total_days ,
9438 enr_dl_offset_days ,
9439 created_by,
9440 creation_date,
9441 last_updated_by,
9442 last_update_date,
9443 last_update_login )
9444 VALUES (
9445 igs_en_nstd_usec_dl_s.NEXTVAL,
9446 l_n_non_std_usec_dls_id,
9447 p_usec_enr_dead_tbl(I).function_name,
9448 l_c_definition_code,
9449 l_c_org_unit_code,
9450 l_c_formula_method,
9451 l_c_round_method,
9452 l_c_offset_dt_code,
9453 l_n_offset_duration,
9454 l_n_uoo_id,
9455 l_d_enr_dl_date,
9456 l_n_duration_days,
9457 l_n_offset_days,
9458 g_n_user_id,
9459 SYSDATE,
9460 g_n_user_id,
9461 SYSDATE,
9462 g_n_login_id);
9463
9464 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9465 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.Record_Inserted',
9466 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9467 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9468 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name);
9469 END IF;
9470
9471 ELSE
9472 UPDATE IGS_EN_NSTD_USEC_DL SET
9473 non_std_usec_dls_id = l_n_non_std_usec_dls_id,
9474 definition_code = l_c_definition_code,
9475 org_unit_code = l_c_org_unit_code,
9476 formula_method = l_c_formula_method,
9477 round_method = l_c_round_method,
9478 offset_dt_code = l_c_offset_dt_code,
9479 offset_duration = l_n_offset_duration,
9480 enr_dl_date = l_d_enr_dl_date,
9481 enr_dl_total_days = l_n_duration_days,
9482 enr_dl_offset_days = l_n_offset_days,
9483 last_updated_by = g_n_user_id ,
9484 last_update_date = sysdate ,
9485 last_update_login = g_n_login_id
9486 WHERE uoo_id=l_n_uoo_id AND function_name=p_usec_enr_dead_tbl(I).function_name;
9487
9488 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9489 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.Record_Updated',
9490 'Unit code:'||p_usec_enr_dead_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dead_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9491 ||p_usec_enr_dead_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dead_tbl(I).location_cd||' '||'Unit Class:'||
9492 p_usec_enr_dead_tbl(I).unit_class||' '||'function_name:'||p_usec_enr_dead_tbl(I).function_name);
9493 END IF;
9494
9495 END IF;
9496
9497
9498 END IF;
9499
9500
9501 IF p_usec_enr_dead_tbl(I).status = 'S' THEN
9502 p_usec_enr_dead_tbl(I).msg_from := NULL;
9503 p_usec_enr_dead_tbl(I).msg_to := NULL;
9504 ELSIF p_usec_enr_dead_tbl(I).status = 'A' THEN
9505 p_usec_enr_dead_tbl(I).msg_from := p_usec_enr_dead_tbl(I).msg_from + 1;
9506 p_usec_enr_dead_tbl(I).msg_to := fnd_msg_pub.count_msg;
9507 ELSE
9508 p_c_rec_status := p_usec_enr_dead_tbl(I).status;
9509 p_usec_enr_dead_tbl(I).msg_from := p_usec_enr_dead_tbl(I).msg_from+1;
9510 p_usec_enr_dead_tbl(I).msg_to := fnd_msg_pub.count_msg;
9511 IF p_usec_enr_dead_tbl(I).status = 'E' THEN
9512 RETURN;
9513 END IF;
9514 END IF;
9515
9516 END IF;
9517 END LOOP;
9518
9519 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
9520 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dead.after_import_status',p_c_rec_status);
9521 END IF;
9522
9523 END create_usec_enr_dead;
9524
9525 PROCEDURE create_usec_enr_dis(p_usec_enr_dis_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_tbl_type,
9526 p_c_rec_status OUT NOCOPY VARCHAR2,
9527 p_calling_context IN VARCHAR2) IS
9528
9529 /***********************************************************************************************
9530
9531 Created By: sarakshi
9532 Date Created By: 01-Jun-2005
9533 Purpose: This procedure imports unit section Enrollment Discontinuation.
9534
9535 Known limitations,enhancements,remarks:
9536 Change History
9537 Who When What
9538 Sommukhe 13-Jan-2006 Bug #4926548 replaced igs_en_nsd_dlstp with igs_en_nsd_dlstp_all for cursor cur_disc_details
9539 in proccedure Assign_defaults
9540 ***********************************************************************************************/
9541 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
9542 l_n_non_std_disc_dl_stp_id igs_en_nsu_dlstp.non_std_usec_dls_id%TYPE;
9543 l_c_org_unit_code igs_en_nsu_dlstp.org_unit_code%TYPE;
9544 l_c_definition_code igs_en_nsu_dlstp.definition_code%TYPE;
9545 l_c_formula_method igs_en_nsu_dlstp.formula_method%TYPE;
9546 l_c_round_method igs_en_nsu_dlstp.round_method%TYPE;
9547 l_n_offset_duration igs_en_nsu_dlstp.offset_duration%TYPE;
9548 l_c_offset_dt_code igs_en_nsu_dlstp.offset_dt_code%TYPE;
9549 l_n_duration_days igs_en_nstd_usec_dl.enr_dl_total_days%TYPE;
9550 l_n_offset_days igs_en_nstd_usec_dl.enr_dl_offset_days%TYPE;
9551 l_d_enr_dl_date igs_en_nstd_usec_dl.enr_dl_date%TYPE;
9552 l_insert_update VARCHAR2(1);
9553
9554 PROCEDURE trim_values ( p_usec_enr_dis_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_rec_type) AS
9555 BEGIN
9556
9557 p_usec_enr_dis_rec.unit_cd := TRIM(p_usec_enr_dis_rec.unit_cd);
9558 p_usec_enr_dis_rec.version_number := TRIM(p_usec_enr_dis_rec.version_number);
9559 p_usec_enr_dis_rec.teach_cal_alternate_code := TRIM(p_usec_enr_dis_rec.teach_cal_alternate_code);
9560 p_usec_enr_dis_rec.location_cd := TRIM(p_usec_enr_dis_rec.location_cd);
9561 p_usec_enr_dis_rec.unit_class := TRIM(p_usec_enr_dis_rec.unit_class);
9562 p_usec_enr_dis_rec.administrative_unit_status := TRIM(p_usec_enr_dis_rec.administrative_unit_status);
9563 p_usec_enr_dis_rec.usec_disc_dl_date := TRUNC(p_usec_enr_dis_rec.usec_disc_dl_date);
9564
9565 END trim_values;
9566
9567 PROCEDURE validate_parameters( p_usec_enr_dis_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_rec_type) AS
9568
9569 BEGIN
9570 p_usec_enr_dis_rec.status:='S';
9571
9572
9573 IF p_usec_enr_dis_rec.unit_cd IS NULL OR p_usec_enr_dis_rec.unit_cd = FND_API.G_MISS_CHAR THEN
9574 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
9575 p_usec_enr_dis_rec.status := 'E';
9576 END IF;
9577
9578 IF p_usec_enr_dis_rec.version_number IS NULL OR p_usec_enr_dis_rec.version_number = FND_API.G_MISS_NUM THEN
9579 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
9580 p_usec_enr_dis_rec.status := 'E';
9581 END IF;
9582
9583 IF p_usec_enr_dis_rec.teach_cal_alternate_code IS NULL OR p_usec_enr_dis_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
9584 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
9585 p_usec_enr_dis_rec.status := 'E';
9586 END IF;
9587
9588 IF p_usec_enr_dis_rec.location_cd IS NULL OR p_usec_enr_dis_rec.location_cd = FND_API.G_MISS_CHAR THEN
9589 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
9590 p_usec_enr_dis_rec.status := 'E';
9591 END IF;
9592
9593 IF p_usec_enr_dis_rec.unit_class IS NULL OR p_usec_enr_dis_rec.unit_class = FND_API.G_MISS_CHAR THEN
9594 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
9595 p_usec_enr_dis_rec.status := 'E';
9596 END IF;
9597
9598 IF p_usec_enr_dis_rec.administrative_unit_status IS NULL OR p_usec_enr_dis_rec.administrative_unit_status = FND_API.G_MISS_CHAR THEN
9599 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','ADMINISTRATIVE_UNIT_STATUS','LEGACY_TOKENS',FALSE);
9600 p_usec_enr_dis_rec.status := 'E';
9601 END IF;
9602
9603
9604 END validate_parameters;
9605
9606 PROCEDURE validate_derivation(p_usec_enr_dis_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_rec_type) AS
9607
9608 l_c_cal_type VARCHAR2(10);
9609 l_n_seq_num NUMBER;
9610 l_d_start igs_ca_inst_all.start_dt%TYPE;
9611 l_d_end igs_ca_inst_all.end_dt%TYPE;
9612 l_c_ret_status VARCHAR2(30);
9613
9614
9615 BEGIN
9616
9617 -- Deriving the Calendar Type and Calendar Sequence Number
9618 igs_ge_gen_003.get_calendar_instance(p_usec_enr_dis_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
9619 IF l_c_ret_status <> 'SINGLE' THEN
9620 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
9621 p_usec_enr_dis_rec.status := 'E';
9622 END IF;
9623
9624 -- Deriving the Unit Offering Option Identifier
9625 l_c_ret_status := NULL;
9626 igs_ps_validate_lgcy_pkg.get_uoo_id(p_usec_enr_dis_rec.unit_cd, p_usec_enr_dis_rec.version_number, l_c_cal_type, l_n_seq_num, p_usec_enr_dis_rec.location_cd, p_usec_enr_dis_rec.unit_class, l_n_uoo_id, l_c_ret_status);
9627 IF l_c_ret_status IS NOT NULL THEN
9628 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
9629 p_usec_enr_dis_rec.status := 'E';
9630 END IF;
9631
9632 END validate_derivation;
9633
9634 PROCEDURE validate_db_cons(p_usec_enr_dis_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_rec_type,p_insert_update IN VARCHAR2) AS
9635 CURSOR cur_amd_unit_stat(cp_administrative_unit_status IN igs_ad_adm_unit_stat.administrative_unit_status%TYPE) IS
9636 SELECT 'X'
9637 FROM igs_ad_adm_unit_stat aus
9638 WHERE aus.administrative_unit_status = cp_administrative_unit_status
9639 AND aus.unit_attempt_status='DISCONTIN'
9640 AND aus.closed_ind ='N';
9641 l_c_var VARCHAR2(1);
9642
9643 BEGIN
9644
9645 IF p_insert_update = 'I' THEN
9646 -- Unique Key Validation
9647 IF igs_en_usec_disc_dl_pkg.get_uk_for_validation ( x_uoo_id => l_n_uoo_id,
9648 x_administrative_unit_status => p_usec_enr_dis_rec.administrative_unit_status ) THEN
9649 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'ENR_DISCONTINUATION', 'LEGACY_TOKENS', FALSE);
9650 p_usec_enr_dis_rec.status := 'W';
9651 RETURN;
9652 END IF;
9653
9654 --Administrative unit status validation (Fk)
9655 OPEN cur_amd_unit_stat(p_usec_enr_dis_rec.administrative_unit_status);
9656 FETCH cur_amd_unit_stat INTO l_c_var;
9657 IF cur_amd_unit_stat%NOTFOUND THEN
9658 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'ADMINISTRATIVE_UNIT_STATUS', 'LEGACY_TOKENS', FALSE);
9659 p_usec_enr_dis_rec.status := 'E';
9660 END IF;
9661
9662 END IF;
9663
9664 -- Foreign Key Checking
9665 --Check for the existence of the unit section
9666 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
9667 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
9668 p_usec_enr_dis_rec.status := 'E';
9669 END IF;
9670
9671
9672 IF l_n_non_std_disc_dl_stp_id IS NOT NULL THEN
9673 IF NOT igs_en_nsd_dlstp_pkg.get_pk_for_validation ( l_n_non_std_disc_dl_stp_id) THEN
9674 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'NON_STD_DISC_DL_STP_ID', 'LEGACY_TOKENS', FALSE);
9675 p_usec_enr_dis_rec.status := 'E';
9676 END IF;
9677 END IF;
9678
9679 END validate_db_cons;
9680
9681 -- Check for Update/Insert
9682 FUNCTION check_insert_update ( p_usec_enr_dis_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_rec_type) RETURN VARCHAR2 IS
9683
9684 CURSOR c_enr_disc IS
9685 SELECT 'X'
9686 FROM igs_en_usec_disc_dl
9687 WHERE uoo_id = l_n_uoo_id
9688 AND administrative_unit_status = p_usec_enr_dis_rec.administrative_unit_status;
9689
9690 l_c_var VARCHAR2(1);
9691
9692 BEGIN
9693
9694 OPEN c_enr_disc;
9695 FETCH c_enr_disc INTO l_c_var;
9696 IF c_enr_disc%FOUND THEN
9697 CLOSE c_enr_disc;
9698 RETURN 'U';
9699 ELSE
9700 CLOSE c_enr_disc;
9701 RETURN 'I';
9702 END IF;
9703
9704 END check_insert_update;
9705
9706 PROCEDURE Assign_defaults ( p_usec_enr_dis_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_rec_type,p_insert_update IN VARCHAR2) AS
9707
9708 CURSOR cur_usec(cp_uoo_id IN NUMBER) IS
9709 SELECT owner_org_unit_cd
9710 FROM igs_ps_unit_ofr_opt_all
9711 WHERE uoo_id=cp_uoo_id;
9712 l_c_org_unit_cd igs_ps_unit_ofr_opt_all.owner_org_unit_cd%TYPE;
9713
9714 CURSOR cur_disc_details (cp_org_unit_cd IN VARCHAR2,cp_administrative_unit_status IN VARCHAR2) IS
9715 SELECT formula_method,round_method,offset_duration,non_std_disc_dl_stp_id,offset_dt_code,org_unit_code,definition_code
9716 FROM igs_en_nsd_dlstp_all
9717 WHERE ((org_unit_code = cp_org_unit_cd AND definition_code = 'ORGANIZATIONAL_UNIT') OR definition_code = 'INSTITUTION')
9718 AND administrative_unit_status = cp_administrative_unit_status;
9719 l_cur_disc_details cur_disc_details%ROWTYPE;
9720
9721 CURSOR c_enr_disc IS
9722 SELECT *
9723 FROM igs_en_usec_disc_dl
9724 WHERE uoo_id = l_n_uoo_id
9725 AND administrative_unit_status = p_usec_enr_dis_rec.administrative_unit_status;
9726 l_c_enr_disc c_enr_disc%ROWTYPE;
9727
9728 l_c_message VARCHAR2(30);
9729
9730 BEGIN
9731
9732 IF p_insert_update = 'I' THEN
9733 -- Dervie the attributes from the org/institution level table
9734 OPEN cur_usec(l_n_uoo_id);
9735 FETCH cur_usec INTO l_c_org_unit_cd;
9736 CLOSE cur_usec;
9737
9738
9739 OPEN cur_disc_details(l_c_org_unit_cd,p_usec_enr_dis_rec.administrative_unit_status);
9740 FETCH cur_disc_details INTO l_cur_disc_details;
9741 IF cur_disc_details%FOUND THEN
9742
9743
9744 l_n_non_std_disc_dl_stp_id :=l_cur_disc_details.non_std_disc_dl_stp_id;
9745 l_c_org_unit_code := l_cur_disc_details.org_unit_code;
9746 l_c_definition_code := l_cur_disc_details.definition_code;
9747 l_c_formula_method := l_cur_disc_details.formula_method;
9748 l_c_round_method := l_cur_disc_details.round_method;
9749 l_n_offset_duration := l_cur_disc_details.offset_duration;
9750 l_c_offset_dt_code := l_cur_disc_details.offset_dt_code;
9751
9752 l_d_enr_dl_date:= igs_ps_gen_004.recal_dl_date (
9753 p_v_uoo_id =>l_n_uoo_id,
9754 p_formula_method =>l_cur_disc_details.formula_method,
9755 p_durationdays =>l_n_duration_days,--out
9756 p_round_method =>l_cur_disc_details.round_method,
9757 p_OffsetDuration =>l_cur_disc_details.offset_duration,
9758 p_OffsetDays =>l_n_offset_days,--out
9759 p_function_name =>NULL,
9760 p_setup_id =>l_cur_disc_details.non_std_disc_dl_stp_id,
9761 p_offset_dt_code =>l_cur_disc_details.offset_dt_code,
9762 p_msg =>l_c_message --out
9763 );
9764 IF p_usec_enr_dis_rec.usec_disc_dl_date IS NOT NULL THEN
9765 l_d_enr_dl_date := p_usec_enr_dis_rec.usec_disc_dl_date;
9766 END IF;
9767 ELSE
9768 IF p_usec_enr_dis_rec.usec_disc_dl_date IS NULL THEN
9769 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','ENR_DISC_DATE','LEGACY_TOKENS',FALSE);
9770 p_usec_enr_dis_rec.status := 'E';
9771 ELSE
9772 l_d_enr_dl_date := p_usec_enr_dis_rec.usec_disc_dl_date;
9773 END IF;
9774 END IF;
9775 CLOSE cur_disc_details;
9776
9777 ELSE --update
9778
9779 OPEN c_enr_disc;
9780 FETCH c_enr_disc INTO l_c_enr_disc;
9781 CLOSE c_enr_disc;
9782
9783 --Set the values to the databse values
9784 l_n_non_std_disc_dl_stp_id :=l_c_enr_disc.non_std_disc_dl_stp_id;
9785 l_c_org_unit_code := l_c_enr_disc.org_unit_code;
9786 l_c_definition_code := l_c_enr_disc.definition_code;
9787 l_c_formula_method := l_c_enr_disc.formula_method;
9788 l_c_round_method := l_c_enr_disc.round_method;
9789 l_n_offset_duration := l_c_enr_disc.offset_duration;
9790 l_c_offset_dt_code := l_c_enr_disc.offset_dt_code;
9791 l_n_duration_days := l_c_enr_disc.usec_disc_total_days;
9792 l_n_offset_days := l_c_enr_disc.usec_disc_offset_days;
9793
9794 IF l_c_enr_disc.non_std_disc_dl_stp_id IS NOT NULL THEN
9795 -- Dervie the attributes from the org/institution level table
9796 OPEN cur_usec(l_n_uoo_id);
9797 FETCH cur_usec INTO l_c_org_unit_cd;
9798 CLOSE cur_usec;
9799
9800
9801 OPEN cur_disc_details(l_c_org_unit_cd,p_usec_enr_dis_rec.administrative_unit_status);
9802 FETCH cur_disc_details INTO l_cur_disc_details;
9803 IF cur_disc_details%FOUND THEN
9804 IF (l_c_enr_disc.formula_method <> l_cur_disc_details.formula_method OR
9805 l_c_enr_disc.round_method <> l_cur_disc_details.round_method OR
9806 l_c_enr_disc.offset_dt_code <> l_cur_disc_details.offset_dt_code OR
9807 l_c_enr_disc.offset_duration <> l_cur_disc_details.offset_duration ) THEN
9808
9809 l_n_non_std_disc_dl_stp_id :=l_cur_disc_details.non_std_disc_dl_stp_id;
9810 l_c_org_unit_code := l_cur_disc_details.org_unit_code;
9811 l_c_definition_code := l_cur_disc_details.definition_code;
9812 l_c_formula_method := l_cur_disc_details.formula_method;
9813 l_c_round_method := l_cur_disc_details.round_method;
9814 l_n_offset_duration := l_cur_disc_details.offset_duration;
9815 l_c_offset_dt_code := l_cur_disc_details.offset_dt_code;
9816
9817 l_d_enr_dl_date:= igs_ps_gen_004.recal_dl_date (
9818 p_v_uoo_id =>l_n_uoo_id,
9819 p_formula_method =>l_cur_disc_details.formula_method,
9820 p_durationdays =>l_n_duration_days,--out
9821 p_round_method =>l_cur_disc_details.round_method,
9822 p_OffsetDuration =>l_cur_disc_details.offset_duration,
9823 p_OffsetDays =>l_n_offset_days,--out
9824 p_function_name =>NULL,
9825 p_setup_id =>l_cur_disc_details.non_std_disc_dl_stp_id,
9826 p_offset_dt_code =>l_cur_disc_details.offset_dt_code,
9827 p_msg =>l_c_message --out
9828 );
9829
9830 END IF;
9831 END IF;
9832 CLOSE cur_disc_details;
9833
9834 END IF;
9835
9836 IF p_usec_enr_dis_rec.usec_disc_dl_date IS NOT NULL THEN
9837 l_d_enr_dl_date := p_usec_enr_dis_rec.usec_disc_dl_date;
9838 ELSE
9839 l_d_enr_dl_date := l_c_enr_disc.usec_disc_dl_date;
9840 END IF;
9841
9842 END IF; --insert/update
9843
9844 END Assign_defaults;
9845
9846 PROCEDURE Business_validation(p_usec_enr_dis_rec IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_rec_type) AS
9847 CURSOR cur_check_ns_usec(cp_n_uoo_id IN NUMBER) IS
9848 SELECT 'X'
9849 FROM igs_ps_unit_ofr_opt_all
9850 WHERE uoo_id = cp_n_uoo_id
9851 AND non_std_usec_ind = 'Y';
9852 l_c_var VARCHAR2(1);
9853
9854 l_message_name VARCHAR2(30);
9855
9856 BEGIN
9857 --Check if the unit is INACTIVE, then do not allow to import
9858 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_usec_enr_dis_rec.unit_cd, p_usec_enr_dis_rec.version_number,l_message_name)=FALSE THEN
9859 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
9860 fnd_msg_pub.add;
9861 p_usec_enr_dis_rec.status := 'E';
9862 END IF;
9863
9864 --Check if the Unit Scetion is not Not standard then insert/update is not allowed
9865 OPEN cur_check_ns_usec(l_n_uoo_id);
9866 FETCH cur_check_ns_usec INTO l_c_var;
9867 IF cur_check_ns_usec%NOTFOUND THEN
9868 fnd_message.set_name ( 'IGS', 'IGS_PS_NON_STD_USEC_NOT_IMP' );
9869 fnd_message.set_token('RECORD',igs_ps_validate_lgcy_pkg.get_lkup_meaning('ENR_DISCONTINUATION','LEGACY_TOKENS'));
9870 fnd_msg_pub.add;
9871 /*igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_NON_STD_USEC_NOT_IMP','ENR_DISCONTINUATION','LEGACY_TOKENS',FALSE);*/
9872 p_usec_enr_dis_rec.status := 'E';
9873 END IF;
9874 CLOSE cur_check_ns_usec;
9875
9876 END Business_validation;
9877
9878 BEGIN
9879
9880 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
9881 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.start_logging_for',
9882 'Unit Section Enrollment Discontinuation');
9883 END IF;
9884
9885 p_c_rec_status := 'S';
9886 FOR I in 1..p_usec_enr_dis_tbl.LAST LOOP
9887 IF p_usec_enr_dis_tbl.EXISTS(I) THEN
9888 -- Initialize the variable use to store the derived values.
9889 l_n_uoo_id := NULL;
9890 l_n_non_std_disc_dl_stp_id :=NULL;
9891 l_c_org_unit_code :=NULL;
9892 l_c_definition_code :=NULL;
9893 l_c_formula_method :=NULL;
9894 l_c_round_method :=NULL;
9895 l_n_offset_duration :=NULL;
9896 l_c_offset_dt_code :=NULL;
9897 l_n_duration_days :=NULL;
9898 l_n_offset_days :=NULL;
9899 l_d_enr_dl_date :=NULL;
9900
9901 p_usec_enr_dis_tbl(I).status := 'S';
9902 p_usec_enr_dis_tbl(I).msg_from := fnd_msg_pub.count_msg;
9903 trim_values(p_usec_enr_dis_tbl(I));
9904 validate_parameters(p_usec_enr_dis_tbl(I));
9905
9906 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9907 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.status_after_validate_parameters',
9908 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9909 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
9910 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status||' '||'Status:'||
9911 p_usec_enr_dis_tbl(I).status);
9912 END IF;
9913
9914 IF p_usec_enr_dis_tbl(I).status = 'S' THEN
9915 validate_derivation(p_usec_enr_dis_tbl(I));
9916
9917 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9918 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.status_after_validate_derivation',
9919 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9920 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
9921 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status||' '||'Status:'||
9922 p_usec_enr_dis_tbl(I).status);
9923 END IF;
9924
9925 END IF;
9926
9927 --Find out whether it is insert/update of record
9928 l_insert_update:='I';
9929 IF p_usec_enr_dis_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
9930 l_insert_update:= check_insert_update(p_usec_enr_dis_tbl(I));
9931
9932 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9933 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.status_after_check_insert_update',
9934 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9935 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
9936 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status||' '||'Status:'||
9937 p_usec_enr_dis_tbl(I).status);
9938 END IF;
9939
9940 END IF;
9941
9942 IF p_usec_enr_dis_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
9943 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
9944 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
9945 fnd_msg_pub.add;
9946 p_usec_enr_dis_tbl(I).status := 'A';
9947 END IF;
9948
9949 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9950 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.status_after_check_import_allowed',
9951 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9952 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
9953 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status||' '||'Status:'||
9954 p_usec_enr_dis_tbl(I).status);
9955 END IF;
9956
9957 END IF;
9958
9959 IF p_usec_enr_dis_tbl(I).status = 'S' THEN
9960 assign_defaults(p_usec_enr_dis_tbl(I),l_insert_update);
9961
9962 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9963 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.status_after_assign_defaults',
9964 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9965 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
9966 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status||' '||'Status:'||
9967 p_usec_enr_dis_tbl(I).status);
9968 END IF;
9969
9970 END IF;
9971
9972 IF p_usec_enr_dis_tbl(I).status = 'S' THEN
9973 validate_db_cons ( p_usec_enr_dis_tbl(I),l_insert_update);
9974
9975 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9976 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.status_after_validate_db_cons',
9977 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9978 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
9979 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status||' '||'Status:'||
9980 p_usec_enr_dis_tbl(I).status);
9981 END IF;
9982
9983 END IF;
9984
9985
9986 --Business validations
9987 IF p_usec_enr_dis_tbl(I).status = 'S' THEN
9988 Business_validation(p_usec_enr_dis_tbl(I));
9989
9990 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
9991 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.status_after_Business_validation',
9992 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
9993 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
9994 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status||' '||'Status:'||
9995 p_usec_enr_dis_tbl(I).status);
9996 END IF;
9997
9998 END IF;
9999
10000 IF p_usec_enr_dis_tbl(I).status = 'S' THEN
10001
10002 IF l_insert_update = 'I' THEN
10003 INSERT INTO IGS_EN_USEC_DISC_DL(
10004 usec_disc_dl_id ,
10005 non_std_disc_dl_stp_id ,
10006 administrative_unit_status,
10007 definition_code ,
10008 org_unit_code ,
10009 formula_method ,
10010 round_method ,
10011 offset_dt_code ,
10012 offset_duration ,
10013 uoo_id ,
10014 usec_disc_dl_date ,
10015 usec_disc_total_days ,
10016 usec_disc_offset_days ,
10017 created_by,
10018 creation_date,
10019 last_updated_by,
10020 last_update_date,
10021 last_update_login )
10022 VALUES (
10023 igs_en_usec_disc_dl_s.NEXTVAL,
10024 l_n_non_std_disc_dl_stp_id,
10025 p_usec_enr_dis_tbl(I).administrative_unit_status,
10026 l_c_definition_code,
10027 l_c_org_unit_code,
10028 l_c_formula_method,
10029 l_c_round_method,
10030 l_c_offset_dt_code,
10031 l_n_offset_duration,
10032 l_n_uoo_id,
10033 l_d_enr_dl_date,
10034 l_n_duration_days,
10035 l_n_offset_days,
10036 g_n_user_id,
10037 SYSDATE,
10038 g_n_user_id,
10039 SYSDATE,
10040 g_n_login_id);
10041
10042 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10043 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.Record_Inserted',
10044 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10045 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
10046 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status);
10047 END IF;
10048
10049 ELSE
10050 UPDATE IGS_EN_USEC_DISC_DL SET
10051 non_std_disc_dl_stp_id = l_n_non_std_disc_dl_stp_id,
10052 definition_code = l_c_definition_code,
10053 org_unit_code = l_c_org_unit_code,
10054 formula_method = l_c_formula_method,
10055 round_method = l_c_round_method,
10056 offset_dt_code = l_c_offset_dt_code,
10057 offset_duration = l_n_offset_duration,
10058 usec_disc_dl_date = l_d_enr_dl_date,
10059 usec_disc_total_days = l_n_duration_days,
10060 usec_disc_offset_days = l_n_offset_days,
10061 last_updated_by = g_n_user_id ,
10062 last_update_date = sysdate ,
10063 last_update_login = g_n_login_id
10064 WHERE uoo_id=l_n_uoo_id AND administrative_unit_status=p_usec_enr_dis_tbl(I).administrative_unit_status;
10065
10066 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10067 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.Record_Updated',
10068 'Unit code:'||p_usec_enr_dis_tbl(I).unit_cd||' '||'Version number:'||p_usec_enr_dis_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10069 ||p_usec_enr_dis_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_enr_dis_tbl(I).location_cd||' '||'Unit Class:'||
10070 p_usec_enr_dis_tbl(I).unit_class||' '||'Administrative_unit_status:'||p_usec_enr_dis_tbl(I).administrative_unit_status);
10071 END IF;
10072
10073 END IF;
10074
10075
10076 END IF;
10077
10078
10079 IF p_usec_enr_dis_tbl(I).status = 'S' THEN
10080 p_usec_enr_dis_tbl(I).msg_from := NULL;
10081 p_usec_enr_dis_tbl(I).msg_to := NULL;
10082 ELSIF p_usec_enr_dis_tbl(I).status = 'A' THEN
10083 p_usec_enr_dis_tbl(I).msg_from := p_usec_enr_dis_tbl(I).msg_from + 1;
10084 p_usec_enr_dis_tbl(I).msg_to := fnd_msg_pub.count_msg;
10085 ELSE
10086 p_c_rec_status := p_usec_enr_dis_tbl(I).status;
10087 p_usec_enr_dis_tbl(I).msg_from := p_usec_enr_dis_tbl(I).msg_from+1;
10088 p_usec_enr_dis_tbl(I).msg_to := fnd_msg_pub.count_msg;
10089 IF p_usec_enr_dis_tbl(I).status = 'E' THEN
10090 RETURN;
10091 END IF;
10092 END IF;
10093
10094 END IF;
10095 END LOOP;
10096
10097
10098 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
10099 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_enr_dis.after_import_status',p_c_rec_status);
10100 END IF;
10101
10102 END create_usec_enr_dis;
10103
10104
10105 PROCEDURE create_usec_ret(p_usec_ret_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_ret_tbl_type,
10106 p_c_rec_status OUT NOCOPY VARCHAR2,
10107 p_calling_context IN VARCHAR2) IS
10108 /***********************************************************************************************
10109
10110 Created By: sarakshi
10111 Date Created By: 01-Jun-2005
10112 Purpose: This procedure imports unit section Retention.
10113
10114 Known limitations,enhancements,remarks:
10115 Change History
10116 Who When What
10117 sommukhe 18-Jan-2006 Bug#4926548, modified cur_fee to address the performance issue. Created local procedures and functions.
10118 ***********************************************************************************************/
10119 l_c_cal_type VARCHAR2(10);
10120 l_n_seq_num NUMBER;
10121 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
10122 l_n_non_std_usec_rtn_id NUMBER;
10123 l_insert_update VARCHAR2(1);
10124
10125 PROCEDURE trim_values ( p_usec_ret_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_rec_type) AS
10126 BEGIN
10127
10128 p_usec_ret_rec.unit_cd := TRIM(p_usec_ret_rec.unit_cd);
10129 p_usec_ret_rec.version_number := TRIM(p_usec_ret_rec.version_number);
10130 p_usec_ret_rec.teach_cal_alternate_code := TRIM(p_usec_ret_rec.teach_cal_alternate_code);
10131 p_usec_ret_rec.location_cd := TRIM(p_usec_ret_rec.location_cd);
10132 p_usec_ret_rec.unit_class := TRIM(p_usec_ret_rec.unit_class);
10133 p_usec_ret_rec.definition_level := TRIM(p_usec_ret_rec.definition_level);
10134 p_usec_ret_rec.fee_type := TRIM(p_usec_ret_rec.fee_type);
10135 p_usec_ret_rec.formula_method := TRIM(p_usec_ret_rec.formula_method);
10136 p_usec_ret_rec.round_method := TRIM(p_usec_ret_rec.round_method);
10137 p_usec_ret_rec.incl_wkend_duration_flag := TRIM(p_usec_ret_rec.incl_wkend_duration_flag);
10138
10139 END trim_values;
10140
10141 PROCEDURE validate_parameters( p_usec_ret_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_rec_type) AS
10142
10143 BEGIN
10144 p_usec_ret_rec.status:='S';
10145
10146
10147 IF p_usec_ret_rec.unit_cd IS NULL OR p_usec_ret_rec.unit_cd = FND_API.G_MISS_CHAR THEN
10148 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
10149 p_usec_ret_rec.status := 'E';
10150 END IF;
10151
10152 IF p_usec_ret_rec.version_number IS NULL OR p_usec_ret_rec.version_number = FND_API.G_MISS_NUM THEN
10153 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
10154 p_usec_ret_rec.status := 'E';
10155 END IF;
10156
10157 IF p_usec_ret_rec.teach_cal_alternate_code IS NULL OR p_usec_ret_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
10158 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
10159 p_usec_ret_rec.status := 'E';
10160 END IF;
10161
10162 IF p_usec_ret_rec.location_cd IS NULL OR p_usec_ret_rec.location_cd = FND_API.G_MISS_CHAR THEN
10163 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
10164 p_usec_ret_rec.status := 'E';
10165 END IF;
10166
10167 IF p_usec_ret_rec.unit_class IS NULL OR p_usec_ret_rec.unit_class = FND_API.G_MISS_CHAR THEN
10168 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
10169 p_usec_ret_rec.status := 'E';
10170 END IF;
10171
10172 IF p_usec_ret_rec.definition_level IS NULL OR p_usec_ret_rec.definition_level = FND_API.G_MISS_CHAR THEN
10173 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','DEFINITION_LEVEL','LEGACY_TOKENS',FALSE);
10174 p_usec_ret_rec.status := 'E';
10175 END IF;
10176
10177 IF (p_usec_ret_rec.fee_type IS NULL OR p_usec_ret_rec.fee_type = FND_API.G_MISS_CHAR) AND p_usec_ret_rec.definition_level='UNIT_SECTION_FEE_TYPE' THEN
10178 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','FEE_TYPE','IGS_FI_LOCKBOX',FALSE);
10179 p_usec_ret_rec.status := 'E';
10180 END IF;
10181
10182 IF p_usec_ret_rec.formula_method IS NULL OR p_usec_ret_rec.formula_method = FND_API.G_MISS_CHAR THEN
10183 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','FORMULA_METHOD','LEGACY_TOKENS',FALSE);
10184 p_usec_ret_rec.status := 'E';
10185 END IF;
10186
10187 IF p_usec_ret_rec.round_method IS NULL OR p_usec_ret_rec.round_method = FND_API.G_MISS_CHAR THEN
10188 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','ROUND_METHOD','LEGACY_TOKENS',FALSE);
10189 p_usec_ret_rec.status := 'E';
10190 END IF;
10191
10192 IF p_usec_ret_rec.incl_wkend_duration_flag IS NULL OR p_usec_ret_rec.incl_wkend_duration_flag = FND_API.G_MISS_CHAR THEN
10193 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','INCL_WKEND_DURATION_FLAG','LEGACY_TOKENS',FALSE);
10194 p_usec_ret_rec.status := 'E';
10195 END IF;
10196
10197 -- valid values of definition_level is 'UNIT_SECTION_FEE_TYPE' , 'UNIT_SECTION'
10198 IF p_usec_ret_rec.definition_level NOT IN ('UNIT_SECTION_FEE_TYPE' , 'UNIT_SECTION') THEN
10199 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','DEFINITION_LEVEL','LEGACY_TOKENS',FALSE);
10200 p_usec_ret_rec.status :='E';
10201 END IF;
10202
10203 --Fee type should not be there for definition_level = UNIT_SECTION
10204 IF p_usec_ret_rec.definition_level = 'UNIT_SECTION' AND p_usec_ret_rec.fee_type IS NOT NULL THEN
10205 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','FEE_TYPE','IGS_FI_LOCKBOX',FALSE);
10206 p_usec_ret_rec.status :='E';
10207 END IF;
10208
10209 END validate_parameters;
10210
10211 PROCEDURE validate_derivation(p_usec_ret_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_rec_type) AS
10212
10213 l_d_start igs_ca_inst_all.start_dt%TYPE;
10214 l_d_end igs_ca_inst_all.end_dt%TYPE;
10215 l_c_ret_status VARCHAR2(30);
10216
10217
10218 BEGIN
10219
10220 -- Deriving the Calendar Type and Calendar Sequence Number
10221 igs_ge_gen_003.get_calendar_instance(p_usec_ret_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
10222 IF l_c_ret_status <> 'SINGLE' THEN
10223 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
10224 p_usec_ret_rec.status := 'E';
10225 END IF;
10226
10227 -- Deriving the Unit Offering Option Identifier
10228 l_c_ret_status := NULL;
10229 igs_ps_validate_lgcy_pkg.get_uoo_id(p_usec_ret_rec.unit_cd, p_usec_ret_rec.version_number, l_c_cal_type, l_n_seq_num, p_usec_ret_rec.location_cd, p_usec_ret_rec.unit_class, l_n_uoo_id, l_c_ret_status);
10230 IF l_c_ret_status IS NOT NULL THEN
10231 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
10232 p_usec_ret_rec.status := 'E';
10233 END IF;
10234
10235 END validate_derivation;
10236
10237 PROCEDURE validate_db_cons(p_usec_ret_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_rec_type,p_insert_update IN VARCHAR2) AS
10238
10239 BEGIN
10240
10241 IF p_insert_update = 'I' AND p_usec_ret_rec.definition_level='UNIT_SECTION_FEE_TYPE' THEN
10242 -- Unique Key Validation
10243 IF igs_ps_nsus_rtn_pkg.get_uk_for_validation ( x_uoo_id => l_n_uoo_id,
10244 x_fee_type => p_usec_ret_rec.fee_type ) THEN
10245 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'RETENTION', 'LEGACY_TOKENS', FALSE);
10246 p_usec_ret_rec.status := 'W';
10247 RETURN;
10248 END IF;
10249
10250 --Check for the existence of the Fee Type
10251 IF NOT igs_fi_fee_type_pkg.get_pk_for_validation (p_usec_ret_rec.fee_type ) THEN
10252 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'FEE_TYPE', 'IGS_FI_LOCKBOX', FALSE);
10253 p_usec_ret_rec.status := 'E';
10254 END IF;
10255
10256 END IF;
10257
10258
10259 --Check constraint
10260 BEGIN
10261 igs_ps_nsus_rtn_pkg.check_constraints('FORMULA_METHOD', p_usec_ret_rec.formula_method);
10262 EXCEPTION
10263 WHEN OTHERS THEN
10264 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','FORMULA_METHOD','LEGACY_TOKENS',TRUE);
10265 p_usec_ret_rec.status :='E';
10266 END;
10267
10268 BEGIN
10269 igs_ps_nsus_rtn_pkg.check_constraints('ROUND_METHOD', p_usec_ret_rec.round_method);
10270 EXCEPTION
10271 WHEN OTHERS THEN
10272 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','ROUND_METHOD','LEGACY_TOKENS',TRUE);
10273 p_usec_ret_rec.status :='E';
10274 END;
10275
10276 BEGIN
10277 igs_ps_nsus_rtn_pkg.check_constraints('INCL_WKEND_DURATION_FLAG', p_usec_ret_rec.incl_wkend_duration_flag);
10278 EXCEPTION
10279 WHEN OTHERS THEN
10280 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','INCL_WKEND_DURATION_FLAG','LEGACY_TOKENS',TRUE);
10281 p_usec_ret_rec.status :='E';
10282 END;
10283
10284
10285 -- Foreign Key Checking
10286 --Check for the existence of the unit section
10287 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
10288 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
10289 p_usec_ret_rec.status := 'E';
10290 END IF;
10291
10292
10293
10294 END validate_db_cons;
10295
10296 -- Check for Update/Insert
10297 FUNCTION check_insert_update ( p_usec_ret_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_rec_type) RETURN VARCHAR2 IS
10298
10299 CURSOR c_ret_usec IS
10300 SELECT non_std_usec_rtn_id
10301 FROM igs_ps_nsus_rtn
10302 WHERE uoo_id = l_n_uoo_id
10303 AND definition_code='UNIT_SECTION';
10304
10305 CURSOR c_ret_usec_fee IS
10306 SELECT non_std_usec_rtn_id
10307 FROM igs_ps_nsus_rtn
10308 WHERE uoo_id = l_n_uoo_id
10309 AND fee_type = p_usec_ret_rec.fee_type;
10310
10311 BEGIN
10312
10313 IF p_usec_ret_rec.definition_level='UNIT_SECTION' THEN
10314 OPEN c_ret_usec;
10315 FETCH c_ret_usec INTO l_n_non_std_usec_rtn_id;
10316 IF c_ret_usec%FOUND THEN
10317 CLOSE c_ret_usec;
10318 RETURN 'U';
10319 ELSE
10320 CLOSE c_ret_usec;
10321 RETURN 'I';
10322 END IF;
10323 ELSE
10324 OPEN c_ret_usec_fee;
10325 FETCH c_ret_usec_fee INTO l_n_non_std_usec_rtn_id;
10326 IF c_ret_usec_fee%FOUND THEN
10327 CLOSE c_ret_usec_fee;
10328 RETURN 'U';
10329 ELSE
10330 CLOSE c_ret_usec_fee;
10331 RETURN 'I';
10332 END IF;
10333 END IF;
10334
10335 END check_insert_update;
10336
10337 PROCEDURE Business_validation(p_usec_ret_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_rec_type,p_insert_update IN VARCHAR2) AS
10338 CURSOR cur_check_ns_usec(cp_n_uoo_id IN NUMBER) IS
10339 SELECT 'X'
10340 FROM igs_ps_unit_ofr_opt_all
10341 WHERE uoo_id = cp_n_uoo_id
10342 AND non_std_usec_ind = 'Y';
10343 l_c_var VARCHAR2(1);
10344
10345 l_message_name VARCHAR2(30);
10346
10347 CURSOR cur_fee(cp_fee_type IN VARCHAR2) IS
10348 SELECT ci.cal_type cal_type,ci.sequence_number sequence_number
10349 FROM igs_fi_fee_type ft,
10350 igs_fi_f_typ_ca_inst ftci,
10351 igs_ca_inst ci,
10352 igs_ca_type ct,
10353 igs_ca_stat cs
10354 WHERE ft.s_fee_type IN ('TUTNFEE', 'OTHER', 'SPECIAL', 'AUDIT')
10355 AND ft.closed_ind = 'N'
10356 AND ft.fee_type = ftci.fee_type
10357 AND ft.fee_type = cp_fee_type
10358 AND ftci.fee_cal_type = ci.cal_type
10359 AND ftci.fee_ci_sequence_number = ci.sequence_number
10360 AND ci.cal_type = ct.cal_type
10361 AND ct.s_cal_cat = 'FEE'
10362 AND ci.cal_status = cs.cal_status
10363 AND cs.s_cal_status = 'ACTIVE';
10364 cur_fee_rec cur_fee%ROWTYPE;
10365
10366 CURSOR cur_check_formula (cp_non_std_usec_rtn_id IN NUMBER) IS
10367 SELECT 'X'
10368 FROM igs_ps_nsus_rtn nr,
10369 igs_ps_nsus_rtn_dtl nrd
10370 WHERE nr.non_std_usec_rtn_id = nrd.non_std_usec_rtn_id
10371 AND nr.non_std_usec_rtn_id = cp_non_std_usec_rtn_id
10372 AND p_usec_ret_rec.formula_method IN ('P','M')
10373 AND nrd.offset_value > 100;
10374
10375 CURSOR c_cur(cp_non_std_usec_rtn_id igs_ps_nsus_rtn_dtl.non_std_usec_rtn_id%TYPE) IS
10376 SELECT *
10377 FROM igs_ps_nsus_rtn_dtl a
10378 WHERE non_std_usec_rtn_id = cp_non_std_usec_rtn_id
10379 AND override_date_flag = 'N';
10380 l_offset_date DATE;
10381
10382 TYPE teach_cal_rec IS RECORD(
10383 cal_type igs_ca_inst_all.cal_type%TYPE,
10384 sequence_number igs_ca_inst_all.sequence_number%TYPE
10385 );
10386 TYPE teachCalendar IS TABLE OF teach_cal_rec INDEX BY BINARY_INTEGER;
10387 teachCalendar_tbl teachCalendar;
10388 l_n_counter NUMBER(10);
10389 l_c_proceed BOOLEAN ;
10390
10391
10392 PROCEDURE createCalendar IS
10393
10394 CURSOR cur_cal_teach(cp_load_cal igs_ca_teach_to_load_v.load_cal_type%TYPE,
10395 cp_load_seq igs_ca_teach_to_load_v.load_ci_sequence_number%TYPE) IS
10396 SELECT sup_cal_type,sup_ci_sequence_number
10397 FROM igs_ca_inst_rel
10398 WHERE sub_cal_type = cp_load_cal
10399 AND sub_ci_sequence_number = cp_load_seq;
10400
10401 CURSOR cur_cal_load IS
10402 SELECT load_cal_type,load_ci_sequence_number
10403 FROM igs_ca_teach_to_load_v
10404 WHERE teach_cal_type=l_c_cal_type
10405 AND teach_ci_sequence_number=l_n_seq_num;
10406
10407 BEGIN
10408 --populate the pl-sql table with the superior calendar's by mapping the teach calendars.
10409 l_n_counter :=1;
10410 FOR rec_cur_cal_load IN cur_cal_load LOOP
10411 FOR rec_cur_cal_teach IN cur_cal_teach(rec_cur_cal_load.load_cal_type ,rec_cur_cal_load.load_ci_sequence_number) LOOP
10412 teachCalendar_tbl(l_n_counter).cal_type :=rec_cur_cal_teach.sup_cal_type;
10413 teachCalendar_tbl(l_n_counter).sequence_number :=rec_cur_cal_teach.sup_ci_sequence_number;
10414 l_n_counter:=l_n_counter+1;
10415 END LOOP;
10416 END LOOP;
10417
10418 END createCalendar;
10419
10420 FUNCTION testCalendar(cp_cal_type igs_ca_inst_all.cal_type%TYPE,
10421 cp_sequence_number igs_ca_inst_all.sequence_number%TYPE) RETURN BOOLEAN AS
10422 BEGIN
10423 IF teachCalendar_tbl.EXISTS(1) THEN
10424 FOR i IN 1..teachCalendar_tbl.last LOOP
10425 IF cp_cal_type=teachCalendar_tbl(i).cal_type AND
10426 cp_sequence_number=teachCalendar_tbl(i).sequence_number THEN
10427 RETURN TRUE;
10428 END IF;
10429 END LOOP;
10430 END IF;
10431 RETURN FALSE;
10432 END testCalendar;
10433
10434 BEGIN
10435 --Store the superior calendars in a pl-sql tables for the input teaching calendars
10436 createCalendar;
10437 --Check if the unit is INACTIVE, then do not allow to import
10438 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_usec_ret_rec.unit_cd, p_usec_ret_rec.version_number,l_message_name)=FALSE THEN
10439 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
10440 fnd_msg_pub.add;
10441 p_usec_ret_rec.status := 'E';
10442 END IF;
10443
10444 --Check if the Unit Section is not Not standard then insert/update is not allowed
10445 OPEN cur_check_ns_usec(l_n_uoo_id);
10446 FETCH cur_check_ns_usec INTO l_c_var;
10447 IF cur_check_ns_usec%NOTFOUND THEN
10448 fnd_message.set_name ( 'IGS', 'IGS_PS_NON_STD_USEC_NOT_IMP' );
10449 fnd_message.set_token('RECORD',igs_ps_validate_lgcy_pkg.get_lkup_meaning('RETENTION','LEGACY_TOKENS'));
10450 fnd_msg_pub.add;
10451 /*igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_NON_STD_USEC_NOT_IMP','RETENTION','LEGACY_TOKENS',FALSE);*/
10452 p_usec_ret_rec.status := 'E';
10453 END IF;
10454 CLOSE cur_check_ns_usec;
10455
10456 IF p_insert_update = 'I' THEN
10457
10458 IF p_usec_ret_rec.fee_type IS NOT NULL THEN
10459 l_c_proceed:= FALSE;
10460 FOR rec_cur_fee IN cur_fee(p_usec_ret_rec.fee_type) LOOP
10461 IF testCalendar(rec_cur_fee.cal_type ,rec_cur_fee.sequence_number ) THEN
10462 l_c_proceed:= TRUE;
10463 EXIT;
10464 END IF;
10465 END LOOP;
10466
10467 IF l_c_proceed = FALSE THEN
10468 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'FEE_TYPE', 'IGS_FI_LOCKBOX', FALSE);
10469 p_usec_ret_rec.status := 'E';
10470 END IF;
10471 END IF;
10472
10473 END IF;
10474
10475 IF teachCalendar_tbl.EXISTS(1) THEN
10476 teachCalendar_tbl.DELETE;
10477 END IF;
10478
10479
10480 IF p_insert_update = 'U' THEN
10481 --If formula method is 'P'/'M' and any details exists such that offset is greater than 100 then it is an error condition
10482 OPEN cur_check_formula(l_n_non_std_usec_rtn_id);
10483 FETCH cur_check_formula INTO l_c_var;
10484 IF cur_check_formula%FOUND THEN
10485 fnd_message.set_name ( 'IGS', 'IGS_PS_RTN_FORMULA_INVALID' );
10486 fnd_msg_pub.add;
10487 p_usec_ret_rec.status := 'E';
10488 END IF;
10489 CLOSE cur_check_formula;
10490
10491 IF p_usec_ret_rec.status = 'S' THEN
10492 --update the offset date for the child records
10493
10494 FOR l_c_rec IN c_cur( l_n_non_std_usec_rtn_id) LOOP
10495 l_offset_date := igs_ps_gen_004.f_retention_offset_date(
10496 p_n_uoo_id => l_n_uoo_id,
10497 p_c_formula_method => p_usec_ret_rec.formula_method,
10498 p_c_round_method => p_usec_ret_rec.round_method,
10499 p_c_incl_wkend_duration => p_usec_ret_rec.incl_wkend_duration_flag,
10500 p_n_offset_value => l_c_rec.offset_value
10501 );
10502
10503
10504 UPDATE igs_ps_nsus_rtn_dtl SET
10505 offset_date = l_offset_date,
10506 last_updated_by = g_n_user_id ,
10507 last_update_date = sysdate ,
10508 last_update_login = g_n_login_id
10509 WHERE non_std_usec_rtn_dtl_id = l_c_rec.non_std_usec_rtn_dtl_id;
10510
10511 END LOOP;
10512 END IF;
10513
10514 END IF;
10515
10516 END Business_validation;
10517
10518 BEGIN
10519
10520 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
10521 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.start_logging_for',
10522 'Unit Section Retention ');
10523 END IF;
10524
10525 p_c_rec_status := 'S';
10526 FOR I in 1..p_usec_ret_tbl.LAST LOOP
10527 IF p_usec_ret_tbl.EXISTS(I) THEN
10528 -- Initialize the variable use to store the derived values.
10529 l_c_cal_type :=NULL;
10530 l_n_seq_num :=NULL;
10531 l_n_uoo_id := NULL;
10532 l_n_non_std_usec_rtn_id :=NULL;
10533
10534 p_usec_ret_tbl(I).status := 'S';
10535 p_usec_ret_tbl(I).msg_from := fnd_msg_pub.count_msg;
10536 trim_values(p_usec_ret_tbl(I));
10537 validate_parameters(p_usec_ret_tbl(I));
10538
10539 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10540 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.status_after_validate_parameters',
10541 'Unit code:'||p_usec_ret_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10542 ||p_usec_ret_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_tbl(I).location_cd||' '||'Unit Class:'||
10543 p_usec_ret_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_tbl(I).fee_type||' '||'definition_level:'
10544 ||p_usec_ret_tbl(I).definition_level||' '||'Status:'||p_usec_ret_tbl(I).status);
10545 END IF;
10546
10547
10548 IF p_usec_ret_tbl(I).status = 'S' THEN
10549 validate_derivation(p_usec_ret_tbl(I));
10550
10551 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10552 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.status_after_validate_derivation',
10553 'Unit code:'||p_usec_ret_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10554 ||p_usec_ret_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_tbl(I).location_cd||' '||'Unit Class:'||
10555 p_usec_ret_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_tbl(I).fee_type||' '||'definition_level:'
10556 ||p_usec_ret_tbl(I).definition_level||' '||'Status:'||p_usec_ret_tbl(I).status);
10557 END IF;
10558
10559 END IF;
10560
10561 --Find out whether it is insert/update of record
10562 l_insert_update:='I';
10563 IF p_usec_ret_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
10564 l_insert_update:= check_insert_update(p_usec_ret_tbl(I));
10565
10566 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10567 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.status_after_check_insert_update',
10568 'Unit code:'||p_usec_ret_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10569 ||p_usec_ret_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_tbl(I).location_cd||' '||'Unit Class:'||
10570 p_usec_ret_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_tbl(I).fee_type||' '||'definition_level:'
10571 ||p_usec_ret_tbl(I).definition_level||' '||'Status:'||p_usec_ret_tbl(I).status);
10572 END IF;
10573
10574 END IF;
10575
10576 IF p_usec_ret_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
10577 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
10578 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
10579 fnd_msg_pub.add;
10580 p_usec_ret_tbl(I).status := 'A';
10581 END IF;
10582
10583 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10584 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.status_after_check_import_allowed',
10585 'Unit code:'||p_usec_ret_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10586 ||p_usec_ret_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_tbl(I).location_cd||' '||'Unit Class:'||
10587 p_usec_ret_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_tbl(I).fee_type||' '||'definition_level:'
10588 ||p_usec_ret_tbl(I).definition_level||' '||'Status:'||p_usec_ret_tbl(I).status);
10589 END IF;
10590
10591 END IF;
10592
10593
10594 IF p_usec_ret_tbl(I).status = 'S' THEN
10595 validate_db_cons ( p_usec_ret_tbl(I),l_insert_update);
10596
10597 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10598 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.status_after_validate_db_cons',
10599 'Unit code:'||p_usec_ret_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10600 ||p_usec_ret_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_tbl(I).location_cd||' '||'Unit Class:'||
10601 p_usec_ret_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_tbl(I).fee_type||' '||'definition_level:'
10602 ||p_usec_ret_tbl(I).definition_level||' '||'Status:'||p_usec_ret_tbl(I).status);
10603 END IF;
10604
10605 END IF;
10606
10607
10608 --Business validations
10609 IF p_usec_ret_tbl(I).status = 'S' THEN
10610 Business_validation(p_usec_ret_tbl(I),l_insert_update);
10611
10612 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10613 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.status_after_Business_validation',
10614 'Unit code:'||p_usec_ret_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10615 ||p_usec_ret_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_tbl(I).location_cd||' '||'Unit Class:'||
10616 p_usec_ret_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_tbl(I).fee_type||' '||'definition_level:'
10617 ||p_usec_ret_tbl(I).definition_level||' '||'Status:'||p_usec_ret_tbl(I).status);
10618 END IF;
10619
10620 END IF;
10621
10622 IF p_usec_ret_tbl(I).status = 'S' THEN
10623
10624 IF l_insert_update = 'I' THEN
10625 INSERT INTO IGS_PS_NSUS_RTN(
10626 non_std_usec_rtn_id,
10627 uoo_id,
10628 fee_type,
10629 definition_code,
10630 formula_method,
10631 round_method,
10632 incl_wkend_duration_flag,
10633 created_by,
10634 creation_date,
10635 last_updated_by,
10636 last_update_date,
10637 last_update_login )
10638 VALUES (
10639 igs_ps_nsus_rtn_s.NEXTVAL,
10640 l_n_uoo_id,
10641 p_usec_ret_tbl(I).fee_type,
10642 p_usec_ret_tbl(I).definition_level,
10643 p_usec_ret_tbl(I).formula_method,
10644 p_usec_ret_tbl(I).round_method,
10645 p_usec_ret_tbl(I).incl_wkend_duration_flag,
10646 g_n_user_id,
10647 SYSDATE,
10648 g_n_user_id,
10649 SYSDATE,
10650 g_n_login_id);
10651
10652 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10653 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.Record_Inserted',
10654 'Unit code:'||p_usec_ret_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10655 ||p_usec_ret_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_tbl(I).location_cd||' '||'Unit Class:'||
10656 p_usec_ret_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_tbl(I).fee_type||' '||'definition_level:'
10657 ||p_usec_ret_tbl(I).definition_level);
10658 END IF;
10659
10660
10661 ELSE
10662 UPDATE IGS_PS_NSUS_RTN SET
10663 formula_method = p_usec_ret_tbl(I).formula_method,
10664 round_method = p_usec_ret_tbl(I).round_method,
10665 incl_wkend_duration_flag = p_usec_ret_tbl(I).incl_wkend_duration_flag,
10666 last_updated_by = g_n_user_id ,
10667 last_update_date = sysdate ,
10668 last_update_login = g_n_login_id
10669 WHERE non_std_usec_rtn_id=l_n_non_std_usec_rtn_id;
10670
10671 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
10672 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.Record_Updated',
10673 'Unit code:'||p_usec_ret_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_tbl(I).version_number||' '||'teach_cal_alternate_code:'
10674 ||p_usec_ret_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_tbl(I).location_cd||' '||'Unit Class:'||
10675 p_usec_ret_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_tbl(I).fee_type||' '||'definition_level:'
10676 ||p_usec_ret_tbl(I).definition_level);
10677 END IF;
10678
10679 END IF;
10680
10681
10682 END IF;
10683
10684
10685 IF p_usec_ret_tbl(I).status = 'S' THEN
10686 p_usec_ret_tbl(I).msg_from := NULL;
10687 p_usec_ret_tbl(I).msg_to := NULL;
10688 ELSIF p_usec_ret_tbl(I).status = 'A' THEN
10689 p_usec_ret_tbl(I).msg_from := p_usec_ret_tbl(I).msg_from + 1;
10690 p_usec_ret_tbl(I).msg_to := fnd_msg_pub.count_msg;
10691 ELSE
10692 p_c_rec_status := p_usec_ret_tbl(I).status;
10693 p_usec_ret_tbl(I).msg_from := p_usec_ret_tbl(I).msg_from+1;
10694 p_usec_ret_tbl(I).msg_to := fnd_msg_pub.count_msg;
10695 IF p_usec_ret_tbl(I).status = 'E' THEN
10696 RETURN;
10697 END IF;
10698 END IF;
10699
10700 END IF;
10701 END LOOP;
10702
10703 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
10704 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret.after_import_status',p_c_rec_status);
10705 END IF;
10706
10707 END create_usec_ret;
10708
10709 PROCEDURE create_usec_ret_dtl(p_usec_ret_dtl_tbl IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_tbl_type,
10710 p_c_rec_status OUT NOCOPY VARCHAR2,
10711 p_calling_context IN VARCHAR2) IS
10712 /***********************************************************************************************
10713
10714 Created By: sarakshi
10715 Date Created By: 01-Jun-2005
10716 Purpose: This procedure imports unit section Retention Deatils.
10717
10718 Known limitations,enhancements,remarks:
10719 Change History
10720 Who When What
10721 ***********************************************************************************************/
10722 l_n_uoo_id igs_ps_unit_ofr_opt_all.uoo_id%TYPE;
10723 l_n_non_std_usec_rtn_id NUMBER;
10724 l_d_offset_date DATE;
10725 l_insert_update VARCHAR2(1);
10726
10727 PROCEDURE trim_values ( p_usec_ret_dtl_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_rec_type) AS
10728 BEGIN
10729
10730 p_usec_ret_dtl_rec.unit_cd := TRIM(p_usec_ret_dtl_rec.unit_cd);
10731 p_usec_ret_dtl_rec.version_number := TRIM(p_usec_ret_dtl_rec.version_number);
10732 p_usec_ret_dtl_rec.teach_cal_alternate_code := TRIM(p_usec_ret_dtl_rec.teach_cal_alternate_code);
10733 p_usec_ret_dtl_rec.location_cd := TRIM(p_usec_ret_dtl_rec.location_cd);
10734 p_usec_ret_dtl_rec.unit_class := TRIM(p_usec_ret_dtl_rec.unit_class);
10735 p_usec_ret_dtl_rec.definition_level := TRIM(p_usec_ret_dtl_rec.definition_level);
10736 p_usec_ret_dtl_rec.fee_type := TRIM(p_usec_ret_dtl_rec.fee_type);
10737 p_usec_ret_dtl_rec.offset_value := TRIM(p_usec_ret_dtl_rec.offset_value);
10738 p_usec_ret_dtl_rec.retention_percent := TRIM(p_usec_ret_dtl_rec.retention_percent);
10739 p_usec_ret_dtl_rec.retention_amount := TRIM(p_usec_ret_dtl_rec.retention_amount);
10740 p_usec_ret_dtl_rec.override_date_flag := TRIM(p_usec_ret_dtl_rec.override_date_flag);
10741 p_usec_ret_dtl_rec.offset_date := TRUNC(p_usec_ret_dtl_rec.offset_date);
10742
10743 END trim_values;
10744
10745 PROCEDURE validate_parameters( p_usec_ret_dtl_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_rec_type) AS
10746
10747 BEGIN
10748 p_usec_ret_dtl_rec.status:='S';
10749
10750
10751 IF p_usec_ret_dtl_rec.unit_cd IS NULL OR p_usec_ret_dtl_rec.unit_cd = FND_API.G_MISS_CHAR THEN
10752 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CD','LEGACY_TOKENS',FALSE);
10753 p_usec_ret_dtl_rec.status := 'E';
10754 END IF;
10755
10756 IF p_usec_ret_dtl_rec.version_number IS NULL OR p_usec_ret_dtl_rec.version_number = FND_API.G_MISS_NUM THEN
10757 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_VER_NUM','LEGACY_TOKENS',FALSE);
10758 p_usec_ret_dtl_rec.status := 'E';
10759 END IF;
10760
10761 IF p_usec_ret_dtl_rec.teach_cal_alternate_code IS NULL OR p_usec_ret_dtl_rec.teach_cal_alternate_code = FND_API.G_MISS_CHAR THEN
10762 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS',FALSE);
10763 p_usec_ret_dtl_rec.status := 'E';
10764 END IF;
10765
10766 IF p_usec_ret_dtl_rec.location_cd IS NULL OR p_usec_ret_dtl_rec.location_cd = FND_API.G_MISS_CHAR THEN
10767 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY', 'LOCATION_CD','LEGACY_TOKENS',FALSE);
10768 p_usec_ret_dtl_rec.status := 'E';
10769 END IF;
10770
10771 IF p_usec_ret_dtl_rec.unit_class IS NULL OR p_usec_ret_dtl_rec.unit_class = FND_API.G_MISS_CHAR THEN
10772 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','UNIT_CLASS','LEGACY_TOKENS',FALSE);
10773 p_usec_ret_dtl_rec.status := 'E';
10774 END IF;
10775
10776 IF p_usec_ret_dtl_rec.definition_level IS NULL OR p_usec_ret_dtl_rec.definition_level = FND_API.G_MISS_CHAR THEN
10777 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','DEFINITION_LEVEL','LEGACY_TOKENS',FALSE);
10778 p_usec_ret_dtl_rec.status := 'E';
10779 END IF;
10780
10781 IF (p_usec_ret_dtl_rec.fee_type IS NULL OR p_usec_ret_dtl_rec.fee_type = FND_API.G_MISS_CHAR) AND p_usec_ret_dtl_rec.definition_level='UNIT_SECTION_FEE_TYPE' THEN
10782 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','FEE_TYPE','IGS_FI_LOCKBOX',FALSE);
10783 p_usec_ret_dtl_rec.status := 'E';
10784 END IF;
10785
10786 IF p_usec_ret_dtl_rec.offset_value IS NULL OR p_usec_ret_dtl_rec.offset_value = FND_API.G_MISS_NUM THEN
10787 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','OFFSET_VALUE','LEGACY_TOKENS',FALSE);
10788 p_usec_ret_dtl_rec.status := 'E';
10789 END IF;
10790
10791
10792 --Offset date is mandatory when override date flag is set to 'Y'
10793 IF (p_usec_ret_dtl_rec.offset_date IS NULL OR p_usec_ret_dtl_rec.offset_date = FND_API.G_MISS_DATE) AND
10794 p_usec_ret_dtl_rec.override_date_flag ='Y' THEN
10795 fnd_message.set_name ( 'IGS', 'IGS_PS_OFFSET_DATE_MANDATORY' );
10796 fnd_msg_pub.add;
10797 p_usec_ret_dtl_rec.status := 'E';
10798 END IF;
10799
10800
10801 IF p_usec_ret_dtl_rec.override_date_flag IS NULL OR p_usec_ret_dtl_rec.override_date_flag = FND_API.G_MISS_CHAR THEN
10802 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_MANDATORY','OVERRIDE_DATE_FLAG','LEGACY_TOKENS',FALSE);
10803 p_usec_ret_dtl_rec.status := 'E';
10804 END IF;
10805
10806 -- valid values of definition_level is 'UNIT_SECTION_FEE_TYPE' , 'UNIT_SECTION'
10807 IF p_usec_ret_dtl_rec.definition_level NOT IN ('UNIT_SECTION_FEE_TYPE' , 'UNIT_SECTION') THEN
10808 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','DEFINITION_LEVEL','LEGACY_TOKENS',FALSE);
10809 p_usec_ret_dtl_rec.status :='E';
10810 END IF;
10811
10812 --Fee type should not be there for definition_level = UNIT_SECTION
10813 IF p_usec_ret_dtl_rec.definition_level = 'UNIT_SECTION' AND p_usec_ret_dtl_rec.fee_type IS NOT NULL THEN
10814 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','FEE_TYPE','IGS_FI_LOCKBOX',FALSE);
10815 p_usec_ret_dtl_rec.status :='E';
10816 END IF;
10817
10818 END validate_parameters;
10819
10820 PROCEDURE validate_derivation(p_usec_ret_dtl_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_rec_type) AS
10821 l_c_cal_type VARCHAR2(10);
10822 l_n_seq_num NUMBER;
10823 l_d_start igs_ca_inst_all.start_dt%TYPE;
10824 l_d_end igs_ca_inst_all.end_dt%TYPE;
10825 l_c_ret_status VARCHAR2(30);
10826
10827 CURSOR c_ret_usec IS
10828 SELECT non_std_usec_rtn_id,formula_method,round_method,incl_wkend_duration_flag
10829 FROM igs_ps_nsus_rtn
10830 WHERE uoo_id = l_n_uoo_id
10831 AND definition_code='UNIT_SECTION';
10832
10833 CURSOR c_ret_usec_fee IS
10834 SELECT non_std_usec_rtn_id,formula_method,round_method,incl_wkend_duration_flag
10835 FROM igs_ps_nsus_rtn
10836 WHERE uoo_id = l_n_uoo_id
10837 AND fee_type = p_usec_ret_dtl_rec.fee_type;
10838
10839 l_c_formula_method VARCHAR2(1);
10840 l_c_round_method VARCHAR2(1);
10841 l_c_incl_wkend_duration_flag VARCHAR2(1);
10842
10843
10844 BEGIN
10845
10846 -- Deriving the Calendar Type and Calendar Sequence Number
10847 igs_ge_gen_003.get_calendar_instance(p_usec_ret_dtl_rec.teach_cal_alternate_code,'''TEACHING''', l_c_cal_type, l_n_seq_num, l_d_start, l_d_end, l_c_ret_status);
10848 IF l_c_ret_status <> 'SINGLE' THEN
10849 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV', 'TEACH_CAL_ALTERNATE_CD','LEGACY_TOKENS', FALSE);
10850 p_usec_ret_dtl_rec.status := 'E';
10851 END IF;
10852
10853 -- Deriving the Unit Offering Option Identifier
10854 l_c_ret_status := NULL;
10855 igs_ps_validate_lgcy_pkg.get_uoo_id(p_usec_ret_dtl_rec.unit_cd, p_usec_ret_dtl_rec.version_number, l_c_cal_type, l_n_seq_num, p_usec_ret_dtl_rec.location_cd, p_usec_ret_dtl_rec.unit_class, l_n_uoo_id, l_c_ret_status);
10856 IF l_c_ret_status IS NOT NULL THEN
10857 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','UNIT_SECTION','LEGACY_TOKENS', FALSE);
10858 p_usec_ret_dtl_rec.status := 'E';
10859 END IF;
10860
10861 --Derive the Master retention id
10862 IF p_usec_ret_dtl_rec.definition_level='UNIT_SECTION' THEN
10863 OPEN c_ret_usec;
10864 FETCH c_ret_usec INTO l_n_non_std_usec_rtn_id,l_c_formula_method,l_c_round_method,l_c_incl_wkend_duration_flag;
10865 CLOSE c_ret_usec;
10866 ELSE
10867 OPEN c_ret_usec_fee;
10868 FETCH c_ret_usec_fee INTO l_n_non_std_usec_rtn_id,l_c_formula_method,l_c_round_method,l_c_incl_wkend_duration_flag;
10869 CLOSE c_ret_usec_fee;
10870 END IF;
10871
10872 IF l_n_non_std_usec_rtn_id IS NULL THEN
10873 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS','RETENTION','LEGACY_TOKENS', FALSE);
10874 p_usec_ret_dtl_rec.status := 'E';
10875 ELSE
10876 --Derive the offset date
10877 IF p_usec_ret_dtl_rec.status = 'S' THEN
10878 IF p_usec_ret_dtl_rec.override_date_flag ='Y' THEN
10879 l_d_offset_date := p_usec_ret_dtl_rec.offset_date;
10880 ELSE
10881 l_d_offset_date := igs_ps_gen_004.f_retention_offset_date(
10882 p_n_uoo_id => l_n_uoo_id,
10883 p_c_formula_method => l_c_formula_method,
10884 p_c_round_method => l_c_round_method,
10885 p_c_incl_wkend_duration => l_c_incl_wkend_duration_flag,
10886 p_n_offset_value => p_usec_ret_dtl_rec.offset_value
10887 );
10888 END IF;
10889 END IF;
10890 END IF;
10891
10892 END validate_derivation;
10893
10894 PROCEDURE validate_db_cons(p_usec_ret_dtl_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_rec_type,p_insert_update IN VARCHAR2) AS
10895
10896 BEGIN
10897
10898 IF p_insert_update = 'I' THEN
10899 -- Unique Key Validation
10900 IF igs_ps_nsus_rtn_dtl_pkg.get_uk_for_validation ( x_non_std_usec_rtn_id => l_n_non_std_usec_rtn_id,
10901 x_offset_value => p_usec_ret_dtl_rec.offset_value ) THEN
10902 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_EXISTS', 'RETENTION', 'LEGACY_TOKENS', FALSE);
10903 p_usec_ret_dtl_rec.status := 'W';
10904 RETURN;
10905 END IF;
10906
10907 END IF;
10908
10909
10910 --Check constraint
10911 BEGIN
10912 igs_ps_nsus_rtn_dtl_pkg.check_constraints('OFFSET_VALUE', p_usec_ret_dtl_rec.offset_value);
10913 EXCEPTION
10914 WHEN OTHERS THEN
10915 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','OFFSET_VALUE','LEGACY_TOKENS',TRUE);
10916 p_usec_ret_dtl_rec.status :='E';
10917 END;
10918
10919 BEGIN
10920 igs_ps_nsus_rtn_dtl_pkg.check_constraints('RETENTION_PERCENT', p_usec_ret_dtl_rec.retention_percent);
10921 EXCEPTION
10922 WHEN OTHERS THEN
10923 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','RETENTION_PERCENT','LEGACY_TOKENS',TRUE);
10924 p_usec_ret_dtl_rec.status :='E';
10925 END;
10926
10927 BEGIN
10928 igs_ps_nsus_rtn_dtl_pkg.check_constraints('RETENTION_AMOUNT', p_usec_ret_dtl_rec.retention_amount);
10929 EXCEPTION
10930 WHEN OTHERS THEN
10931 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','RETENTION_AMOUNT','LEGACY_TOKENS',TRUE);
10932 p_usec_ret_dtl_rec.status :='E';
10933 END;
10934
10935 --Format mask check
10936 IF p_usec_ret_dtl_rec.retention_percent IS NOT NULL THEN
10937 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_usec_ret_dtl_rec.retention_percent,3,2) THEN
10938 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','RETENTION_PERCENT','LEGACY_TOKENS',FALSE);
10939 p_usec_ret_dtl_rec.status :='E';
10940 END IF;
10941 END IF;
10942
10943 --Format mask check
10944 IF p_usec_ret_dtl_rec.retention_amount IS NOT NULL THEN
10945 IF NOT igs_ps_validate_lgcy_pkg.boundary_check_number(p_usec_ret_dtl_rec.retention_amount,6,2) THEN
10946 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','RETENTION_AMOUNT','LEGACY_TOKENS',FALSE);
10947 p_usec_ret_dtl_rec.status :='E';
10948 END IF;
10949 END IF;
10950
10951 IF p_usec_ret_dtl_rec.override_date_flag NOT IN ('Y','N') THEN
10952 igs_ps_validate_lgcy_pkg.set_msg('IGS_EN_INV','OVERRIDE_DATE_FLAG','LEGACY_TOKENS',FALSE);
10953 p_usec_ret_dtl_rec.status :='E';
10954 END IF;
10955
10956 -- Foreign Key Checking
10957 --Check for the existence of the unit section
10958 IF NOT igs_ps_unit_ofr_opt_pkg.get_uk_for_validation (l_n_uoo_id ) THEN
10959 igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_LGCY_REC_NOT_EXISTS', 'UNIT_SECTION', 'LEGACY_TOKENS', FALSE);
10960 p_usec_ret_dtl_rec.status := 'E';
10961 END IF;
10962
10963
10964
10965 END validate_db_cons;
10966
10967 -- Check for Update/Insert
10968 FUNCTION check_insert_update ( p_usec_ret_dtl_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_rec_type) RETURN VARCHAR2 IS
10969
10970 CURSOR c_ret_det_usec IS
10971 SELECT 'X'
10972 FROM igs_ps_nsus_rtn_dtl
10973 WHERE non_std_usec_rtn_id = l_n_non_std_usec_rtn_id
10974 AND offset_value = p_usec_ret_dtl_rec.offset_value;
10975
10976 l_c_var VARCHAR2(1);
10977
10978 BEGIN
10979
10980 OPEN c_ret_det_usec;
10981 FETCH c_ret_det_usec INTO l_c_var;
10982 IF c_ret_det_usec%FOUND THEN
10983 CLOSE c_ret_det_usec;
10984 RETURN 'U';
10985 ELSE
10986 CLOSE c_ret_det_usec;
10987 RETURN 'I';
10988 END IF;
10989
10990 END check_insert_update;
10991
10992 PROCEDURE Assign_defaults(p_usec_ret_dtl_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_rec_type,p_insert_update IN VARCHAR2) AS
10993 CURSOR cur_ret_det IS
10994 SELECT *
10995 FROM igs_ps_nsus_rtn_dtl
10996 WHERE non_std_usec_rtn_id = l_n_non_std_usec_rtn_id
10997 AND offset_value = p_usec_ret_dtl_rec.offset_value;
10998
10999 l_cur_ret_det cur_ret_det%ROWTYPE;
11000
11001 BEGIN
11002 IF p_insert_update = 'U' THEN
11003
11004 OPEN cur_ret_det;
11005 FETCH cur_ret_det into l_cur_ret_det;
11006 CLOSE cur_ret_det;
11007
11008 IF p_usec_ret_dtl_rec.retention_percent IS NULL THEN
11009 p_usec_ret_dtl_rec.retention_percent := l_cur_ret_det.retention_percent;
11010 ELSIF p_usec_ret_dtl_rec.retention_percent = FND_API.G_MISS_NUM THEN
11011 p_usec_ret_dtl_rec.retention_percent := NULL;
11012 END IF;
11013
11014 IF p_usec_ret_dtl_rec.retention_amount IS NULL THEN
11015 p_usec_ret_dtl_rec.retention_amount := l_cur_ret_det.retention_amount;
11016 ELSIF p_usec_ret_dtl_rec.retention_amount = FND_API.G_MISS_NUM THEN
11017 p_usec_ret_dtl_rec.retention_amount := NULL;
11018 END IF;
11019
11020 END IF;
11021
11022 END Assign_defaults;
11023
11024 PROCEDURE Business_validation(p_usec_ret_dtl_rec IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_rec_type,p_insert_update IN VARCHAR2) AS
11025 CURSOR cur_check_ns_usec(cp_n_uoo_id IN NUMBER) IS
11026 SELECT 'X'
11027 FROM igs_ps_unit_ofr_opt_all
11028 WHERE uoo_id = cp_n_uoo_id
11029 AND non_std_usec_ind = 'Y';
11030 l_c_var VARCHAR2(1);
11031
11032 l_message_name VARCHAR2(30);
11033
11034 CURSOR cur_check_formula (cp_non_std_usec_rtn_id IN NUMBER) IS
11035 SELECT 'X'
11036 FROM igs_ps_nsus_rtn nr
11037 WHERE nr.non_std_usec_rtn_id = cp_non_std_usec_rtn_id
11038 AND nr.formula_method IN ('P','M')
11039 AND p_usec_ret_dtl_rec.offset_value > 100;
11040
11041
11042 BEGIN
11043 --Check if the unit is INACTIVE, then do not allow to import
11044 IF igs_ps_val_unit.crsp_val_iud_uv_dtl(p_usec_ret_dtl_rec.unit_cd, p_usec_ret_dtl_rec.version_number,l_message_name)=FALSE THEN
11045 fnd_message.set_name ( 'IGS', 'IGS_PS_NOCHG_UNITVER_DETAILS' );
11046 fnd_msg_pub.add;
11047 p_usec_ret_dtl_rec.status := 'E';
11048 END IF;
11049
11050 --Check if the Unit Section is not Not standard then insert/update is not allowed
11051 OPEN cur_check_ns_usec(l_n_uoo_id);
11052 FETCH cur_check_ns_usec INTO l_c_var;
11053 IF cur_check_ns_usec%NOTFOUND THEN
11054 fnd_message.set_name ( 'IGS', 'IGS_PS_NON_STD_USEC_NOT_IMP' );
11055 fnd_message.set_token('RECORD',igs_ps_validate_lgcy_pkg.get_lkup_meaning('RETENTION','LEGACY_TOKENS'));
11056 fnd_msg_pub.add;
11057 /*igs_ps_validate_lgcy_pkg.set_msg('IGS_PS_NON_STD_USEC_NOT_IMP','RETENTION','LEGACY_TOKENS',FALSE);*/
11058 p_usec_ret_dtl_rec.status := 'E';
11059 END IF;
11060 CLOSE cur_check_ns_usec;
11061
11062
11063 --If formula method is 'P'/'M' and offset is greater than 100 then it is an error condition
11064 OPEN cur_check_formula(l_n_non_std_usec_rtn_id);
11065 FETCH cur_check_formula INTO l_c_var;
11066 IF cur_check_formula%FOUND THEN
11067 fnd_message.set_name ( 'IGS', 'IGS_PS_RTN_OFFSET_INVALID' );
11068 fnd_msg_pub.add;
11069 p_usec_ret_dtl_rec.status := 'E';
11070 END IF;
11071 CLOSE cur_check_formula;
11072
11073 --Either retention percent or retention amount can be provided not both
11074 IF p_usec_ret_dtl_rec.retention_percent IS NOT NULL AND p_usec_ret_dtl_rec.retention_amount IS NOT NULL THEN
11075 fnd_message.set_name ( 'IGS', 'IGS_PS_PER_AMT_BOTH_NOT_ALLOW' );
11076 fnd_msg_pub.add;
11077 p_usec_ret_dtl_rec.status := 'E';
11078 END IF;
11079
11080 --Either retention amount or percent are mandatory
11081 IF p_usec_ret_dtl_rec.retention_percent IS NULL AND p_usec_ret_dtl_rec.retention_amount IS NULL THEN
11082 fnd_message.set_name ( 'IGS', 'IGS_PS_PER_OR_AMT_MANDATORY' );
11083 fnd_msg_pub.add;
11084 p_usec_ret_dtl_rec.status := 'E';
11085 END IF;
11086
11087 END Business_validation;
11088
11089 BEGIN
11090
11091 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
11092 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.start_logging_for',
11093 'Unit Section Retention Details');
11094 END IF;
11095
11096 p_c_rec_status := 'S';
11097 FOR I in 1..p_usec_ret_dtl_tbl.LAST LOOP
11098 IF p_usec_ret_dtl_tbl.EXISTS(I) THEN
11099 -- Initialize the variable use to store the derived values.
11100 l_n_uoo_id := NULL;
11101 l_n_non_std_usec_rtn_id :=NULL;
11102 l_d_offset_date :=NULL;
11103
11104 p_usec_ret_dtl_tbl(I).status := 'S';
11105 p_usec_ret_dtl_tbl(I).msg_from := fnd_msg_pub.count_msg;
11106 trim_values(p_usec_ret_dtl_tbl(I));
11107 validate_parameters(p_usec_ret_dtl_tbl(I));
11108
11109 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11110 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.status_after_validate_parameters',
11111 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11112 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11113 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11114 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value
11115 ||' '||'Status:'||p_usec_ret_dtl_tbl(I).status);
11116 END IF;
11117
11118 IF p_usec_ret_dtl_tbl(I).status = 'S' THEN
11119 validate_derivation(p_usec_ret_dtl_tbl(I));
11120
11121 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11122 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.status_after_validate_derivation',
11123 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11124 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11125 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11126 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value
11127 ||' '||'Status:'||p_usec_ret_dtl_tbl(I).status);
11128 END IF;
11129
11130 END IF;
11131
11132 --Find out whether it is insert/update of record
11133 l_insert_update:='I';
11134 IF p_usec_ret_dtl_tbl(I).status = 'S' AND p_calling_context IN ('G','S') THEN
11135 l_insert_update:= check_insert_update(p_usec_ret_dtl_tbl(I));
11136
11137 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11138 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.status_after_check_insert_update',
11139 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11140 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11141 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11142 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value
11143 ||' '||'Status:'||p_usec_ret_dtl_tbl(I).status);
11144 END IF;
11145
11146 END IF;
11147
11148 IF p_usec_ret_dtl_tbl(I).status = 'S' AND p_calling_context = 'S' THEN
11149 IF igs_ps_validate_lgcy_pkg.check_import_allowed( l_n_uoo_id,NULL) = FALSE THEN
11150 fnd_message.set_name ( 'IGS', 'IGS_PS_REC_ABORTED_CANCELLED' );
11151 fnd_msg_pub.add;
11152 p_usec_ret_dtl_tbl(I).status := 'A';
11153 END IF;
11154
11155 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11156 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.status_after_check_import_allowed',
11157 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11158 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11159 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11160 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value
11161 ||' '||'Status:'||p_usec_ret_dtl_tbl(I).status);
11162 END IF;
11163
11164 END IF;
11165
11166 --Defaulting depending upon insert or update
11167 IF p_usec_ret_dtl_tbl(I).status = 'S' THEN
11168 assign_defaults(p_usec_ret_dtl_tbl(I),l_insert_update);
11169
11170 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11171 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.status_after_assign_defaults',
11172 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11173 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11174 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11175 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value
11176 ||' '||'Status:'||p_usec_ret_dtl_tbl(I).status);
11177 END IF;
11178
11179 END IF;
11180
11181 IF p_usec_ret_dtl_tbl(I).status = 'S' THEN
11182 validate_db_cons ( p_usec_ret_dtl_tbl(I),l_insert_update);
11183
11184 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11185 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.status_after_validate_db_cons',
11186 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11187 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11188 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11189 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value
11190 ||' '||'Status:'||p_usec_ret_dtl_tbl(I).status);
11191 END IF;
11192
11193 END IF;
11194
11195
11196 --Business validations
11197 IF p_usec_ret_dtl_tbl(I).status = 'S' THEN
11198 Business_validation(p_usec_ret_dtl_tbl(I),l_insert_update);
11199
11200 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11201 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.status_after_Business_validation',
11202 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11203 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11204 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11205 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value
11206 ||' '||'Status:'||p_usec_ret_dtl_tbl(I).status);
11207 END IF;
11208
11209 END IF;
11210
11211 IF p_usec_ret_dtl_tbl(I).status = 'S' THEN
11212
11213 IF l_insert_update = 'I' THEN
11214 INSERT INTO IGS_PS_NSUS_RTN_DTL(
11215 non_std_usec_rtn_dtl_id,
11216 non_std_usec_rtn_id,
11217 offset_value,
11218 retention_percent,
11219 retention_amount,
11220 offset_date,
11221 override_date_flag,
11222 created_by,
11223 creation_date,
11224 last_updated_by,
11225 last_update_date,
11226 last_update_login )
11227 VALUES (
11228 igs_ps_nsus_rtn_dtl_s.NEXTVAL,
11229 l_n_non_std_usec_rtn_id,
11230 p_usec_ret_dtl_tbl(I).offset_value,
11231 p_usec_ret_dtl_tbl(I).retention_percent,
11232 p_usec_ret_dtl_tbl(I).retention_amount,
11233 l_d_offset_date,
11234 p_usec_ret_dtl_tbl(I).override_date_flag,
11235 g_n_user_id,
11236 SYSDATE,
11237 g_n_user_id,
11238 SYSDATE,
11239 g_n_login_id);
11240
11241 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11242 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.Record_Inserted',
11243 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11244 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11245 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11246 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value);
11247 END IF;
11248
11249 ELSE
11250 UPDATE IGS_PS_NSUS_RTN_DTL SET
11251 retention_percent = p_usec_ret_dtl_tbl(I).retention_percent,
11252 retention_amount = p_usec_ret_dtl_tbl(I).retention_amount,
11253 offset_date = l_d_offset_date,
11254 override_date_flag = p_usec_ret_dtl_tbl(I).override_date_flag,
11255 last_updated_by = g_n_user_id ,
11256 last_update_date = sysdate ,
11257 last_update_login = g_n_login_id
11258 WHERE non_std_usec_rtn_id = l_n_non_std_usec_rtn_id AND offset_value = p_usec_ret_dtl_tbl(I).offset_value ;
11259
11260 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
11261 fnd_log.string( fnd_log.level_statement, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.Record_updated',
11262 'Unit code:'||p_usec_ret_dtl_tbl(I).unit_cd||' '||'Version number:'||p_usec_ret_dtl_tbl(I).version_number||' '||'teach_cal_alternate_code:'
11263 ||p_usec_ret_dtl_tbl(I).teach_cal_alternate_code||' '||'Location_cd:'||p_usec_ret_dtl_tbl(I).location_cd||' '||'Unit Class:'||
11264 p_usec_ret_dtl_tbl(I).unit_class||' '||'Fee type:'||p_usec_ret_dtl_tbl(I).fee_type||' '||'definition_level:'
11265 ||p_usec_ret_dtl_tbl(I).definition_level||' '||'Offset Value:'||p_usec_ret_dtl_tbl(I).offset_value);
11266 END IF;
11267
11268 END IF;
11269
11270
11271 END IF;
11272
11273
11274 IF p_usec_ret_dtl_tbl(I).status = 'S' THEN
11275 p_usec_ret_dtl_tbl(I).msg_from := NULL;
11276 p_usec_ret_dtl_tbl(I).msg_to := NULL;
11277 ELSIF p_usec_ret_dtl_tbl(I).status = 'A' THEN
11278 p_usec_ret_dtl_tbl(I).msg_from := p_usec_ret_dtl_tbl(I).msg_from + 1;
11279 p_usec_ret_dtl_tbl(I).msg_to := fnd_msg_pub.count_msg;
11280 ELSE
11281 p_c_rec_status := p_usec_ret_dtl_tbl(I).status;
11282 p_usec_ret_dtl_tbl(I).msg_from := p_usec_ret_dtl_tbl(I).msg_from+1;
11283 p_usec_ret_dtl_tbl(I).msg_to := fnd_msg_pub.count_msg;
11284 IF p_usec_ret_dtl_tbl(I).status = 'E' THEN
11285 RETURN;
11286 END IF;
11287 END IF;
11288
11289 END IF;
11290 END LOOP;
11291
11292 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
11293 fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_create_generic_pkg.create_usec_ret_dtl.after_import_status',p_c_rec_status);
11294 END IF;
11295
11296 END create_usec_ret_dtl;
11297
11298
11299 END igs_ps_create_generic_pkg;