DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_PERF_MGMT_PLAN_API

Source


1 Package Body HR_PERF_MGMT_PLAN_API as
2 /* $Header: pepmpapi.pkb 120.5.12020000.1 2012/06/29 01:50:17 appldev ship $ */
3 --
4 -- Package Variables
5 --
6 g_package  varchar2(33) := '  hr_perf_mgmt_plan_api.';
7 g_debug    boolean      := hr_utility.debug_enabled;
8 --
9 -- ----------------------------------------------------------------------------
10 -- |-------------------------< create_perf_mgmt_plan >------------------------|
11 -- ----------------------------------------------------------------------------
12 --
13 procedure create_perf_mgmt_plan
14   (p_validate                      in   boolean    default false
15   ,p_effective_date                in   date
16   ,p_plan_name                     in   varchar2
17   ,p_administrator_person_id       in   number
18   ,p_previous_plan_id              in   number     default null
19   ,p_start_date                    in   date
20   ,p_end_date                      in   date
21   ,p_hierarchy_type_code           in   varchar2   default null
22   ,p_supervisor_id                 in   number     default null
23   ,p_supervisor_assignment_id      in   number     default null
24   ,p_organization_structure_id     in   number     default null
25   ,p_org_structure_version_id      in   number     default null
26   ,p_top_organization_id           in   number     default null
27   ,p_position_structure_id         in   number     default null
28   ,p_pos_structure_version_id      in   number     default null
29   ,p_top_position_id               in   number     default null
30   ,p_hierarchy_levels              in   number     default null
31   ,p_automatic_enrollment_flag     in   varchar2   default 'N'
32   ,p_assignment_types_code         in   varchar2   default 'E'
33   ,p_primary_asg_only_flag         in   varchar2   default 'Y'
34   ,p_include_obj_setting_flag      in   varchar2   default 'Y'
35   ,p_obj_setting_start_date        in   date       default null
36   ,p_obj_setting_deadline          in   date       default null
37   ,p_obj_set_outside_period_flag   in   varchar2   default 'N'
38   ,p_method_code                   in   varchar2   default 'CAS'
39   ,p_notify_population_flag        in   varchar2   default 'Y'
40   ,p_automatic_allocation_flag     in   varchar2   default 'N'
41   ,p_copy_past_objectives_flag     in   varchar2   default 'N'
42   ,p_sharing_alignment_task_flag   in   varchar2   default 'Y'
43   ,p_include_appraisals_flag       in   varchar2   default 'Y'
44   ,p_change_sc_status_flag  in   varchar2   default 'N'
45   ,p_attribute_category            in   varchar2   default null
46   ,p_attribute1                    in   varchar2   default null
47   ,p_attribute2                    in   varchar2   default null
48   ,p_attribute3                    in   varchar2   default null
49   ,p_attribute4                    in   varchar2   default null
50   ,p_attribute5                    in   varchar2   default null
51   ,p_attribute6                    in   varchar2   default null
52   ,p_attribute7                    in   varchar2   default null
53   ,p_attribute8                    in   varchar2   default null
54   ,p_attribute9                    in   varchar2   default null
55   ,p_attribute10                   in   varchar2   default null
56   ,p_attribute11                   in   varchar2   default null
57   ,p_attribute12                   in   varchar2   default null
58   ,p_attribute13                   in   varchar2   default null
59   ,p_attribute14                   in   varchar2   default null
60   ,p_attribute15                   in   varchar2   default null
61   ,p_attribute16                   in   varchar2   default null
62   ,p_attribute17                   in   varchar2   default null
63   ,p_attribute18                   in   varchar2   default null
64   ,p_attribute19                   in   varchar2   default null
65   ,p_attribute20                   in   varchar2   default null
66   ,p_attribute21                   in   varchar2   default null
67   ,p_attribute22                   in   varchar2   default null
68   ,p_attribute23                   in   varchar2   default null
69   ,p_attribute24                   in   varchar2   default null
70   ,p_attribute25                   in   varchar2   default null
71   ,p_attribute26                   in   varchar2   default null
72   ,p_attribute27                   in   varchar2   default null
73   ,p_attribute28                   in   varchar2   default null
74   ,p_attribute29                   in   varchar2   default null
75   ,p_attribute30                   in   varchar2   default null
76   ,p_plan_id                          out nocopy   number
77   ,p_object_version_number            out nocopy   number
78   ,p_status_code                      out nocopy   varchar2
79   ,p_duplicate_name_warning           out nocopy   boolean
80   ,p_no_life_events_warning           out nocopy   boolean
81   ,p_update_library_objectives in varchar2  default null    -- 8740021 bug fix
82   ,p_automatic_approval_flag in varchar2  default null
83   ) is
84   --
85   -- Declare cursors and local variables
86   --
87     l_proc                         varchar2(72) := g_package||'create_perf_mgmt_plan';
88     l_effective_date               date;
89     l_start_date                   date;
90     l_end_date                     date;
91     l_obj_setting_start_date       date;
92     l_obj_setting_deadline         date;
93     l_object_version_number        number;
94     l_plan_id                      number;
95     l_status_code                  per_perf_mgmt_plans.status_code%TYPE;
96     l_duplicate_name_warning       boolean := false;
97     l_no_life_events_warning       boolean := false;
98 
99   begin
100 
101   IF g_debug THEN
102 
103     hr_utility.set_location('Entering:'|| l_proc, 10);
104 
105     hr_utility.trace(' ');
106     hr_utility.trace(' --------------------------------'||
107                      '---------------------------------');
108     hr_utility.trace(' IN / IN OUT PARAMETER           '||
109                      ' VALUE');
110     hr_utility.trace(' --------------------------------'||
111                      '+--------------------------------');
112     hr_utility.trace('  p_effective_date                 '||
113                         to_char(p_effective_date));
114     hr_utility.trace('  p_plan_name                      '||
115                         p_plan_name);
116     hr_utility.trace('  p_administrator_person_id        '||
117                         to_char(p_administrator_person_id));
118     hr_utility.trace('  p_previous_plan_id               '||
119                         to_char(p_previous_plan_id));
120     hr_utility.trace('  p_start_date                     '||
121                         to_char(p_start_date));
122     hr_utility.trace('  p_end_date                       '||
123                         to_char(p_end_date));
124     hr_utility.trace('  p_hierarchy_type_code            '||
125                         p_hierarchy_type_code);
126     hr_utility.trace('  p_supervisor_id                  '||
127                         to_char(p_supervisor_id));
128     hr_utility.trace('  p_supervisor_assignment_id       '||
129                         to_char(p_supervisor_assignment_id));
130     hr_utility.trace('  p_organization_structure_id      '||
131                         to_char(p_organization_structure_id));
132     hr_utility.trace('  p_org_structure_version_id       '||
133                         to_char(p_org_structure_version_id));
134     hr_utility.trace('  p_top_organization_id            '||
135                         to_char(p_top_organization_id));
136     hr_utility.trace('  p_position_structure_id          '||
137                         to_char(p_position_structure_id));
138     hr_utility.trace('  p_pos_structure_version_id       '||
139                         to_char(p_pos_structure_version_id));
140     hr_utility.trace('  p_top_position_id                '||
141                         to_char(p_top_position_id));
142     hr_utility.trace('  p_hierarchy_levels               '||
143                         to_char(p_hierarchy_levels));
144     hr_utility.trace('  p_automatic_enrollment_flag      '||
145                         p_automatic_enrollment_flag);
146     hr_utility.trace('  p_assignment_types_code          '||
147                         p_assignment_types_code);
148     hr_utility.trace('  p_primary_asg_only_flag          '||
149                         p_primary_asg_only_flag);
150     hr_utility.trace('  p_include_obj_setting_flag       '||
151                         p_include_obj_setting_flag);
152     hr_utility.trace('  p_obj_setting_start_date         '||
153                         to_char(p_obj_setting_start_date));
154     hr_utility.trace('  p_obj_setting_deadline           '||
155                         to_char(p_obj_setting_deadline));
156     hr_utility.trace('  p_obj_set_outside_period_flag    '||
157                         p_obj_set_outside_period_flag);
158     hr_utility.trace('  p_method_code                    '||
159                         p_method_code);
160     hr_utility.trace('  p_notify_population_flag         '||
161                         p_notify_population_flag);
162     hr_utility.trace('  p_automatic_allocation_flag      '||
163                         p_automatic_allocation_flag);
164     hr_utility.trace('  p_copy_past_objectives_flag      '||
165                         p_copy_past_objectives_flag);
166     hr_utility.trace('  p_sharing_alignment_task_flag    '||
167                         p_sharing_alignment_task_flag);
168     hr_utility.trace('  p_include_appraisals_flag        '||
169                         p_include_appraisals_flag);
170     hr_utility.trace('  p_change_sc_status_flag   '||
171                         p_change_sc_status_flag);
172     hr_utility.trace(' --------------------------------'||
173                      '---------------------------------');
174     hr_utility.trace(' ');
175 
176   END IF;
177 
178   --
179   -- Issue a savepoint
180   --
181      savepoint create_perf_mgmt_plan;
182 
183   --
184   -- Truncate the time portion from all IN date parameters
185   --
186   l_effective_date         := trunc(p_effective_date);
187   l_start_date             := trunc(p_start_date);
188   l_end_date               := trunc(p_end_date);
189   l_obj_setting_start_date := trunc(p_obj_setting_start_date);
190   l_obj_setting_deadline   := trunc(p_obj_setting_deadline);
191 
192   --
193   -- Call Before Process User Hook
194   --
195  begin
196    hr_perf_mgmt_plan_bk1.create_perf_mgmt_plan_b
197      (p_effective_date                => l_effective_date
198      ,p_plan_name                     => p_plan_name
199      ,p_administrator_person_id       => p_administrator_person_id
200      ,p_previous_plan_id              => p_previous_plan_id
201      ,p_start_date                    => l_start_date
202      ,p_end_date                      => l_end_date
203      ,p_hierarchy_type_code           => p_hierarchy_type_code
204      ,p_supervisor_id                 => p_supervisor_id
205      ,p_supervisor_assignment_id      => p_supervisor_assignment_id
206      ,p_organization_structure_id     => p_organization_structure_id
207      ,p_org_structure_version_id      => p_org_structure_version_id
208      ,p_top_organization_id           => p_top_organization_id
209      ,p_position_structure_id         => p_position_structure_id
210      ,p_pos_structure_version_id      => p_pos_structure_version_id
211      ,p_top_position_id               => p_top_position_id
212      ,p_hierarchy_levels              => p_hierarchy_levels
213      ,p_automatic_enrollment_flag     => p_automatic_enrollment_flag
214      ,p_assignment_types_code         => p_assignment_types_code
215      ,p_primary_asg_only_flag         => p_primary_asg_only_flag
216      ,p_include_obj_setting_flag      => p_include_obj_setting_flag
217      ,p_obj_setting_start_date        => l_obj_setting_start_date
218      ,p_obj_setting_deadline          => l_obj_setting_deadline
219      ,p_obj_set_outside_period_flag   => p_obj_set_outside_period_flag
220      ,p_method_code                   => p_method_code
221      ,p_notify_population_flag        => p_notify_population_flag
222      ,p_automatic_allocation_flag     => p_automatic_allocation_flag
223      ,p_copy_past_objectives_flag     => p_copy_past_objectives_flag
224      ,p_sharing_alignment_task_flag   => p_sharing_alignment_task_flag
225      ,p_include_appraisals_flag       => p_include_appraisals_flag
226      ,p_change_sc_status_flag  => p_change_sc_status_flag
227      ,p_attribute_category            => p_attribute_category
228      ,p_attribute1                    => p_attribute1
229      ,p_attribute2                    => p_attribute2
230      ,p_attribute3                    => p_attribute3
231      ,p_attribute4                    => p_attribute4
232      ,p_attribute5                    => p_attribute5
233      ,p_attribute6                    => p_attribute6
234      ,p_attribute7                    => p_attribute7
235      ,p_attribute8                    => p_attribute8
236      ,p_attribute9                    => p_attribute9
237      ,p_attribute10                   => p_attribute10
238      ,p_attribute11                   => p_attribute11
239      ,p_attribute12                   => p_attribute12
240      ,p_attribute13                   => p_attribute13
241      ,p_attribute14                   => p_attribute14
242      ,p_attribute15                   => p_attribute15
243      ,p_attribute16                   => p_attribute16
244      ,p_attribute17                   => p_attribute17
245      ,p_attribute18                   => p_attribute18
246      ,p_attribute19                   => p_attribute19
247      ,p_attribute20                   => p_attribute20
248      ,p_attribute21                   => p_attribute21
249      ,p_attribute22                   => p_attribute22
250      ,p_attribute23                   => p_attribute23
251      ,p_attribute24                   => p_attribute24
252      ,p_attribute25                   => p_attribute25
253      ,p_attribute26                   => p_attribute26
254      ,p_attribute27                   => p_attribute27
255      ,p_attribute28                   => p_attribute28
256      ,p_attribute29                   => p_attribute29
257      ,p_attribute30                   => p_attribute30
258     ,p_update_library_objectives    => p_update_library_objectives  -- 8740021 bug fix
259     ,p_automatic_approval_flag      => p_automatic_approval_flag
260     );
261 
262    exception
263      when hr_api.cannot_find_prog_unit then
264      hr_api.cannot_find_prog_unit_error
265       (p_module_name => 'CREATE_PERF_MGMT_PLAN',
266        p_hook_type   => 'BP'
267       );
268   end;
269   --
270   -- End of Before Process User Hook call
271   --
272   IF g_debug THEN hr_utility.set_location(l_proc, 30); END IF;
273 
274   --
275   -- Call the row handler insert
276   --
277   per_pmp_ins.ins
278   (p_effective_date                => l_effective_date
279   ,p_plan_name                     => p_plan_name
280   ,p_administrator_person_id       => p_administrator_person_id
281   ,p_previous_plan_id              => p_previous_plan_id
282   ,p_start_date                    => l_start_date
283   ,p_end_date                      => l_end_date
284   ,p_hierarchy_type_code           => p_hierarchy_type_code
285   ,p_supervisor_id                 => p_supervisor_id
286   ,p_supervisor_assignment_id	   => p_supervisor_assignment_id
287   ,p_organization_structure_id     => p_organization_structure_id
288   ,p_org_structure_version_id      => p_org_structure_version_id
289   ,p_top_organization_id           => p_top_organization_id
290   ,p_position_structure_id         => p_position_structure_id
291   ,p_pos_structure_version_id      => p_pos_structure_version_id
292   ,p_top_position_id               => p_top_position_id
293   ,p_hierarchy_levels              => p_hierarchy_levels
294   ,p_automatic_enrollment_flag     => p_automatic_enrollment_flag
295   ,p_assignment_types_code         => p_assignment_types_code
296   ,p_primary_asg_only_flag         => p_primary_asg_only_flag
297   ,p_include_obj_setting_flag      => p_include_obj_setting_flag
298   ,p_obj_setting_start_date        => l_obj_setting_start_date
299   ,p_obj_setting_deadline          => l_obj_setting_deadline
300   ,p_obj_set_outside_period_flag   => p_obj_set_outside_period_flag
301   ,p_method_code                   => p_method_code
302   ,p_notify_population_flag        => p_notify_population_flag
303   ,p_automatic_allocation_flag     => p_automatic_allocation_flag
304   ,p_copy_past_objectives_flag     => p_copy_past_objectives_flag
305   ,p_sharing_alignment_task_flag   => p_sharing_alignment_task_flag
306   ,p_include_appraisals_flag       => p_include_appraisals_flag
307   ,p_change_sc_status_flag  => p_change_sc_status_flag
308   ,p_attribute_category            => p_attribute_category
309   ,p_attribute1                    => p_attribute1
310   ,p_attribute2                    => p_attribute2
311   ,p_attribute3                    => p_attribute3
312   ,p_attribute4                    => p_attribute4
313   ,p_attribute5                    => p_attribute5
314   ,p_attribute6                    => p_attribute6
315   ,p_attribute7                    => p_attribute7
316   ,p_attribute8                    => p_attribute8
317   ,p_attribute9                    => p_attribute9
318   ,p_attribute10                   => p_attribute10
319   ,p_attribute11                   => p_attribute11
320   ,p_attribute12                   => p_attribute12
321   ,p_attribute13                   => p_attribute13
322   ,p_attribute14                   => p_attribute14
323   ,p_attribute15                   => p_attribute15
324   ,p_attribute16                   => p_attribute16
325   ,p_attribute17                   => p_attribute17
326   ,p_attribute18                   => p_attribute18
327   ,p_attribute19                   => p_attribute19
328   ,p_attribute20                   => p_attribute20
329   ,p_attribute21                   => p_attribute21
330   ,p_attribute22                   => p_attribute22
331   ,p_attribute23                   => p_attribute23
332   ,p_attribute24                   => p_attribute24
333   ,p_attribute25                   => p_attribute25
334   ,p_attribute26                   => p_attribute26
335   ,p_attribute27                   => p_attribute27
336   ,p_attribute28                   => p_attribute28
337   ,p_attribute29                   => p_attribute29
338   ,p_attribute30                   => p_attribute30
339   ,p_plan_id                      =>  l_plan_id
340   ,p_object_version_number         => l_object_version_number
341   ,p_status_code                   => l_status_code
342   ,p_duplicate_name_warning        => l_duplicate_name_warning
343   ,p_no_life_events_warning        => p_no_life_events_warning
344   ,p_update_library_objectives    => p_update_library_objectives  -- 8740021 bug fix
345   ,p_automatic_approval_flag      => p_automatic_approval_flag
346   );
347 
348   IF g_debug THEN hr_utility.set_location(l_proc, 30); END IF;
349 
350    --
351    -- Call After Process User Hook
352    --
353 
354    begin
355 
356   hr_perf_mgmt_plan_bk1.create_perf_mgmt_plan_a
357   (p_effective_date                => l_effective_date
358   ,p_plan_id                       => l_plan_id
359   ,p_plan_name                     => p_plan_name
360   ,p_administrator_person_id       => p_administrator_person_id
361   ,p_previous_plan_id              => p_previous_plan_id
362   ,p_start_date                    => l_start_date
363   ,p_end_date                      => l_end_date
364   ,p_hierarchy_type_code           => p_hierarchy_type_code
365   ,p_supervisor_id                 => p_supervisor_id
366   ,p_supervisor_assignment_id      => p_supervisor_assignment_id
367   ,p_organization_structure_id     => p_organization_structure_id
368   ,p_org_structure_version_id      => p_org_structure_version_id
369   ,p_top_organization_id           => p_top_organization_id
370   ,p_position_structure_id         => p_position_structure_id
371   ,p_pos_structure_version_id      => p_pos_structure_version_id
372   ,p_top_position_id               => p_top_position_id
373   ,p_hierarchy_levels              => p_hierarchy_levels
374   ,p_automatic_enrollment_flag     => p_automatic_enrollment_flag
375   ,p_assignment_types_code         => p_assignment_types_code
376   ,p_primary_asg_only_flag         => p_primary_asg_only_flag
377   ,p_include_obj_setting_flag      => p_include_obj_setting_flag
378   ,p_obj_setting_start_date        => l_obj_setting_start_date
379   ,p_obj_setting_deadline          => l_obj_setting_deadline
380   ,p_obj_set_outside_period_flag   => p_obj_set_outside_period_flag
381   ,p_method_code                   => p_method_code
382   ,p_notify_population_flag        => p_notify_population_flag
383   ,p_automatic_allocation_flag     => p_automatic_allocation_flag
384   ,p_copy_past_objectives_flag     => p_copy_past_objectives_flag
385   ,p_sharing_alignment_task_flag   => p_sharing_alignment_task_flag
386   ,p_include_appraisals_flag       => p_include_appraisals_flag
387   ,p_change_sc_status_flag  => p_change_sc_status_flag
388   ,p_attribute_category            => p_attribute_category
389   ,p_attribute1                    => p_attribute1
390   ,p_attribute2                    => p_attribute2
391   ,p_attribute3                    => p_attribute3
392   ,p_attribute4                    => p_attribute4
393   ,p_attribute5                    => p_attribute5
394   ,p_attribute6                    => p_attribute6
395   ,p_attribute7                    => p_attribute7
396   ,p_attribute8                    => p_attribute8
397   ,p_attribute9                    => p_attribute9
398   ,p_attribute10                   => p_attribute10
399   ,p_attribute11                   => p_attribute11
400   ,p_attribute12                   => p_attribute12
401   ,p_attribute13                   => p_attribute13
402   ,p_attribute14                   => p_attribute14
403   ,p_attribute15                   => p_attribute15
404   ,p_attribute16                   => p_attribute16
405   ,p_attribute17                   => p_attribute17
406   ,p_attribute18                   => p_attribute18
407   ,p_attribute19                   => p_attribute19
408   ,p_attribute20                   => p_attribute20
409   ,p_attribute21                   => p_attribute21
410   ,p_attribute22                   => p_attribute22
411   ,p_attribute23                   => p_attribute23
412   ,p_attribute24                   => p_attribute24
413   ,p_attribute25                   => p_attribute25
414   ,p_attribute26                   => p_attribute26
415   ,p_attribute27                   => p_attribute27
416   ,p_attribute28                   => p_attribute28
417   ,p_attribute29                   => p_attribute29
418   ,p_attribute30                   => p_attribute30
419   ,p_object_version_number         => l_object_version_number
420   ,p_status_code                   => l_status_code
421   ,p_duplicate_name_warning        => l_duplicate_name_warning
422   ,p_no_life_events_warning        => l_no_life_events_warning
423   ,p_update_library_objectives    => p_update_library_objectives  -- 8740021 bug fix
424   ,p_automatic_approval_flag      => p_automatic_approval_flag
425   );
426 
427   exception
428    when hr_api.cannot_find_prog_unit then
429    hr_api.cannot_find_prog_unit_error
430     (p_module_name => 'CREATE_PERF_MGMT_PLAN',
431      p_hook_type   => 'AP'
432     );
433 
434   end;
435 
436   IF g_debug THEN hr_utility.set_location(l_proc, 50); END IF;
437 
438   --
439   -- End of After Process User Hook call
440   --
441   -- When in validation only mode raise the Validate_Enabled exception
442   --
443   if p_validate then
444     raise hr_api.validate_enabled;
445   end if;
446   --
447   --
448   -- Set all IN OUT and OUT parameters with out values
449   --
450   p_plan_id                     := l_plan_id;
451   p_status_code                 := l_status_code;
452   p_object_version_number       := l_object_version_number;
453   p_duplicate_name_warning      := l_duplicate_name_warning;
454   p_no_life_events_warning      := l_no_life_events_warning;
455 
456 
457   IF g_debug THEN
458 
459     hr_utility.trace(' ');
460     hr_utility.trace('+--------------------------------'||
461                      '---------------------------------');
462     hr_utility.trace(' IN OUT / OUT PARAMETER          '||
463                      ' VALUE');
464     hr_utility.trace(' --------------------------------'||
465                      '---------------------------------');
466     hr_utility.trace('  p_plan_id                      '||
467                         to_char(p_plan_id));
468     hr_utility.trace('  p_object_version_number        '||
469                         to_char(p_object_version_number));
470     hr_utility.trace('  p_status_code                  '||
471                         p_status_code);
472     IF p_duplicate_name_warning THEN
473       hr_utility.trace('  p_duplicate_name_warning       '||
474                           'TRUE');
475     ELSE
476       hr_utility.trace('  p_duplicate_name_warning       '||
477                           'FALSE');
478     END IF;
479     IF p_no_life_events_warning THEN
480       hr_utility.trace('  p_no_life_events_warning       '||
481                           'TRUE');
482     ELSE
483       hr_utility.trace('  p_no_life_events_warning       '||
484                           'FALSE');
485     END IF;
486     hr_utility.trace(' --------------------------------'||
487                      '---------------------------------');
488     hr_utility.trace(' ');
489     hr_utility.set_location(' Leaving:'||l_proc, 970);
490 
491   END IF;
492 
493 exception
494   when hr_api.validate_enabled then
495     --
496     -- As the Validate_Enabled exception has been raised
497     -- we must rollback to the savepoint
498     --
499     ROLLBACK TO create_perf_mgmt_plan;
500     --
501     --  Reset IN OUT parameters and set OUT parameters
502     -- (Any key or derived arguments must be set to null
503     -- when validation only mode is being used.)
504     --
505     p_plan_id           	  := null;
506     p_object_version_number  	  := null;
507     p_duplicate_name_warning 	  := l_duplicate_name_warning;
508     p_no_life_events_warning      := l_no_life_events_warning;
509 
510     --
511     hr_utility.set_location(' Leaving:'||l_proc, 980);
512     --
513   when others then
514     --
515     -- A validation or unexpected error has occured
516     --
517     rollback to create_perf_mgmt_plan;
518     --
519     -- Reset IN OUT parameters and set all
520     -- OUT parameters, including warnings, to null
521     --
522     p_plan_id               	  := null;
523     p_object_version_number  	  := null;
524     p_duplicate_name_warning 	  := null;
525     p_no_life_events_warning      := null;
526 
527     hr_utility.set_location(' Leaving:'||l_proc, 990);
528     raise;
529 
530   end create_perf_mgmt_plan;
531 --
532 -- ----------------------------------------------------------------------------
533 -- |-------------------------< update_perf_mgmt_plan >------------------------|
534 -- ----------------------------------------------------------------------------
535 --
536 procedure update_perf_mgmt_plan
537   (p_validate                      in   boolean    default false
538   ,p_effective_date                in   date
539   ,p_plan_id                       in   number
540   ,p_plan_name                     in   varchar2   default hr_api.g_varchar2
541   ,p_administrator_person_id       in   number     default hr_api.g_number
542   ,p_previous_plan_id              in   number     default hr_api.g_number
543   ,p_start_date                    in   date       default hr_api.g_date
544   ,p_end_date                      in   date       default hr_api.g_date
545   ,p_hierarchy_type_code           in   varchar2   default hr_api.g_varchar2
546   ,p_supervisor_id                 in   number     default hr_api.g_number
547   ,p_supervisor_assignment_id      in   number     default hr_api.g_number
548   ,p_organization_structure_id     in   number     default hr_api.g_number
549   ,p_org_structure_version_id      in   number     default hr_api.g_number
550   ,p_top_organization_id           in   number     default hr_api.g_number
551   ,p_position_structure_id         in   number     default hr_api.g_number
552   ,p_pos_structure_version_id      in   number     default hr_api.g_number
553   ,p_top_position_id               in   number     default hr_api.g_number
554   ,p_hierarchy_levels              in   number     default hr_api.g_number
555   ,p_automatic_enrollment_flag     in   varchar2   default hr_api.g_varchar2
556   ,p_assignment_types_code         in   varchar2   default hr_api.g_varchar2
557   ,p_primary_asg_only_flag         in   varchar2   default hr_api.g_varchar2
558   ,p_include_obj_setting_flag      in   varchar2   default hr_api.g_varchar2
559   ,p_obj_setting_start_date        in   date       default hr_api.g_date
560   ,p_obj_setting_deadline          in   date       default hr_api.g_date
561   ,p_obj_set_outside_period_flag   in   varchar2   default hr_api.g_varchar2
562   ,p_method_code                   in   varchar2   default hr_api.g_varchar2
563   ,p_notify_population_flag        in   varchar2   default hr_api.g_varchar2
564   ,p_automatic_allocation_flag     in   varchar2   default hr_api.g_varchar2
565   ,p_copy_past_objectives_flag     in   varchar2   default hr_api.g_varchar2
566   ,p_sharing_alignment_task_flag   in   varchar2   default hr_api.g_varchar2
567   ,p_include_appraisals_flag       in   varchar2   default hr_api.g_varchar2
568   ,p_change_sc_status_flag  in   varchar2   default hr_api.g_varchar2
569   ,p_attribute_category            in   varchar2   default hr_api.g_varchar2
570   ,p_attribute1                    in   varchar2   default hr_api.g_varchar2
571   ,p_attribute2                    in   varchar2   default hr_api.g_varchar2
572   ,p_attribute3                    in   varchar2   default hr_api.g_varchar2
573   ,p_attribute4                    in   varchar2   default hr_api.g_varchar2
574   ,p_attribute5                    in   varchar2   default hr_api.g_varchar2
575   ,p_attribute6                    in   varchar2   default hr_api.g_varchar2
576   ,p_attribute7                    in   varchar2   default hr_api.g_varchar2
577   ,p_attribute8                    in   varchar2   default hr_api.g_varchar2
578   ,p_attribute9                    in   varchar2   default hr_api.g_varchar2
579   ,p_attribute10                   in   varchar2   default hr_api.g_varchar2
580   ,p_attribute11                   in   varchar2   default hr_api.g_varchar2
581   ,p_attribute12                   in   varchar2   default hr_api.g_varchar2
582   ,p_attribute13                   in   varchar2   default hr_api.g_varchar2
583   ,p_attribute14                   in   varchar2   default hr_api.g_varchar2
584   ,p_attribute15                   in   varchar2   default hr_api.g_varchar2
585   ,p_attribute16                   in   varchar2   default hr_api.g_varchar2
586   ,p_attribute17                   in   varchar2   default hr_api.g_varchar2
587   ,p_attribute18                   in   varchar2   default hr_api.g_varchar2
588   ,p_attribute19                   in   varchar2   default hr_api.g_varchar2
589   ,p_attribute20                   in   varchar2   default hr_api.g_varchar2
590   ,p_attribute21                   in   varchar2   default hr_api.g_varchar2
591   ,p_attribute22                   in   varchar2   default hr_api.g_varchar2
592   ,p_attribute23                   in   varchar2   default hr_api.g_varchar2
593   ,p_attribute24                   in   varchar2   default hr_api.g_varchar2
594   ,p_attribute25                   in   varchar2   default hr_api.g_varchar2
595   ,p_attribute26                   in   varchar2   default hr_api.g_varchar2
596   ,p_attribute27                   in   varchar2   default hr_api.g_varchar2
597   ,p_attribute28                   in   varchar2   default hr_api.g_varchar2
598   ,p_attribute29                   in   varchar2   default hr_api.g_varchar2
599   ,p_attribute30                   in   varchar2   default hr_api.g_varchar2
600   ,p_object_version_number         in out nocopy   number
601   ,p_status_code                      out nocopy   varchar2
602   ,p_duplicate_name_warning           out nocopy   boolean
603   ,p_no_life_events_warning           out nocopy   boolean
604   ,p_update_library_objectives in varchar2  default hr_api.g_varchar2     -- 8740021 bug fix
605   ,p_automatic_approval_flag in varchar2  default hr_api.g_varchar2
606   ) is
607 
608   --
609   -- Declare cursors and local variables
610   --
611   --
612   l_proc                       varchar2(72) := g_package||'update_perf_mgmt_plan';
613   l_effective_date             date;
614   l_start_date                 date;
615   l_end_date                   date;
616   l_obj_setting_start_date     date;
617   l_obj_setting_deadline       date;
618   l_object_version_number      number;
619   l_status_code                varchar2(30);
620   l_duplicate_name_warning     boolean := false;
621   l_no_life_events_warning     boolean := false;
622 
623 
624   begin
625 
626   IF g_debug THEN
627 
628     hr_utility.set_location('Entering:'|| l_proc, 10);
629 
630     hr_utility.trace(' ');
631     hr_utility.trace(' --------------------------------'||
632                      '---------------------------------');
633     hr_utility.trace(' IN / IN OUT PARAMETER           '||
634                      ' VALUE');
635     hr_utility.trace(' --------------------------------'||
636                      '+--------------------------------');
637     hr_utility.trace('  p_effective_date                 '||
638                         to_char(p_effective_date));
639     hr_utility.trace('  p_plan_id                        '||
640                         to_char(p_plan_id));
641     hr_utility.trace('  p_object_version_number          '||
642                         to_char(p_object_version_number));
643     hr_utility.trace('  p_plan_name                      '||
644                         p_plan_name);
645     hr_utility.trace('  p_administrator_person_id        '||
646                         to_char(p_administrator_person_id));
647     hr_utility.trace('  p_previous_plan_id               '||
648                         to_char(p_previous_plan_id));
649     hr_utility.trace('  p_start_date                     '||
650                         to_char(p_start_date));
651     hr_utility.trace('  p_end_date                       '||
652                         to_char(p_end_date));
653     hr_utility.trace('  p_hierarchy_type_code            '||
654                         p_hierarchy_type_code);
655     hr_utility.trace('  p_supervisor_id                  '||
656                         to_char(p_supervisor_id));
657     hr_utility.trace('  p_supervisor_assignment_id       '||
658                         to_char(p_supervisor_assignment_id));
659     hr_utility.trace('  p_organization_structure_id      '||
660                         to_char(p_organization_structure_id));
661     hr_utility.trace('  p_org_structure_version_id       '||
662                         to_char(p_org_structure_version_id));
663     hr_utility.trace('  p_top_organization_id            '||
664                         to_char(p_top_organization_id));
665     hr_utility.trace('  p_position_structure_id          '||
666                         to_char(p_position_structure_id));
667     hr_utility.trace('  p_pos_structure_version_id       '||
668                         to_char(p_pos_structure_version_id));
669     hr_utility.trace('  p_top_position_id                '||
670                         to_char(p_top_position_id));
671     hr_utility.trace('  p_hierarchy_levels               '||
672                         to_char(p_hierarchy_levels));
673     hr_utility.trace('  p_automatic_enrollment_flag      '||
674                         p_automatic_enrollment_flag);
675     hr_utility.trace('  p_assignment_types_code          '||
676                         p_assignment_types_code);
677     hr_utility.trace('  p_primary_asg_only_flag          '||
678                         p_primary_asg_only_flag);
679     hr_utility.trace('  p_include_obj_setting_flag       '||
680                         p_include_obj_setting_flag);
681     hr_utility.trace('  p_obj_setting_start_date         '||
682                         to_char(p_obj_setting_start_date));
683     hr_utility.trace('  p_obj_setting_deadline           '||
684                         to_char(p_obj_setting_deadline));
685     hr_utility.trace('  p_obj_set_outside_period_flag    '||
686                         p_obj_set_outside_period_flag);
687     hr_utility.trace('  p_method_code                    '||
688                         p_method_code);
689     hr_utility.trace('  p_notify_population_flag         '||
690                         p_notify_population_flag);
691     hr_utility.trace('  p_automatic_allocation_flag      '||
692                         p_automatic_allocation_flag);
693     hr_utility.trace('  p_copy_past_objectives_flag      '||
694                         p_copy_past_objectives_flag);
695     hr_utility.trace('  p_sharing_alignment_task_flag    '||
696                         p_sharing_alignment_task_flag);
697     hr_utility.trace('  p_include_appraisals_flag        '||
698                         p_include_appraisals_flag);
699     hr_utility.trace('  p_change_sc_status_flag   '||
700                         p_change_sc_status_flag);
701     hr_utility.trace(' --------------------------------'||
702                      '---------------------------------');
703     hr_utility.trace(' ');
704 
705   END IF;
706 
707   --
708   -- Issue a savepoint
709   --
710   savepoint update_perf_mgmt_plan;
711   --
712   -- Remember IN OUT parameter IN values
713   --
714   l_object_version_number := p_object_version_number;
715 
716   --
717   -- Truncate the time portion from all IN date parameters
718   --
719   l_effective_date         := trunc(p_effective_date);
720   l_start_date             := trunc(p_start_date);
721   l_end_date               := trunc(p_end_date);
722   l_obj_setting_start_date := trunc(p_obj_setting_start_date);
723   l_obj_setting_deadline   := trunc(p_obj_setting_deadline);
724 
725   --
726   -- Call Before Process User Hook
727   --
728   begin
729 
730    hr_perf_mgmt_plan_bk2.update_perf_mgmt_plan_b
731   (p_effective_date                => l_effective_date
732   ,p_plan_id                       => p_plan_id
733   ,p_plan_name                     => p_plan_name
734   ,p_administrator_person_id       => p_administrator_person_id
735   ,p_previous_plan_id              => p_previous_plan_id
736   ,p_start_date                    => l_start_date
737   ,p_end_date                      => l_end_date
738   ,p_hierarchy_type_code           => p_hierarchy_type_code
739   ,p_supervisor_id                 => p_supervisor_id
740   ,p_supervisor_assignment_id	   => p_supervisor_assignment_id
741   ,p_organization_structure_id     => p_organization_structure_id
742   ,p_org_structure_version_id      => p_org_structure_version_id
743   ,p_top_organization_id           => p_top_organization_id
744   ,p_position_structure_id         => p_position_structure_id
745   ,p_pos_structure_version_id      => p_pos_structure_version_id
746   ,p_top_position_id               => p_top_position_id
747   ,p_hierarchy_levels              => p_hierarchy_levels
748   ,p_automatic_enrollment_flag     => p_automatic_enrollment_flag
749   ,p_assignment_types_code         => p_assignment_types_code
750   ,p_primary_asg_only_flag         => p_primary_asg_only_flag
751   ,p_include_obj_setting_flag      => p_include_obj_setting_flag
752   ,p_obj_setting_start_date        => l_obj_setting_start_date
753   ,p_obj_setting_deadline          => l_obj_setting_deadline
754   ,p_obj_set_outside_period_flag   => p_obj_set_outside_period_flag
755   ,p_method_code                   => p_method_code
756   ,p_notify_population_flag        => p_notify_population_flag
757   ,p_automatic_allocation_flag     => p_automatic_allocation_flag
758   ,p_copy_past_objectives_flag     => p_copy_past_objectives_flag
759   ,p_sharing_alignment_task_flag   => p_sharing_alignment_task_flag
760   ,p_include_appraisals_flag       => p_include_appraisals_flag
761   ,p_change_sc_status_flag  => p_change_sc_status_flag
762   ,p_attribute_category            => p_attribute_category
763   ,p_attribute1                    => p_attribute1
764   ,p_attribute2                    => p_attribute2
765   ,p_attribute3                    => p_attribute3
766   ,p_attribute4                    => p_attribute4
767   ,p_attribute5                    => p_attribute5
768   ,p_attribute6                    => p_attribute6
769   ,p_attribute7                    => p_attribute7
770   ,p_attribute8                    => p_attribute8
771   ,p_attribute9                    => p_attribute9
772   ,p_attribute10                   => p_attribute10
773   ,p_attribute11                   => p_attribute11
774   ,p_attribute12                   => p_attribute12
775   ,p_attribute13                   => p_attribute13
776   ,p_attribute14                   => p_attribute14
777   ,p_attribute15                   => p_attribute15
778   ,p_attribute16                   => p_attribute16
779   ,p_attribute17                   => p_attribute17
780   ,p_attribute18                   => p_attribute18
781   ,p_attribute19                   => p_attribute19
782   ,p_attribute20                   => p_attribute20
783   ,p_attribute21                   => p_attribute21
784   ,p_attribute22                   => p_attribute22
785   ,p_attribute23                   => p_attribute23
786   ,p_attribute24                   => p_attribute24
787   ,p_attribute25                   => p_attribute25
788   ,p_attribute26                   => p_attribute26
789   ,p_attribute27                   => p_attribute27
790   ,p_attribute28                   => p_attribute28
791   ,p_attribute29                   => p_attribute29
792   ,p_attribute30                   => p_attribute30
793   ,p_object_version_number         => l_object_version_number
794   ,p_update_library_objectives    => p_update_library_objectives  -- 8740021 bug fix
795   ,p_automatic_approval_flag      => p_automatic_approval_flag
796   );
797 
798   exception
799     when hr_api.cannot_find_prog_unit then
800     hr_api.cannot_find_prog_unit_error
801      (p_module_name => 'UPDATE_PERF_MGMT_PLAN',
802       p_hook_type   => 'BP'
803      );
804 
805   end;
806 
807   --
808   -- Process Logic
809   --
810   IF g_debug THEN hr_utility.set_location(l_proc, 30); END IF;
811 
812   --
813   -- Change the plan's status to updated if it's currently
814   -- published.
815   --
816   l_status_code := per_pmp_bus.return_status_code(p_plan_id);
817   IF l_status_code = 'PUBLISHED' THEN
818     l_status_code := 'UPDATED';
819   END IF;
820 
821   --
822   -- Call the row handler update
823   --
824   per_pmp_upd.upd
825   (p_effective_date                => l_effective_date
826   ,p_plan_id		           => p_plan_id
827   ,p_object_version_number         => l_object_version_number
828   ,p_plan_name                     => p_plan_name
829   ,p_administrator_person_id       => p_administrator_person_id
830   ,p_previous_plan_id              => p_previous_plan_id
831   ,p_start_date                    => l_start_date
832   ,p_end_date                      => l_end_date
833   ,p_hierarchy_type_code           => p_hierarchy_type_code
834   ,p_supervisor_id                 => p_supervisor_id
835   ,p_supervisor_assignment_id      => p_supervisor_assignment_id
836   ,p_organization_structure_id     => p_organization_structure_id
837   ,p_org_structure_version_id      => p_org_structure_version_id
838   ,p_top_organization_id           => p_top_organization_id
839   ,p_position_structure_id         => p_position_structure_id
840   ,p_pos_structure_version_id      => p_pos_structure_version_id
841   ,p_top_position_id               => p_top_position_id
842   ,p_hierarchy_levels              => p_hierarchy_levels
843   ,p_automatic_enrollment_flag     => p_automatic_enrollment_flag
844   ,p_assignment_types_code         => p_assignment_types_code
845   ,p_primary_asg_only_flag         => p_primary_asg_only_flag
846   ,p_include_obj_setting_flag      => p_include_obj_setting_flag
847   ,p_obj_setting_start_date        => l_obj_setting_start_date
848   ,p_obj_setting_deadline          => l_obj_setting_deadline
849   ,p_obj_set_outside_period_flag   => p_obj_set_outside_period_flag
850   ,p_method_code                   => p_method_code
851   ,p_notify_population_flag        => p_notify_population_flag
852   ,p_automatic_allocation_flag     => p_automatic_allocation_flag
853   ,p_copy_past_objectives_flag     => p_copy_past_objectives_flag
854   ,p_sharing_alignment_task_flag   => p_sharing_alignment_task_flag
855   ,p_include_appraisals_flag       => p_include_appraisals_flag
856   ,p_change_sc_status_flag  => p_change_sc_status_flag
857   ,p_attribute_category            => p_attribute_category
858   ,p_attribute1                    => p_attribute1
859   ,p_attribute2                    => p_attribute2
860   ,p_attribute3                    => p_attribute3
861   ,p_attribute4                    => p_attribute4
862   ,p_attribute5                    => p_attribute5
863   ,p_attribute6                    => p_attribute6
864   ,p_attribute7                    => p_attribute7
865   ,p_attribute8                    => p_attribute8
866   ,p_attribute9                    => p_attribute9
867   ,p_attribute10                   => p_attribute10
868   ,p_attribute11                   => p_attribute11
869   ,p_attribute12                   => p_attribute12
870   ,p_attribute13                   => p_attribute13
871   ,p_attribute14                   => p_attribute14
872   ,p_attribute15                   => p_attribute15
873   ,p_attribute16                   => p_attribute16
874   ,p_attribute17                   => p_attribute17
875   ,p_attribute18                   => p_attribute18
876   ,p_attribute19                   => p_attribute19
877   ,p_attribute20                   => p_attribute20
878   ,p_attribute21                   => p_attribute21
879   ,p_attribute22                   => p_attribute22
880   ,p_attribute23                   => p_attribute23
881   ,p_attribute24                   => p_attribute24
882   ,p_attribute25                   => p_attribute25
883   ,p_attribute26                   => p_attribute26
884   ,p_attribute27                   => p_attribute27
885   ,p_attribute28                   => p_attribute28
886   ,p_attribute29                   => p_attribute29
887   ,p_attribute30                   => p_attribute30
888   ,p_status_code                   => l_status_code
889   ,p_duplicate_name_warning        => l_duplicate_name_warning
890   ,p_no_life_events_warning        => l_no_life_events_warning
891   ,p_update_library_objectives    => p_update_library_objectives  -- 8740021 bug fix
892   ,p_automatic_approval_flag      => p_automatic_approval_flag
893   );
894 
895   IF g_debug THEN hr_utility.set_location(l_proc, 40); END IF;
896   --
897   -- Call After Process User Hook
898   --
899   begin
900   hr_perf_mgmt_plan_bk2.update_perf_mgmt_plan_a
901   (p_effective_date                => l_effective_date
902   ,p_plan_id                       => p_plan_id
903   ,p_plan_name                     => p_plan_name
904   ,p_administrator_person_id       => p_administrator_person_id
905   ,p_previous_plan_id              => p_previous_plan_id
906   ,p_start_date                    => l_start_date
907   ,p_end_date                      => l_end_date
908   ,p_hierarchy_type_code           => p_hierarchy_type_code
909   ,p_supervisor_id                 => p_supervisor_id
910   ,p_supervisor_assignment_id	   => p_supervisor_assignment_id
911   ,p_organization_structure_id     => p_organization_structure_id
912   ,p_org_structure_version_id      => p_org_structure_version_id
913   ,p_top_organization_id           => p_top_organization_id
914   ,p_position_structure_id         => p_position_structure_id
915   ,p_pos_structure_version_id      => p_pos_structure_version_id
916   ,p_top_position_id               => p_top_position_id
917   ,p_hierarchy_levels              => p_hierarchy_levels
918   ,p_automatic_enrollment_flag     => p_automatic_enrollment_flag
919   ,p_assignment_types_code         => p_assignment_types_code
920   ,p_primary_asg_only_flag         => p_primary_asg_only_flag
921   ,p_include_obj_setting_flag      => p_include_obj_setting_flag
922   ,p_obj_setting_start_date        => l_obj_setting_start_date
923   ,p_obj_setting_deadline          => l_obj_setting_deadline
924   ,p_obj_set_outside_period_flag   => p_obj_set_outside_period_flag
925   ,p_method_code                   => p_method_code
926   ,p_notify_population_flag        => p_notify_population_flag
927   ,p_automatic_allocation_flag     => p_automatic_allocation_flag
928   ,p_copy_past_objectives_flag     => p_copy_past_objectives_flag
929   ,p_sharing_alignment_task_flag   => p_sharing_alignment_task_flag
930   ,p_include_appraisals_flag       => p_include_appraisals_flag
931   ,p_change_sc_status_flag  => p_change_sc_status_flag
932   ,p_attribute_category            => p_attribute_category
933   ,p_attribute1                    => p_attribute1
934   ,p_attribute2                    => p_attribute2
935   ,p_attribute3                    => p_attribute3
936   ,p_attribute4                    => p_attribute4
937   ,p_attribute5                    => p_attribute5
938   ,p_attribute6                    => p_attribute6
939   ,p_attribute7                    => p_attribute7
940   ,p_attribute8                    => p_attribute8
941   ,p_attribute9                    => p_attribute9
942   ,p_attribute10                   => p_attribute10
943   ,p_attribute11                   => p_attribute11
944   ,p_attribute12                   => p_attribute12
945   ,p_attribute13                   => p_attribute13
946   ,p_attribute14                   => p_attribute14
947   ,p_attribute15                   => p_attribute15
948   ,p_attribute16                   => p_attribute16
949   ,p_attribute17                   => p_attribute17
950   ,p_attribute18                   => p_attribute18
951   ,p_attribute19                   => p_attribute19
952   ,p_attribute20                   => p_attribute20
953   ,p_attribute21                   => p_attribute21
954   ,p_attribute22                   => p_attribute22
955   ,p_attribute23                   => p_attribute23
956   ,p_attribute24                   => p_attribute24
957   ,p_attribute25                   => p_attribute25
958   ,p_attribute26                   => p_attribute26
959   ,p_attribute27                   => p_attribute27
960   ,p_attribute28                   => p_attribute28
961   ,p_attribute29                   => p_attribute29
962   ,p_attribute30                   => p_attribute30
963   ,p_object_version_number         => l_object_version_number
964   ,p_status_code                   => l_status_code
965   ,p_duplicate_name_warning        => l_duplicate_name_warning
966   ,p_no_life_events_warning        => l_no_life_events_warning
967   ,p_update_library_objectives    => p_update_library_objectives  -- 8740021 bug fix
968   ,p_automatic_approval_flag      => p_automatic_approval_flag
969   );
970   exception
971    when hr_api.cannot_find_prog_unit then
972      hr_api.cannot_find_prog_unit_error
973       (p_module_name => 'UPDATE_PERF_MGMT_PLAN',
974        p_hook_type   => 'AP'
975       );
976   end;
977 
978   IF g_debug THEN hr_utility.set_location(l_proc, 50); END IF;
979 
980   --
981   -- End of After Process User Hook call
982   --
983   -- When in validation only mode raise the Validate_Enabled exception
984   --
985   if p_validate then
986     raise hr_api.validate_enabled;
987   end if;
988 
989   --
990   -- Set all IN OUT and OUT parameters with out values
991   --
992   p_object_version_number         := l_object_version_number;
993   p_status_code                   := l_status_code;
994   p_duplicate_name_warning        := l_duplicate_name_warning;
995   p_no_life_events_warning        := l_no_life_events_warning;
996 
997   IF g_debug THEN
998 
999     hr_utility.trace(' ');
1000     hr_utility.trace(' --------------------------------'||
1001                      '---------------------------------');
1002     hr_utility.trace(' IN OUT / OUT PARAMETER          '||
1003                      ' VALUE');
1004     hr_utility.trace(' --------------------------------'||
1005                      '+--------------------------------');
1006     hr_utility.trace('  p_object_version_number        '||
1007                         to_char(p_object_version_number));
1008     hr_utility.trace('  p_status_code                  '||
1009                         p_status_code);
1010     IF p_duplicate_name_warning THEN
1011       hr_utility.trace('  p_duplicate_name_warning       '||
1012                           'TRUE');
1013     ELSE
1014       hr_utility.trace('  p_duplicate_name_warning       '||
1015                           'FALSE');
1016     END IF;
1017     IF p_no_life_events_warning THEN
1018       hr_utility.trace('  p_no_life_events_warning       '||
1019                           'TRUE');
1020     ELSE
1021       hr_utility.trace('  p_no_life_events_warning       '||
1022                           'FALSE');
1023     END IF;
1024     hr_utility.trace(' --------------------------------'||
1025                      '---------------------------------');
1026     hr_utility.trace(' ');
1027     hr_utility.set_location(' Leaving:'||l_proc, 970);
1028 
1029   END IF;
1030 
1031   exception
1032     when hr_api.validate_enabled then
1033       --
1034       -- As the Validate_Enabled exception has been raised
1035       -- we must rollback to the savepoint
1036       --
1037       ROLLBACK TO update_perf_mgmt_plan;
1038       --
1039       -- Reset IN OUT parameters and set OUT parameters
1040       -- (Any key or derived arguments must be set to null
1041       -- when validation only mode is being used.)
1042       --
1043       p_object_version_number         := null;
1044       p_status_code                   := l_status_code;
1045       p_duplicate_name_warning        := l_duplicate_name_warning;
1046       p_no_life_events_warning        := l_no_life_events_warning;
1047       --
1048       hr_utility.set_location(' Leaving:'||l_proc, 980);
1049       --
1050   when others then
1051     --
1052     -- A validation or unexpected error has occured
1053     --
1054     rollback to update_perf_mgmt_plan;
1055     --
1056     -- Reset IN OUT parameters and set all
1057     -- OUT parameters, including warnings, to null
1058     --
1059     p_object_version_number       := null;
1060     p_status_code                 := null;
1061     p_duplicate_name_warning      := null;
1062     p_no_life_events_warning      := null;
1063 
1064     hr_utility.set_location(' Leaving:'||l_proc, 990);
1065     raise;
1066 
1067 end update_perf_mgmt_plan;
1068 --
1069 -- ----------------------------------------------------------------------------
1070 -- |-------------------------< delete_perf_mgmt_plan >------------------------|
1071 -- ----------------------------------------------------------------------------
1072 --
1073 procedure delete_perf_mgmt_plan
1074   (p_validate                 in   boolean         default false
1075   ,p_plan_id                  in   number
1076   ,p_object_version_number    in   number
1077   ) is
1078 
1079   --
1080   -- Declare cursors and local variables
1081   --
1082      l_proc                  varchar2(72) := g_package||'delete_perf_mgmt_plan';
1083   --
1084 
1085   begin
1086 
1087   IF g_debug THEN
1088 
1089     hr_utility.set_location('Entering:'|| l_proc, 10);
1090 
1091     hr_utility.trace(' ');
1092     hr_utility.trace(' --------------------------------'||
1093                      '---------------------------------');
1094     hr_utility.trace(' IN / IN OUT PARAMETER           '||
1095                      ' VALUE');
1096     hr_utility.trace(' --------------------------------'||
1097                      '+--------------------------------');
1098     hr_utility.trace('  p_plan_id                      '||
1099                         to_char(p_plan_id));
1100     hr_utility.trace('  p_object_version_number        '||
1101                         to_char(p_object_version_number));
1102     hr_utility.trace(' --------------------------------'||
1103                      '---------------------------------');
1104     hr_utility.trace(' ');
1105 
1106   END IF;
1107 
1108   --
1109   -- Issue a savepoint
1110   --
1111      savepoint delete_perf_mgmt_plan;
1112   --
1113   -- Call Before Process User Hook
1114   --
1115   begin
1116 
1117     hr_perf_mgmt_plan_bk3.delete_perf_mgmt_plan_b
1118     (p_plan_id                => p_plan_id
1119     ,p_object_version_number  => p_object_version_number
1120     );
1121   exception
1122    when hr_api.cannot_find_prog_unit then
1123      hr_api.cannot_find_prog_unit_error
1124       (p_module_name => 'DELETE_PERF_MGMT_PLAN',
1125        p_hook_type   => 'BP'
1126       );
1127   end;
1128 
1129   --
1130   -- End of Before Process User Hook call
1131   --
1132      hr_utility.set_location(l_proc, 7);
1133   --
1134   -- Process Logic - Delete Plan
1135   --
1136 
1137    per_pmp_del.del
1138     (p_plan_id           => p_plan_id
1139     ,p_object_version_number  => p_object_version_number
1140     );
1141 
1142   hr_utility.set_location(l_proc, 8);
1143   --
1144   -- Call After Process User Hook
1145   --
1146   begin
1147   hr_perf_mgmt_plan_bk3.delete_perf_mgmt_plan_a
1148     (p_plan_id                => p_plan_id
1149     ,p_object_version_number  => p_object_version_number
1150     );
1151   exception
1152     when hr_api.cannot_find_prog_unit then
1153      hr_api.cannot_find_prog_unit_error
1154       (p_module_name => 'DELETE_PERF_MGMT_PLAN',
1155        p_hook_type   => 'AP'
1156       );
1157   end;
1158 
1159   IF g_debug THEN hr_utility.set_location(l_proc, 40); END IF;
1160   --
1161   -- When in validation only mode raise the Validate_Enabled exception
1162   --
1163   if p_validate then
1164     raise hr_api.validate_enabled;
1165   end if;
1166 
1167   --
1168   -- Pipe the main IN OUT / OUT parameters for ease of debugging.
1169   --
1170   IF g_debug THEN hr_utility.set_location(' Leaving:'||l_proc, 970); END IF;
1171 
1172 exception
1173   when hr_api.validate_enabled then
1174     --
1175     -- As the Validate_Enabled exception has been raised
1176     -- we must rollback to the savepoint
1177     --
1178     rollback to delete_perf_mgmt_plan;
1179     --
1180     -- Reset IN OUT parameters and set OUT parameters
1181     -- (Any key or derived arguments must be set to null
1182     -- when validation only mode is being used.)
1183     --
1184     hr_utility.set_location(' Leaving:'||l_proc, 980);
1185 
1186   when others then
1187     --
1188     -- A validation or unexpected error has occured
1189     --
1190     rollback to delete_perf_mgmt_plan;
1191     --
1192     -- Reset IN OUT parameters and set all
1193     -- OUT parameters, including warnings, to null
1194     --
1195     hr_utility.set_location(' Leaving:'||l_proc, 990);
1196     raise;
1197 
1198  end delete_perf_mgmt_plan;
1199 --
1200 --
1201 -- ----------------------------------------------------------------------------
1202 -- |------------------------------< publish_plan >----------------------------|
1203 -- ----------------------------------------------------------------------------
1204 --
1205 procedure publish_plan
1206   (p_validate                      in   boolean    default false
1207   ,p_effective_date                in   date
1208   ,p_plan_id                       in   number
1209   ,p_object_version_number         in out nocopy   number
1210   ) is
1211 
1212   --
1213   -- Declare local variables
1214   --
1215      l_proc                  varchar2(72) := g_package||'publish_plan';
1216      l_what_if               varchar2(1);
1217      l_object_version_number number;
1218 
1219   --
1220 
1221   begin
1222 
1223   IF g_debug THEN
1224 
1225     hr_utility.set_location('Entering:'|| l_proc, 10);
1226 
1227     hr_utility.trace(' ');
1228     hr_utility.trace(' --------------------------------'||
1229                      '---------------------------------');
1230     hr_utility.trace(' IN / IN OUT PARAMETER           '||
1231                      ' VALUE');
1232     hr_utility.trace(' --------------------------------'||
1233                      '+--------------------------------');
1234     hr_utility.trace('  p_plan_id                      '||
1235                         to_char(p_plan_id));
1236     hr_utility.trace('  p_object_version_number        '||
1237                         to_char(p_object_version_number));
1238     hr_utility.trace(' --------------------------------'||
1239                      '---------------------------------');
1240     hr_utility.trace(' ');
1241 
1242   END IF;
1243 
1244   --
1245   -- Issue a savepoint
1246   --
1247      savepoint publish_plan;
1248   --
1249   -- Remember IN OUT parameter IN values
1250   --
1251   l_object_version_number := p_object_version_number;
1252 
1253 
1254   --
1255   -- Call Before Process User Hook
1256   --
1257   begin
1258 
1259     hr_perf_mgmt_plan_bk4.publish_plan_b
1260     (p_effective_date         => p_effective_date
1261     ,p_plan_id                => p_plan_id
1262     ,p_object_version_number  => l_object_version_number
1263     );
1264   exception
1265    when hr_api.cannot_find_prog_unit then
1266      hr_api.cannot_find_prog_unit_error
1267       (p_module_name => 'PUBLISH',
1268        p_hook_type   => 'BP'
1269       );
1270   end;
1271 
1272   --
1273   -- End of Before Process User Hook call
1274   --
1275      hr_utility.set_location(l_proc, 7);
1276   --
1277   -- What if mode
1278   --
1279    if (p_validate) then
1280      l_what_if := 'Y';
1281    else
1282      l_what_if := 'N';
1283    end if;
1284   --
1285   -- Process Logic - Publish Plan
1286   --
1287    hr_perf_mgmt_plan_internal.publish_plan
1288     (p_effective_date            => p_effective_date
1289     ,p_plan_id                   => p_plan_id
1290     ,p_object_version_number     => l_object_version_number
1291     ,p_reverse_mode              => 'N'
1292     ,p_what_if                   => l_what_if
1293     );
1294 
1295   hr_utility.set_location(l_proc, 8);
1296   --
1297   -- Call After Process User Hook
1298   --
1299   begin
1300   hr_perf_mgmt_plan_bk4.publish_plan_a
1301     (p_effective_date         => p_effective_date
1302     ,p_plan_id                => p_plan_id
1303     ,p_object_version_number  => l_object_version_number
1304     );
1305   exception
1306     when hr_api.cannot_find_prog_unit then
1307      hr_api.cannot_find_prog_unit_error
1308       (p_module_name => 'PUBLISH_A',
1309        p_hook_type   => 'AP'
1310       );
1311   end;
1312 
1313   IF g_debug THEN hr_utility.set_location(l_proc, 40); END IF;
1314   --
1315   -- When in validation only mode raise the Validate_Enabled exception
1316   --
1317   if p_validate then
1318     raise hr_api.validate_enabled;
1319   end if;
1320 
1321   --
1322   -- Set all IN OUT and OUT parameters with out values
1323   --
1324   p_object_version_number         := l_object_version_number;
1325 
1326   --
1327   -- Pipe the main IN OUT / OUT parameters for ease of debugging.
1328   --
1329   IF g_debug THEN hr_utility.set_location(' Leaving:'||l_proc, 970); END IF;
1330 
1331 exception
1332   when hr_api.validate_enabled then
1333     --
1334     -- As the Validate_Enabled exception has been raised
1335     -- we must rollback to the savepoint
1336     --
1337     rollback to publish_plan;
1338     --
1339     -- Reset IN OUT parameters and set OUT parameters
1340     -- (Any key or derived arguments must be set to null
1341     -- when validation only mode is being used.)
1342     --
1343     hr_utility.set_location(' Leaving:'||l_proc, 980);
1344 
1345   when others then
1346     --
1347     -- A validation or unexpected error has occured
1348     --
1349     rollback to publish_plan;
1350     --
1351     -- Reset IN OUT parameters and set all
1352     -- OUT parameters, including warnings, to null
1353     --
1354     hr_utility.set_location(' Leaving:'||l_proc, 990);
1355     raise;
1356 
1357  end publish_plan;
1358 
1359 --
1360 -- ----------------------------------------------------------------------------
1361 -- |----------------------------< reverse_publish_plan >----------------------|
1362 -- ----------------------------------------------------------------------------
1363 --
1364 procedure reverse_publish_plan
1365   (p_validate                      in   boolean    default false
1366   ,p_plan_id                       in   number
1367   ,p_object_version_number         in out nocopy   number
1368   ) is
1369 
1370   --
1371   -- Declare cursors and local variables
1372   --
1373      l_proc                  varchar2(72) := g_package||'reverse_publish_plan';
1374      l_what_if               varchar2(1);
1375      l_object_version_number number;
1376      l_effective_date        date;
1377   --
1378 
1379  begin
1380 
1381   IF g_debug THEN
1382 
1383     hr_utility.set_location('Entering:'|| l_proc, 10);
1384 
1385     hr_utility.trace(' ');
1386     hr_utility.trace(' --------------------------------'||
1387                      '---------------------------------');
1388     hr_utility.trace(' IN / IN OUT PARAMETER           '||
1389                      ' VALUE');
1390     hr_utility.trace(' --------------------------------'||
1391                      '+--------------------------------');
1392     hr_utility.trace('  p_plan_id                      '||
1393                         to_char(p_plan_id));
1394     hr_utility.trace('  p_object_version_number        '||
1395                         to_char(p_object_version_number));
1396     hr_utility.trace(' --------------------------------'||
1397                      '---------------------------------');
1398     hr_utility.trace(' ');
1399 
1400   END IF;
1401 
1402   --
1403   -- Issue a savepoint
1404   --
1405      savepoint reverse_publish_plan;
1406   --
1407   -- Remember IN OUT parameter IN values
1408   --
1409   l_object_version_number := p_object_version_number;
1410 
1411   --
1412   -- Call Before Process User Hook
1413   --
1414   begin
1415 
1416     hr_perf_mgmt_plan_bk5.reverse_publish_plan_b
1417     (p_plan_id                => p_plan_id
1418     ,p_object_version_number  => l_object_version_number
1419     );
1420   exception
1421    when hr_api.cannot_find_prog_unit then
1422      hr_api.cannot_find_prog_unit_error
1423       (p_module_name => 'REVERSE_PUBLISH',
1424        p_hook_type   => 'BP'
1425       );
1426   end;
1427 
1428   --
1429   -- End of Before Process User Hook call
1430   --
1431      hr_utility.set_location(l_proc, 7);
1432   --
1433   -- What if mode
1434   --
1435    if (p_validate) then
1436      l_what_if := 'Y';
1437    else
1438      l_what_if := 'N';
1439    end if;
1440   --
1441   -- Process Logic - Publish Plan
1442   --
1443    hr_perf_mgmt_plan_internal.publish_plan
1444     (p_effective_date            => l_effective_date
1445     ,p_plan_id                   => p_plan_id
1446     ,p_object_version_number     => l_object_version_number
1447     ,p_reverse_mode              => 'Y'
1448     ,p_what_if                   => l_what_if);
1449 
1450 
1451 
1452   hr_utility.set_location(l_proc, 8);
1453   --
1454   -- Call After Process User Hook
1455   --
1456   begin
1457   hr_perf_mgmt_plan_bk5.reverse_publish_plan_a
1458     (p_plan_id                => p_plan_id
1459     ,p_object_version_number  => l_object_version_number
1460     );
1461   exception
1462     when hr_api.cannot_find_prog_unit then
1463      hr_api.cannot_find_prog_unit_error
1464       (p_module_name => 'REVERSE_PUBLISH_A',
1465        p_hook_type   => 'AP'
1466       );
1467   end;
1468 
1469   IF g_debug THEN hr_utility.set_location(l_proc, 40); END IF;
1470   --
1471   -- When in validation only mode raise the Validate_Enabled exception
1472   --
1473   if p_validate then
1474     raise hr_api.validate_enabled;
1475   end if;
1476 
1477   --
1478   -- Set all IN OUT and OUT parameters with out values
1479   --
1480   p_object_version_number         := l_object_version_number;
1481 
1482   --
1483   -- Pipe the main IN OUT / OUT parameters for ease of debugging.
1484   --
1485   IF g_debug THEN hr_utility.set_location(' Leaving:'||l_proc, 970); END IF;
1486 
1487 exception
1488   when hr_api.validate_enabled then
1489     --
1490     -- As the Validate_Enabled exception has been raised
1491     -- we must rollback to the savepoint
1492     --
1493     rollback to reverse_publish_plan;
1494     --
1495     -- Reset IN OUT parameters and set OUT parameters
1496     -- (Any key or derived arguments must be set to null
1497     -- when validation only mode is being used.)
1498     --
1499     hr_utility.set_location(' Leaving:'||l_proc, 980);
1500 
1501   when others then
1502     --
1503     -- A validation or unexpected error has occured
1504     --
1505     rollback to reverse_publish_plan;
1506     --
1507     -- Reset IN OUT parameters and set all
1508     -- OUT parameters, including warnings, to null
1509     --
1510     hr_utility.set_location(' Leaving:'||l_proc, 990);
1511     raise;
1512 
1513  end reverse_publish_plan;
1514 
1515 
1516 end HR_PERF_MGMT_PLAN_API;