DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_PERSON_ABSENCE_SWI

Source


1 Package body hr_person_absence_swi As
2 /* $Header: hrabsswi.pkb 120.6.12010000.3 2008/09/09 12:21:13 pbalu ship $ */
3 --
4 -- Package variables
5 --
6 g_package  varchar2(33) := 'hr_person_absence_swi.';
7 
8 function is_gb_leg_and_category_s(p_absence_attendance_type_id IN NUMBER ,
9 				    p_business_group_id IN NUMBER)
10   return boolean is
11 
12    l_proc varchar2(200) := g_package || 'is_gb_leg_and_category_s';
13 
14    populate_sickness_dates boolean := false;
15    l_absence_category per_absence_attendance_types.absence_category%type ;
16    l_legislation_code varchar2(150);
17 
18    cursor get_category_code (p_absence_attendance_type_id number) is
19    select absence_category
20    from per_absence_attendance_types
21    where absence_attendance_type_id = p_absence_attendance_type_id;
22 
23   begin
24     hr_utility.set_location(' Entering:' || l_proc,5);
25 
26     open get_category_code(p_absence_attendance_type_id);
27     fetch get_category_code into l_absence_category ;
28     close get_category_code ;
29 
30     IF l_absence_category = 'S' THEN
31        l_legislation_code := hr_api.return_legislation_code(p_business_group_id);
32        IF l_legislation_code = 'GB' THEN
33           hr_utility.set_location(l_proc,10);
34 
35     	  populate_sickness_dates := true;
36        END IF;
37     END IF;
38     hr_utility.set_location(' Leaving:' || l_proc,15);
39 
40     return populate_sickness_dates;
41   END is_gb_leg_and_category_s ;
42 --
43 --
44 -- ----------------------------------------------------------------------------
45 -- |-------------------------< create_person_absence >------------------------|
46 -- ----------------------------------------------------------------------------
47 PROCEDURE create_person_absence
48   (p_validate                     in     number    default hr_api.g_false_num
49   ,p_effective_date               in     date
50   ,p_person_id                    in     number
51   ,p_business_group_id            in     number
52   ,p_absence_attendance_type_id   in     number
53   ,p_abs_attendance_reason_id     in     number    default null
54   ,p_comments                     in     long      default null
55   ,p_date_notification            in     date      default null
56   ,p_date_projected_start         in     date      default null
57   ,p_time_projected_start         in     varchar2  default null
58   ,p_date_projected_end           in     date      default null
59   ,p_time_projected_end           in     varchar2  default null
60   ,p_date_start                   in     date      default null
61   ,p_time_start                   in     varchar2  default null
62   ,p_date_end                     in     date      default null
63   ,p_time_end                     in     varchar2  default null
64   ,p_absence_days                 in out nocopy number
65   ,p_absence_hours                in out nocopy number
66   ,p_authorising_person_id        in     number    default null
67   ,p_replacement_person_id        in     number    default null
68   ,p_attribute_category           in     varchar2  default null
69   ,p_attribute1                   in     varchar2  default null
70   ,p_attribute2                   in     varchar2  default null
71   ,p_attribute3                   in     varchar2  default null
72   ,p_attribute4                   in     varchar2  default null
73   ,p_attribute5                   in     varchar2  default null
74   ,p_attribute6                   in     varchar2  default null
75   ,p_attribute7                   in     varchar2  default null
76   ,p_attribute8                   in     varchar2  default null
77   ,p_attribute9                   in     varchar2  default null
78   ,p_attribute10                  in     varchar2  default null
79   ,p_attribute11                  in     varchar2  default null
80   ,p_attribute12                  in     varchar2  default null
81   ,p_attribute13                  in     varchar2  default null
82   ,p_attribute14                  in     varchar2  default null
83   ,p_attribute15                  in     varchar2  default null
84   ,p_attribute16                  in     varchar2  default null
85   ,p_attribute17                  in     varchar2  default null
86   ,p_attribute18                  in     varchar2  default null
87   ,p_attribute19                  in     varchar2  default null
88   ,p_attribute20                  in     varchar2  default null
89   ,p_period_of_incapacity_id      in     number    default null
90   ,p_ssp1_issued                  in     varchar2  default null
91   ,p_maternity_id                 in     number    default null
92   ,p_sickness_start_date          in     date      default null
93   ,p_sickness_end_date            in     date      default null
94   ,p_pregnancy_related_illness    in     varchar2  default null
95   ,p_reason_for_notification_dela in     varchar2  default null
96   ,p_accept_late_notification_fla in     varchar2  default null
97   ,p_linked_absence_id            in     number    default null
98   ,p_batch_id                     in     number    default null
99   ,p_create_element_entry         in     number    default null
100   ,p_abs_information_category     in     varchar2  default null
101   ,p_abs_information1             in     varchar2  default null
102   ,p_abs_information2             in     varchar2  default null
103   ,p_abs_information3             in     varchar2  default null
104   ,p_abs_information4             in     varchar2  default null
105   ,p_abs_information5             in     varchar2  default null
106   ,p_abs_information6             in     varchar2  default null
107   ,p_abs_information7             in     varchar2  default null
108   ,p_abs_information8             in     varchar2  default null
109   ,p_abs_information9             in     varchar2  default null
110   ,p_abs_information10            in     varchar2  default null
111   ,p_abs_information11            in     varchar2  default null
112   ,p_abs_information12            in     varchar2  default null
113   ,p_abs_information13            in     varchar2  default null
114   ,p_abs_information14            in     varchar2  default null
115   ,p_abs_information15            in     varchar2  default null
116   ,p_abs_information16            in     varchar2  default null
117   ,p_abs_information17            in     varchar2  default null
118   ,p_abs_information18            in     varchar2  default null
119   ,p_abs_information19            in     varchar2  default null
120   ,p_abs_information20            in     varchar2  default null
121   ,p_abs_information21            in     varchar2  default null
122   ,p_abs_information22            in     varchar2  default null
123   ,p_abs_information23            in     varchar2  default null
124   ,p_abs_information24            in     varchar2  default null
125   ,p_abs_information25            in     varchar2  default null
126   ,p_abs_information26            in     varchar2  default null
127   ,p_abs_information27            in     varchar2  default null
128   ,p_abs_information28            in     varchar2  default null
129   ,p_abs_information29            in     varchar2  default null
130   ,p_abs_information30            in     varchar2  default null
131   ,p_absence_case_id              in     number    default null
132   ,p_absence_attendance_id        in out nocopy number
133   ,p_object_version_number           out nocopy number
134   ,p_occurrence                      out nocopy number
135   ,p_return_status                   out nocopy varchar2
136   ) is
137   --
138   -- Variables for API Boolean parameters
139   l_validate                      boolean;
140   l_create_element_entry          boolean;
141   l_dur_dys_less_warning          boolean;
142   l_dur_hrs_less_warning          boolean;
143   l_exceeds_pto_entit_warning     boolean;
144   l_exceeds_run_total_warning     boolean;
145   l_abs_overlap_warning           boolean;
146   l_abs_day_after_warning         boolean;
147   l_dur_overwritten_warning       boolean;
148   --
149   -- Variables for IN/OUT parameters
150   l_absence_days                  number;
151   l_absence_hours                 number;
152 
153    l_populate_sickness_dates boolean := false;
154    l_sickness_start_date date := p_sickness_start_date;
155    l_sickness_end_date date := p_sickness_end_date;
156    l_date_notification date := p_date_notification;
157    l_abs_information_category varchar2(25) := p_abs_information_category;
158 
159    l_date_start date := p_date_start;
160    l_date_end date := p_date_end;
161    l_date_projected_start date := p_date_projected_start;
162    l_date_projected_end date := p_date_projected_end;
163    l_ssp1_issued varchar2(1) := p_ssp1_issued;
164    l_pregnancy_related_illness varchar2(1) := p_pregnancy_related_illness;
165    l_accept_late_notification_fla varchar2(1) := p_accept_late_notification_fla;
166 
167   --
168   -- Other variables
169   l_proc    varchar2(72) := g_package ||'create_person_absence';
170 Begin
171   hr_utility.set_location(' Entering:' || l_proc,10);
172   --
173   -- Issue a savepoint
174   --
175   savepoint create_person_absence_swi;
176   --
177   -- Initialise Multiple Message Detection
178   --
179   hr_multi_message.enable_message_list;
180   --
181   -- Remember IN OUT parameter IN values
182   --
183 --  Bug 6347488 fix starts
184 
185  if p_date_start is null then
186   p_absence_days                  := null;
187   p_absence_hours                 := null;
188  end if;
189 
190 -- Bug 6347488 fix ends
191 
192   l_absence_days                  := p_absence_days;
193   l_absence_hours                 := p_absence_hours;
194 
195   --
196   -- Convert constant values to their corresponding boolean value
197   --
198   l_validate :=
199     hr_api.constant_to_boolean
200       (p_constant_value => p_validate);
201   l_create_element_entry :=
202     hr_api.constant_to_boolean
203       (p_constant_value => p_create_element_entry);
204   --
205   -- Register Surrogate ID or user key values
206   --
207   per_abs_ins.set_base_key_value
208     (p_absence_attendance_id => p_absence_attendance_id
209     );
210 
211     l_populate_sickness_dates := is_gb_leg_and_category_s(p_absence_attendance_type_id , p_business_group_id);
212 
213     IF l_populate_sickness_dates THEN
214        IF p_date_start IS NULL AND p_date_projected_start IS NOT NULL THEN
215 	  l_date_start := l_date_projected_start;
216 	  l_date_projected_start := NULL;
217 	  l_date_end := l_date_projected_end;
218 	  l_date_projected_end := NULL;
219        END IF;
220        IF l_date_start > SYSDATE THEN
221 	 fnd_message.set_name('SSP', 'SSP_35036_INV_NOTIF_DATE');
222          fnd_message.raise_error;
223        END IF;
224        l_sickness_start_date := l_date_start;
225        l_sickness_end_date := l_date_end;
226        l_date_notification := sysdate;
227        l_abs_information_category := 'GB_PQP_OSP_OMP_PART_DAYS';
228        l_ssp1_issued := 'N';
229        l_pregnancy_related_illness := 'N';
230        l_accept_late_notification_fla := 'N';
231     END IF;
232   --
233   -- Call API
234   --
235   hr_person_absence_api.create_person_absence
236     (p_validate                     => l_validate
237     ,p_effective_date               => p_effective_date
238     ,p_person_id                    => p_person_id
239     ,p_business_group_id            => p_business_group_id
240     ,p_absence_attendance_type_id   => p_absence_attendance_type_id
241     ,p_abs_attendance_reason_id     => p_abs_attendance_reason_id
242     ,p_comments                     => p_comments
243     ,p_date_notification            => l_date_notification
244     ,p_date_projected_start         => l_date_projected_start
245     ,p_time_projected_start         => p_time_projected_start
246     ,p_date_projected_end           => l_date_projected_end
247     ,p_time_projected_end           => p_time_projected_end
248     ,p_date_start                   => l_date_start
249     ,p_time_start                   => p_time_start
250     ,p_date_end                     => l_date_end
251     ,p_time_end                     => p_time_end
252     ,p_absence_days                 => p_absence_days
253     ,p_absence_hours                => p_absence_hours
254     ,p_authorising_person_id        => p_authorising_person_id
255     ,p_replacement_person_id        => p_replacement_person_id
256     ,p_attribute_category           => p_attribute_category
257     ,p_attribute1                   => p_attribute1
258     ,p_attribute2                   => p_attribute2
259     ,p_attribute3                   => p_attribute3
260     ,p_attribute4                   => p_attribute4
261     ,p_attribute5                   => p_attribute5
262     ,p_attribute6                   => p_attribute6
263     ,p_attribute7                   => p_attribute7
264     ,p_attribute8                   => p_attribute8
265     ,p_attribute9                   => p_attribute9
266     ,p_attribute10                  => p_attribute10
267     ,p_attribute11                  => p_attribute11
268     ,p_attribute12                  => p_attribute12
269     ,p_attribute13                  => p_attribute13
270     ,p_attribute14                  => p_attribute14
271     ,p_attribute15                  => p_attribute15
272     ,p_attribute16                  => p_attribute16
273     ,p_attribute17                  => p_attribute17
274     ,p_attribute18                  => p_attribute18
275     ,p_attribute19                  => p_attribute19
276     ,p_attribute20                  => p_attribute20
277     ,p_period_of_incapacity_id      => p_period_of_incapacity_id
278     ,p_ssp1_issued                  => l_ssp1_issued
279     ,p_maternity_id                 => p_maternity_id
280     ,p_sickness_start_date          => l_sickness_start_date
281     ,p_sickness_end_date            => l_sickness_end_date
282     ,p_pregnancy_related_illness    => l_pregnancy_related_illness
283     ,p_reason_for_notification_dela => p_reason_for_notification_dela
284     ,p_accept_late_notification_fla => l_accept_late_notification_fla
285     ,p_linked_absence_id            => p_linked_absence_id
286     ,p_batch_id                     => p_batch_id
287     ,p_create_element_entry         => l_create_element_entry
288     ,p_abs_information_category     => l_abs_information_category
289     ,p_abs_information1             => p_abs_information1
290     ,p_abs_information2             => p_abs_information2
291     ,p_abs_information3             => p_abs_information3
292     ,p_abs_information4             => p_abs_information4
293     ,p_abs_information5             => p_abs_information5
294     ,p_abs_information6             => p_abs_information6
295     ,p_abs_information7             => p_abs_information7
296     ,p_abs_information8             => p_abs_information8
297     ,p_abs_information9             => p_abs_information9
298     ,p_abs_information10            => p_abs_information10
299     ,p_abs_information11            => p_abs_information11
300     ,p_abs_information12            => p_abs_information12
301     ,p_abs_information13            => p_abs_information13
302     ,p_abs_information14            => p_abs_information14
303     ,p_abs_information15            => p_abs_information15
304     ,p_abs_information16            => p_abs_information16
305     ,p_abs_information17            => p_abs_information17
306     ,p_abs_information18            => p_abs_information18
307     ,p_abs_information19            => p_abs_information19
308     ,p_abs_information20            => p_abs_information20
309     ,p_abs_information21            => p_abs_information21
310     ,p_abs_information22            => p_abs_information22
311     ,p_abs_information23            => p_abs_information23
312     ,p_abs_information24            => p_abs_information24
313     ,p_abs_information25            => p_abs_information25
314     ,p_abs_information26            => p_abs_information26
315     ,p_abs_information27            => p_abs_information27
316     ,p_abs_information28            => p_abs_information28
317     ,p_abs_information29            => p_abs_information29
318     ,p_abs_information30            => p_abs_information30
319     ,p_absence_attendance_id        => p_absence_attendance_id
320     ,p_absence_case_id              => p_absence_case_id
321     ,p_object_version_number        => p_object_version_number
322     ,p_occurrence                   => p_occurrence
323     ,p_dur_dys_less_warning         => l_dur_dys_less_warning
324     ,p_dur_hrs_less_warning         => l_dur_hrs_less_warning
325     ,p_exceeds_pto_entit_warning    => l_exceeds_pto_entit_warning
326     ,p_exceeds_run_total_warning    => l_exceeds_run_total_warning
327     ,p_abs_overlap_warning          => l_abs_overlap_warning
328     ,p_abs_day_after_warning        => l_abs_day_after_warning
329     ,p_dur_overwritten_warning      => l_dur_overwritten_warning
330     );
331   --
332   -- Convert API warning boolean parameter values to specific
333   -- messages and add them to Multiple Message List
334   --
335   if l_validate then
336   if l_dur_dys_less_warning then
337       hr_utility.set_message(800, 'HR_EMP_ABS_SHORT_DURATION');
338       hr_multi_message.add
339         (p_message_type => hr_multi_message.g_warning_msg
340         );
341   end if;
342   if l_dur_hrs_less_warning then
343      hr_utility.set_message(800,'HR_ABS_HOUR_LESS_DURATION');
344       hr_multi_message.add
345         (p_message_type => hr_multi_message.g_warning_msg
346         );
347   end if;
348   if l_exceeds_pto_entit_warning then
349      hr_utility.set_message(800, 'HR_LOA_EMP_NOT_ENTITLED');
350       hr_multi_message.add
351         (p_message_type => hr_multi_message.g_warning_msg
352         );
353   end if;
354   if l_exceeds_run_total_warning then
355      hr_utility.set_message(800, 'HR_LOA_DET_RUNNING_ZERO');
356       hr_multi_message.add
357         (p_message_type => hr_multi_message.g_warning_msg
358         );
359   end if;
360   if l_abs_overlap_warning then
361      hr_utility.set_message(800, 'HR_LOA_ABSENCE_OVERLAP');
362       hr_multi_message.add
363         (p_message_type => hr_multi_message.g_warning_msg
364         );
365   end if;
366   if l_abs_day_after_warning then
367      hr_utility.set_message(800, 'HR_LOA_DET_ABS_DAY_AFTER');
368       hr_multi_message.add
369         (p_message_type => hr_multi_message.g_warning_msg
370         );
371   end if;
372   end if;
373   --
374   -- We don't raise overwritten warning from SSHR
375   --
376   --if l_dur_overwritten_warning then
377   --   hr_utility.set_message(800, 'EDIT_HERE: MESSAGE_NAME ');
378   --    hr_multi_message.add
379   --      (p_message_type => hr_multi_message.g_warning_msg
380   --      );
381   --end if;  --
382   -- Convert API non-warning boolean parameter values
383   --
384   --
385   -- Derive the API return status value based on whether
386   -- messages of any type exist in the Multiple Message List.
387   -- Also disable Multiple Message Detection.
388   --
389   p_return_status := hr_multi_message.get_return_status_disable;
390   hr_utility.set_location(' Leaving:' || l_proc,20);
391   --
392 exception
393   when hr_multi_message.error_message_exist then
394     --
395     -- Catch the Multiple Message List exception which
396     -- indicates API processing has been aborted because
397     -- at least one message exists in the list.
398     --
399     rollback to create_person_absence_swi;
400     --
401     -- Reset IN OUT parameters and set OUT parameters
402     --
403     p_absence_days                 := l_absence_days;
404     p_absence_hours                := l_absence_hours;
405     p_absence_attendance_id        := null;
406     p_object_version_number        := null;
407     p_occurrence                   := null;
408     p_return_status := hr_multi_message.get_return_status_disable;
409     hr_utility.set_location(' Leaving:' || l_proc, 30);
410   when others then
411     --
412     -- When Multiple Message Detection is enabled catch
413     -- any Application specific or other unexpected
414     -- exceptions.  Adding appropriate details to the
415     -- Multiple Message List.  Otherwise re-raise the
416     -- error.
417     --
418     rollback to create_person_absence_swi;
419     if hr_multi_message.unexpected_error_add(l_proc) then
420        hr_utility.set_location(' Leaving:' || l_proc,40);
421        raise;
422     end if;
423     --
424     -- Reset IN OUT and set OUT parameters
425     --
426     p_absence_days                 := l_absence_days;
427     p_absence_hours                := l_absence_hours;
428     p_absence_attendance_id        := null;
429     p_object_version_number        := null;
430     p_occurrence                   := null;
431     p_return_status := hr_multi_message.get_return_status_disable;
432     hr_utility.set_location(' Leaving:' || l_proc,50);
433 end create_person_absence;
434 -- ----------------------------------------------------------------------------
435 -- |-------------------------< update_person_absence >------------------------|
436 -- ----------------------------------------------------------------------------
437 PROCEDURE update_person_absence
438   (p_validate                     in     number    default hr_api.g_false_num
439   ,p_effective_date               in     date
440   ,p_absence_attendance_id        in     number
441   ,p_abs_attendance_reason_id     in     number    default hr_api.g_number
442   ,p_comments                     in     long      default hr_api.g_varchar2
443   ,p_date_notification            in     date      default hr_api.g_date
444   ,p_date_projected_start         in     date      default hr_api.g_date
445   ,p_time_projected_start         in     varchar2  default hr_api.g_varchar2
446   ,p_date_projected_end           in     date      default hr_api.g_date
447   ,p_time_projected_end           in     varchar2  default hr_api.g_varchar2
448   ,p_date_start                   in     date      default hr_api.g_date
449   ,p_time_start                   in     varchar2  default hr_api.g_varchar2
450   ,p_date_end                     in     date      default hr_api.g_date
451   ,p_time_end                     in     varchar2  default hr_api.g_varchar2
452   ,p_absence_days                 in out nocopy number
453   ,p_absence_hours                in out nocopy number
454   ,p_authorising_person_id        in     number    default hr_api.g_number
455   ,p_replacement_person_id        in     number    default hr_api.g_number
456   ,p_attribute_category           in     varchar2  default hr_api.g_varchar2
457   ,p_attribute1                   in     varchar2  default hr_api.g_varchar2
458   ,p_attribute2                   in     varchar2  default hr_api.g_varchar2
459   ,p_attribute3                   in     varchar2  default hr_api.g_varchar2
460   ,p_attribute4                   in     varchar2  default hr_api.g_varchar2
461   ,p_attribute5                   in     varchar2  default hr_api.g_varchar2
462   ,p_attribute6                   in     varchar2  default hr_api.g_varchar2
463   ,p_attribute7                   in     varchar2  default hr_api.g_varchar2
464   ,p_attribute8                   in     varchar2  default hr_api.g_varchar2
465   ,p_attribute9                   in     varchar2  default hr_api.g_varchar2
466   ,p_attribute10                  in     varchar2  default hr_api.g_varchar2
467   ,p_attribute11                  in     varchar2  default hr_api.g_varchar2
468   ,p_attribute12                  in     varchar2  default hr_api.g_varchar2
469   ,p_attribute13                  in     varchar2  default hr_api.g_varchar2
470   ,p_attribute14                  in     varchar2  default hr_api.g_varchar2
471   ,p_attribute15                  in     varchar2  default hr_api.g_varchar2
472   ,p_attribute16                  in     varchar2  default hr_api.g_varchar2
473   ,p_attribute17                  in     varchar2  default hr_api.g_varchar2
474   ,p_attribute18                  in     varchar2  default hr_api.g_varchar2
475   ,p_attribute19                  in     varchar2  default hr_api.g_varchar2
476   ,p_attribute20                  in     varchar2  default hr_api.g_varchar2
477   ,p_period_of_incapacity_id      in     number    default hr_api.g_number
478   ,p_ssp1_issued                  in     varchar2  default hr_api.g_varchar2
479   ,p_maternity_id                 in     number    default hr_api.g_number
480   ,p_sickness_start_date          in     date      default hr_api.g_date
481   ,p_sickness_end_date            in     date      default hr_api.g_date
482   ,p_pregnancy_related_illness    in     varchar2  default hr_api.g_varchar2
483   ,p_reason_for_notification_dela in     varchar2  default hr_api.g_varchar2
484   ,p_accept_late_notification_fla in     varchar2  default hr_api.g_varchar2
485   ,p_linked_absence_id            in     number    default hr_api.g_number
486   ,p_batch_id                     in     number    default hr_api.g_number
487   ,p_abs_information_category     in     varchar2  default hr_api.g_varchar2
488   ,p_abs_information1             in     varchar2  default hr_api.g_varchar2
489   ,p_abs_information2             in     varchar2  default hr_api.g_varchar2
490   ,p_abs_information3             in     varchar2  default hr_api.g_varchar2
491   ,p_abs_information4             in     varchar2  default hr_api.g_varchar2
492   ,p_abs_information5             in     varchar2  default hr_api.g_varchar2
493   ,p_abs_information6             in     varchar2  default hr_api.g_varchar2
494   ,p_abs_information7             in     varchar2  default hr_api.g_varchar2
495   ,p_abs_information8             in     varchar2  default hr_api.g_varchar2
496   ,p_abs_information9             in     varchar2  default hr_api.g_varchar2
497   ,p_abs_information10            in     varchar2  default hr_api.g_varchar2
498   ,p_abs_information11            in     varchar2  default hr_api.g_varchar2
499   ,p_abs_information12            in     varchar2  default hr_api.g_varchar2
500   ,p_abs_information13            in     varchar2  default hr_api.g_varchar2
501   ,p_abs_information14            in     varchar2  default hr_api.g_varchar2
502   ,p_abs_information15            in     varchar2  default hr_api.g_varchar2
503   ,p_abs_information16            in     varchar2  default hr_api.g_varchar2
504   ,p_abs_information17            in     varchar2  default hr_api.g_varchar2
505   ,p_abs_information18            in     varchar2  default hr_api.g_varchar2
506   ,p_abs_information19            in     varchar2  default hr_api.g_varchar2
507   ,p_abs_information20            in     varchar2  default hr_api.g_varchar2
508   ,p_abs_information21            in     varchar2  default hr_api.g_varchar2
509   ,p_abs_information22            in     varchar2  default hr_api.g_varchar2
510   ,p_abs_information23            in     varchar2  default hr_api.g_varchar2
511   ,p_abs_information24            in     varchar2  default hr_api.g_varchar2
512   ,p_abs_information25            in     varchar2  default hr_api.g_varchar2
513   ,p_abs_information26            in     varchar2  default hr_api.g_varchar2
514   ,p_abs_information27            in     varchar2  default hr_api.g_varchar2
515   ,p_abs_information28            in     varchar2  default hr_api.g_varchar2
516   ,p_abs_information29            in     varchar2  default hr_api.g_varchar2
517   ,p_abs_information30            in     varchar2  default hr_api.g_varchar2
518   ,p_absence_case_id              in     number    default hr_api.g_number
519   ,p_object_version_number        in out nocopy number
520   ,p_return_status                   out nocopy varchar2
521   ) is
522   --
523   -- Variables for API Boolean parameters
524   l_validate                      boolean;
525   l_dur_dys_less_warning          boolean;
526   l_dur_hrs_less_warning          boolean;
527   l_exceeds_pto_entit_warning     boolean;
528   l_exceeds_run_total_warning     boolean;
529   l_abs_overlap_warning           boolean;
530   l_abs_day_after_warning         boolean;
531   l_dur_overwritten_warning       boolean;
532   l_del_element_entry_warning     boolean;
533   --
534   -- Variables for IN/OUT parameters
535   l_absence_days                  number;
536   l_absence_hours                 number;
537   l_object_version_number         number;
538 
539 --7382975 begin
540    l_populate_sickness_dates boolean := false;
541    l_sickness_start_date date := p_sickness_start_date;
542    l_sickness_end_date date := p_sickness_end_date;
543    l_absence_attendance_type_id per_absence_attendances.absence_attendance_type_id%type;
544    l_business_group_id per_absence_attendances.business_group_id%type;
545 
546    Cursor c_is_gb_leg is
547    select absence_attendance_type_id, business_group_id
548    from per_absence_attendances
549    where absence_attendance_id = p_absence_attendance_id;
550 --7382975 End
551 
552 
553   --
554   -- Other variables
555   l_proc    varchar2(72) := g_package ||'update_person_absence';
556 Begin
557   hr_utility.set_location(' Entering:' || l_proc,10);
558   --
559   -- Issue a savepoint
560   --
561   savepoint update_person_absence_swi;
562   --
563   -- Initialise Multiple Message Detection
564   --
565   hr_multi_message.enable_message_list;
566   --
567 
568  --  Bug 6347488 fix starts
569 
570  if p_date_start is null then
571   p_absence_days                  := null;
572   p_absence_hours                 := null;
573  end if;
574 
575 -- Bug 6347488 fix ends
576 
577   -- Remember IN OUT parameter IN values
578   --
579   l_absence_days                  := p_absence_days;
580   l_absence_hours                 := p_absence_hours;
581   l_object_version_number         := p_object_version_number;
582   --
583   -- Convert constant values to their corresponding boolean value
584   --
585   l_validate :=
586     hr_api.constant_to_boolean
587       (p_constant_value => p_validate);
588   --
589   -- Register Surrogate ID or user key values
590   --
591     --7382975 begin
592     open c_is_gb_leg;
593     fetch c_is_gb_leg into l_absence_attendance_type_id, l_business_group_id;
594 
595     IF c_is_gb_leg%FOUND THEN
596 	  l_populate_sickness_dates := is_gb_leg_and_category_s(l_absence_attendance_type_id , l_business_group_id);
597 
598      IF l_populate_sickness_dates THEN
599 	IF (p_date_start <> hr_api.g_date) THEN
600 	        IF p_date_start > SYSDATE THEN
601   		  fnd_message.set_name('SSP', 'SSP_35036_INV_NOTIF_DATE');
602 	          fnd_message.raise_error;
603 	        END IF;
604         	l_sickness_start_date := p_date_start;
605  	END IF;
606 	IF (p_date_end <> hr_api.g_date) THEN
607 	        l_sickness_end_date   := p_date_end;
608 	END IF;
609      END IF;
610     END IF;
611 
612     close c_is_gb_leg;
613   --7382975 end
614 
615 
616 
617   --
618   -- Call API
619   --
620   hr_person_absence_api.update_person_absence
621     (p_validate                     => l_validate
622     ,p_effective_date               => p_effective_date
623     ,p_absence_attendance_id        => p_absence_attendance_id
624     ,p_abs_attendance_reason_id     => p_abs_attendance_reason_id
625     ,p_comments                     => p_comments
626     ,p_date_notification            => p_date_notification
627     ,p_date_projected_start         => p_date_projected_start
628     ,p_time_projected_start         => p_time_projected_start
629     ,p_date_projected_end           => p_date_projected_end
630     ,p_time_projected_end           => p_time_projected_end
631     ,p_date_start                   => p_date_start
632     ,p_time_start                   => p_time_start
633     ,p_date_end                     => p_date_end
634     ,p_time_end                     => p_time_end
635     ,p_absence_days                 => p_absence_days
636     ,p_absence_hours                => p_absence_hours
637     ,p_authorising_person_id        => p_authorising_person_id
638     ,p_replacement_person_id        => p_replacement_person_id
639     ,p_attribute_category           => p_attribute_category
640     ,p_attribute1                   => p_attribute1
641     ,p_attribute2                   => p_attribute2
642     ,p_attribute3                   => p_attribute3
643     ,p_attribute4                   => p_attribute4
644     ,p_attribute5                   => p_attribute5
645     ,p_attribute6                   => p_attribute6
646     ,p_attribute7                   => p_attribute7
647     ,p_attribute8                   => p_attribute8
648     ,p_attribute9                   => p_attribute9
649     ,p_attribute10                  => p_attribute10
650     ,p_attribute11                  => p_attribute11
651     ,p_attribute12                  => p_attribute12
652     ,p_attribute13                  => p_attribute13
653     ,p_attribute14                  => p_attribute14
654     ,p_attribute15                  => p_attribute15
655     ,p_attribute16                  => p_attribute16
656     ,p_attribute17                  => p_attribute17
657     ,p_attribute18                  => p_attribute18
658     ,p_attribute19                  => p_attribute19
659     ,p_attribute20                  => p_attribute20
660     ,p_period_of_incapacity_id      => p_period_of_incapacity_id
661     ,p_ssp1_issued                  => p_ssp1_issued
662     ,p_maternity_id                 => p_maternity_id
663     ,p_sickness_start_date          => l_sickness_start_date  --7382975
664     ,p_sickness_end_date            => l_sickness_end_date    --7382975
665     ,p_pregnancy_related_illness    => p_pregnancy_related_illness
666     ,p_reason_for_notification_dela => p_reason_for_notification_dela
667     ,p_accept_late_notification_fla => p_accept_late_notification_fla
668     ,p_linked_absence_id            => p_linked_absence_id
669     ,p_batch_id                     => p_batch_id
670     ,p_abs_information_category     => p_abs_information_category
671     ,p_abs_information1             => p_abs_information1
672     ,p_abs_information2             => p_abs_information2
673     ,p_abs_information3             => p_abs_information3
674     ,p_abs_information4             => p_abs_information4
675     ,p_abs_information5             => p_abs_information5
676     ,p_abs_information6             => p_abs_information6
677     ,p_abs_information7             => p_abs_information7
678     ,p_abs_information8             => p_abs_information8
679     ,p_abs_information9             => p_abs_information9
680     ,p_abs_information10            => p_abs_information10
681     ,p_abs_information11            => p_abs_information11
682     ,p_abs_information12            => p_abs_information12
683     ,p_abs_information13            => p_abs_information13
684     ,p_abs_information14            => p_abs_information14
685     ,p_abs_information15            => p_abs_information15
686     ,p_abs_information16            => p_abs_information16
687     ,p_abs_information17            => p_abs_information17
688     ,p_abs_information18            => p_abs_information18
689     ,p_abs_information19            => p_abs_information19
690     ,p_abs_information20            => p_abs_information20
691     ,p_abs_information21            => p_abs_information21
692     ,p_abs_information22            => p_abs_information22
693     ,p_abs_information23            => p_abs_information23
694     ,p_abs_information24            => p_abs_information24
695     ,p_abs_information25            => p_abs_information25
696     ,p_abs_information26            => p_abs_information26
697     ,p_abs_information27            => p_abs_information27
698     ,p_abs_information28            => p_abs_information28
699     ,p_abs_information29            => p_abs_information29
700     ,p_abs_information30            => p_abs_information30
701     ,p_absence_case_id              => p_absence_case_id
702     ,p_object_version_number        => p_object_version_number
703     ,p_dur_dys_less_warning         => l_dur_dys_less_warning
704     ,p_dur_hrs_less_warning         => l_dur_hrs_less_warning
705     ,p_exceeds_pto_entit_warning    => l_exceeds_pto_entit_warning
706     ,p_exceeds_run_total_warning    => l_exceeds_run_total_warning
707     ,p_abs_overlap_warning          => l_abs_overlap_warning
708     ,p_abs_day_after_warning        => l_abs_day_after_warning
709     ,p_dur_overwritten_warning      => l_dur_overwritten_warning
710     ,p_del_element_entry_warning    => l_del_element_entry_warning
711     );
712   --
713   -- Convert API warning boolean parameter values to specific
714   -- messages and add them to Multiple Message List
715   --
716   if l_validate then
717   if l_dur_dys_less_warning then
718      hr_utility.set_message(800, 'HR_EMP_ABS_SHORT_DURATION');
719       hr_multi_message.add
720         (p_message_type => hr_multi_message.g_warning_msg
721         );
722   end if;
723   if l_dur_hrs_less_warning then
724      hr_utility.set_message(800, 'HR_ABS_HOUR_LESS_DURATION');
725       hr_multi_message.add
726         (p_message_type => hr_multi_message.g_warning_msg
727         );
728   end if;
729   if l_exceeds_pto_entit_warning then
730      hr_utility.set_message(800, 'HR_LOA_EMP_NOT_ENTITLED');
731       hr_multi_message.add
732         (p_message_type => hr_multi_message.g_warning_msg
733         );
734   end if;
735   if l_exceeds_run_total_warning then
736      hr_utility.set_message(800, 'HR_LOA_DET_RUNNING_ZERO');
737       hr_multi_message.add
738         (p_message_type => hr_multi_message.g_warning_msg
739         );
740   end if;
741   if l_abs_overlap_warning then
742      hr_utility.set_message(800, 'HR_LOA_ABSENCE_OVERLAP');
743       hr_multi_message.add
744         (p_message_type => hr_multi_message.g_warning_msg
745         );
746   end if;
747   if l_abs_day_after_warning then
748      hr_utility.set_message(800, 'HR_LOA_DET_ABS_DAY_AFTER');
749       hr_multi_message.add
750         (p_message_type => hr_multi_message.g_warning_msg
751         );
752   end if;
753   --
754   -- We don't raise overwritten warning from SSHR
755   --
756   --if l_dur_overwritten_warning then
757   --   hr_utility.set_message(800, 'EDIT_HERE: MESSAGE_NAME ');
758   --    hr_multi_message.add
759   --      (p_message_type => hr_multi_message.g_warning_msg
760   --      );
761   --end if;  --
762   if l_del_element_entry_warning then
763      fnd_message.set_name('EDIT HERE: APP_CODE', 'EDIT_HERE: MESSAGE_NAME ');
764       hr_multi_message.add
765         (p_message_type => hr_multi_message.g_warning_msg
766         );
767   end if;
768   end if;  --
769   -- Convert API non-warning boolean parameter values
770   --
771   --
772   -- Derive the API return status value based on whether
773   -- messages of any type exist in the Multiple Message List.
774   -- Also disable Multiple Message Detection.
775   --
776   p_return_status := hr_multi_message.get_return_status_disable;
777   hr_utility.set_location(' Leaving:' || l_proc,20);
778   --
779 exception
780   when hr_multi_message.error_message_exist then
781     --
782     -- Catch the Multiple Message List exception which
783     -- indicates API processing has been aborted because
784     -- at least one message exists in the list.
785     --
786     rollback to update_person_absence_swi;
787     --
788     -- Reset IN OUT parameters and set OUT parameters
789     --
790     p_absence_days                 := l_absence_days;
791     p_absence_hours                := l_absence_hours;
792     p_object_version_number        := l_object_version_number;
793     p_return_status := hr_multi_message.get_return_status_disable;
794     hr_utility.set_location(' Leaving:' || l_proc, 30);
795   when others then
796     --
797     -- When Multiple Message Detection is enabled catch
798     -- any Application specific or other unexpected
799     -- exceptions.  Adding appropriate details to the
800     -- Multiple Message List.  Otherwise re-raise the
801     -- error.
802     --
803     rollback to update_person_absence_swi;
804     if hr_multi_message.unexpected_error_add(l_proc) then
805        hr_utility.set_location(' Leaving:' || l_proc,40);
806        raise;
807     end if;
808     --
809     -- Reset IN OUT and set OUT parameters
810     --
811     p_absence_days                 := l_absence_days;
812     p_absence_hours                := l_absence_hours;
813     p_object_version_number        := l_object_version_number;
814     p_return_status := hr_multi_message.get_return_status_disable;
815     hr_utility.set_location(' Leaving:' || l_proc,50);
816 end update_person_absence;
817 -- ----------------------------------------------------------------------------
818 -- |-------------------------< delete_person_absence >------------------------|
819 -- ----------------------------------------------------------------------------
820 PROCEDURE delete_person_absence
821   (p_validate                     in     number    default hr_api.g_false_num
822   ,p_absence_attendance_id        in     number
823   ,p_object_version_number        in     number
824   ,p_return_status                   out nocopy varchar2
825   ) is
826   --
827   -- Variables for API Boolean parameters
828   l_validate                      boolean;
829   --
830   -- Variables for IN/OUT parameters
831   --
832   -- Other variables
833   l_proc    varchar2(72) := g_package ||'delete_person_absence';
834 Begin
835 
836 
837   hr_utility.set_location(' Entering:' || l_proc,10);
838   --
839   -- Issue a savepoint
840   --
841   savepoint delete_person_absence_swi;
842   --
843   -- Initialise Multiple Message Detection
844   --
845   hr_multi_message.enable_message_list;
846   --
847   -- Remember IN OUT parameter IN values
848   --
849   --
850   -- Convert constant values to their corresponding boolean value
851   --
852   l_validate :=
853     hr_api.constant_to_boolean
854       (p_constant_value => p_validate);
855   --
856   -- Register Surrogate ID or user key values
857   --
858   --
859   -- Call API
860   --
861   hr_person_absence_api.delete_person_absence
862     (p_validate                     => l_validate
863     ,p_absence_attendance_id        => p_absence_attendance_id
864     ,p_object_version_number        => p_object_version_number
865     );
866   --
867   -- Convert API warning boolean parameter values to specific
868   -- messages and add them to Multiple Message List
869   --
870   --
871   -- Convert API non-warning boolean parameter values
872   --
873   --
874   -- Derive the API return status value based on whether
875   -- messages of any type exist in the Multiple Message List.
876   -- Also disable Multiple Message Detection.
877   --
878   p_return_status := hr_multi_message.get_return_status_disable;
879   hr_utility.set_location(' Leaving:' || l_proc,20);
880   --
881 exception
882   when hr_multi_message.error_message_exist then
883     --
884     -- Catch the Multiple Message List exception which
885     -- indicates API processing has been aborted because
886     -- at least one message exists in the list.
887     --
888     rollback to delete_person_absence_swi;
889     --
890     -- Reset IN OUT parameters and set OUT parameters
891     --
892     p_return_status := hr_multi_message.get_return_status_disable;
893     hr_utility.set_location(' Leaving:' || l_proc, 30);
894   when others then
895     --
896     -- When Multiple Message Detection is enabled catch
897     -- any Application specific or other unexpected
898     -- exceptions.  Adding appropriate details to the
899     -- Multiple Message List.  Otherwise re-raise the
900     -- error.
901     --
902     rollback to delete_person_absence_swi;
903     if hr_multi_message.unexpected_error_add(l_proc) then
904        hr_utility.set_location(' Leaving:' || l_proc,40);
905        raise;
906     end if;
907     --
908     -- Reset IN OUT and set OUT parameters
909     --
910     p_return_status := hr_multi_message.get_return_status_disable;
911     hr_utility.set_location(' Leaving:' || l_proc,50);
912 end delete_person_absence;
913 
914 
915 -- ----------------------------------------------------------------------------
916 -- |--------------------------< update_attachment >----------------------------|
917 -- ----------------------------------------------------------------------------
918 --
919 procedure update_attachment
920           (p_entity_name        in varchar2 default null
921           ,p_pk1_value          in varchar2 default null
922           ,p_rowid              in varchar2 ) is
923 
924 
925 
926   l_proc    varchar2(72) := g_package ||'update_attachment';
927   l_rowid                  varchar2(50);
928   l_language               varchar2(30) ;
929   data_error               exception;
930   --
931 
932   cursor csr_get_attached_doc  is
933     select *
934     from   fnd_attached_documents
935     where  rowid = p_rowid;
936   --
937   cursor csr_get_doc(csr_p_document_id in number)  is
938     select *
939     from   fnd_documents
940     where  document_id = csr_p_document_id;
941   --
942   cursor csr_get_doc_tl  (csr_p_lang in varchar2
943                          ,csr_p_document_id in number) is
944     select *
945     from   fnd_documents_tl
946     where  document_id = csr_p_document_id
947     and    language = csr_p_lang;
948   --
949   l_attached_doc_pre_upd   csr_get_attached_doc%rowtype;
950   l_doc_pre_upd            csr_get_doc%rowtype;
951   l_doc_tl_pre_upd         csr_get_doc_tl%rowtype;
952   --
953   --
954   Begin
955     hr_utility.set_location(' Entering:' || l_proc,10);
956     --
957     -- Get language
958     select userenv('LANG') into l_language from dual;
959     --
960     -- Get the before update nullable fields which are not used by the
961     -- Web page to ensure the values are propagated.
962      Open csr_get_attached_doc;
963      fetch csr_get_attached_doc into l_attached_doc_pre_upd;
964      IF csr_get_attached_doc%NOTFOUND THEN
965         close csr_get_attached_doc;
966         raise data_error;
967      END IF;
968 
969      Open csr_get_doc(l_attached_doc_pre_upd.document_id);
970      fetch csr_get_doc into l_doc_pre_upd;
971      IF csr_get_doc%NOTFOUND then
972         close csr_get_doc;
973         raise data_error;
974      END IF;
975 
976      Open csr_get_doc_tl (csr_p_lang => l_language
977                       ,csr_p_document_id => l_attached_doc_pre_upd.document_id);
978      fetch csr_get_doc_tl into l_doc_tl_pre_upd;
979      IF csr_get_doc_tl%NOTFOUND then
980         close csr_get_doc_tl;
981         raise data_error;
982      END IF;
983 
984      hr_utility.set_location(' before  fnd_attached_documents_pkg.lock_row :' || l_proc,20);
985      -- Now, lock the rows.
986      fnd_attached_documents_pkg.lock_row
987             (x_rowid                      => p_rowid
988             ,x_attached_document_id       =>
989                       l_attached_doc_pre_upd.attached_document_id
990             ,x_document_id                => l_doc_pre_upd.document_id
991             ,x_seq_num                    => l_attached_doc_pre_upd.seq_num
992             ,x_entity_name                => l_attached_doc_pre_upd.entity_name
993             ,x_column1                    => l_attached_doc_pre_upd.column1
994             ,x_pk1_value                  => l_attached_doc_pre_upd.pk1_value
995             ,x_pk2_value                  => l_attached_doc_pre_upd.pk2_value
996             ,x_pk3_value                  => l_attached_doc_pre_upd.pk3_value
997             ,x_pk4_value                  => l_attached_doc_pre_upd.pk4_value
998             ,x_pk5_value                  => l_attached_doc_pre_upd.pk5_value
999             ,x_automatically_added_flag   =>
1000                     l_attached_doc_pre_upd.automatically_added_flag
1001             ,x_attribute_category         =>
1002                     l_attached_doc_pre_upd.attribute_category
1003             ,x_attribute1                 => l_attached_doc_pre_upd.attribute1
1004             ,x_attribute2                 => l_attached_doc_pre_upd.attribute2
1005             ,x_attribute3                 => l_attached_doc_pre_upd.attribute3
1006             ,x_attribute4                 => l_attached_doc_pre_upd.attribute4
1007             ,x_attribute5                 => l_attached_doc_pre_upd.attribute5
1008             ,x_attribute6                 => l_attached_doc_pre_upd.attribute6
1009             ,x_attribute7                 => l_attached_doc_pre_upd.attribute7
1010             ,x_attribute8                 => l_attached_doc_pre_upd.attribute8
1011             ,x_attribute9                 => l_attached_doc_pre_upd.attribute9
1012             ,x_attribute10                => l_attached_doc_pre_upd.attribute10
1013             ,x_attribute11                => l_attached_doc_pre_upd.attribute11
1014             ,x_attribute12                => l_attached_doc_pre_upd.attribute12
1015             ,x_attribute13                => l_attached_doc_pre_upd.attribute13
1016             ,x_attribute14                => l_attached_doc_pre_upd.attribute14
1017             ,x_attribute15                => l_attached_doc_pre_upd.attribute15
1018             ,x_datatype_id                => l_doc_pre_upd.datatype_id
1019             ,x_category_id                => l_doc_pre_upd.category_id
1020             ,x_security_type              => l_doc_pre_upd.security_type
1021             ,x_security_id                => l_doc_pre_upd.security_id
1022             ,x_publish_flag               => l_doc_pre_upd.publish_flag
1023             ,x_image_type                 => l_doc_pre_upd.image_type
1024             ,x_storage_type               => l_doc_pre_upd.storage_type
1025             ,x_usage_type                 => l_doc_pre_upd.usage_type
1026             ,x_start_date_active          => l_doc_pre_upd.start_date_active
1027             ,x_end_date_active            => l_doc_pre_upd.end_date_active
1028             ,x_language                   => l_doc_tl_pre_upd.language
1029             ,x_description                => l_doc_tl_pre_upd.description
1030             ,x_file_name                  => l_doc_pre_upd.file_name
1031             ,x_media_id                   => l_doc_pre_upd.media_id
1032             ,x_doc_attribute_category     =>
1033                           l_doc_tl_pre_upd.doc_attribute_category
1034             ,x_doc_attribute1             => l_doc_tl_pre_upd.doc_attribute1
1035             ,x_doc_attribute2             => l_doc_tl_pre_upd.doc_attribute2
1036             ,x_doc_attribute3             => l_doc_tl_pre_upd.doc_attribute3
1037             ,x_doc_attribute4             => l_doc_tl_pre_upd.doc_attribute4
1038             ,x_doc_attribute5             => l_doc_tl_pre_upd.doc_attribute5
1039             ,x_doc_attribute6             => l_doc_tl_pre_upd.doc_attribute6
1040             ,x_doc_attribute7             => l_doc_tl_pre_upd.doc_attribute7
1041             ,x_doc_attribute8             => l_doc_tl_pre_upd.doc_attribute8
1042             ,x_doc_attribute9             => l_doc_tl_pre_upd.doc_attribute9
1043             ,x_doc_attribute10            => l_doc_tl_pre_upd.doc_attribute10
1044             ,x_doc_attribute11            => l_doc_tl_pre_upd.doc_attribute11
1045             ,x_doc_attribute12            => l_doc_tl_pre_upd.doc_attribute12
1046             ,x_doc_attribute13            => l_doc_tl_pre_upd.doc_attribute13
1047             ,x_doc_attribute14            => l_doc_tl_pre_upd.doc_attribute14
1048             ,x_doc_attribute15            => l_doc_tl_pre_upd.doc_attribute15
1049             ,x_url                        => l_doc_pre_upd.url
1050             ,x_title                      => l_doc_tl_pre_upd.title
1051             );
1052 
1053 
1054   -- Update document to fnd_attached_documents, fnd_documents,
1055   -- fnd_documents_tl
1056   --
1057         hr_utility.set_location(' before fnd_attached_documents_pkg.update_row :' || l_proc,30);
1058             fnd_attached_documents_pkg.update_row
1059             (x_rowid                      => p_rowid
1060             ,x_attached_document_id       =>
1061                         l_attached_doc_pre_upd.attached_document_id
1062             ,x_document_id                => l_doc_pre_upd.document_id
1063             ,x_last_update_date           => trunc(sysdate)
1064             ,x_last_updated_by            => l_attached_doc_pre_upd.last_updated_by
1065             ,x_seq_num                    => l_attached_doc_pre_upd.seq_num
1066             ,x_entity_name                => p_entity_name
1067             ,x_column1                    => l_attached_doc_pre_upd.column1
1068             ,x_pk1_value                  => p_pk1_value
1069             ,x_pk2_value                  => l_attached_doc_pre_upd.pk2_value
1070             ,x_pk3_value                  => l_attached_doc_pre_upd.pk3_value
1071             ,x_pk4_value                  => l_attached_doc_pre_upd.pk4_value
1072             ,x_pk5_value                  => l_attached_doc_pre_upd.pk5_value
1073             ,x_automatically_added_flag   =>
1074                       l_attached_doc_pre_upd.automatically_added_flag
1075             ,x_attribute_category         =>
1076                       l_attached_doc_pre_upd.attribute_category
1077             ,x_attribute1                 => l_attached_doc_pre_upd.attribute1
1078             ,x_attribute2                 => l_attached_doc_pre_upd.attribute2
1079             ,x_attribute3                 => l_attached_doc_pre_upd.attribute3
1080             ,x_attribute4                 => l_attached_doc_pre_upd.attribute4
1081             ,x_attribute5                 => l_attached_doc_pre_upd.attribute5
1082             ,x_attribute6                 => l_attached_doc_pre_upd.attribute6
1083             ,x_attribute7                 => l_attached_doc_pre_upd.attribute7
1084             ,x_attribute8                 => l_attached_doc_pre_upd.attribute8
1085             ,x_attribute9                 => l_attached_doc_pre_upd.attribute9
1086             ,x_attribute10                => l_attached_doc_pre_upd.attribute10
1087             ,x_attribute11                => l_attached_doc_pre_upd.attribute11
1088             ,x_attribute12                => l_attached_doc_pre_upd.attribute12
1089             ,x_attribute13                => l_attached_doc_pre_upd.attribute13
1090             ,x_attribute14                => l_attached_doc_pre_upd.attribute14
1091             ,x_attribute15                => l_attached_doc_pre_upd.attribute15
1092             /*   columns necessary for creating a document on the fly  */
1093             ,x_datatype_id                => l_doc_pre_upd.datatype_id
1094             ,x_category_id                => l_doc_pre_upd.category_id
1095             ,x_security_type              => l_doc_pre_upd.security_type
1096             ,x_security_id                => l_doc_pre_upd.security_id
1097             ,x_publish_flag               => l_doc_pre_upd.publish_flag
1098             ,x_image_type                 => l_doc_pre_upd.image_type
1099             ,x_storage_type               => l_doc_pre_upd.storage_type
1100             ,x_usage_type                 => l_doc_pre_upd.usage_type
1101            ,x_start_date_active          => trunc(sysdate)
1102             ,x_end_date_active            => l_doc_pre_upd.end_date_active
1103             ,x_language                   => l_language
1104             ,x_description                => l_doc_tl_pre_upd.description
1105             ,x_file_name                  => l_doc_pre_upd.file_name
1106             ,x_media_id                   => l_doc_pre_upd.media_id
1107             ,x_doc_attribute_category     =>
1108                       l_doc_tl_pre_upd.doc_attribute_category
1109             ,x_doc_attribute1             => l_doc_tl_pre_upd.doc_attribute1
1110             ,x_doc_attribute2             => l_doc_tl_pre_upd.doc_attribute2
1111             ,x_doc_attribute3             => l_doc_tl_pre_upd.doc_attribute3
1112             ,x_doc_attribute4             => l_doc_tl_pre_upd.doc_attribute4
1113             ,x_doc_attribute5             => l_doc_tl_pre_upd.doc_attribute5
1114             ,x_doc_attribute6             => l_doc_tl_pre_upd.doc_attribute6
1115             ,x_doc_attribute7             => l_doc_tl_pre_upd.doc_attribute7
1116             ,x_doc_attribute8             => l_doc_tl_pre_upd.doc_attribute8
1117             ,x_doc_attribute9             => l_doc_tl_pre_upd.doc_attribute9
1118             ,x_doc_attribute10            => l_doc_tl_pre_upd.doc_attribute10
1119             ,x_doc_attribute11            => l_doc_tl_pre_upd.doc_attribute11
1120             ,x_doc_attribute12            => l_doc_tl_pre_upd.doc_attribute12
1121             ,x_doc_attribute13            => l_doc_tl_pre_upd.doc_attribute13
1122             ,x_doc_attribute14            => l_doc_tl_pre_upd.doc_attribute14
1123             ,x_doc_attribute15            => l_doc_tl_pre_upd.doc_attribute15
1124             ,x_url                        => l_doc_pre_upd.url
1125             ,x_title                      => l_doc_tl_pre_upd.title
1126             );
1127 
1128   hr_utility.set_location(' after fnd_attached_documents_pkg.update_row :' || l_proc,40);
1129   hr_utility.set_location(' Leaving:' || l_proc,50);
1130 
1131   EXCEPTION
1132     when others then
1133       hr_utility.set_location(' Error in :' || l_proc,60);
1134          raise;
1135   --
1136   End update_attachment;
1137 
1138 
1139 procedure merge_attachments(p_transaction_id in     number,
1140                            p_absence_attendance_id in     number,
1141                            p_return_status in out nocopy varchar2)
1142  is
1143 -- Other variables
1144   l_proc    varchar2(72) := g_package ||'merge_attachments';
1145   l_rowid                  varchar2(50);
1146   lv_pk1_value varchar2(72) := p_absence_attendance_id||'_'||p_transaction_id ;
1147   data_error               exception;
1148   lv_entity_name constant varchar2(30) := 'PER_ABSENCE_ATTENDANCES';
1149 
1150   cursor csr_get_attached_doc is
1151     select *
1152     from   fnd_attached_documents
1153     where  entity_name=lv_entity_name
1154      and   pk1_value=lv_pk1_value;
1155 
1156   CURSOR C (X_attached_document_id in number) IS
1157     SELECT rowid
1158     FROM fnd_attached_documents
1159     WHERE attached_document_id = X_attached_document_id;
1160   --
1161 Begin
1162   hr_utility.set_location(' Entering:' || l_proc,10);
1163   --
1164   -- Issue a savepoint
1165   --
1166   savepoint attachments_person_absence_swi;
1167   --
1168   -- Initialise Multiple Message Detection
1169   --
1170   hr_multi_message.enable_message_list;
1171 
1172   for attached_documents_rec in csr_get_attached_doc loop
1173      OPEN C (attached_documents_rec.attached_document_id);
1174       FETCH C INTO l_rowid;
1175       if (C%NOTFOUND) then
1176       CLOSE C;
1177        RAISE NO_DATA_FOUND;
1178      end if;
1179     CLOSE C;
1180     -- call the update_attachement for each attached doc
1181         update_attachment
1182           (p_entity_name=>lv_entity_name
1183           ,p_pk1_value=> p_absence_attendance_id
1184           ,p_rowid=>l_rowid);
1185 
1186   end loop;
1187 
1188  p_return_status := hr_multi_message.get_return_status_disable;
1189 
1190  hr_utility.set_location(' Leaving:' || l_proc,20);
1191   --
1192 exception
1193 when others then
1194     --
1195     -- When Multiple Message Detection is enabled catch
1196     -- any Application specific or other unexpected
1197     -- exceptions.  Adding appropriate details to the
1198     -- Multiple Message List.  Otherwise re-raise the
1199     -- error.
1200     --
1201     rollback to attachments_person_absence_swi;
1202     if hr_multi_message.unexpected_error_add(l_proc) then
1203        hr_utility.set_location(' Leaving:' || l_proc,40);
1204        raise;
1205     end if;
1206     --
1207     -- Reset IN OUT and set OUT parameters
1208     p_return_status := hr_multi_message.get_return_status_disable;
1209 
1210     hr_utility.set_location(' Leaving:' || l_proc,50);
1211 end merge_attachments;
1212 
1213 
1214 -- ----------------------------------------------------------------------------
1215 -- |---------------------------< process_api >--------------------------------|
1216 -- ----------------------------------------------------------------------------
1217 
1218 Procedure process_api
1219 ( p_document            in         CLOB
1220  ,p_return_status       out nocopy VARCHAR2
1221  ,p_validate            in         number    default hr_api.g_false_num
1222  ,p_effective_date      in         date      default null
1223 )
1224 IS
1225    l_postState VARCHAR2(2);
1226    l_return_status VARCHAR2(1);
1227    l_commitElement xmldom.DOMElement;
1228    l_object_version_number number;
1229    l_parser xmlparser.Parser;
1230    l_CommitNode xmldom.DOMNode;
1231    l_proc    varchar2(72) := g_package || 'process_api';
1232 
1233     l_absence_days number;
1234     l_absence_hours number;
1235     l_absence_attendance_id number;
1236     l_occurrence number;
1237     lv_action varchar2(30);
1238 
1239 BEGIN
1240 
1241    hr_utility.set_location(' Entering:' || l_proc,10);
1242    hr_utility.set_location(' CLOB --> xmldom.DOMNode:' || l_proc,15);
1243    l_parser      := xmlparser.newParser;
1244    xmlparser.ParseCLOB(l_parser,p_document);
1245    l_CommitNode  := xmldom.makeNode(xmldom.getDocumentElement(xmlparser.getDocument(l_parser)));
1246 
1247    hr_utility.set_location('Extracting the PostState:' || l_proc,20);
1248 
1249    l_commitElement := xmldom.makeElement(l_CommitNode);
1250    l_postState := xmldom.getAttribute(l_commitElement, 'PS');
1251    l_object_version_number := hr_transaction_swi.getNumberValue(l_CommitNode,'ObjectVersionNumber');
1252 
1253    -- overiding for poststate
1254    -- CancelMode
1255    if(l_postState = '2') then
1256      -- Check if the transaction is for delete
1257      begin
1258       lv_action:= hr_xml_util.get_node_value(hr_transaction_swi.g_txn_ctx.TRANSACTION_ID,'AbsenceAction','Transaction/TransCtx/CNode',
1259       NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
1260      end;
1261      if(lv_action='CancelMode') then
1262         -- reset the poststate
1263         l_postState:= '3';
1264      end if;
1265    end if;
1266 
1267 
1268    if l_postState = '0' then
1269 
1270     l_absence_days := hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceDays',null);
1271     l_absence_hours := hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceHours',null);
1272     l_absence_attendance_id := hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceAttendanceId',null);
1273     l_occurrence := hr_transaction_swi.getNumberValue(l_CommitNode,'Occurrence',null);
1274 
1275     create_person_absence
1276     (p_validate                     => p_validate
1277     ,p_effective_date               =>  p_effective_date
1278     ,p_person_id                    =>  hr_transaction_swi.getNumberValue(l_CommitNode,'PersonId',null)
1279     ,p_business_group_id            => hr_transaction_swi.getNumberValue(l_CommitNode,'BusinessGroupId',null)
1280     ,p_absence_attendance_type_id   => hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceAttendanceTypeId',null)
1281     ,p_abs_attendance_reason_id     =>  hr_transaction_swi.getNumberValue(l_CommitNode,'AbsAttendanceReasonId',null)
1282     ,p_comments                     => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Comments',null)
1283     ,p_date_notification            => hr_transaction_swi.getDateValue(l_CommitNode,'DateNotification',null)
1284     ,p_date_projected_start         => hr_transaction_swi.getDateValue(l_CommitNode,'DateProjectedStart',null)
1285     ,p_time_projected_start         => hr_transaction_swi.getVarchar2Value(l_CommitNode,'TimeProjectedStart',null)
1286     ,p_date_projected_end           => hr_transaction_swi.getDateValue(l_CommitNode,'DateProjectedEnd',null)
1287     ,p_time_projected_end           => hr_transaction_swi.getVarchar2Value(l_CommitNode,'TimeProjectedEnd',null)
1288     ,p_date_start                   => hr_transaction_swi.getDateValue(l_CommitNode,'DateStart',null)
1289     ,p_time_start                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'TimeStart',null)
1290     ,p_date_end                     => hr_transaction_swi.getDateValue(l_CommitNode,'DateEnd',null)
1291     ,p_time_end                     => hr_transaction_swi.getVarchar2Value(l_CommitNode,'TimeEnd',null)
1292     ,p_absence_days                 => l_absence_days
1293     ,p_absence_hours                => l_absence_hours
1294     ,p_authorising_person_id        => hr_transaction_swi.getNumberValue(l_CommitNode,'AuthorisingPersonId',null)
1295     ,p_replacement_person_id        => hr_transaction_swi.getNumberValue(l_CommitNode,'ReplacementPersonId',null)
1296     ,p_attribute_category           => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AttributeCategory',null)
1297     ,p_attribute1                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute1',null)
1298     ,p_attribute2                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute2',null)
1299     ,p_attribute3                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute3',null)
1300     ,p_attribute4                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute4',null)
1301     ,p_attribute5                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute5',null)
1302     ,p_attribute6                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute6',null)
1303     ,p_attribute7                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute7',null)
1304     ,p_attribute8                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute8',null)
1305     ,p_attribute9                   => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute9',null)
1306     ,p_attribute10                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute10',null)
1307     ,p_attribute11                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute11',null)
1308     ,p_attribute12                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute12',null)
1309     ,p_attribute13                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute13',null)
1310     ,p_attribute14                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute14',null)
1311     ,p_attribute15                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute15',null)
1312     ,p_attribute16                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute16',null)
1313     ,p_attribute17                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute17',null)
1314     ,p_attribute18                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute18',null)
1315     ,p_attribute19                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute19',null)
1316     ,p_attribute20                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute20',null)
1317     ,p_period_of_incapacity_id      => hr_transaction_swi.getNumberValue(l_CommitNode,'PeriodOfIncapacityId',null)
1318     ,p_ssp1_issued                  => hr_transaction_swi.getVarchar2Value(l_CommitNode,'Ssp1Issued',null)
1319     ,p_maternity_id                 => hr_transaction_swi.getNumberValue(l_CommitNode,'MaternityId',null)
1320     ,p_sickness_start_date          => hr_transaction_swi.getDateValue(l_CommitNode,'SicknessStartDate',null)
1321     ,p_sickness_end_date            => hr_transaction_swi.getDateValue(l_CommitNode,'SicknessEndDate',null)
1322     ,p_pregnancy_related_illness    => hr_transaction_swi.getVarchar2Value(l_CommitNode,'PregnancyRelatedIllness',null)
1323     ,p_reason_for_notification_dela => hr_transaction_swi.getVarchar2Value(l_CommitNode,'ReasonForNotificationDela',null)
1324     ,p_accept_late_notification_fla => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AcceptLateNotificationFla',null)
1325     ,p_linked_absence_id            => hr_transaction_swi.getNumberValue(l_CommitNode,'LinkedAbsenceId',null)
1326     ,p_batch_id                     => hr_transaction_swi.getNumberValue(l_CommitNode,'BatchId',null)
1327     ,p_create_element_entry         => hr_transaction_swi.getNumberValue(l_CommitNode,'CreateElementEntry',null)
1328     ,p_abs_information_category     => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformationCategory',null)
1329     ,p_abs_information1             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation1',null)
1330     ,p_abs_information2             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation2',null)
1331     ,p_abs_information3             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation3',null)
1332     ,p_abs_information4             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation4',null)
1333     ,p_abs_information5             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation5',null)
1334     ,p_abs_information6             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation6',null)
1335     ,p_abs_information7             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation7',null)
1336     ,p_abs_information8             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation8',null)
1337     ,p_abs_information9             => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation9',null)
1338     ,p_abs_information10            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation10',null)
1339     ,p_abs_information11            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation11',null)
1340     ,p_abs_information12            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation12',null)
1341     ,p_abs_information13            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation13',null)
1342     ,p_abs_information14            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation14',null)
1343     ,p_abs_information15            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation15',null)
1344     ,p_abs_information16            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation16',null)
1345     ,p_abs_information17            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation17',null)
1346     ,p_abs_information18            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation18',null)
1347     ,p_abs_information19            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation19',null)
1348     ,p_abs_information20            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation20',null)
1349     ,p_abs_information21            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation21',null)
1350     ,p_abs_information22            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation22',null)
1351     ,p_abs_information23            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation23',null)
1352     ,p_abs_information24            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation24',null)
1353     ,p_abs_information25            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation25',null)
1354     ,p_abs_information26            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation26',null)
1355     ,p_abs_information27            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation27',null)
1356     ,p_abs_information28            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation28',null)
1357     ,p_abs_information29            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation29',null)
1358     ,p_abs_information30            => hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation30',null)
1359     ,p_absence_attendance_id        => l_absence_attendance_id
1360     ,p_object_version_number        => l_object_version_number
1361     ,p_occurrence                   => l_occurrence
1362     ,p_return_status                => l_return_status);
1363 
1364   elsif l_postState = '2' then
1365 
1366 
1367     l_absence_days := hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceDays',null);
1368     l_absence_hours := hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceHours',null);
1369     l_absence_attendance_id := hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceAttendanceId',null);
1370     update_person_absence
1371     (p_validate                     => p_validate
1372     ,p_effective_date               => p_effective_date
1373     ,p_absence_attendance_id        => hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceAttendanceId')
1374     ,p_abs_attendance_reason_id     => hr_transaction_swi.getNumberValue(l_CommitNode,'AbsAttendanceReasonId')
1375     ,p_comments                     =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Comments')
1376     ,p_date_notification            => hr_transaction_swi.getDateValue(l_CommitNode,'DateNotification')
1377     ,p_date_projected_start         => hr_transaction_swi.getDateValue(l_CommitNode,'DateProjectedStart')
1378     ,p_time_projected_start         =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'TimeProjectedStart')
1379     ,p_date_projected_end           => hr_transaction_swi.getDateValue(l_CommitNode,'DateProjectedEnd')
1380     ,p_time_projected_end           =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'TimeProjectedEnd')
1381     ,p_date_start                   => hr_transaction_swi.getDateValue(l_CommitNode,'DateStart')
1382     ,p_time_start                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'TimeStart')
1383     ,p_date_end                     => hr_transaction_swi.getDateValue(l_CommitNode,'DateEnd')
1384     ,p_time_end                     =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'TimeEnd')
1385     ,p_absence_days                 => l_absence_days
1386     ,p_absence_hours                => l_absence_hours
1387     ,p_authorising_person_id        => hr_transaction_swi.getNumberValue(l_CommitNode,'AuthorisingPerson_id')
1388     ,p_replacement_person_id        => hr_transaction_swi.getNumberValue(l_CommitNode,'ReplacementPersonId')
1389     ,p_attribute_category           =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AttributeCategory')
1390     ,p_attribute1                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute1')
1391     ,p_attribute2                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute2')
1392     ,p_attribute3                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute3')
1393     ,p_attribute4                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute4')
1394     ,p_attribute5                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute5')
1395     ,p_attribute6                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute6')
1396     ,p_attribute7                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute7')
1397     ,p_attribute8                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute8')
1398     ,p_attribute9                   =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute9')
1399     ,p_attribute10                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute10')
1400     ,p_attribute11                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute11')
1401     ,p_attribute12                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute12')
1402     ,p_attribute13                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute13')
1403     ,p_attribute14                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute14')
1404     ,p_attribute15                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute15')
1405     ,p_attribute16                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute16')
1406     ,p_attribute17                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute17')
1407     ,p_attribute18                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute18')
1408     ,p_attribute19                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute19')
1409     ,p_attribute20                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Attribute20')
1410     ,p_period_of_incapacity_id      => hr_transaction_swi.getNumberValue(l_CommitNode,'PeriodOfIncapacityId')
1411     ,p_ssp1_issued                  =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'Ssp1Issued')
1412     ,p_maternity_id                 => hr_transaction_swi.getNumberValue(l_CommitNode,'MaternityId')
1413     ,p_sickness_start_date          => hr_transaction_swi.getDateValue(l_CommitNode,'SicknessStartDate')
1414     ,p_sickness_end_date            => hr_transaction_swi.getDateValue(l_CommitNode,'SicknessEndDate')
1415     ,p_pregnancy_related_illness    =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'PregnancyRelatedIllness')
1416     ,p_reason_for_notification_dela =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'ReasonForNotificationDela')
1417     ,p_accept_late_notification_fla =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AcceptLateNotificationFla')
1418     ,p_linked_absence_id            => hr_transaction_swi.getNumberValue(l_CommitNode,'LinkedAbsenceId')
1419     ,p_batch_id                     => hr_transaction_swi.getNumberValue(l_CommitNode,'BatchId')
1420     ,p_abs_information_category     =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformationCategory')
1421     ,p_abs_information1             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation1')
1422     ,p_abs_information2             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation2')
1423     ,p_abs_information3             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation3')
1424     ,p_abs_information4             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation4')
1425     ,p_abs_information5             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation5')
1426     ,p_abs_information6             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation6')
1427     ,p_abs_information7             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation7')
1428     ,p_abs_information8             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation8')
1429     ,p_abs_information9             =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation9')
1430     ,p_abs_information10            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation10')
1431     ,p_abs_information11            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation11')
1432     ,p_abs_information12            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation12')
1433     ,p_abs_information13            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation13')
1434     ,p_abs_information14            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation14')
1435     ,p_abs_information15            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation15')
1436     ,p_abs_information16            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation16')
1437     ,p_abs_information17            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation17')
1438     ,p_abs_information18            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation18')
1439     ,p_abs_information19            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation19')
1440     ,p_abs_information20            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation20')
1441     ,p_abs_information21            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation21')
1442     ,p_abs_information22            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation22')
1443     ,p_abs_information23            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation23')
1444     ,p_abs_information24            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation24')
1445     ,p_abs_information25            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation25')
1446     ,p_abs_information26            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation26')
1447     ,p_abs_information27            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation27')
1448     ,p_abs_information28            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation28')
1449     ,p_abs_information29            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation29')
1450     ,p_abs_information30            =>  hr_transaction_swi.getVarchar2Value(l_CommitNode,'AbsInformation30')
1451     ,p_object_version_number        => l_object_version_number
1452     ,p_return_status        => l_return_status);
1453 
1454 
1455    elsif l_postState = '3' then
1456 
1457         delete_person_absence
1458       ( p_validate                     => p_validate
1459        ,p_absence_attendance_id        => hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceAttendanceId')
1460        ,p_object_version_number        => l_object_version_number
1461        ,p_return_status                => l_return_status
1462       );
1463 
1464    end if;
1465 
1466    -- finally call the attachements update
1467    if( l_return_status <> 'E') then
1468      merge_attachments(hr_transaction_swi.g_txn_ctx.TRANSACTION_ID,
1469                     hr_transaction_swi.getNumberValue(l_CommitNode,'AbsenceAttendanceId'),
1470                     l_return_status);
1471    end if;
1472 
1473    p_return_status := l_return_status;
1474    hr_utility.set_location('Exiting:' || l_proc,40);
1475 
1476 END process_api;
1477 
1478 end hr_person_absence_swi;