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