DBA Data[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;