[Home] [Help]
PACKAGE BODY: APPS.PER_REC_ACTIVITY_FOR_SWI
Source
1 Package Body per_rec_activity_for_swi As
2 /* $Header: percfswi.pkb 120.2 2006/12/19 01:24:22 gjaggava noship $ */
3 --
4 -- Package variables
5 --
6 g_package varchar2(33) := 'per_rec_activity_for_swi.';
7 --
8 -- ----------------------------------------------------------------------------
9 -- |------------------------< create_rec_activity_for >-----------------------|
10 -- ----------------------------------------------------------------------------
11 PROCEDURE create_rec_activity_for
12 (p_validate in number default hr_api.g_false_num
13 ,p_rec_activity_for_id in number
14 ,p_business_group_id in number
15 ,p_vacancy_id in number
16 ,p_rec_activity_id in number
17 ,p_object_version_number out nocopy number
18 ,p_return_status out nocopy varchar2
19 ) is
20 --
21 -- Variables for API Boolean parameters
22 l_validate boolean;
23 --
24 -- Variables for IN/OUT parameters
25 --
26 -- Other variables
27 l_rec_activity_for_id number;
28 l_proc varchar2(72) := g_package ||'create_rec_activity_for';
29 Begin
30 hr_utility.set_location(' Entering:' || l_proc,10);
31 --
32 -- Issue a savepoint
33 --
34 savepoint create_rec_activity_for_swi;
35 --
36 -- Initialise Multiple Message Detection
37 --
38 hr_multi_message.enable_message_list;
39 --
40 -- Remember IN OUT parameter IN values
41 --
42 --
43 -- Convert constant values to their corresponding boolean value
44 --
45 l_validate :=
46 hr_api.constant_to_boolean
47 (p_constant_value => p_validate);
48 --
49 -- Register Surrogate ID or user key values
50 --
51 per_rcf_ins.set_base_key_value
52 (p_rec_activity_for_id => p_rec_activity_for_id
53 );
54 --
55 -- Call API
56 --
57 per_rec_activity_for_api.create_rec_activity_for
58 (p_validate => l_validate
59 ,p_rec_activity_for_id => l_rec_activity_for_id
60 ,p_business_group_id => p_business_group_id
61 ,p_vacancy_id => p_vacancy_id
62 ,p_rec_activity_id => p_rec_activity_id
63 ,p_object_version_number => p_object_version_number
64 );
65 --
66 -- Convert API warning boolean parameter values to specific
67 -- messages and add them to Multiple Message List
68 --
69 --
70 -- Convert API non-warning boolean parameter values
71 --
72 --
73 -- Derive the API return status value based on whether
74 -- messages of any type exist in the Multiple Message List.
75 -- Also disable Multiple Message Detection.
76 --
77 p_return_status := hr_multi_message.get_return_status_disable;
78 hr_utility.set_location(' Leaving:' || l_proc,20);
79 --
80 exception
81 when hr_multi_message.error_message_exist then
82 --
83 -- Catch the Multiple Message List exception which
84 -- indicates API processing has been aborted because
85 -- at least one message exists in the list.
86 --
87 rollback to create_rec_activity_for_swi;
88 --
89 -- Reset IN OUT parameters and set OUT parameters
90 --
91 p_object_version_number := null;
92 p_return_status := hr_multi_message.get_return_status_disable;
93 hr_utility.set_location(' Leaving:' || l_proc, 30);
94 when others then
95 --
96 -- When Multiple Message Detection is enabled catch
97 -- any Application specific or other unexpected
98 -- exceptions. Adding appropriate details to the
99 -- Multiple Message List. Otherwise re-raise the
100 -- error.
101 --
102 rollback to create_rec_activity_for_swi;
103 if hr_multi_message.unexpected_error_add(l_proc) then
104 hr_utility.set_location(' Leaving:' || l_proc,40);
105 raise;
106 end if;
107 --
108 -- Reset IN OUT and set OUT parameters
109 --
110 p_object_version_number := null;
111 p_return_status := hr_multi_message.get_return_status_disable;
112 hr_utility.set_location(' Leaving:' || l_proc,50);
113 end create_rec_activity_for;
114 -- ----------------------------------------------------------------------------
115 -- |------------------------< delete_rec_activity_for >-----------------------|
116 -- ----------------------------------------------------------------------------
117 PROCEDURE delete_rec_activity_for
118 (p_validate in number default hr_api.g_false_num
119 ,p_rec_activity_for_id in number
120 ,p_object_version_number in number
121 ,p_return_status out nocopy varchar2
122 ) is
123 --
124 -- Variables for API Boolean parameters
125 l_validate boolean;
126 --
127 -- Variables for IN/OUT parameters
128 --
129 -- Other variables
130 l_proc varchar2(72) := g_package ||'delete_rec_activity_for';
131 Begin
132 hr_utility.set_location(' Entering:' || l_proc,10);
133 --
134 -- Issue a savepoint
135 --
136 savepoint delete_rec_activity_for_swi;
137 --
138 -- Initialise Multiple Message Detection
139 --
140 hr_multi_message.enable_message_list;
141 --
142 -- Remember IN OUT parameter IN values
143 --
144 --
145 -- Convert constant values to their corresponding boolean value
146 --
147 l_validate :=
148 hr_api.constant_to_boolean
149 (p_constant_value => p_validate);
150 --
151 -- Register Surrogate ID or user key values
152 --
153 --
154 -- Call API
155 --
156 per_rec_activity_for_api.delete_rec_activity_for
157 (p_validate => l_validate
158 ,p_rec_activity_for_id => p_rec_activity_for_id
159 ,p_object_version_number => p_object_version_number
160 );
161 --
162 -- Convert API warning boolean parameter values to specific
163 -- messages and add them to Multiple Message List
164 --
165 --
166 -- Convert API non-warning boolean parameter values
167 --
168 --
169 -- Derive the API return status value based on whether
170 -- messages of any type exist in the Multiple Message List.
171 -- Also disable Multiple Message Detection.
172 --
173 p_return_status := hr_multi_message.get_return_status_disable;
174 hr_utility.set_location(' Leaving:' || l_proc,20);
175 --
176 exception
177 when hr_multi_message.error_message_exist then
178 --
179 -- Catch the Multiple Message List exception which
180 -- indicates API processing has been aborted because
181 -- at least one message exists in the list.
182 --
183 rollback to delete_rec_activity_for_swi;
184 --
185 -- Reset IN OUT parameters and set OUT parameters
186 --
187 p_return_status := hr_multi_message.get_return_status_disable;
188 hr_utility.set_location(' Leaving:' || l_proc, 30);
189 when others then
190 --
191 -- When Multiple Message Detection is enabled catch
192 -- any Application specific or other unexpected
193 -- exceptions. Adding appropriate details to the
194 -- Multiple Message List. Otherwise re-raise the
195 -- error.
196 --
197 rollback to delete_rec_activity_for_swi;
198 if hr_multi_message.unexpected_error_add(l_proc) then
199 hr_utility.set_location(' Leaving:' || l_proc,40);
200 raise;
201 end if;
202 --
203 -- Reset IN OUT and set OUT parameters
204 --
205 p_return_status := hr_multi_message.get_return_status_disable;
206 hr_utility.set_location(' Leaving:' || l_proc,50);
207 end delete_rec_activity_for;
208 -- ----------------------------------------------------------------------------
209 -- |------------------------< update_rec_activity_for >-----------------------|
210 -- ----------------------------------------------------------------------------
211 PROCEDURE update_rec_activity_for
212 (p_validate in number default hr_api.g_false_num
213 ,p_rec_activity_for_id in number
214 ,p_vacancy_id in number default hr_api.g_number
215 ,p_rec_activity_id in number default hr_api.g_number
216 ,p_object_version_number in out nocopy number
217 ,p_return_status out nocopy varchar2
218 ) is
219 --
220 -- Variables for API Boolean parameters
221 l_validate boolean;
222 --
223 -- Variables for IN/OUT parameters
224 l_object_version_number number;
225 --
226 -- Other variables
227 l_proc varchar2(72) := g_package ||'update_rec_activity_for';
228 Begin
229 hr_utility.set_location(' Entering:' || l_proc,10);
230 --
231 -- Issue a savepoint
232 --
233 savepoint update_rec_activity_for_swi;
234 --
235 -- Initialise Multiple Message Detection
236 --
237 hr_multi_message.enable_message_list;
238 --
239 -- Remember IN OUT parameter IN values
240 --
241 l_object_version_number := p_object_version_number;
242 --
243 -- Convert constant values to their corresponding boolean value
244 --
245 l_validate :=
246 hr_api.constant_to_boolean
247 (p_constant_value => p_validate);
248 --
249 -- Register Surrogate ID or user key values
250 --
251 --
252 -- Call API
253 --
254 per_rec_activity_for_api.update_rec_activity_for
255 (p_validate => l_validate
256 ,p_rec_activity_for_id => p_rec_activity_for_id
257 ,p_vacancy_id => p_vacancy_id
258 ,p_rec_activity_id => p_rec_activity_id
259 ,p_object_version_number => p_object_version_number
260 );
261 --
262 -- Convert API warning boolean parameter values to specific
263 -- messages and add them to Multiple Message List
264 --
265 --
266 -- Convert API non-warning boolean parameter values
267 --
268 --
269 -- Derive the API return status value based on whether
270 -- messages of any type exist in the Multiple Message List.
271 -- Also disable Multiple Message Detection.
272 --
273 p_return_status := hr_multi_message.get_return_status_disable;
274 hr_utility.set_location(' Leaving:' || l_proc,20);
275 --
276 exception
277 when hr_multi_message.error_message_exist then
278 --
279 -- Catch the Multiple Message List exception which
280 -- indicates API processing has been aborted because
281 -- at least one message exists in the list.
282 --
283 rollback to update_rec_activity_for_swi;
284 --
285 -- Reset IN OUT parameters and set OUT parameters
286 --
287 p_object_version_number := l_object_version_number;
288 p_return_status := hr_multi_message.get_return_status_disable;
289 hr_utility.set_location(' Leaving:' || l_proc, 30);
290 when others then
291 --
292 -- When Multiple Message Detection is enabled catch
293 -- any Application specific or other unexpected
294 -- exceptions. Adding appropriate details to the
295 -- Multiple Message List. Otherwise re-raise the
296 -- error.
297 --
298 rollback to update_rec_activity_for_swi;
299 if hr_multi_message.unexpected_error_add(l_proc) then
300 hr_utility.set_location(' Leaving:' || l_proc,40);
301 raise;
302 end if;
303 --
304 -- Reset IN OUT and set OUT parameters
305 --
306 p_object_version_number := l_object_version_number;
307 p_return_status := hr_multi_message.get_return_status_disable;
308 hr_utility.set_location(' Leaving:' || l_proc,50);
309 end update_rec_activity_for;
310 --
311 -- ----------------------------------------------------------------------------
312 -- |----------------------------< process_api >-------------------------------|
313 -- ----------------------------------------------------------------------------
314
315 procedure process_api
316 (
317 p_document in CLOB
318 ,p_return_status out nocopy VARCHAR2
319 ,p_validate in number default hr_api.g_false_num
320 ,p_effective_date in date default null
321 )
322 IS
323 l_postState VARCHAR2(2);
324 l_return_status VARCHAR2(1);
325 l_object_version_number number;
326 l_rec_activity_for_id number;
327 l_commitElement xmldom.DOMElement;
328 l_parser xmlparser.Parser;
329 l_CommitNode xmldom.DOMNode;
330
331 l_proc varchar2(72) := g_package || 'process_api';
332 l_effective_date date := trunc(sysdate);
333
334 BEGIN
335 --
336 hr_utility.set_location(' Entering:' || l_proc,10);
337 hr_utility.set_location(' CLOB --> xmldom.DOMNode:' || l_proc,15);
338 --
339 l_parser := xmlparser.newParser;
340 xmlparser.ParseCLOB(l_parser,p_document);
341 l_CommitNode := xmldom.makeNode(xmldom.getDocumentElement(xmlparser.getDocument(l_parser)));
342 --
343 hr_utility.set_location('Extracting the PostState:' || l_proc,20);
344
345 l_commitElement := xmldom.makeElement(l_CommitNode);
346 l_postState := xmldom.getAttribute(l_commitElement, 'PS');
347 --
348 --Get the values for in/out parameters
349 --
350 l_object_version_number := hr_transaction_swi.getNumberValue(l_CommitNode,'ObjectVersionNumber');
351 l_rec_activity_for_id := hr_transaction_swi.getNumberValue(l_CommitNode,'RecruitmentActivityForId');
352 --
353 if p_effective_date is null then
354 l_effective_date := trunc(sysdate);
355 else
356 l_effective_date := p_effective_date;
357 end if;
358 --
359 if l_postState = '0' then
360 --
361 hr_utility.set_location('creating :' || l_proc,30);
362 --
363 create_rec_activity_for
364 (p_validate => p_validate
365 ,p_rec_activity_for_id => l_rec_activity_for_id
366 ,p_business_group_id => hr_transaction_swi.getNumberValue(l_CommitNode,'BusinessGroupId',NULL)
367 ,p_vacancy_id => hr_transaction_swi.getNumberValue(l_CommitNode,'VacancyId',NULL)
368 ,p_rec_activity_id => hr_transaction_swi.getNumberValue(l_CommitNode,'RecruitmentActivityId',NULL)
369 ,p_object_version_number => l_object_version_number
370 ,p_return_status => l_return_status
371 );
372 --
373 elsif l_postState = '2' then
374 --
375 hr_utility.set_location('updating :' || l_proc,32);
376 --
377 update_rec_activity_for
378 (p_validate => p_validate
379 ,p_rec_activity_for_id => l_rec_activity_for_id
380 ,p_vacancy_id => hr_transaction_swi.getNumberValue(l_CommitNode,'VacancyId',NULL)
381 ,p_rec_activity_id => hr_transaction_swi.getNumberValue(l_CommitNode,'RecruitmentActivityId',NULL)
382 ,p_object_version_number => l_object_version_number
383 ,p_return_status => l_return_status
384 );
385 --
386 elsif l_postState = '3' then
387 --
388 hr_utility.set_location('deleting :' || l_proc,33);
389 --
390 -- we completely ignore deletes here as parent
391 -- recruitment_activity.process_api removes all child
392 -- recruitment_activity_for entities. This is needed to avoid
393 -- constraint violation as we have little control on the order of
394 -- process_api invocation
395 --
396 end if;
397
398 p_return_status := l_return_status;
399
400 hr_utility.set_location
401 ('Exiting :'|| l_proc || ': return status :'|| l_return_status || ':',40);
402
403 end process_api;
404
405 --
406 end per_rec_activity_for_swi;