[Home] [Help]
PACKAGE BODY: APPS.HR_QUEST_ANSWER_SWI
Source
1 Package Body hr_quest_answer_swi As
2 /* $Header: hrqsaswi.pkb 120.0 2005/05/31 02:26:37 appldev noship $ */
3 --
4 -- Package variables
5 --
6 g_package varchar2(33) := 'hr_quest_answer_swi.';
7 --
8 -- ----------------------------------------------------------------------------
9 -- |--------------------------< create_quest_answer >-------------------------|
10 -- ----------------------------------------------------------------------------
11 PROCEDURE create_quest_answer
12 (p_questionnaire_answer_id in number
13 ,p_questionnaire_template_id in number
14 ,p_type in varchar2
15 ,p_type_object_id in number
16 ,p_business_group_id in number
17 ,p_effective_date in date
18 ,p_validate in number default hr_api.g_false_num
19 ,p_return_status out nocopy varchar2
20 ) is
21 --
22 -- Variables for API Boolean parameters
23 --
24 -- Variables for IN/OUT parameters
25 l_validate boolean;
26 --
27 -- Other variables
28 l_questionnaire_answer_id number;
29 l_proc varchar2(72) := g_package || 'create_quest_answer';
30 Begin
31 hr_utility.set_location(' Entering:' || l_proc,10);
32 --
33 -- Issue a savepoint
34 --
35 savepoint create_quest_answer;
36 --
37 -- Initialise Multiple Message Detection
38 --
39 hr_multi_message.enable_message_list;
40 --
41 -- Remember IN OUT parameter IN values
42 --
43 --
44 -- Convert constant values to their corresponding boolean value
45 --
46 l_validate :=
47 hr_api.constant_to_boolean
48 (p_constant_value => p_validate);
49 --
50 --
51 -- Register Surrogate ID or user key values
52 hr_qsa_ins.set_base_key_value
53 (p_questionnaire_answer_id => p_questionnaire_answer_id
54 );
55 --
56 --
57 -- Call API
58 --
59 hr_quest_answer_api.create_quest_answer
60 (p_questionnaire_answer_id => l_questionnaire_answer_id
61 ,p_questionnaire_template_id => p_questionnaire_template_id
62 ,p_type => p_type
63 ,p_type_object_id => p_type_object_id
64 ,p_business_group_id => p_business_group_id
65 ,p_effective_date => p_effective_date
66 ,p_validate => l_validate
67 );
68 --
69 -- Convert API warning boolean parameter values to specific
70 -- messages and add them to Multiple Message List
71 --
72 --
73 -- Convert API non-warning boolean parameter values
74 --
75 --
76 -- Derive the API return status value based on whether
77 -- messages of any type exist in the Multiple Message List.
78 -- Also disable Multiple Message Detection.
79 --
80 If l_validate = TRUE Then
81 rollback to create_quest_answer;
82 End If;
83 --
84 p_return_status := hr_multi_message.get_return_status_disable;
85 hr_utility.set_location(' Leaving:' || l_proc,20);
86 --
87 exception
88 when hr_multi_message.error_message_exist then
89 --
90 -- Catch the Multiple Message List exception which
91 -- indicates API processing has been aborted because
92 -- at least one message exists in the list.
93 --
94 rollback to create_quest_answer;
95 --
96 -- Reset IN OUT parameters and set OUT parameters
97 --
98 p_return_status := hr_multi_message.get_return_status_disable;
99 hr_utility.set_location(' Leaving:' || l_proc, 30);
100 when others then
101 --
102 -- When Multiple Message Detection is enabled catch
103 -- any Application specific or other unexpected
104 -- exceptions. Adding appropriate details to the
105 -- Multiple Message List. Otherwise re-raise the
106 -- error.
107 --
108 rollback to create_quest_answer;
109 if hr_multi_message.unexpected_error_add(l_proc) then
110 hr_utility.set_location(' Leaving:' || l_proc,40);
111 raise;
112 end if;
113 --
114 -- Reset IN OUT and set OUT parameters
115 --
116 p_return_status := hr_multi_message.get_return_status_disable;
117 hr_utility.set_location(' Leaving:' || l_proc,50);
118 end create_quest_answer;
119 -- ----------------------------------------------------------------------------
120 -- |--------------------------< set_base_key_value >--------------------------|
121 -- ----------------------------------------------------------------------------
122 PROCEDURE set_base_key_value
123 (p_questionnaire_answer_id in number
124 ,p_return_status out nocopy varchar2
125 ) is
126 --
127 -- Variables for API Boolean parameters
128 --
129 -- Variables for IN/OUT parameters
130 --
131 -- Other variables
132 l_proc varchar2(72) := g_package ||'set_base_key_value';
133 Begin
134 hr_utility.set_location(' Entering:' || l_proc,10);
135 --
136 -- Issue a savepoint
137 --
138 savepoint set_base_key_value_swi;
139 --
140 -- Initialise Multiple Message Detection
141 --
142 hr_multi_message.enable_message_list;
143 --
144 -- Remember IN OUT parameter IN values
145 --
146 --
147 -- Convert constant values to their corresponding boolean value
148 --
149 --
150 -- Register Surrogate ID or user key values
151 --
152 --
153 -- Call API
154 --
155 hr_qsa_ins.set_base_key_value
156 (p_questionnaire_answer_id => p_questionnaire_answer_id
157 );
158 --
159 -- Convert API warning boolean parameter values to specific
160 -- messages and add them to Multiple Message List
161 --
162 --
163 -- Convert API non-warning boolean parameter values
164 --
165 --
166 -- Derive the API return status value based on whether
167 -- messages of any type exist in the Multiple Message List.
168 -- Also disable Multiple Message Detection.
169 --
170 p_return_status := hr_multi_message.get_return_status_disable;
171 hr_utility.set_location(' Leaving:' || l_proc,20);
172 --
173 exception
174 when hr_multi_message.error_message_exist then
175 --
176 -- Catch the Multiple Message List exception which
177 -- indicates API processing has been aborted because
178 -- at least one message exists in the list.
179 --
180 rollback to set_base_key_value_swi;
181 --
182 -- Reset IN OUT parameters and set OUT parameters
183 --
184 p_return_status := hr_multi_message.get_return_status_disable;
185 hr_utility.set_location(' Leaving:' || l_proc, 30);
186 when others then
187 --
188 -- When Multiple Message Detection is enabled catch
189 -- any Application specific or other unexpected
190 -- exceptions. Adding appropriate details to the
191 -- Multiple Message List. Otherwise re-raise the
192 -- error.
193 --
194 rollback to set_base_key_value_swi;
195 if hr_multi_message.unexpected_error_add(l_proc) then
196 hr_utility.set_location(' Leaving:' || l_proc,40);
197 raise;
198 end if;
199 --
200 -- Reset IN OUT and set OUT parameters
201 --
202 p_return_status := hr_multi_message.get_return_status_disable;
203 hr_utility.set_location(' Leaving:' || l_proc,50);
204 end set_base_key_value;
205 --
206 -- ----------------------------------------------------------------------------
207 -- |-------------------------< update_quest_answer >--------------------------|
208 -- ----------------------------------------------------------------------------
209 PROCEDURE update_quest_answer
210 (p_questionnaire_answer_id in number
211 ,p_questionnaire_template_id in number default hr_api.g_number
212 ,p_type in varchar2 default hr_api.g_varchar2
213 ,p_type_object_id in number default hr_api.g_number
214 ,p_business_group_id in number default hr_api.g_number
215 ,p_effective_date in date
216 ,p_validate in number default hr_api.g_false_num
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 --
225 -- Other variables
226 l_proc varchar2(72) := g_package ||'update_quest_answer';
227 Begin
228 hr_utility.set_location(' Entering:' || l_proc,10);
229 --
230 -- Issue a savepoint
231 --
232 savepoint update_quest_answer;
233 --
234 -- Initialise Multiple Message Detection
235 --
236 hr_multi_message.enable_message_list;
237 --
238 -- Remember IN OUT parameter IN values
239 --
240 --
241 -- Convert constant values to their corresponding boolean value
242 --
243 l_validate :=
244 hr_api.constant_to_boolean
245 (p_constant_value => p_validate);
246 --
247 -- Register Surrogate ID or user key values
248 --
249 --
250 -- Call API
251 --
252 hr_quest_answer_api.update_quest_answer
253 (p_questionnaire_answer_id => p_questionnaire_answer_id
254 ,p_questionnaire_template_id => p_questionnaire_template_id
255 ,p_type => p_type
256 ,p_type_object_id => p_type_object_id
257 ,p_business_group_id => p_business_group_id
258 ,p_effective_date => p_effective_date
259 );
260 --
261 -- Convert API warning boolean parameter values to specific
262 -- messages and add them to Multiple Message List
263 --
264 --
265 -- Convert API non-warning boolean parameter values
266 --
267 --
268 -- Derive the API return status value based on whether
269 -- messages of any type exist in the Multiple Message List.
270 -- Also disable Multiple Message Detection.
271 --
272 If l_validate = TRUE Then
273 rollback to update_quest_answer;
274 End If;
275 --
276 p_return_status := hr_multi_message.get_return_status_disable;
277 hr_utility.set_location(' Leaving:' || l_proc,20);
278 --
279 exception
280 when hr_multi_message.error_message_exist then
281 --
282 -- Catch the Multiple Message List exception which
283 -- indicates API processing has been aborted because
284 -- at least one message exists in the list.
285 --
286 rollback to update_quest_answer;
287 --
288 -- Reset IN OUT parameters and set OUT parameters
289 --
290 p_return_status := hr_multi_message.get_return_status_disable;
291 hr_utility.set_location(' Leaving:' || l_proc, 30);
292 when others then
293 --
294 -- When Multiple Message Detection is enabled catch
295 -- any Application specific or other unexpected
296 -- exceptions. Adding appropriate details to the
297 -- Multiple Message List. Otherwise re-raise the
298 -- error.
299 --
300 rollback to update_quest_answer;
301 if hr_multi_message.unexpected_error_add(l_proc) then
302 hr_utility.set_location(' Leaving:' || l_proc,40);
303 raise;
304 end if;
305 --
306 -- Reset IN OUT and set OUT parameters
307 --
308 p_return_status := hr_multi_message.get_return_status_disable;
309 hr_utility.set_location(' Leaving:' || l_proc,50);
310 end update_quest_answer;
311 --
312 -- ----------------------------------------------------------------------------
313 -- |--------------------------< delete_quest_answer >-------------------------|
314 -- ----------------------------------------------------------------------------
315 PROCEDURE delete_quest_answer
316 (p_questionnaire_answer_id in number
317 ,p_validate in number default hr_api.g_false_num
318 ,p_return_status out nocopy varchar2
319 ) is
320 --
321 -- Variables for API Boolean parameters
322 l_validate boolean;
323 --
324 -- Variables for IN/OUT parameters
325 --
326 -- Other variables
327 l_proc varchar2(72) := g_package || 'delete_quest_answer';
328 Begin
329 hr_utility.set_location(' Entering:' || l_proc,10);
330 --
331 -- Issue a savepoint
332 --
333 savepoint delete_quest_answer;
334 --
335 -- Initialise Multiple Message Detection
336 --
337 hr_multi_message.enable_message_list;
338 --
339 -- Remember IN OUT parameter IN values
340 --
341 --
342 -- Convert constant values to their corresponding boolean value
343 --
344 l_validate :=
345 hr_api.constant_to_boolean
346 (p_constant_value => p_validate);
347 --
348 -- Register Surrogate ID or user key values
349 --
350 --
351 -- Call API
352 --
353 hr_quest_answer_api.delete_quest_answer
354 (p_questionnaire_answer_id => p_questionnaire_answer_id
355 );
356 --
357 -- Convert API warning boolean parameter values to specific
358 -- messages and add them to Multiple Message List
359 --
360 --
361 -- Convert API non-warning boolean parameter values
362 --
363 --
364 -- Derive the API return status value based on whether
365 -- messages of any type exist in the Multiple Message List.
366 -- Also disable Multiple Message Detection.
367 --
368 If l_validate = TRUE Then
369 rollback to delete_quest_answer;
370 End If;
371 --
372 p_return_status := hr_multi_message.get_return_status_disable;
373 hr_utility.set_location(' Leaving:' || l_proc,20);
374 --
375 exception
376 when hr_multi_message.error_message_exist then
377 --
378 -- Catch the Multiple Message List exception which
379 -- indicates API processing has been aborted because
380 -- at least one message exists in the list.
381 --
382 rollback to delete_quest_answer;
383 --
384 -- Reset IN OUT parameters and set OUT parameters
385 --
386 p_return_status := hr_multi_message.get_return_status_disable;
387 hr_utility.set_location(' Leaving:' || l_proc, 30);
388 when others then
389 --
390 -- When Multiple Message Detection is enabled catch
391 -- any Application specific or other unexpected
392 -- exceptions. Adding appropriate details to the
393 -- Multiple Message List. Otherwise re-raise the
394 -- error.
395 --
396 rollback to delete_quest_answer;
397 if hr_multi_message.unexpected_error_add(l_proc) then
398 hr_utility.set_location(' Leaving:' || l_proc,40);
399 raise;
400 end if;
401 --
402 -- Reset IN OUT and set OUT parameters
403 --
404 p_return_status := hr_multi_message.get_return_status_disable;
405 hr_utility.set_location(' Leaving:' || l_proc,50);
406 end delete_quest_answer;
407
408 -- ----------------------------------------------------------------------------
409 -- |---------------------------< process_api >--------------------------------|
410 -- ----------------------------------------------------------------------------
411
412 Procedure process_api
413 (
414 p_document in CLOB
415 ,p_return_status out nocopy VARCHAR2
416 ,p_validate in number default hr_api.g_false_num
417 ,p_effective_date in date default null
418 )
419 IS
420 l_postState VARCHAR2(2);
421 l_return_status VARCHAR2(1);
422 l_object_version_number number;
423 l_commitElement xmldom.DOMElement;
424 l_parser xmlparser.Parser;
425 l_CommitNode xmldom.DOMNode;
426 l_proc varchar2(72) := g_package || 'process_api';
427
428 BEGIN
429
430 hr_utility.set_location(' Entering:' || l_proc,10);
431 hr_utility.set_location(' CLOB --> xmldom.DOMNode:' || l_proc,15);
432
433 l_parser := xmlparser.newParser;
434 xmlparser.ParseCLOB(l_parser,p_document);
435 l_CommitNode := xmldom.makeNode(xmldom.getDocumentElement(xmlparser.getDocument(l_parser)));
436
437 hr_utility.set_location('Extracting the PostState:' || l_proc,20);
438
439 l_commitElement := xmldom.makeElement(l_CommitNode);
440 l_postState := xmldom.getAttribute(l_commitElement, 'PS');
441
442 if l_postState = '0' then
443
444 create_quest_answer
445 ( p_questionnaire_answer_id => hr_transaction_swi.getNumberValue(l_CommitNode,'QuestionnaireAnswerId',null)
446 ,p_questionnaire_template_id => hr_transaction_swi.getNumberValue(l_CommitNode,'QuestionnaireTemplateId',null)
447 ,p_type => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Type',null)
448 ,p_type_object_id => hr_transaction_swi.getNumberValue(l_CommitNode,'TypeObjectId',null)
449 ,p_business_group_id => hr_transaction_swi.getNumberValue(l_CommitNode,'BusinessGroupId',null)
450 ,p_effective_date => p_effective_date
451 ,p_validate => p_validate
452 ,p_return_status => l_return_status
453 );
454
455 elsif l_postState = '2' then
456
457 update_quest_answer
458 ( p_questionnaire_answer_id => hr_transaction_swi.getNumberValue(l_CommitNode,'QuestionnaireAnswerId')
459 ,p_questionnaire_template_id => hr_transaction_swi.getNumberValue(l_CommitNode,'QuestionnaireTemplateId')
460 ,p_type => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Type')
461 ,p_type_object_id => hr_transaction_swi.getNumberValue(l_CommitNode,'TypeObjectId')
462 ,p_business_group_id => hr_transaction_swi.getNumberValue(l_CommitNode,'BusinessGroupId')
463 ,p_effective_date => p_effective_date
464 ,p_validate => p_validate
465 ,p_return_status => l_return_status
466 );
467
468 elsif l_postState = '3' then
469
470 delete_quest_answer
471 ( p_questionnaire_answer_id => hr_transaction_swi.getNumberValue(l_CommitNode,'QuestionnaireAnswerId')
472 ,p_validate => p_validate
473 ,p_return_status => l_return_status
474 );
475
476 p_return_status := l_return_status;
477
478 end if;
479
480 hr_utility.set_location('Exiting:' || l_proc,40);
481
482 END process_api;
483
484 end hr_quest_answer_swi;