DBA Data[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;