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