DBA Data[Home] [Help]

PACKAGE: APPS.PQP_ABSVAL_PKG

Source


1 PACKAGE pqp_absval_pkg AS
2 /* $Header: pqabsbal.pkh 120.6.12000000.1 2007/01/16 03:29:39 appldev noship $ */
3 
4   TYPE rec_plan_information IS RECORD(
5     plan_name                      pay_element_type_extra_info.eei_information1%TYPE
6    ,scheme_period_type             pay_element_type_extra_info.eei_information3%TYPE
7    ,scheme_period_duration         pay_element_type_extra_info.eei_information4%TYPE
8    ,scheme_period_uom              pay_element_type_extra_info.eei_information5%TYPE
9    ,scheme_period_start            pay_element_type_extra_info.eei_information6%TYPE
10    ,scheme_period_end              pay_element_type_extra_info.eei_information7%TYPE
11    ,absence_days_type              pay_element_type_extra_info.eei_information8%TYPE
12    ,entitlement_parameters_UDT_id  pay_element_type_extra_info.eei_information9%TYPE
13    ,entitlement_calendar_UDT_id    pay_element_type_extra_info.eei_information10%TYPE
14    ,daily_rate_UOM                 pay_element_type_extra_info.eei_information11%TYPE
15    ,daily_rate_earnings_period     pay_element_type_extra_info.eei_information12%TYPE
16    ,daily_rate_divisor             pay_element_type_extra_info.eei_information13%TYPE
17    ,element_type                   pay_element_type_extra_info.eei_information14%TYPE
18    ,absence_pay_info_src_pay_comp  pay_element_type_extra_info.eei_information15%TYPE
19    ,primary_absence_info_ele       pay_element_type_extra_info.eei_information16%TYPE
20    ,default_work_pattern_name      pay_element_type_extra_info.eei_information17%TYPE
21    ,absence_types_list_name        pay_element_type_extra_info.eei_information18%TYPE
22    ,absence_overlap_rule           pay_element_type_extra_info.eei_information26%TYPE
23    ,entitlement_band_names_list    pay_element_type_extra_info.eei_information28%TYPE
24    ,calendar_rule_names_list       pay_element_type_extra_info.eei_information27%TYPE
25    ,absence_pay_plan_category      pay_element_type_extra_info.eei_information30%TYPE -- Added for CS
26    ,dual_rolling_period_duration   pay_element_type_extra_info.eei_information20%TYPE
27    ,dual_rolling_period_uom        pay_element_type_extra_info.eei_information21%TYPE
28 -- Adding for LG/PT
29    ,track_part_timers              pay_element_type_extra_info.eei_information21%TYPE
30    ,absence_schedule_work_pattern  pay_element_type_extra_info.eei_information21%TYPE
31    ,plan_types_to_extend_period    pay_element_type_extra_info.eei_information21%TYPE
32   );
33 
34   TYPE r_entitlements
35   IS RECORD(
36     band                          VARCHAR2(30)
37    ,meaning                       VARCHAR2(80)
38    ,entitlement                   NUMBER
39    ,duration                      NUMBER
40    ,duration_in_hours             NUMBER
41    ,duration_per_week             NUMBER
42    -- LG/PT
43    ,fte_hours                     NUMBER
44   );
45 
46 TYPE r_duration_summary
47   IS RECORD(
48     assignment_id           pqp_gap_duration_summary.assignment_id%type
49    ,gap_absence_plan_id     pqp_gap_duration_summary.gap_absence_plan_id%type
50    ,summary_type            pqp_gap_duration_summary.summary_type%type
51    ,gap_level               pqp_gap_duration_summary.gap_level%type
52    ,date_start              pqp_gap_duration_summary.date_start%type
53    ,date_end                pqp_gap_duration_summary.date_end%type
54    ,duration_in_days        pqp_gap_duration_summary.duration_in_days%type
55    ,duration_in_hours       pqp_gap_duration_summary.duration_in_hours%type
56    ,gap_duration_summary_id pqp_gap_duration_summary.gap_duration_summary_id%type
57    ,object_version_number   pqp_gap_duration_summary.object_version_number%type
58    ,action_type             VARCHAR2(2)
59    );
60 
61 TYPE r_absence_balance
62   Is Record(
63     gap_absence_plan_id           pqp_gap_duration_summary.gap_absence_plan_id%Type
64    ,gap_level                     pqp_gap_duration_summary.gap_level%Type
65    ,entitlement_granted           NUMBER(10,5)
66    ,entitlement_used_to_date      NUMBER(10,5)
67    ,entitlement_used_by_abs       NUMBER(10,5)
68    ,entitlement_remaining         NUMBER(10,5)
69    ,fte                           NUMBER(25,5)
70    ,working_days_per_week         NUMBER(10,5)
71    ,action_type                   VARCHAR2(2)
72    );
73 
74 TYPE r_gap_level
75   IS RECORD(
76     gap_level                VARCHAR2(100)
77    ,gap_duration_summary_id  NUMBER(15,0)
78    ,object_version_number    NUMBER(15,0)
79    ,action_type              VARCHAR2(2)
80     );
81 
82 
83   TYPE t_entitlements IS TABLE OF r_entitlements
84     INDEX BY BINARY_INTEGER;
85 
86 
87   TYPE t_daily_absences IS TABLE OF pqp_gda_shd.g_rec_type
88     INDEX BY BINARY_INTEGER;
89 
90  TYPE t_duration_summary IS TABLE OF r_duration_summary
91     INDEX BY BINARY_INTEGER;
92 
93   TYPE t_absence_balance IS TABLE OF r_absence_balance
94     INDEX BY BINARY_INTEGER;
95 
96   TYPE t_gap_level IS TABLE OF r_gap_level
97     INDEX BY BINARY_INTEGER;
98 
99 --
100   CURSOR csr_absence_dates
101     (p_absence_attendance_id IN NUMBER
102     )
103   IS
104   SELECT paa.date_start
105         ,paa.date_end
106   FROM   per_absence_attendances paa
107   WHERE  paa.absence_attendance_id = p_absence_attendance_id;
108 --
109   CURSOR csr_gap_absence_plan
110     (p_absence_attendance_id IN NUMBER
111     ,p_pl_id                 IN NUMBER
112     )
113   IS
114   SELECT gap.gap_absence_plan_id
115         ,gap.last_gap_daily_absence_date
116         ,gap.object_version_number
117   FROM   pqp_gap_absence_plans gap
118   WHERE  gap.absence_attendance_id = p_absence_attendance_id
119     AND  gap.pl_id = p_pl_id;
120 --
121   CURSOR csr_gap_daily_absences_exists
122     (p_gap_absence_plan_id IN NUMBER
123     )
124   IS
125   SELECT gda.gap_absence_plan_id
126   FROM   pqp_gap_daily_absences gda
127   WHERE  gda.gap_absence_plan_id = p_gap_absence_plan_id
128     AND  ROWNUM < 2;
129 --
130   CURSOR csr_first_entitled_day_of_band
131     (p_gap_absence_plan_id   IN NUMBER
132     ,p_level_of_entitlement  IN VARCHAR2
133     )
134   IS
135   SELECT gda.absence_date
136   FROM   pqp_gap_daily_absences gda
137   WHERE  gda.gap_absence_plan_id = p_gap_absence_plan_id
138     AND  gda.level_of_entitlement = p_level_of_entitlement
139   ORDER BY gda.absence_date ASC;
140 
141 
142 --
143 -- the perf version of this query would be
144 -- query the table using gap_absence_plan_id
145 -- and absence_date between sot and eot
146 -- and rownum < 2
147 -- because these two columns are indexed
148 -- and by default Oracle always reads the index
149 -- from the ascending end it would return the
150 -- minimum date of a given level of ent
151 --
152 -- but this approach is not guranteed hence
153 -- use of ORDER BY asc
154 --
155 
156 
157 
158 
159 CURSOR csr_get_days_to_extend ( p_business_group_id NUMBER
160                                ,p_assignment_id NUMBER
161                                ,p_period_start_date DATE
162                                ,p_period_end_date DATE
163                                ,p_lookup_type VARCHAR2)
164      IS
165      SELECT SUM(
166                DECODE(
167                  SIGN(paa.date_end - p_period_end_date)
168                 ,1, p_period_end_date
169                 ,paa.date_end
170                )
171              - DECODE(
172                  SIGN(paa.date_start - p_period_start_date)
173                 ,1, paa.date_start
174                 ,p_period_start_date
175                )
176              + 1
177            ) cnt
178     FROM   hr_lookups hrl
179 	  ,ben_pl_f bp
180           ,per_absence_attendances paa
181 	  ,pqp_gap_absence_plans gap
182     WHERE hrl.lookup_type = p_lookup_type --'PQP_GAP_PLAN_TYPES_TO_EXTEND'
183           and  (p_period_start_date between
184                 NVL(hrl.start_date_active, p_period_start_date)
185 	        and NVL(hrl.end_date_active, p_period_end_date)
186                 OR
187                 p_period_end_date   between
188                 NVL(hrl.start_date_active, p_period_start_date)
189                 and NVL(hrl.end_date_active, p_period_end_date)
190 	       )
191           and  bp.pl_typ_id = hrl.lookup_code
192           and  paa.business_group_id = p_business_group_id
193           and  (p_period_start_date between
194                 paa.date_start      and paa.date_end
195 	        OR
196                 p_period_end_date   between
197                 paa.date_start      and paa.date_end
198                 OR
199                 paa.date_end        between
200                 p_period_start_date and p_period_end_date
201 	       )
202 
203 	  --and  (paa.date_start      between
204           --      p_period_start_date and p_period_end_date
205 	  --      OR
206           --      paa.date_end        between
207           --      p_period_start_date and p_period_end_date
208 	  --      )
209           and  gap.pl_id = bp.pl_id
210           and  gap.absence_attendance_id = paa.absence_attendance_id
211           and  gap.assignment_id = p_assignment_id ;
212 
213 
214 
215     CURSOR csr_get_wp ( p_assignment_id NUMBER
216                        ,p_business_group_id NUMBER
217                        ,p_effective_date   DATE)
218     IS
219     SELECT work_pattern
220     FROM   pqp_assignment_attributes_f paa
221     WHERE  assignment_id     = p_assignment_id
222     AND  business_group_id = p_business_group_id
223     AND  p_effective_date BETWEEN paa.effective_start_date
224                               AND paa.effective_end_date ;
225 
226     CURSOR csr_sum_level_entit_duration
227           (p_gap_absence_id           IN NUMBER
228           ,p_level_of_entitlement     IN VARCHAR
229           ,p_absence_date             IN DATE
230           )
231    IS
232   SELECT SUM(gda.duration)
233   FROM   pqp_gap_daily_absences gda
234         ,pqp_gap_absence_plans plans
235   WHERE gda.gap_absence_plan_id = plans.gap_absence_plan_id
236   AND   plans.absence_attendance_id    = p_gap_absence_id
237   AND   gda.level_of_entitlement = p_level_of_entitlement
238   AND   gda.absence_date <= p_absence_date ;
239 
240  FUNCTION get_scheme_start_date
241    (p_assignment_id             IN       NUMBER
242    ,p_scheme_period_type        IN       VARCHAR2
243    ,p_scheme_period_duration    IN       VARCHAR2
244    ,p_scheme_period_uom         IN       VARCHAR2
245    ,p_fixed_year_start_date     IN       VARCHAR2
246    ,p_balance_effective_date    IN       DATE
247    ) RETURN DATE;
248 
249   PROCEDURE get_plan_extra_info_n_cache_it
250    (p_pl_id                     IN            NUMBER
251    ,p_plan_information          IN OUT NOCOPY rec_plan_information
252    ,p_business_group_id         IN NUMBER
253    ,p_assignment_id             IN NUMBER
254    ,p_effective_date            IN DATE
255    );
256 
257   PROCEDURE get_param_value
258    (p_output_type               IN       ff_exec.outputs_t
259    ,p_name                      IN       VARCHAR2
260    ,p_datatype                  OUT NOCOPY VARCHAR2
261    ,p_value                     OUT NOCOPY VARCHAR2
262   );
263 
264   PROCEDURE get_absence_part_days
265    (p_absence_id                IN            NUMBER
266    ,p_part_start_day               OUT NOCOPY NUMBER
267    ,p_part_end_day                 OUT NOCOPY NUMBER
268    ,p_part_day_UOM                 OUT NOCOPY VARCHAR2
269    );
270 
271   FUNCTION get_adjusted_scheme_start_date
272    (p_assignment_id              IN            NUMBER
273    ,p_scheme_start_date          IN            DATE
274    ,p_pl_typ_id                  IN            NUMBER
275    ,p_scheme_period_overlap_rule IN            VARCHAR2
276   ) RETURN DATE;
277 
278   PROCEDURE get_absences_taken_to_date
279    (p_assignment_id              IN            NUMBER
280 --   ,p_absence_date_start         IN            DATE
281    ,p_effective_date             IN            DATE
282    ,p_business_group_id          IN NUMBER DEFAULT NULL
283    -- Added p_business_group_id for CS
284    ,p_pl_typ_id                  IN            NUMBER
285    ,p_scheme_period_overlap_rule IN            VARCHAR2
286    ,p_scheme_period_type         IN            VARCHAR2
287    ,p_scheme_period_duration     IN            VARCHAR2
288    ,p_scheme_period_uom          IN            VARCHAR2
289    ,p_scheme_period_start        IN            VARCHAR2
290    ,p_entitlements               IN OUT NOCOPY pqp_absval_pkg.t_entitlements
291    ,p_absences_taken_to_date     IN OUT NOCOPY pqp_absval_pkg.t_entitlements -- Added for CS
292    ,p_dualrolling_4_year         IN            BOOLEAN DEFAULT FALSE
293    ,p_override_scheme_start_date IN            DATE    DEFAULT NULL
294    ,p_plan_types_to_extend_period IN           VARCHAR2 DEFAULT NULL --LG/PT
295    ,p_entitlement_uom             IN VARCHAR2 DEFAULT NULL
296    ,p_default_wp                  IN VARCHAR2 DEFAULT NULL
300    );
297    ,p_absence_schedule_wp         IN VARCHAR2 DEFAULT NULL
298    ,p_track_part_timers           IN VARCHAR2 DEFAULT NULL
299    ,p_absence_start_date          IN DATE
301 
302 -- PROCEDURE get_entitlements_remaining
303 --  (p_entitlements           IN            pqp_absval_pkg.t_entitlements
304 --  ,p_absences_taken_to_date IN            pqp_absval_pkg.t_entitlements
305 --  ,p_entitlement_UOM        IN            VARCHAR2
306 --  ,p_entitlements_remaining IN OUT NOCOPY pqp_absval_pkg.t_entitlements
307 -- LG/PT
308 --  ,p_track_part_timers      IN VARCHAR2 DEFAULT 'N'
309 --  );
310 
311 
312 PROCEDURE get_entitlements_remaining
313     (p_assignment_id          IN NUMBER -- LG/PT
314     ,p_effective_date         IN DATE   -- LG/PT
315     ,p_entitlements           IN            pqp_absval_pkg.t_entitlements
316     ,p_absences_taken_to_date IN            pqp_absval_pkg.t_entitlements
317     ,p_entitlement_UOM        IN            VARCHAR2
318     ,p_entitlements_remaining IN OUT NOCOPY pqp_absval_pkg.t_entitlements--t_ent_run_balance
319     ,p_is_full_timer          IN BOOLEAN DEFAULT NULL
320 --    ,p_avg_working_days_assignment IN NUMBER --LG/PT
321 --    ,p_avg_working_days_standard  IN NUMBER -- LG/PT
322 --    ,p_message                   OUT NOCOPY VARCHAR2
323 -- LG/PT
324 --    ,p_track_part_timers      IN VARCHAR2 DEFAULT 'N'
325     ) ;
326 
327 
328   PROCEDURE generate_daily_absences
329    (p_assignment_id             IN       NUMBER
330    ,p_business_group_id         IN       NUMBER
331    ,p_absence_attendance_id     IN       NUMBER
332    ,p_default_work_pattern_name IN       VARCHAR2
333    ,p_calendar_user_table_id    IN       NUMBER
334    ,p_calendar_rules_list       IN       VARCHAR2
335    ,p_generate_start_date       IN       DATE
336    ,p_generate_end_date         IN       DATE
337    ,p_absence_start_date        IN       DATE
338    ,p_absence_end_date          IN       DATE
339    ,p_entitlement_UOM           IN       VARCHAR2
340    ,p_payment_UOM               IN       VARCHAR2
341    ,p_output_type               IN       ff_exec.outputs_t
342    ,p_entitlements_remaining    IN OUT NOCOPY pqp_absval_pkg.t_entitlements
343    ,p_daily_absences            IN OUT NOCOPY pqp_absval_pkg.t_daily_absences
344    ,p_error_code                   OUT NOCOPY NUMBER
345    ,p_message                      OUT NOCOPY VARCHAR2
346    ,p_working_days_per_week     IN NUMBER DEFAULT NULL
347    ,p_fte                       IN NUMBER DEFAULT 1 -- LG/PT
348    ,p_override_work_pattern     IN VARCHAR2 DEFAULT NULL
349    ,p_pl_id                     IN NUMBER DEFAULT NULL
350    ,p_scheme_period_type        IN VARCHAR2 DEFAULT NULL
351    ,p_is_assignment_wp          IN BOOLEAN
352    );
353 
354   PROCEDURE write_daily_absences
355    (p_daily_absences       IN pqp_absval_pkg.t_daily_absences
356    ,p_gap_absence_plan_id  IN pqp_gap_absence_plans.gap_absence_plan_id%TYPE
357    );
358 
359   PROCEDURE create_absence_plan_details
360    (p_assignment_id             IN            NUMBER
361    ,p_person_id                 IN            NUMBER
362    ,p_business_group_id         IN            NUMBER
363    ,p_absence_id                IN            NUMBER
364    ,p_absence_date_start        IN            DATE
365    ,p_absence_date_end          IN            DATE
366    ,p_pl_id                     IN            NUMBER
367    ,p_pl_typ_id                 IN            NUMBER
368    ,p_element_type_id           IN            NUMBER
369    ,p_create_start_date         IN            DATE
370    ,p_create_end_date           IN            DATE
371    ,p_output_type               IN            ff_exec.outputs_t
372    ,p_error_code                   OUT NOCOPY NUMBER
373    ,p_message                      OUT NOCOPY VARCHAR2
374   );
375 
376   PROCEDURE delete_absence_plan_details
377    (p_assignment_id             IN            NUMBER
378    ,p_business_group_id         IN            NUMBER
379    ,p_plan_id                   IN            NUMBER
380    ,p_absence_id                IN            NUMBER
381    ,p_delete_start_date         IN            DATE
382    ,p_delete_end_date           IN            DATE
383    ,p_error_code                   OUT NOCOPY NUMBER
384    ,p_message                      OUT NOCOPY VARCHAR2
385   );
386 
387   PROCEDURE update_absence_plan_details
388    (p_assignment_id             IN            NUMBER
389    ,p_person_id                 IN            NUMBER
390    ,p_business_group_id         IN            NUMBER
391    ,p_absence_id                IN            NUMBER
392    ,p_absence_date_start        IN                 DATE
393    ,p_absence_date_end          IN                 DATE
394    ,p_pl_id                     IN            NUMBER
395    ,p_pl_typ_id                 IN            NUMBER
396    ,p_element_type_id           IN            NUMBER
397    ,p_update_start_date         IN            DATE
398    ,p_update_end_date           IN            DATE
399    ,p_output_type               IN            ff_exec.outputs_t
400    ,p_error_code                   OUT NOCOPY NUMBER
401    ,p_message                      OUT NOCOPY VARCHAR2
402   );
403 
404   PROCEDURE get_absences_taken
405     (p_assignment_id             IN       NUMBER
406     ,p_pl_typ_id                 IN       NUMBER
407     ,p_range_from_date           IN       DATE --not absence start and end dates
408     ,p_range_to_date             IN       DATE --period for which sum is taken
409     ,p_absences_taken            IN OUT NOCOPY pqp_absval_pkg.t_entitlements
410 --    ,p_message                   OUT NOCOPY VARCHAR2
411    ) ;
412 
416 --   ,p_business_group_id         IN       NUMBER
413 ------------------ For LG/PT
414 -- FUNCTION get_entitlements
415 --   (p_assignment_id             IN       NUMBER
417 --   ,p_effective_date            IN       DATE
418 --   ,p_pl_id                     IN       NUMBER
419 --   ,p_entitlement_table_id      IN       NUMBER
420 --   ,p_benefits_length_of_service IN      NUMBER
421 --   ,p_band_entitlements         OUT NOCOPY pqp_absval_pkg.t_entitlements
422 --   ,p_entitlement_bands_list_name IN     VARCHAR2 DEFAULT
423 --      'PQP_GAP_ENTITLEMENT_BANDS'
424 --   ) RETURN NUMBER ;
425 
426 FUNCTION get_assignment_work_pattern (
427       p_business_group_id IN  NUMBER
428      ,p_assignment_id     IN  NUMBER
429      ,p_effective_date    IN  DATE
430      ,p_default_wp        IN  VARCHAR2
431      ,p_contract_wp       IN VARCHAR2
432      ,p_is_assignment_wp  OUT NOCOPY BOOLEAN)
433 RETURN VARCHAR2 ;
434 
435 FUNCTION get_average_days_per_week(
436             p_business_group_id IN NUMBER
437 	   ,p_effective_date    IN DATE
438 	   ,p_work_pattern      IN VARCHAR2 )
439 RETURN NUMBER ;
440 
441 FUNCTION get_absence_standard_ft_wp(
442            p_business_group_id   IN  NUMBER
443           ,p_assignment_id       IN  NUMBER
444 	  ,p_effective_date      IN  DATE
445           ,p_absence_schedule_wp IN  VARCHAR2
446           ,p_default_wp          IN  VARCHAR2
447           ,p_entitlement_uom     IN  VARCHAR2
448           ,p_contract_wp         OUT NOCOPY VARCHAR2 )
449 RETURN VARCHAR2 ;
450 
451 FUNCTION get_contract_level_wp (
452            p_business_group_id IN NUMBER
453           ,p_assignment_id     IN NUMBER
454           ,p_effective_date    IN DATE )
455     RETURN VARCHAR2 ;
456 
457 FUNCTION get_calendar_days_to_extend(
458           p_period_start_date IN DATE
459          ,p_period_end_date   IN DATE
460 	 ,p_assignment_id     IN NUMBER
461 	 ,p_business_group_id IN NUMBER
462 	 ,p_pl_typ_id         IN NUMBER
463 	 ,p_count_nopay_days  IN BOOLEAN
464 	 ,p_plan_types_lookup_type IN VARCHAR2
465 	 )
466     RETURN NUMBER ;
467 
468 
469 PROCEDURE get_factors (
470             p_business_group_id   IN NUMBER
471 	   ,p_effective_date      IN DATE
472 	   ,p_assignment_id       IN NUMBER
473 	   ,p_entitlement_uom     IN VARCHAR2
474 	   ,p_default_wp          IN VARCHAR2
475 	   ,p_absence_schedule_wp IN VARCHAR2
476 	   ,p_track_part_timers   IN VARCHAR2
477 	   ,p_current_factor      OUT NOCOPY NUMBER
478 	   ,p_ft_factor           OUT NOCOPY NUMBER
479 	   ,p_working_days_per_week OUT NOCOPY NUMBER
480 	   ,p_fte                   OUT NOCOPY NUMBER
481 	   ,p_FT_absence_wp         OUT NOCOPY VARCHAR2
482 	   ,p_FT_working_wp         OUT NOCOPY VARCHAR2
483 	   ,p_assignment_wp         OUT NOCOPY VARCHAR2
484 	   ,p_is_full_timer         OUT NOCOPY BOOLEAN
485 	   ,p_is_assignment_wp      OUT NOCOPY BOOLEAN
486 	   ) ;
487 
488 PROCEDURE convert_entitlements
489             ( p_entitlements   IN OUT NOCOPY pqp_absval_pkg.t_entitlements
490 	     ,p_current_factor IN NUMBER
491              ,p_ft_factor      IN NUMBER
492             ) ;
493 
494 
495 
496 
497 PROCEDURE write_absence_summary
498    (p_gap_absence_plan_id           IN NUMBER
499    ,p_assignment_id                 IN NUMBER
500    ,p_entitlement_granted           IN pqp_absval_pkg.t_entitlements
501    ,p_entitlement_used_to_date      IN pqp_absval_pkg.t_entitlements
502    ,p_entitlement_remaining         IN pqp_absval_pkg.t_entitlements
503    ,p_fte                           IN NUMBER DEFAULT 1
504    ,p_working_days_per_week         IN NUMBER DEFAULT NULL
505    ,p_entitlement_uom               IN VARCHAR2
506    ,p_update                        IN BOOLEAN
507   );
508 
509 ------------------
510 
511 
512 END pqp_absval_pkg;