[Home] [Help]
PACKAGE BODY: APPS.OTA_LP_MEMBER_SWI
Source
1 Package Body ota_lp_member_swi As
2 /* $Header: otlpmswi.pkb 120.0 2005/05/29 07:23 appldev noship $ */
3 --
4 -- Package variables
5 --
6 g_package varchar2(33) := 'ota_lp_member_swi.';
7 --
8 -- ----------------------------------------------------------------------------
9 -- |----------------------< create_learning_path_member >---------------------|
10 -- ----------------------------------------------------------------------------
11 PROCEDURE create_learning_path_member
12 (p_validate in number default hr_api.g_false_num
13 ,p_effective_date in date
14 ,p_business_group_id in number
15 ,p_learning_path_id in number
16 ,p_activity_version_id in number
17 ,p_course_sequence in number
18 ,p_duration in number default null
19 ,p_duration_units in varchar2 default null
20 ,p_attribute_category in varchar2 default null
21 ,p_attribute1 in varchar2 default null
22 ,p_attribute2 in varchar2 default null
23 ,p_attribute3 in varchar2 default null
24 ,p_attribute4 in varchar2 default null
25 ,p_attribute5 in varchar2 default null
26 ,p_attribute6 in varchar2 default null
27 ,p_attribute7 in varchar2 default null
28 ,p_attribute8 in varchar2 default null
29 ,p_attribute9 in varchar2 default null
30 ,p_attribute10 in varchar2 default null
31 ,p_attribute11 in varchar2 default null
32 ,p_attribute12 in varchar2 default null
33 ,p_attribute13 in varchar2 default null
34 ,p_attribute14 in varchar2 default null
35 ,p_attribute15 in varchar2 default null
36 ,p_attribute16 in varchar2 default null
37 ,p_attribute17 in varchar2 default null
38 ,p_attribute18 in varchar2 default null
39 ,p_attribute19 in varchar2 default null
40 ,p_attribute20 in varchar2 default null
41 ,p_learning_path_section_id in number
42 ,p_notify_days_before_target in number default null
43 ,p_learning_path_member_id in number
44 ,p_object_version_number out nocopy number
45 ,p_return_status out nocopy varchar2
46 ) is
47 --
48 -- Variables for API Boolean parameters
49 l_validate boolean;
50 --
51 -- Variables for IN/OUT parameters
52 --
53 -- Other variables
54 l_learning_path_member_id number;
55 l_proc varchar2(72) := g_package ||'create_learning_path_member'; Begin
56 hr_utility.set_location(' Entering:' || l_proc,10);
57 --
58 -- Issue a savepoint
59 --
60 savepoint create_lpm_swi;
61 --
62 -- Initialise Multiple Message Detection
63 --
64 hr_multi_message.enable_message_list;
65 --
66 -- Remember IN OUT parameter IN values
67 --
68 --
69 -- Convert constant values to their corresponding boolean value
70 --
71 l_validate :=
72 hr_api.constant_to_boolean
73 (p_constant_value => p_validate);
74 --
75 -- Register Surrogate ID or user key values
76 --
77 ota_lpm_ins.set_base_key_value
78 (p_learning_path_member_id => p_learning_path_member_id
79 );
80
81 -- Call API
82 --
83 ota_lp_member_api.create_learning_path_member
84 (p_validate => l_validate
85 ,p_effective_date => p_effective_date
86 ,p_business_group_id => p_business_group_id
87 ,p_learning_path_id => p_learning_path_id
88 ,p_activity_version_id => p_activity_version_id
89 ,p_course_sequence => p_course_sequence
90 ,p_duration => p_duration
91 ,p_duration_units => p_duration_units
92 ,p_attribute_category => p_attribute_category
93 ,p_attribute1 => p_attribute1
94 ,p_attribute2 => p_attribute2
95 ,p_attribute3 => p_attribute3
96 ,p_attribute4 => p_attribute4
97 ,p_attribute5 => p_attribute5
98 ,p_attribute6 => p_attribute6
99 ,p_attribute7 => p_attribute7
100 ,p_attribute8 => p_attribute8
101 ,p_attribute9 => p_attribute9
102 ,p_attribute10 => p_attribute10
103 ,p_attribute11 => p_attribute11
104 ,p_attribute12 => p_attribute12
105 ,p_attribute13 => p_attribute13
106 ,p_attribute14 => p_attribute14
107 ,p_attribute15 => p_attribute15
108 ,p_attribute16 => p_attribute16
109 ,p_attribute17 => p_attribute17
110 ,p_attribute18 => p_attribute18
111 ,p_attribute19 => p_attribute19
112 ,p_attribute20 => p_attribute20
113 ,p_learning_path_section_id => p_learning_path_section_id
114 ,p_notify_days_before_target => p_notify_days_before_target
115 ,p_learning_path_member_id => l_learning_path_member_id
116 ,p_object_version_number => p_object_version_number
117 );
118
119 /* Commenting out the call since this feature is no longer desirable in LP
120 * Enhancement
121 * */
122 /*
123 --
124 -- Check Duration is defined on Component
125 --
126 ota_lp_member_swi.check_lpm_duration(
127 p_learning_path_member_id => p_learning_path_member_id
128 ,p_duration => p_duration
129 ,p_learning_path_id => p_learning_path_id);
130 */
131 --
132 -- Convert API warning boolean parameter values to specific
133 -- messages and add them to Multiple Message List
134 --
135 --
136 -- Convert API non-warning boolean parameter values
137 --
138 --
139 -- Derive the API return status value based on whether
140 -- messages of any type exist in the Multiple Message List.
141 -- Also disable Multiple Message Detection.
142 --
143 p_return_status := hr_multi_message.get_return_status_disable;
144 hr_utility.set_location(' Leaving:' || l_proc,20);
145 --
146 exception
147 when hr_multi_message.error_message_exist then
148 --
149 -- Catch the Multiple Message List exception which
150 -- indicates API processing has been aborted because
151 -- at least one message exists in the list.
152 --
153 rollback to create_lpm_swi;
154 --
155 -- Reset IN OUT parameters and set OUT parameters
156 --
157 p_object_version_number := null;
158 p_return_status := hr_multi_message.get_return_status_disable;
159 hr_utility.set_location(' Leaving:' || l_proc, 30);
160 when others then
161 --
162 -- When Multiple Message Detection is enabled catch
163 -- any Application specific or other unexpected
164 -- exceptions. Adding appropriate details to the
165 -- Multiple Message List. Otherwise re-raise the
166 -- error.
167 --
168 rollback to create_lpm_swi;
169 if hr_multi_message.unexpected_error_add(l_proc) then
170 hr_utility.set_location(' Leaving:' || l_proc,40);
171 raise;
172 end if;
173 --
174 -- Reset IN OUT and set OUT parameters
175 --
176 p_object_version_number := null;
177 p_return_status := hr_multi_message.get_return_status_disable;
178 hr_utility.set_location(' Leaving:' || l_proc,50);
179 end create_learning_path_member;
180 -- ----------------------------------------------------------------------------
181 -- |----------------------< delete_learning_path_member >---------------------|
182 -- ----------------------------------------------------------------------------
183 PROCEDURE delete_learning_path_member
184 (p_validate in number default hr_api.g_false_num
185 ,p_learning_path_member_id in number
186 ,p_object_version_number in number
187 ,p_return_status out nocopy varchar2
188 ) is
189 --
190 -- Variables for API Boolean parameters
191 l_validate boolean;
192 --
193 -- Variables for IN/OUT parameters
194 --
195 -- Other variables
196 l_proc varchar2(72) := g_package ||'delete_learning_path_member';
197 Begin
198 hr_utility.set_location(' Entering:' || l_proc,10);
199 --
200 -- Issue a savepoint
201 --
202 savepoint delete_lpm_swi;
203 --
204 -- Initialise Multiple Message Detection
205 --
206 hr_multi_message.enable_message_list;
207 --
208 -- Remember IN OUT parameter IN values
209 --
210 --
211 -- Convert constant values to their corresponding boolean value
212 --
213 l_validate :=
214 hr_api.constant_to_boolean
215 (p_constant_value => p_validate);
216 --
217 -- Register Surrogate ID or user key values
218 --
219 --
220 -- Call API
221 --
222 ota_lp_member_api.delete_learning_path_member
223 (p_validate => l_validate
224 ,p_learning_path_member_id => p_learning_path_member_id
225 ,p_object_version_number => p_object_version_number
226 );
227 --
228 -- Convert API warning boolean parameter values to specific
229 -- messages and add them to Multiple Message List
230 --
231 --
232 -- Convert API non-warning boolean parameter values
233 --
234 --
235 -- Derive the API return status value based on whether
236 -- messages of any type exist in the Multiple Message List.
237 -- Also disable Multiple Message Detection.
238 --
239 p_return_status := hr_multi_message.get_return_status_disable;
240 hr_utility.set_location(' Leaving:' || l_proc,20);
241 --
242 exception
243 when hr_multi_message.error_message_exist then
244 --
245 -- Catch the Multiple Message List exception which
246 -- indicates API processing has been aborted because
247 -- at least one message exists in the list.
248 --
249 rollback to delete_lpm_swi;
250 --
251 -- Reset IN OUT parameters and set OUT parameters
252 --
253 p_return_status := hr_multi_message.get_return_status_disable;
254 hr_utility.set_location(' Leaving:' || l_proc, 30);
255 when others then
256 --
257 -- When Multiple Message Detection is enabled catch
258 -- any Application specific or other unexpected
259 -- exceptions. Adding appropriate details to the
260 -- Multiple Message List. Otherwise re-raise the
261 -- error.
262 --
263 rollback to delete_lpm_swi;
264 if hr_multi_message.unexpected_error_add(l_proc) then
265 hr_utility.set_location(' Leaving:' || l_proc,40);
266 raise;
267 end if;
268 --
269 -- Reset IN OUT and set OUT parameters
270 --
271 p_return_status := hr_multi_message.get_return_status_disable;
272 hr_utility.set_location(' Leaving:' || l_proc,50);
273 end delete_learning_path_member;
274 -- ----------------------------------------------------------------------------
275 -- |----------------------< update_learning_path_member >---------------------|
276 -- ----------------------------------------------------------------------------
277 PROCEDURE update_learning_path_member
278 (p_validate in number default hr_api.g_false_num
279 ,p_effective_date in date
280 ,p_learning_path_member_id in number
281 ,p_object_version_number in out nocopy number
282 ,p_activity_version_id in number default hr_api.g_number
283 ,p_course_sequence in number default hr_api.g_number
284 ,p_duration in number default hr_api.g_number
285 ,p_duration_units in varchar2 default hr_api.g_varchar2
286 ,p_attribute_category in varchar2 default hr_api.g_varchar2
287 ,p_attribute1 in varchar2 default hr_api.g_varchar2
288 ,p_attribute2 in varchar2 default hr_api.g_varchar2
289 ,p_attribute3 in varchar2 default hr_api.g_varchar2
290 ,p_attribute4 in varchar2 default hr_api.g_varchar2
291 ,p_attribute5 in varchar2 default hr_api.g_varchar2
292 ,p_attribute6 in varchar2 default hr_api.g_varchar2
293 ,p_attribute7 in varchar2 default hr_api.g_varchar2
294 ,p_attribute8 in varchar2 default hr_api.g_varchar2
295 ,p_attribute9 in varchar2 default hr_api.g_varchar2
296 ,p_attribute10 in varchar2 default hr_api.g_varchar2
297 ,p_attribute11 in varchar2 default hr_api.g_varchar2
298 ,p_attribute12 in varchar2 default hr_api.g_varchar2
299 ,p_attribute13 in varchar2 default hr_api.g_varchar2
300 ,p_attribute14 in varchar2 default hr_api.g_varchar2
301 ,p_attribute15 in varchar2 default hr_api.g_varchar2
302 ,p_attribute16 in varchar2 default hr_api.g_varchar2
303 ,p_attribute17 in varchar2 default hr_api.g_varchar2
304 ,p_attribute18 in varchar2 default hr_api.g_varchar2
305 ,p_attribute19 in varchar2 default hr_api.g_varchar2
306 ,p_attribute20 in varchar2 default hr_api.g_varchar2
307 ,p_notify_days_before_target in number default hr_api.g_number
308 ,p_return_status out nocopy varchar2
309 ) is
310 --
311 -- Variables for API Boolean parameters
312 l_validate boolean;
313 --
314 -- Variables for IN/OUT parameters
315 l_object_version_number number;
316 --
317 -- Other variables
318 l_proc varchar2(72) := g_package ||'update_learning_path_member';
319 Begin
320 hr_utility.set_location(' Entering:' || l_proc,10);
321 --
322 -- Issue a savepoint
323 --
324 savepoint update_lpm_swi;
325 --
326 -- Initialise Multiple Message Detection
327 --
328 hr_multi_message.enable_message_list;
329 --
330 -- Remember IN OUT parameter IN values
331 --
332 l_object_version_number := p_object_version_number;
333 --
334 -- Convert constant values to their corresponding boolean value
335 --
336 l_validate :=
337 hr_api.constant_to_boolean
338 (p_constant_value => p_validate);
339 --
340 -- Register Surrogate ID or user key values
341 --
342 --
343 -- Call API
344 --
345 ota_lp_member_api.update_learning_path_member
346 (p_validate => l_validate
347 ,p_effective_date => p_effective_date
348 ,p_learning_path_member_id => p_learning_path_member_id
349 ,p_object_version_number => p_object_version_number
350 ,p_activity_version_id => p_activity_version_id
351 ,p_course_sequence => p_course_sequence
352 ,p_duration => p_duration
353 ,p_duration_units => p_duration_units
354 ,p_attribute_category => p_attribute_category
355 ,p_attribute1 => p_attribute1
356 ,p_attribute2 => p_attribute2
357 ,p_attribute3 => p_attribute3
358 ,p_attribute4 => p_attribute4
359 ,p_attribute5 => p_attribute5
360 ,p_attribute6 => p_attribute6
361 ,p_attribute7 => p_attribute7
362 ,p_attribute8 => p_attribute8
363 ,p_attribute9 => p_attribute9
364 ,p_attribute10 => p_attribute10
365 ,p_attribute11 => p_attribute11
366 ,p_attribute12 => p_attribute12
367 ,p_attribute13 => p_attribute13
368 ,p_attribute14 => p_attribute14
369 ,p_attribute15 => p_attribute15
370 ,p_attribute16 => p_attribute16
371 ,p_attribute17 => p_attribute17
372 ,p_attribute18 => p_attribute18
373 ,p_attribute19 => p_attribute19
374 ,p_attribute20 => p_attribute20
375 ,p_notify_days_before_target => p_notify_days_before_target
376 );
377 --
378 -- Convert API warning boolean parameter values to specific
379 -- messages and add them to Multiple Message List
380 --
381 --
382 -- Convert API non-warning boolean parameter values
383 --
384 --
385 -- Derive the API return status value based on whether
386 -- messages of any type exist in the Multiple Message List.
387 -- Also disable Multiple Message Detection.
388 --
389 p_return_status := hr_multi_message.get_return_status_disable;
390 hr_utility.set_location(' Leaving:' || l_proc,20);
391 --
392 exception
393 when hr_multi_message.error_message_exist then
394 --
395 -- Catch the Multiple Message List exception which
396 -- indicates API processing has been aborted because
397 -- at least one message exists in the list.
398 --
399 rollback to update_lpm_swi;
400 --
401 -- Reset IN OUT parameters and set OUT parameters
402 --
403 p_object_version_number := l_object_version_number;
404 p_return_status := hr_multi_message.get_return_status_disable;
405 hr_utility.set_location(' Leaving:' || l_proc, 30);
406 when others then
407 --
408 -- When Multiple Message Detection is enabled catch
409 -- any Application specific or other unexpected
410 -- exceptions. Adding appropriate details to the
411 -- Multiple Message List. Otherwise re-raise the
412 -- error.
413 --
414 rollback to update_lpm_swi;
415 if hr_multi_message.unexpected_error_add(l_proc) then
416 hr_utility.set_location(' Leaving:' || l_proc,40);
417 raise;
418 end if;
419 --
420 -- Reset IN OUT and set OUT parameters
421 --
422 p_object_version_number := l_object_version_number;
423 p_return_status := hr_multi_message.get_return_status_disable;
424 hr_utility.set_location(' Leaving:' || l_proc,50);
425 end update_learning_path_member;
426
427
428 FUNCTION check_course_exists
429 ( p_learning_path_id IN NUMBER
430 ,p_activity_version_id IN NUMBER
431 ) return VARCHAR2 IS
432
433 cursor csr_course is
434 select NULL
435 from ota_learning_path_members lpm
436 where lpm.learning_path_id = p_learning_path_id
437 and lpm.activity_version_id = p_activity_version_id;
438
439 l_exists varchar2(1) := 'N';
440 begin
441 open csr_course;
442 fetch csr_course into l_exists;
443 if csr_course%NOTFOUND then
444 l_exists := 'N';
445 else
446 l_exists := 'Y';
447 end if;
448 close csr_course;
449
450 return l_exists;
451 end check_course_exists;
452
453
454 PROCEDURE check_all_duration(
455 p_learning_path_id IN NUMBER
456 ,p_return_status OUT NOCOPY VARCHAR2
457 ,p_max_duration OUT NOCOPY NUMBER)
458 IS
459 CURSOR csr_chk_duration IS
460 SELECT count(learning_path_member_id) lpm_num,
461 count(duration) duration_num,
462 max(duration) max_duration
463 FROM ota_learning_path_members
464 WHERE learning_path_id = p_learning_path_id;
465
466 no_of_lpms NUMBER;
467 no_of_durations NUMBER;
468 max_duration NUMBER;
469 BEGIN
470 OPEN csr_chk_duration;
471 FETCH csr_chk_duration INTO no_of_lpms, no_of_durations, max_duration;
472 IF csr_chk_duration%NOTFOUND THEN
473 p_return_status := 'S';
474 p_max_duration := NULL;
475 ELSIF no_of_durations = 0 THEN
476 p_return_status := 'S';
477 p_max_duration := NULL;
478 ELSIF no_of_durations = no_of_lpms OR no_of_durations < no_of_lpms THEN
479 p_return_status := 'S';
480 p_max_duration := max_duration;
481 ELSE
482 p_return_status := 'E';
483 p_max_duration := NULL;
484 END IF;
485 CLOSE csr_chk_duration;
486
487 END check_all_duration;
488 /* Commenting out procedure for Task#428905
489 PROCEDURE check_lpm_duration(
490 p_learning_path_member_id IN NUMBER
491 ,p_duration IN NUMBER
492 ,p_learning_path_id IN NUMBER)
493 IS
494 l_return_status VARCHAR2(30);
495 l_max_duration NUMBER;
496 l_proc VARCHAR2(72) := g_package|| 'check_lpm_duration';
497 BEGIN
498 hr_utility.set_location(' Step:'|| l_proc, 10);
499 ota_lp_member_swi.check_all_duration(
500 p_learning_path_id => p_learning_path_id
501 ,p_return_status => l_return_status
502 ,p_max_duration => l_max_duration
503 );
504 hr_utility.set_location(' Step:'|| l_proc, 20);
505 IF l_return_status = 'E' THEN
506 hr_utility.set_location(' Step:'|| l_proc, 30);
507 fnd_message.set_name('OTA', 'OTA_443100_LPM_DURATION_ERROR');
508 fnd_message.raise_error;
509 END IF;
510 hr_utility.set_location(' Leaving:'||l_proc, 40);
511 EXCEPTION
512
513 WHEN app_exception.application_exception THEN
514
515 IF hr_multi_message.exception_add
516 (p_associated_column1 => 'OTA_LEARNING_PATH_MEMBERS.DURATION') THEN
517
518 hr_utility.set_location(' Leaving:'||l_proc, 42);
519 RAISE;
520
521 END IF;
522
523 hr_utility.set_location(' Leaving:'||l_proc, 44);
524 END check_lpm_duration;
525 */
526 end ota_lp_member_swi;