[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'
70 ,p_org_structure_version_id out nocopy number
71 ,p_object_version_number out nocopy number
72 ,p_gap_warning out nocopy boolean
73 ) IS
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
208 RAISE hr_api.validate_enabled;
209 END IF;
210 --
211 --
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 --
339 -- When in validation only mode raise the Validate_Enabled exception
340 --
341 IF p_validate THEN
342 RAISE hr_api.validate_enabled;
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
392 WHEN OTHERS THEN
389 -- when validation only mode is being used.)
390
391 hr_utility.set_location(' Leaving:'||l_proc, 80);
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 --
492 ROLLBACK TO delete_org_structure_version;
493 --
494 -- Only set output warning arguments
498 hr_utility.set_location(' Leaving:'||l_proc, 80);
495 -- (Any key or derived arguments must be set to null
496 -- when validation only mode is being used.)
497 --
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;