DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_ORG_STRUCTURE_VERSION_API

Source


1 PACKAGE BODY per_org_structure_version_api AS
2 /* $Header: peosvapi.pkb 120.0 2005/05/31 12:36:17 appldev noship $ */
3 --
4 -- Package Variables
5 --
6 -- -------------------------------------------------------------------------
7 -- | -------------------< copy_elements >-----------------------------------|
8 ----------------------------------------------------------------------------
9  procedure copy_elements(
10   p_validate        boolean
11  ,p_org_structure_version_id    number
12  ,p_copy_structure_version_id   number
13  ,p_effective_date   date
14  )
15  is
16  --
17   cursor struct_element is  select *
18     from per_org_structure_elements ose
19     where ose.org_structure_version_id = p_copy_structure_version_id;
20 
21 
22   ele_record struct_element%ROWTYPE;
23   l_org_structure_element_id   per_org_structure_elements.org_structure_element_id%TYPE;
24   l_object_version_number per_org_structure_elements.object_version_number%TYPE;
25   l_inactive_org_warning  boolean;
26   l_effective_date date;
27   --
28  begin
29 
30   open struct_element;
31      fetch struct_element into ele_record;
32 	 loop
33 		exit when struct_element%NOTFOUND;
34 		hr_hierarchy_element_api.create_hierarchy_element(
35           p_validate                       =>     p_validate
36          ,p_organization_id_parent         =>     ele_record.Organization_Id_Parent
37          ,p_org_structure_version_id       =>     p_org_structure_version_id
38          ,p_organization_id_child          =>     ele_record.Organization_Id_Child
39          ,p_business_group_id              =>     ele_record.Business_Group_Id
40          ,p_effective_date                 =>     p_effective_date
41          ,p_pos_control_enabled_flag       =>     null
42          ,p_inactive_org_warning           =>     l_inactive_org_warning
43          ,p_org_structure_element_id       =>     l_org_structure_element_id
44          ,p_object_version_number          =>     l_object_version_number
45         );
46 --
47 		fetch struct_element into ele_record;
48 	end loop;
49 	close struct_element;
50  --
51 end  copy_elements;
52 
53 -- ----------------------------------------------------------------------------
54 -- |--------------------< create_org_structure_version >----------------------|
55 -- ----------------------------------------------------------------------------
56 --
57 PROCEDURE create_org_structure_version
58   (p_validate                      in     boolean  default false
59   ,p_effective_date                 in     date
60   ,p_organization_structure_id      in     number
61   ,p_date_from                      in     date
62   ,p_version_number                 in     number
63   ,p_copy_structure_version_id      in     number   default null
64   ,p_date_to                        in     date     default null
65   ,p_request_id                     in     number   default null
66   ,p_program_application_id         in     number   default null
67   ,p_program_id                     in     number   default null
68   ,p_program_update_date            in     date     default null
69   ,p_topnode_pos_ctrl_enabled_fla   in     varchar2 default 'N'
73   ) IS
70   ,p_org_structure_version_id          out nocopy number
71   ,p_object_version_number             out nocopy number
72   ,p_gap_warning                       out nocopy boolean
74   --
75   -- Declare cursors and local variables
76 
77   l_rowid VARCHAR2(20);
78   l_proc                  VARCHAR2(72) := g_package||'create_org_structure_version';
79   l_org_structure_version_id       per_org_Structure_versions.org_structure_version_id%TYPE;
80   l_object_version_number per_org_structure_versions.object_version_number%TYPE;
81   l_effective_date   date;
82   l_date_from        date;
83   l_date_to          date;
84   --
85   cursor c is select rowid
86       FROM PER_ORG_STRUCTURE_VERSIONS
87       WHERE org_structure_version_id = l_Org_Structure_Version_Id;
88   --
89 
90   --
91 BEGIN
92   hr_utility.set_location('Entering:'|| l_proc, 10);
93   --
94   -- Truncate the time portion from all IN date parameters
95   --
96   l_effective_date := trunc(p_effective_date);
97   l_date_from  := trunc(p_date_from);
98   l_date_to    := trunc(p_date_to);
99   --
100   -- Issue a savepoint
101   --
102   savepoint create_org_structure_version;
103   --
104 
105 begin
106 
107 per_org_structure_version_bk1.create_org_structure_version_b
108   (p_validate                      =>   p_validate
109   ,p_effective_date                =>   l_effective_date
110   ,p_organization_structure_id     =>   p_organization_structure_id
111   ,p_date_from                     =>   l_date_from
112   ,p_version_number                =>   p_version_number
113   ,p_copy_structure_version_id     =>   p_copy_structure_version_id
114   ,p_date_to                       =>   l_date_to
115   ,p_request_id                    =>   p_request_id
116   ,p_program_application_id        =>   p_program_application_id
117   ,p_program_id                    =>   p_program_id
118   ,p_program_update_date           =>   p_program_update_date
119   ,p_topnode_pos_ctrl_enabled_fla  =>   p_topnode_pos_ctrl_enabled_fla
120   );
121   exception
122     when hr_api.cannot_find_prog_unit then
123       hr_api.cannot_find_prog_unit_error
124         (p_module_name => 'create_org_structure_version'
125         ,p_hook_type   => 'BP'
126         );
127   end;
128 
129   --
130   --
131   hr_utility.set_location(l_proc, 20);
132   --
133   -- Process Logic
134   --
135   per_osv_ins.ins
136   (p_effective_date                =>   l_effective_date
137   ,p_organization_structure_id     =>   p_organization_structure_id
138   ,p_date_from                     =>   l_date_from
139   ,p_version_number                =>   p_version_number
140   ,p_copy_structure_version_id     =>   p_copy_structure_version_id
141   ,p_date_to                       =>   l_date_to
142   ,p_request_id                    =>   p_request_id
143   ,p_program_application_id        =>   p_program_application_id
144   ,p_program_id                    =>   p_program_id
145   ,p_program_update_date           =>   p_program_update_date
146   ,p_topnode_pos_ctrl_enabled_fla  =>   p_topnode_pos_ctrl_enabled_fla
147   ,p_org_structure_version_id      =>   l_org_structure_version_id
148   ,p_object_version_number         =>   l_object_version_number
149   ,p_gap_warning                   =>   p_gap_warning
150   );
151   --
152   hr_utility.set_location(l_proc, 60);
153 
154 begin
155 
156 per_org_structure_version_bk1.create_org_structure_version_a
157   (p_validate                      =>   p_validate
158   ,p_effective_date                =>   l_effective_date
159   ,p_organization_structure_id     =>   p_organization_structure_id
160   ,p_date_from                     =>   l_date_from
161   ,p_version_number                =>   p_version_number
162   ,p_copy_structure_version_id     =>   p_copy_structure_version_id
163   ,p_date_to                       =>   l_date_to
164   ,p_request_id                    =>   p_request_id
165   ,p_program_application_id        =>   p_program_application_id
166   ,p_program_id                    =>   p_program_id
167   ,p_program_update_date           =>   p_program_update_date
168   ,p_topnode_pos_ctrl_enabled_fla  =>   p_topnode_pos_ctrl_enabled_fla
169   ,p_org_structure_version_id      =>   l_org_structure_version_id
170   ,p_object_version_number         =>   l_object_version_number
171   ,p_gap_warning                   =>   p_gap_warning  );
172   exception
173     when hr_api.cannot_find_prog_unit then
174       hr_api.cannot_find_prog_unit_error
175         (p_module_name => 'create_org_structure_version'
176         ,p_hook_type   => 'AP'
177         );
178   end;
179  --
180   -- Set all output arguments
181   --
182   p_org_structure_version_id := l_org_structure_version_id;
183   p_object_version_number := l_object_version_number;
184 
185   --
186  begin
187   open c;
188   fetch c into l_rowid;
189   if (c%notfound) then
190       close c;
191       raise no_data_found;
192    end if;
193    close c;
194   if p_copy_structure_version_id is not null then
195      copy_elements(
196          p_validate                  => p_validate
197         ,p_org_structure_version_id  => p_org_structure_version_id
198         ,p_copy_structure_version_id => p_copy_structure_version_id
199         ,p_effective_date            => l_effective_date );
200   end if;
201  end;
202  --
203 
204  --
205   -- When in validation only mode raise the Validate_Enabled exception
206   --
207   IF p_validate THEN
211    --
208     RAISE hr_api.validate_enabled;
209   END IF;
210   --
212   hr_utility.set_location(' Leaving:'||l_proc, 70);
213   --
214 
215 EXCEPTION
216   --
217   WHEN hr_api.validate_enabled THEN
218     --
219     -- As the Validate_Enabled exception has been raised
220     -- we must rollback to the savepoint
221     --
222     ROLLBACK TO create_org_structure_version;
223     --
224     -- Only set output warning arguments
225     -- (Any key or derived arguments must be set to null
226     -- when validation only mode is being used.)
227     --
228     p_org_structure_version_id := NULL;
229     p_object_version_number  := NULL;
230     hr_utility.set_location(' Leaving:'||l_proc, 80);
231   WHEN OTHERS THEN
232     --
233     -- A validation or unexpected error has occurred
234     ROLLBACK TO create_org_structure_version;
235         --
236     -- set in out parameters and set out parameters
237     --
238     p_org_structure_version_id := NULL;
239     p_object_version_number  := NULL;
240     p_gap_warning := false;
241     hr_utility.set_location(' Leaving:'||l_proc, 90);
242     RAISE;
243    --
244 END create_org_structure_version;
245 
246 
247 
248 -- ----------------------------------------------------------------------------
249 -- |---------------------< update_org_structure_version >---------------------|
250 -- ----------------------------------------------------------------------------
251 --
252 --
253 PROCEDURE update_org_structure_version
254   (p_validate                      in     boolean  default false
255   ,p_effective_date                 in     date
256   ,p_date_from                      in     date
257   ,p_version_number                 in     number
258   ,p_copy_structure_version_id      in     number   default hr_api.g_number
259   ,p_date_to                        in     date     default hr_api.g_date
260   ,p_request_id                     in     number   default hr_api.g_number
261   ,p_program_application_id         in     number   default hr_api.g_number
262   ,p_program_id                     in     number   default hr_api.g_number
263   ,p_program_update_date            in     date     default hr_api.g_date
264   ,p_topnode_pos_ctrl_enabled_fla   in     varchar2 default hr_api.g_varchar2
265   ,p_org_structure_version_id       in     number
266   ,p_object_version_number          in out nocopy number
267   ,p_gap_warning                       out nocopy boolean
268 ) IS
269   --
270   -- Declare cursors and local variables
271   --
272   l_proc                  VARCHAR2(72) := g_package||'update_org_structures';
273   l_object_version_number per_organization_structures.object_version_number%TYPE;
274  l_ovn per_organization_structures.object_version_number%TYPE := p_object_version_number;
275 BEGIN
276 
277   --
278   -- Issue a savepoint.
279   --
280   savepoint update_org_structure_version;
281   --
282 begin
283 per_org_structure_version_bk2.update_org_structure_version_b
284   ( p_validate                      =>   p_validate
285   ,p_effective_date                =>   p_effective_date
286   ,p_date_from                     =>   p_date_from
287   ,p_version_number                =>   p_version_number
288   ,p_copy_structure_version_id     =>   p_copy_structure_version_id
289   ,p_date_to                       =>   p_date_to
290   ,p_request_id                    =>   p_request_id
291   ,p_program_application_id        =>   p_program_application_id
292   ,p_program_id                    =>   p_program_id
293   ,p_program_update_date           =>   p_program_update_date
294   ,p_topnode_pos_ctrl_enabled_fla  =>   p_topnode_pos_ctrl_enabled_fla
295   ,p_org_structure_version_id      =>   p_org_structure_version_id
296   ,p_object_version_number         =>   p_object_version_number
297 );
298 
299   exception
300     when hr_api.cannot_find_prog_unit then
301       hr_api.cannot_find_prog_unit_error
302         (p_module_name => 'update_org_structure'
303         ,p_hook_type   => 'BP'
304         );
305   end;
306 --
307   hr_utility.set_location('Entering:'|| l_proc, 10);
308   --
309   --
310   hr_utility.set_location(l_proc, 20);
311   --
312   --
313   -- Process Logic
314   --
315   l_object_version_number := p_object_version_number;
316   --
317   --
318   --
319   per_osv_upd.upd
320   (p_effective_date                =>   p_effective_date
321   ,p_date_from                     =>   p_date_from
322   ,p_version_number                =>   p_version_number
323   ,p_copy_structure_version_id     =>   p_copy_structure_version_id
324   ,p_date_to                       =>   p_date_to
325   ,p_request_id                    =>   p_request_id
326   ,p_program_application_id        =>   p_program_application_id
327   ,p_program_id                    =>   p_program_id
328   ,p_program_update_date           =>   p_program_update_date
329   ,p_topnode_pos_ctrl_enabled_fla  =>   p_topnode_pos_ctrl_enabled_fla
330   ,p_org_structure_version_id      =>   p_org_structure_version_id
331   ,p_object_version_number         =>   l_object_version_number
332   ,p_gap_warning                   =>   p_gap_warning    );
333   --
334   --
335 --
336   --
337   hr_utility.set_location(l_proc, 60);
338   --
342     RAISE hr_api.validate_enabled;
339   -- When in validation only mode raise the Validate_Enabled exception
340   --
341   IF p_validate THEN
343   END IF;
344   --
345   -- Set all output arguments.  If p_validate was TRUE, this bit is
346   -- never reached, so p_object_version_number is passed back unchanged.
347   --
348   p_object_version_number := l_object_version_number;
349   --
350   hr_utility.set_location(' Leaving:'||l_proc, 70);
351   --
352 
353 begin
354 per_org_structure_version_bk2.update_org_structure_version_a
355   (p_validate                       =>  p_validate
356   ,p_effective_date                =>   p_effective_date
357   ,p_date_from                     =>   p_date_from
358   ,p_version_number                =>   p_version_number
359   ,p_copy_structure_version_id     =>   p_copy_structure_version_id
360   ,p_date_to                       =>   p_date_to
361   ,p_request_id                    =>   p_request_id
362   ,p_program_application_id        =>   p_program_application_id
363   ,p_program_id                    =>   p_program_id
364   ,p_program_update_date           =>   p_program_update_date
365   ,p_topnode_pos_ctrl_enabled_fla  =>   p_topnode_pos_ctrl_enabled_fla
366   ,p_org_structure_version_id      =>   p_org_structure_version_id
367   ,p_object_version_number         =>   p_object_version_number
368   ,p_gap_warning                   =>   p_gap_warning);
369 
370   exception
371     when hr_api.cannot_find_prog_unit then
372       hr_api.cannot_find_prog_unit_error
373         (p_module_name => 'update_org_structure_version'
374         ,p_hook_type   => 'AP'
375         );
376   end;
377 
378 EXCEPTION
379   --
380   WHEN hr_api.validate_enabled THEN
381     --
382     -- As the Validate_Enabled exception has been raised
383     -- we must rollback to the savepoint
384     --
385     ROLLBACK TO update_org_structure;
386     --
387     -- Only set output warning arguments
388     -- (Any key or derived arguments must be set to null
389     -- when validation only mode is being used.)
390 
391     hr_utility.set_location(' Leaving:'||l_proc, 80);
392   WHEN OTHERS THEN
393     --
394     -- A validation or unexpected error has occurred
395     ROLLBACK TO update_org_structure_version;
396     --
397     -- set in out parameters and set out parameters
398     --
399     p_object_version_number := l_ovn;
400     p_gap_warning := false;
401     hr_utility.set_location(' Leaving:'||l_proc, 90);
402     RAISE;
403     --
404     --
405 END update_org_structure_version;
406 
407 -- ----------------------------------------------------------------------------
408 -- |---------------------< delete_org_structure_version >---------------------|
409 -- ----------------------------------------------------------------------------
410 --
411 PROCEDURE delete_org_structure_version
412    (  p_validate                     IN BOOLEAN         default false
413      ,p_org_structure_version_id     IN number
414      ,p_object_version_number        IN number )
415 
416 IS
417   --
418   --
419   -- Declare cursors and local variables
420   --
421   l_proc                  VARCHAR2(72) := g_package||'delete_org_structure_version';
422   --
423 BEGIN
424 
425   --
426   -- Issue a savepoint
427   --
428   savepoint delete_organization;
429   --
430 begin
431 per_org_structure_version_bk3.delete_org_structure_version_b
432     ( p_validate                    => p_validate
433     , p_org_structure_version_id    => p_org_structure_version_id
434     , p_object_version_number       => p_object_version_number
435   );
436 
437   exception
438     when hr_api.cannot_find_prog_unit then
439       hr_api.cannot_find_prog_unit_error
440         (p_module_name => 'delete_org_structure_version'
441         ,p_hook_type   => 'BP'
442         );
443   end;
444 
445   --
446   -- Process Logic
447   -- =============
448   --
449   --  Need to lock main table to maintain the locking ladder order
450   --
451   hr_utility.set_location( l_proc, 30);
452   per_osv_shd.lck (p_org_structure_version_id    => p_org_structure_version_id,
453                   p_object_version_number       => p_object_version_number );
454   --
455   hr_utility.set_location( l_proc, 40);
456   per_osv_del.del   (  p_org_structure_version_id => p_org_structure_version_id,
457     p_object_version_number       => p_object_version_number );
458   --
459 --
460   hr_utility.set_location(' Leaving:'||l_proc, 60);
461   --
462   -- When in validation only mode raise the Validate_Enabled exception
463   --
464   IF p_validate THEN
465      RAISE hr_api.validate_enabled;
466   END IF;
467   --
468   --
469 begin
470 per_org_structure_version_bk3.delete_org_structure_version_a
471     (p_validate                     => p_validate
472     ,p_org_structure_version_id     => p_org_structure_version_id
473     ,p_object_version_number        => p_object_version_number
474   );
475 
476   exception
477     when hr_api.cannot_find_prog_unit then
478       hr_api.cannot_find_prog_unit_error
479         (p_module_name => 'delete_org_structure_version'
480         ,p_hook_type   => 'AP'
481         );
482   end;
483 
484 
485 EXCEPTION
486   --
487   WHEN hr_api.validate_enabled THEN
488     --
489     -- As the Validate_Enabled exception has been raised
490     -- we must rollback to the savepoint
491     --
495     -- (Any key or derived arguments must be set to null
492     ROLLBACK TO delete_org_structure_version;
493     --
494     -- Only set output warning arguments
496     -- when validation only mode is being used.)
497     --
498     hr_utility.set_location(' Leaving:'||l_proc, 80);
499   WHEN OTHERS THEN
500     --
501     -- A validation or unexpected error has occurred
502     ROLLBACK TO delete_org_structure_version;
503     hr_utility.set_location(' Leaving:'||l_proc, 90);
504     RAISE;
505     --
506 end delete_org_structure_version;
507 --
508 --
509 END per_org_structure_version_api;