DBA Data[Home] [Help]

PACKAGE: APPS.PQP_GB_OSP_FUNCTIONS

Source


1 PACKAGE pqp_gb_osp_functions AS
2 /* $Header: pqpospfn.pkh 120.8.12010000.3 2008/08/05 14:22:48 ubhat ship $ */
3 --
4 --    TYPE r_LOS_based_entitlements IS RECORD
5 --       (band           VARCHAR2(30)
6 --       ,meaning        VARCHAR2(80)
7 --       ,entitlement    NUMBER
8 --       );
9 
10 --    TYPE t_LOS_based_entitlements IS TABLE OF r_LOS_based_entitlements
11 --    INDEX BY BINARY_INTEGER;
12 
13   g_end_of_time DATE:= hr_api.g_eot; -- required because perf parser doesnot like g_eot
14 
15   TYPE r_entitlement_parameters IS RECORD(
16     band                          VARCHAR2(30)
17    ,meaning                       VARCHAR2(80)
18    ,entitlement                   NUMBER
19    ,percentage                    NUMBER
20    ,earnings_type                 VARCHAR2(80)
21   );
22 
23   TYPE t_entitlement_parameters IS TABLE OF r_entitlement_parameters
24     INDEX BY BINARY_INTEGER;
25 
26 -- Cursor to get Lookup Code.
27   CURSOR csr_lookup_code(
28     p_lookup_type               IN       VARCHAR2
29    ,p_lookup_meaning            IN       VARCHAR2
30   )
31   IS
32     SELECT lookup_code
33     FROM   fnd_lookup_values_vl
34     WHERE  lookup_type = p_lookup_type AND meaning = p_lookup_meaning;
35 
36 -- Cursor to get absence id for a assignment id.
37   CURSOR csr_absence_id(p_assignment_id IN NUMBER, p_effective_date IN DATE)
38   IS
39     SELECT absence_attendance_id
40     FROM   per_all_assignments_f asg,
41            ben_per_in_ler pil
42           ,per_absence_attendances paa
43     WHERE  asg.assignment_id = p_assignment_id
44       AND  p_effective_date BETWEEN asg.effective_start_date
45                                 AND asg.effective_end_date
46       AND  pil.person_id = asg.person_id
47       AND  pil.per_in_ler_stat_cd = 'STRTD'
48       AND  paa.absence_attendance_id = pil.trgr_table_pk_id;
49 
50 -- Cursor to get Medical Id for a given Absence Attendance Id.
51   CURSOR csr_medical_id(p_absence_id IN NUMBER)
52   IS
53     SELECT medical_id
54     FROM   ssp_medicals
55     WHERE  absence_attendance_id = p_absence_id;
56 
57 -- Cursor to get Maternity Id for a given Absence Attendance Id.
58   CURSOR csr_maternity_id(p_absence_id IN NUMBER)
59   IS
60     SELECT maternity_id
61     FROM   per_absence_attendances
62     WHERE  absence_attendance_id = p_absence_id;
63 
64 -- Cursor to get Absence Type for a Absence Id.
65   CURSOR csr_abs_type(p_absence_attendance_id IN NUMBER)
66   IS
67     SELECT TYPE.NAME
68     FROM   per_absence_attendances ABS, per_absence_attendance_types TYPE
69     WHERE  ABS.absence_attendance_type_id = TYPE.absence_attendance_type_id
70     AND    ABS.absence_attendance_id = p_absence_attendance_id;
71 
72 -- Cursor to get absence Category for a Absence Id.
73   CURSOR csr_abs_cat(p_absence_attendance_id IN NUMBER)
74   IS
75     SELECT lkp.meaning
76     FROM   per_absence_attendances ABS
77           ,per_absence_attendance_types TYPE
78           ,hr_lookups lkp
79     WHERE  ABS.absence_attendance_type_id = TYPE.absence_attendance_type_id
80     AND    TYPE.absence_category = lkp.lookup_code
81     AND    lkp.lookup_type = 'ABSENCE_CATEGORY'
82     AND    ABS.absence_attendance_id = p_absence_attendance_id;
83 
84 -- Cursor to get Absence Reason for a Absence Id.
85   CURSOR csr_abs_rea(p_absence_attendance_id IN NUMBER)
86   IS
87     SELECT lkp.meaning
88     FROM   per_absence_attendances ABS
89           ,per_abs_attendance_reasons rea
90           ,hr_lookups lkp
91     WHERE  ABS.abs_attendance_reason_id = rea.abs_attendance_reason_id
92     AND    rea.NAME = lkp.lookup_code
93     AND    lookup_type = 'ABSENCE_REASON'
94     AND    ABS.absence_attendance_id = p_absence_attendance_id;
95 
96 -- Cursor to get Element Type ID for Plan Table Functions.
97   CURSOR csr_plan_element_type(
98     p_pl_id                     IN       NUMBER
99    ,p_information_type          IN       VARCHAR2
100   )
101   IS
102     SELECT petei.element_type_id
103     FROM   pay_element_type_extra_info petei, ben_pl_f bpl, ben_pl_typ_f bpty
104     WHERE  UPPER(petei.eei_information19) = 'ABSENCE INFO'
105     AND    petei.information_type = p_information_type
106     --'PQP_GB_ABSENCE_PLAN_INFO'
107     AND    bpl.pl_typ_id = bpty.pl_typ_id
108     AND    bpty.opt_typ_cd = 'ABS'
109     AND    petei.eei_information1 = fnd_number.number_to_canonical(bpl.pl_id)
110     AND    bpl.pl_id = p_pl_id;
111 
112 -- Cursor to get Plan Id from Plan Tables for a given Plan Name.
113   CURSOR csr_plan_id(
114     p_business_group_id         IN       NUMBER
115    ,p_effective_date            IN       DATE
116    ,p_pl_name                   IN       VARCHAR2
117   )
118   IS
119     SELECT bpl.pl_id
120     FROM   ben_pl_f bpl, ben_pl_typ_f bpty
121     WHERE  bpl.pl_typ_id = bpty.pl_typ_id
122     AND    bpty.opt_typ_cd = 'ABS'
123     AND    bpl.business_group_id = p_business_group_id
124     AND    p_effective_date BETWEEN bpl.effective_start_date
125                                 AND bpl.effective_end_date
126     AND    bpl.NAME = p_pl_name;
127 
128 -- Cursor For Calendar Occurances
129 
130   CURSOR csr_cal_occur(
131     p_date                      IN       DATE
132    ,p_table_id                  IN       NUMBER
133    ,p_calendar_rules_list       IN       VARCHAR2
134    ,p_filter_value              IN       VARCHAR2
135    ,p_filter                    IN       VARCHAR2
136   )
137   IS
138     SELECT   pur.row_low_range_or_name
139             ,cols.user_column_name
140             ,inst.VALUE
141     FROM     pay_user_columns cols
142             ,pay_user_rows_f pur
143             ,pay_user_column_instances_f inst
144             ,hr_lookups lookup
145     WHERE    cols.user_table_id = p_table_id
146     AND      pur.user_table_id = cols.user_table_id
147     AND      pur.user_row_id = inst.user_row_id
148     AND      cols.user_column_id = inst.user_column_id
149     AND      lookup.lookup_type = p_calendar_rules_list
150     AND      cols.user_column_name = lookup.meaning
151     -- check that the day is marked in the calendar, ie a column instance is
152     -- effective on that day
153     AND      p_date BETWEEN inst.effective_start_date
154                         AND DECODE(
155                              inst.effective_end_date
156                             -- if the eff end date is the End of Time then
157                             -- DECODE it to eff start date such that the column
158                             -- instance is treated as effective for only one
159                             -- day, ie the start date. e.g.
160                             -- a row effective from 01-01-2001 to 31-12-4712
161                             -- may represent a holiday of only 01-01-2001
162                            , g_end_of_time, inst.effective_start_date
163                             -- else this column instance represents a range of
164                             -- days (date range) marked in the calendar
165                             -- eg a row effective from 01-01-2001 to 14-01-2001
166                             -- may represent a 2 week period as a holiday
167                            , inst.effective_end_date
168                            -- effective end date will never be NULL
169                            )
170     AND      (
171                  (
172                       p_filter_value IS NULL
173                   AND (
174                           (p_filter = 'ALLMATCH'--AND
175                                                 --(inst.value IS NULL OR inst.value IS NOT NULL)  --redundant
176                           )
177                        OR (p_filter = 'EXACTMATCH' AND inst.VALUE IS NULL)
178                        OR (p_filter = 'EXCEPT' AND inst.VALUE IS NOT NULL)
179                        OR (p_filter = 'ALLEXCEPT' AND inst.VALUE IS NOT NULL)
180                       ) -- AND p_filter_value IS NULL
181                  ) -- OR p_filter_value IS NULL
182               OR (
183                       p_filter_value IS NOT NULL
184                   AND (
185                           (
186                                p_filter = 'ALLMATCH'
187                            AND (
188                                    inst.VALUE IS NULL
189                                 OR inst.VALUE = p_filter_value
190                                )
191                           )
192                        OR (
193                                p_filter = 'EXACTMATCH'
194                            AND (  --inst.value IS NOT NULL --redundant as the Equality check
195                                  --AND
196                                 inst.VALUE =
197                                   p_filter_value --exlcudes NULLs automatically
198                                )
199                           )
200                        OR (
201                                p_filter = 'ALLEXCEPT'
202                            AND (
203                                    inst.VALUE IS NULL
204                                 OR inst.VALUE <> p_filter_value
205                                )
206                           )
207                        OR (
208                                p_filter = 'EXCEPT'
209                            AND (  --inst.value IS NOT NULL --redundant as the INequality check
210                                  --AND
211                                 inst.VALUE <>
212                                   p_filter_value --exlcudes NULLs automatically
213                                )
214                           )
215                       ) -- AND p_filter_value IS NOT NULL
216                  ) -- OR p_filter_value IS NULL or NOT
217              ) -- AND in the main WHERE
218     ORDER BY lookup.lookup_code;
219 
220 --  CURSOR c_wp_dets(p_assignment_id NUMBER, p_start_date DATE, p_end_date DATE)
221 --  IS
222 --    SELECT   *
223 --    FROM     pqp_assignment_attributes_f
224 --    WHERE    assignment_id = p_assignment_id
225 --    AND      (
226 --                 (
227 --                  p_start_date BETWEEN effective_start_date AND effective_end_date
228 --                 )
229 --              OR (
230 --                  p_end_date BETWEEN effective_start_date AND effective_end_date
231 --                 )
232 --              OR (effective_start_date BETWEEN p_start_date AND p_end_date)
233 --              OR (effective_end_date BETWEEN p_start_date AND p_end_date)
234 --             )
235 --    ORDER BY effective_start_date;
236 
237 --  CURSOR c_wp_dets_up(p_assignment_id NUMBER, p_start_date DATE)
238 --  IS
239 --    SELECT   *
240 --    FROM     pqp_assignment_attributes_f
241 --    WHERE    assignment_id = p_assignment_id
242 --    AND      (
243 --                 (
244 --                  p_start_date BETWEEN effective_start_date AND effective_end_date
245 --                 )
246 --              OR (effective_start_date > p_start_date)
247 --             )
248 --    ORDER BY effective_start_date;
249 
250 -- Cursor to get Number of Holidays in absence Period for a given UDT Id.
251 -- Default is the Default Column that will be seeded in the UDT
252 -- through Template.
253   CURSOR csr_get_hol_abs(
254     p_business_group_id         IN       NUMBER
255    ,p_abs_start_date            IN       DATE
256    ,p_abs_end_date              IN       DATE
257    ,p_table_id                  IN       NUMBER
258    ,p_column_name               IN       VARCHAR2
259    ,p_value                     IN       VARCHAR2
260   )
261   IS
262     SELECT SUM(
263                DECODE(
264                  SIGN(effective_end_date - p_abs_end_date)
265                 ,1, p_abs_end_date
266                 ,effective_end_date
267                )
268              - DECODE(
269                  SIGN(effective_start_date - p_abs_start_date)
270                 ,-1, p_abs_start_date
271                 ,effective_start_date
272                )
273              + 1
274            ) cnt
275     FROM   pay_user_column_instances_f inst, pay_user_columns col
276     WHERE  col.user_table_id = p_table_id
277     AND    inst.user_column_id = col.user_column_id
278     AND    col.user_column_name LIKE p_column_name
279     AND    (   p_value IS NULL
280             OR inst.VALUE = p_value)
281     AND    (
282                (
283                 p_abs_start_date BETWEEN inst.effective_start_date
284                                      AND inst.effective_end_date
285                )
286             OR (
287                 inst.effective_start_date BETWEEN p_abs_start_date
288                                               AND p_abs_end_date
289                )
290             OR (
291                 p_abs_end_date BETWEEN inst.effective_start_date
292                                    AND inst.effective_end_date
293                )
294             OR (
295                 inst.effective_end_date BETWEEN p_abs_start_date
296                                             AND p_abs_end_date
297                )
298            )
299     AND    inst.business_group_id = p_business_group_id;
300 
301 -- Cursor to check a date is declared as holiday or not.
302   CURSOR csr_get_work_hol(
303     p_business_group_id         IN       NUMBER
304    ,p_abs_date                  IN       DATE
305    ,p_table_id                  IN       NUMBER
306    ,p_column_name               IN       VARCHAR2
307    ,p_value                     IN       VARCHAR2
308   )
309   IS
310     SELECT inst.VALUE
311     FROM   pay_user_columns col, pay_user_column_instances_f inst
312     WHERE  col.user_table_id = p_table_id
313     AND    col.user_column_name LIKE p_column_name
314     AND    inst.user_column_id = col.user_column_id
315     AND    ( p_value IS NULL OR inst.VALUE = p_value )
316     AND    p_abs_date BETWEEN inst.effective_start_date
317                           AND inst.effective_end_date
318     AND    inst.business_group_id = p_business_group_id;
319 
320 -- Cursor to get Entitlement Days. This cursor returns the number of days the
321 -- entitlement is like BAND1, BAND2, EXCLUDED etc. This type qualifier is a
322 -- parameter to the cursor.
323   CURSOR csr_entitled_days(
324     p_absence_attendance_id     IN       NUMBER
325    ,p_pl_id                     IN       NUMBER
326    ,p_search_start_date         IN       DATE
327    ,p_search_end_date           IN       DATE
328    ,p_level_of_entitlement      IN       VARCHAR2
329   )
330   IS
331     SELECT NVL(SUM(daily.DURATION), 0) days
332           ,NVL(SUM(daily.duration_in_hours),0) hours
333     FROM   per_absence_attendances attnd
334           ,pqp_gap_absence_plans plans
335           ,pqp_gap_daily_absences daily
336     WHERE  attnd.absence_attendance_id = plans.absence_attendance_id
337     AND    plans.gap_absence_plan_id = daily.gap_absence_plan_id
338     AND    attnd.absence_attendance_id = p_absence_attendance_id
339     AND    plans.pl_id = p_pl_id
340     AND    (
341                UPPER(daily.level_of_entitlement) = p_level_of_entitlement
342             OR p_level_of_entitlement IS NULL
343            )
344     AND    daily.absence_date BETWEEN GREATEST(
345                                        NVL(p_search_start_date
346                                         ,attnd.date_start)
347                                       ,attnd.date_start
348                                      )
349                                   AND LEAST(
350                                        NVL(p_search_end_date, g_end_of_time)
351                                       ,g_end_of_time
352                                      );
353 
354 -- Cursor to get Paid Days. This cursor returns the number of days the
355 -- absence can be paid like BAND1, BAND2, EXCLUDED etc. This type qualifier
356 -- is a parameter to the cursor.
357   CURSOR csr_paid_days(
358     p_absence_attendance_id     IN       NUMBER
359    ,p_pl_id                     IN       NUMBER
360    ,p_search_start_date         IN       DATE
361    ,p_search_end_date           IN       DATE
362    ,p_level_of_pay              IN       VARCHAR2
363   )
364   IS
365 SELECT NVL(SUM(daily.duration),0) days
366 -----Added For Hours
367       ,NVL(SUM(daily.duration_in_hours),0) hours
368     FROM   per_absence_attendances attnd
369           ,pqp_gap_absence_plans plans
370           ,pqp_gap_daily_absences daily
371     WHERE  attnd.absence_attendance_id = plans.absence_attendance_id
372     AND    plans.gap_absence_plan_id = daily.gap_absence_plan_id
373     AND    attnd.absence_attendance_id = p_absence_attendance_id
374     AND    plans.pl_id = p_pl_id
375     AND    (   UPPER(daily.level_of_pay) = p_level_of_pay
376             OR p_level_of_pay IS NULL)
377     AND    daily.absence_date BETWEEN GREATEST(
378                                        NVL(p_search_start_date
379                                         ,attnd.date_start)
380                                       ,attnd.date_start
381                                      )
382                                   AND LEAST(
383                                        NVL(p_search_end_date, g_end_of_time)
384                                       ,g_end_of_time
385                                      );
386 
387 -- Cursor to get Work_pattern Types of qualifier type.
388   CURSOR csr_wp_days(
389     p_absence_attendance_id     IN       NUMBER
390    ,p_pl_id                     IN       NUMBER
391    ,p_search_start_date         IN       DATE
392    ,p_search_end_date           IN       DATE
393    ,p_work_pattern_day_type     IN       VARCHAR2
394   )
395   IS
396     SELECT NVL(SUM(daily.DURATION), 0)
397     FROM   per_absence_attendances attnd
398           ,pqp_gap_absence_plans plans
399           ,pqp_gap_daily_absences daily
400     WHERE  attnd.absence_attendance_id = plans.absence_attendance_id
401     AND    plans.gap_absence_plan_id = daily.gap_absence_plan_id
402     AND    attnd.absence_attendance_id = p_absence_attendance_id
403     AND    plans.pl_id = p_pl_id
404     AND    (
405                UPPER(daily.work_pattern_day_type) = p_work_pattern_day_type
406             OR p_work_pattern_day_type IS NULL
407            )
408     AND    daily.absence_date BETWEEN GREATEST(
409                                        NVL(p_search_start_date
410                                         ,attnd.date_start)
411                                       ,attnd.date_start
412                                      )
413                                   AND LEAST(
414                                        NVL(p_search_end_date, g_end_of_time)
415                                       ,g_end_of_time
416                                      );
417 
418 -- Cursor to get lookup code information from Lookup Type
419   CURSOR csr_get_lookup_info(c_lookup_type VARCHAR2, c_lookup_code VARCHAR2)
420   IS
421     SELECT   meaning
422             ,lookup_code
423     FROM     hr_lookups
424     WHERE    lookup_type = c_lookup_type
425     AND      lookup_code LIKE c_lookup_code
426     AND      enabled_flag = 'Y'
427     ORDER BY lookup_code;
428 
429 -- Cursor to get No of level of Paid Days for a date range.
430   CURSOR csr_get_level_pay(
431     p_assignment_id                      NUMBER
432    ,p_business_group_id                  NUMBER
433    ,p_search_start_date                  DATE
434    ,p_search_end_date                    DATE
435    ,p_level_of_pay                       VARCHAR2
436   )
437   IS
438     SELECT NVL(SUM(pgda.DURATION), 0) balance
439     FROM   pqp_gap_daily_absences pgda
440           ,pqp_gap_absence_plans pgap
441           ,per_absence_attendances paa
442     WHERE  pgda.gap_absence_plan_id = pgap.gap_absence_plan_id
443     AND    pgap.absence_attendance_id = paa.absence_attendance_id
444     AND    pgda.absence_date BETWEEN p_search_start_date AND p_search_end_date
445     AND    pgap.assignment_id = p_assignment_id
446     AND    paa.business_group_id = p_business_group_id
447     AND    pgda.level_of_pay = p_level_of_pay;
448 
449 -- Cursor to get No of level of Entitlement Days for a date range.
450   CURSOR csr_get_level_ent(
451     p_assignment_id                      NUMBER
452    ,p_business_group_id                  NUMBER
453    ,p_search_start_date                  DATE
454    ,p_search_end_date                    DATE
455    ,p_level_of_ent                       VARCHAR2
456   )
457   IS
458     SELECT NVL(SUM(pgda.DURATION), 0) balance
459     FROM   pqp_gap_daily_absences pgda
460           ,pqp_gap_absence_plans pgap
461           ,per_absence_attendances paa
462     WHERE  pgda.gap_absence_plan_id = pgap.gap_absence_plan_id
463     AND    pgap.absence_attendance_id = paa.absence_attendance_id
464     AND    pgda.absence_date BETWEEN p_search_start_date AND p_search_end_date
465     AND    pgap.assignment_id = p_assignment_id
466     AND    paa.business_group_id = p_business_group_id
467     AND    pgda.level_of_entitlement = p_level_of_ent;
468 
469 -- Cursor to get No of level of Work Pattern Days for a date range.
470   CURSOR csr_get_wp_type_days(
471     p_assignment_id                      NUMBER
472    ,p_business_group_id                  NUMBER
473    ,p_search_start_date                  DATE
474    ,p_search_end_date                    DATE
475    ,p_wp_day_type                        VARCHAR2
476   )
477   IS
478     SELECT NVL(SUM(pgda.DURATION), 0) balance
479     FROM   pqp_gap_daily_absences pgda
480           ,pqp_gap_absence_plans pgap
481           ,per_absence_attendances paa
482     WHERE  pgda.gap_absence_plan_id = pgap.gap_absence_plan_id
483     AND    pgap.absence_attendance_id = paa.absence_attendance_id
484     AND    pgda.absence_date BETWEEN p_search_start_date AND p_search_end_date
485     AND    pgap.assignment_id = p_assignment_id
486     AND    paa.business_group_id = p_business_group_id
487     AND    pgda.work_pattern_day_type = p_wp_day_type;
488 
489 -- Cursor to get the FTE for a given assignment as of a given date.
490 CURSOR csr_get_asg_fte_value
491   (p_assignment_id  IN NUMBER
492   ,p_effective_date IN DATE
493   ) IS
494 
495 SELECT budget.value
496 FROM   per_assignment_budget_values_f budget
497 WHERE  budget.assignment_id = p_assignment_id
498   AND  budget.unit = 'FTE'
499   AND  p_effective_date
500          BETWEEN budget.effective_start_date
501              AND budget.effective_end_date;
502 
503 -- SSP SMP Cursors Moved out from body in Aug 2003 release
504 --
505 -- Cursor to get the Qualifying Pattern Calendar Usage Exceptions
506 --
507 --CURSOR c_usage_exceptions
508 --  (p_pattern_id hr_patterns.pattern_id%TYPE
509 --  ) IS
510 --SELECT hpe.pattern_id
511 --      ,exception_name
512 --      ,exception_start_time exception_start_date
513 --      ,exception_end_time exception_end_date
514 --FROM   hr_calendars hc
515 --      ,hr_calendar_usages hcu
516 --      ,hr_exception_usages heu
517 --      ,hr_pattern_exceptions hpe
518 --WHERE  hc.pattern_id = p_pattern_id
519 --AND    hc.calendar_id = hcu.calendar_id
520 --AND    hcu.purpose_usage_id = 1
521 --AND    hcu.calendar_usage_id = heu.calendar_usage_id
522 --AND    heu.exception_id = hpe.exception_id;
523 --
524 -- Cursor to get the Qualifying Pattern Exceptions
525 --
526 --CURSOR c_pattern_exceptions
527 -- (p_pattern_id hr_patterns.pattern_id%TYPE
528 -- ) IS
529 --SELECT hpe.pattern_id
530 --      ,exception_name
531 --      ,exception_start_time exception_start_date
532 --      ,exception_end_time exception_end_date
533 --FROM   hr_calendars hc
534 --      ,hr_calendar_usages hcu
535 --      ,hr_exception_usages heu
536 --      ,hr_pattern_exceptions hpe
537 --WHERE  hc.pattern_id = p_pattern_id
538 --AND    purpose_usage_id = 1
539 --AND    hcu.calendar_id = hc.calendar_id
540 --AND    hc.calendar_id = heu.calendar_id
541 --AND    heu.exception_id = hpe.exception_id;
542 --
543 -- Define a table to holds the row returned from the above
544 -- cursor to store the exceptions for BG
545 --
546 --TYPE t_pat_exceptions IS TABLE OF c_pattern_exceptions%ROWTYPE
547 --   INDEX BY BINARY_INTEGER;
548 --
549 --CURSOR c_pattern
550 --  (p_pattern_id hr_patterns.pattern_id%TYPE
551 --  ) IS
552 --SELECT hp.pattern_id
553 --      ,pattern_name
554 --      ,pattern_start_weekday
555 --      ,pattern_start_time
556 --FROM   hr_patterns hp
557 --WHERE  hp.pattern_id = p_pattern_id;
558 --
559 -- Cursor to get the Qualifying pattern constructors
560 --
561 --  CURSOR c_pattern_cons
562 --    (p_pattern_id NUMBER
563 --    ) IS
564 --  SELECT   hpc.sequence_no seq_no
565 --          ,hpc.availability availability
566 --          ,hpb.pattern_bit_code time_unit
567 --          ,hpb.time_unit_multiplier time_unit_multiplier
568 --          ,hpb.base_time_unit base_time_unit
569 --  FROM     hr_patterns hrp
570 --          ,hr_pattern_constructions hpc
571 --          ,hr_pattern_bits hpb
572 --  WHERE    hrp.pattern_id = p_pattern_id
573 --    AND    hrp.pattern_id = hpc.pattern_id
574 --    AND    hpc.pattern_bit_id = hpb.pattern_bit_id
575 --  ORDER BY sequence_no;
576 --
577 ---- Define a table based on rowtype of the above cursor
578 --TYPE pat_cons_t IS TABLE OF c_pattern_cons%ROWTYPE
579 --  INDEX BY BINARY_INTEGER;
580   --
581   -- Cursor to get the Pattern associated with a Person
582   --
583 --  CURSOR c_per_pattern
584 --    (p_person_id per_all_assignments.person_id%TYPE
585 --    ) IS
586 --  SELECT pattern_id
587 --        ,start_date
588 --        ,end_date
589 --  FROM   hr_calendar_usages hcu, hr_calendars hc
590 --  WHERE  primary_key_value = p_person_id
591 --  AND    purpose_usage_id = 2
592 --  AND    hcu.calendar_id = hc.calendar_id;
593 --
594 -- Cursor gets Input value ids for the element passed as param
595 --
596   CURSOR csr_inputvalue_ids
597     (p_element_type_id IN NUMBER
598     ,p_effective_date  IN DATE
599     ) IS
600   SELECT piv.display_sequence
601         ,pet.element_type_id
602         ,piv.input_value_id  id
603   FROM   pay_element_types_f pet
604         ,pay_input_values_f  piv
605   WHERE  pet.element_type_id = p_element_type_id
606     AND  p_effective_date
607            BETWEEN pet.effective_start_date
608                AND pet.effective_end_date
609     AND  piv.element_type_id = pet.element_type_id
610     AND  p_effective_date
611            BETWEEN piv.effective_start_date
612                AND piv.effective_end_date;
613 
614   -- Define a table to holds the row returned from the above cursor to store
615   -- the input value Ids
616   TYPE t_input_value_ids IS TABLE OF csr_inputvalue_ids%ROWTYPE
617     INDEX BY BINARY_INTEGER;
618 
619 
620   CURSOR csr_seeded_element_type -- cache -- context -- if not populated
621     (p_element_name IN pay_element_types_f.element_name%TYPE
622     ) IS
623   SELECT element_type_id
624   FROM   pay_element_types_f
625   WHERE  element_name = p_element_name
626     AND  business_group_id IS NULL
627     AND  legislation_code = 'GB'
628     AND ROWNUM < 2; -- there can be more than effective row
629                     -- since we are only interested in the surrogate id
630                     -- ROWNUM < 2 will do
631 --
632 --
633 --
634   CURSOR csr_element_links
635     (p_element_type_id    IN        NUMBER
636     ,p_business_group_id  IN        NUMBER
637     ) IS
638   SELECT ell.element_link_id id
639   FROM   pay_element_links_f ell
640   WHERE  ell.element_type_id = p_element_type_id
641     AND  ell.business_group_id = p_business_group_id;
642 
643   TYPE t_element_links IS TABLE OF csr_element_links%ROWTYPE
644     INDEX BY BINARY_INTEGER;
645 --
646 --
647 --
648   CURSOR csr_ssp_entries
649     (p_primary_assignment_id     IN       NUMBER
650     ,p_element_link_id           IN       NUMBER
651     ,p_piw_id                    IN       NUMBER
652 --    ,p_amount_iv_id              IN       NUMBER
653 --    ,p_date_from_iv_id           IN       NUMBER
654 --    ,p_date_to_iv_id             IN       NUMBER
655 --    ,p_rate_iv_id                IN       NUMBER
656 --    ,p_qualifying_days_iv_id     IN       NUMBER
657 --    ,p_ssp_days_due_iv_id        IN       NUMBER
658 --    ,p_withheld_days_iv_id       IN       NUMBER
659 --    ,p_ssp_weeks_iv_id           IN       NUMBER
660     ) IS
661   SELECT  ele.element_entry_id
662          ,ele.effective_start_date
663          ,ele.effective_end_date
664          ,fnd_date.canonical_to_date('3712/12/31 00:00:00') Date_From
665 --         ,( SELECT fnd_date.canonical_to_date(eev.screen_entry_value)
666 --            FROM   pay_element_entry_values_f eev
667 --            WHERE  eev.element_entry_id = ele.element_entry_id
668 --              AND  ele.effective_start_date BETWEEN eev.effective_start_date
669 --                                                AND eev.effective_end_date
670 --              AND  eev.input_value_id = p_date_from_iv_id
671 --          ) Date_From
672          ,fnd_date.canonical_to_date('3712/12/31 00:00:00') Date_To
673 --         ,( SELECT fnd_date.canonical_to_date(eev.screen_entry_value)
674 --            FROM   pay_element_entry_values_f eev
675 --            WHERE  eev.element_entry_id = ele.element_entry_id
676 --              AND  ele.effective_start_date BETWEEN eev.effective_start_date
677 --                                                AND eev.effective_end_date
678 --              AND  eev.input_value_id = p_date_to_iv_id
679 --          ) Date_To
680          ,fnd_number.canonical_to_number('0.0') Amount
681 --         ,( SELECT fnd_number.canonical_to_number(eev.screen_entry_value)
682 --            FROM   pay_element_entry_values_f eev
683 --            WHERE  eev.element_entry_id = ele.element_entry_id
684 --              AND  ele.effective_start_date BETWEEN eev.effective_start_date
685 --                                                AND eev.effective_end_date
686 --              AND  eev.input_value_id = p_amount_iv_id
687 --          ) Amount
688          ,fnd_number.canonical_to_number('0.0') Rate
689 --         ,( SELECT fnd_number.canonical_to_number(eev.screen_entry_value)
690 --            FROM   pay_element_entry_values_f eev
691 --            WHERE  eev.element_entry_id = ele.element_entry_id
692 --              AND  ele.effective_start_date BETWEEN eev.effective_start_date
693 --                                                AND eev.effective_end_date
694 --              AND  eev.input_value_id = p_rate_iv_id
695 --          ) Rate
696          ,fnd_number.canonical_to_number('0.0') Qualifying_days
697 --         ,( SELECT fnd_number.canonical_to_number(eev.screen_entry_value)
698 --            FROM   pay_element_entry_values_f eev
699 --            WHERE  eev.element_entry_id = ele.element_entry_id
700 --              AND  ele.effective_start_date BETWEEN eev.effective_start_date
701 --                                                AND eev.effective_end_date
702 --              AND  eev.input_value_id = p_qualifying_days_iv_id
703 --          ) Qualifying_days
704          ,fnd_number.canonical_to_number('0.0') SSP_days_due
705 --         ,( SELECT fnd_number.canonical_to_number(eev.screen_entry_value)
706 --            FROM   pay_element_entry_values_f eev
707 --            WHERE  eev.element_entry_id = ele.element_entry_id
708 --              AND  ele.effective_start_date BETWEEN eev.effective_start_date
709 --                                                AND eev.effective_end_date
710 --              AND  eev.input_value_id = p_ssp_days_due_iv_id
711 --          ) SSP_days_due
712          ,fnd_number.canonical_to_number('0.0') Withheld_days
713 --         ,( SELECT fnd_number.canonical_to_number(eev.screen_entry_value)
714 --            FROM   pay_element_entry_values_f eev
715 --            WHERE  eev.element_entry_id = ele.element_entry_id
716 --              AND  ele.effective_start_date BETWEEN eev.effective_start_date
717 --                                                AND eev.effective_end_date
718 --              AND  eev.input_value_id = p_withheld_days_iv_id
719 --          ) Withheld_days
720 --         ,fnd_number.canonical_to_number('0.0') SSP_weeks
721 --         ,( SELECT fnd_number.canonical_to_number(eev.screen_entry_value)
722 --            FROM   pay_element_entry_values_f eev
723 --            WHERE  eev.element_entry_id = ele.element_entry_id
724 --              AND  ele.effective_start_date BETWEEN eev.effective_start_date
725 --                                                AND eev.effective_end_date
726 --              AND  eev.input_value_id = p_ssp_week_iv_id
727 --          ) SSP_weeks
728   FROM   pay_element_entries_f ele
729   WHERE  ele.assignment_id         = p_primary_assignment_id   -- primary assignment id offline
730     AND  ele.element_link_id       = p_element_link_id -- run once for evry bg related link
731     AND  ele.creator_type = 'S' -- determine piw_id offline
732     AND  ele.creator_id = p_piw_id;
733 --
734 --
735 --
736   CURSOR csr_smp_entries
737     (p_maternity_id                 IN        NUMBER
738     ,p_primary_assignment_id        IN        NUMBER
739     ,p_element_link_id              IN        NUMBER
740 --    ,p_amount_iv_id                 IN        NUMBER
741 --    ,p_week_commencing_iv_id        IN        NUMBER
742 --    ,p_rate_iv_id                   IN        NUMBER
743 --    ,p_recoverable_amount_iv_id     IN        NUMBER
744     ) IS
745   SELECT ele.element_entry_id
746         ,ele.effective_start_date
747         ,ele.effective_end_date
748         ,fnd_number.canonical_to_number('0.0') amount
749 --        ,(SELECT fnd_number.canonical_to_number(piv.screen_entry_value)
750 --          FROM   pay_element_entry_values_f piv
751 --          WHERE  piv.element_entry_id = ele.element_entry_id
752 --            AND  ele.effective_start_date
753 --                   BETWEEN piv.effective_start_date
754 --                       AND piv.effective_end_date
755 --            AND  piv.input_value_id = p_amount_iv_id -- g_smp_input_values(1).id
756 --         ) amount
757         ,fnd_date.canonical_to_date('3712/12/31 00:00:00')week_commencing
758 --        ,(SELECT fnd_date.canonical_to_date(piv.screen_entry_value)
759 --          FROM   pay_element_entry_values_f piv
760 --          WHERE  piv.element_entry_id = ele.element_entry_id
761 --            AND  ele.effective_start_date
762 --                   BETWEEN piv.effective_start_date
763 --                       AND piv.effective_end_date
764 --            AND  piv.input_value_id = p_week_commencing_iv_id -- g_smp_input_values(2).id
765 --         ) week_commencing
766 --        ,rpad(' ',60,' ') rate
767 --        ,(SELECT piv.screen_entry_value rate /* text */
768 --          FROM   pay_element_entry_values_f piv
769 --          WHERE  piv.element_entry_id = ele.element_entry_id
770 --            AND  ele.effective_start_date
771 --                   BETWEEN piv.effective_start_date
772 --                       AND piv.effective_end_date
773 --            AND  piv.input_value_id = p_rate_iv_id -- g_smp_input_values(3).id
774 --         )
775 --        ,fnd_number.canonical_to_number(piv.screen_entry_value) recoverable_amount
776 --        ,(SELECT fnd_number.canonical_to_number(piv.screen_entry_value) recoverable_amount
777 --          FROM   pay_element_entry_values_f piv
778 --          WHERE  piv.element_entry_id = ele.element_entry_id
779 --            AND  ele.effective_start_date
780 --                   BETWEEN piv.effective_start_date
781 --                       AND piv.effective_end_date
782 --            AND  piv.input_value_id = p_recoverable_amount_iv_id -- g_smp_input_values(4).id
783 --         )
784   FROM   pay_element_entries_f ele
785   WHERE  ele.assignment_id = p_primary_assignment_id   -- primary assignment id offline
786     AND  ele.element_link_id = p_element_link_id
787     AND  ele.creator_type = 'M'
788     AND  ele.creator_id = p_maternity_id;  -- determine maternity id offline
789 --
790 --
791 --
792   CURSOR get_element_entry_value
793     (p_element_entry_id         IN      NUMBER
794     ,p_effective_date           IN      DATE
795     ,p_input_value_id           IN      NUMBER
796     ) IS
797   SELECT eev.screen_entry_value
798   FROM   pay_element_entry_values_f eev
799   WHERE  eev.element_entry_id = p_element_entry_id
800     AND  p_effective_date
801            BETWEEN eev.effective_start_date
802                AND eev.effective_end_date
803     AND  eev.input_value_id = p_input_value_id;
804 --
805 --
806 --
807   CURSOR csr_absence_details
808     (p_absence_attendance_id      IN      NUMBER
809     ) IS
810   SELECT person_id
811         ,business_group_id
812         ,date_start
813         ,date_end
814         ,sickness_start_date
815         ,sickness_end_date
816         ,date_projected_start
817         ,date_projected_end
818         ,maternity_id             -- needed to find SMP element entries
819         ,linked_absence_id        -- needed to find SSP element entries
820   FROM   per_absence_attendances abs
821   WHERE  abs.absence_attendance_id = p_absence_attendance_id;
822 --
823 --
824 --
825   CURSOR csr_max_ssp_period
826     (p_element_type_id IN NUMBER
827     ,p_effective_date  IN DATE
828     ) IS
829   SELECT (fnd_number.canonical_to_number(element_information1) * 7) max_value
830   FROM   pay_element_types_f
831   WHERE  element_type_id = p_element_type_id
832     AND  p_effective_date
833            BETWEEN effective_start_date
834                AND effective_end_date;
835 --
836 --
837 --
838   CURSOR csr_absence_primary_assignment
839     (p_absence_id IN NUMBER
840     ) IS
841   SELECT asg.assignment_id
842   FROM   per_absence_attendances abs
843         ,per_all_assignments_f asg
844   WHERE  abs.absence_attendance_id = p_absence_id
845     AND  asg.person_id = abs.person_id
846     AND  NVL(abs.date_start,NVL(abs.sickness_start_date,SYSDATE))
847            BETWEEN asg.effective_start_date
848                AND asg.effective_end_date
849     AND  asg.primary_flag = 'Y';
850 --
851 --
852 --
853   CURSOR csr_calendar_usages
854     (--p_purpose_usage_id  IN NUMBER
855      p_entity_name       IN VARCHAR2
856     ,p_primary_key_value IN NUMBER
857     ,p_effective_date    IN DATE
858     ) IS
859   SELECT cu.purpose_usage_id
860         ,cu.primary_key_value
861   FROM   hr_calendar_usages cu
862         ,hr_pattern_purpose_usages ppu
863   WHERE  ppu.pattern_purpose = 'QUALIFYING PATTERN'
864     AND  ppu.entity_name = p_entity_name
865     AND  cu.purpose_usage_id = ppu.purpose_usage_id
866     AND  cu.primary_key_value = p_primary_key_value
867     AND  p_effective_date BETWEEN cu.start_date and cu.end_date;
868 --
869 --
870 --
871     CURSOR csr_smp_info
872       (p_smp_element_type_id IN NUMBER
873       ,p_effective_date      IN DATE
874       ) IS
875     SELECT fnd_number.canonical_to_number(elt.element_information1) earliest_start_mpp
876           ,fnd_number.canonical_to_number(elt.element_information2) qualifying_week
877           ,fnd_number.canonical_to_number(elt.element_information4) max_mpp_weeks
878           ,fnd_number.canonical_to_number(elt.element_information9) high_rate
879           ,fnd_number.canonical_to_number(elt.element_information10) low_rate
880           ,fnd_number.canonical_to_number(elt.element_information14) weeks_higher_rate
881     FROM   pay_element_types_f elt
882     WHERE  elt.element_type_id = p_smp_element_type_id
883       AND  p_effective_date
884              BETWEEN elt.effective_start_date
885                  AND elt.effective_end_date;
886 --
887 --
888 --
889   CURSOR csr_max_smp_period
890     (p_element_type_id IN NUMBER
891     ,p_effective_date  IN DATE
892     ) IS
893   SELECT (fnd_number.canonical_to_number(element_information4) * 7) max_value
894   FROM   pay_element_types_f
895   WHERE  element_type_id = p_element_type_id
896     AND  p_effective_date
897            BETWEEN effective_start_date
898                AND effective_end_date;
899 --
900 --
901 --
902 ------------------pqp_get_absence_attendances--------------------
903   FUNCTION pqp_get_absence_attendances(
904     p_absence_attendance_id     IN       NUMBER
905    ,p_col_name                  IN       VARCHAR2
906    ,p_error_code                OUT NOCOPY NUMBER
907    ,p_message                   OUT NOCOPY VARCHAR2
908   )
909     RETURN VARCHAR2;
910 
911 ------------------pqp_get_absence_further_info----------
912   FUNCTION pqp_get_absence_further_info(
913     p_business_group_id         IN       NUMBER
914    ,p_effective_date            IN       DATE
915    ,p_absence_attendance_id     IN       NUMBER
916    ,p_segment_name              IN       VARCHAR2
917    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
918    ,p_error_code                OUT NOCOPY NUMBER
919    ,p_message                   OUT NOCOPY VARCHAR2
920   )
921     RETURN VARCHAR2;
922 
923 ------------------pqp_get_absence_addnl_attr------------------
924   FUNCTION pqp_get_absence_addnl_attr(
925     p_business_group_id         IN       NUMBER
926    ,p_effective_date            IN       DATE
927    ,p_absence_attendance_id     IN       NUMBER
928    ,p_segment_name              IN       VARCHAR2
929    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
930    ,p_error_code                OUT NOCOPY NUMBER
931    ,p_message                   OUT NOCOPY VARCHAR2
932   )
933     RETURN VARCHAR2;
934 
935 ------------------pqp_get_ssp_medicals_details--------------------
936   FUNCTION pqp_get_ssp_medicals_details(
937     p_absence_attendance_id     IN       NUMBER
938    ,p_col_name                  IN       VARCHAR2
939    ,p_error_code                OUT NOCOPY NUMBER
940    ,p_message                   OUT NOCOPY VARCHAR2
941   )
942     RETURN VARCHAR2;
943 
944 ------------------pqp_get_ssp_medical_addnl_attr------------------
945   FUNCTION pqp_get_ssp_medical_addnl_attr(
946     p_business_group_id         IN       NUMBER
947    ,p_effective_date            IN       DATE
948    ,p_absence_attendance_id     IN       NUMBER
949    ,p_segment_name              IN       VARCHAR2
950    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
951    ,p_error_code                OUT NOCOPY NUMBER
952    ,p_message                   OUT NOCOPY VARCHAR2
953   )
954     RETURN VARCHAR2;
955 
956 ------------------pqp_get_ssp_matrnty_details--------------------
957   FUNCTION pqp_get_ssp_matrnty_details(
958     p_absence_attendance_id     IN       NUMBER
959    ,p_col_name                  IN       VARCHAR2
960    ,p_error_code                OUT NOCOPY NUMBER
961    ,p_message                   OUT NOCOPY VARCHAR2
962   )
963     RETURN VARCHAR2;
964 
965 ------------------pqp_get_ssp_matrnty_addnl_attr------------------
966   FUNCTION pqp_get_ssp_matrnty_addnl_attr(
967     p_business_group_id         IN       NUMBER
968    ,p_effective_date            IN       DATE
969    ,p_absence_attendance_id     IN       NUMBER
970    ,p_segment_name              IN       VARCHAR2
971    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
972    ,p_error_code                OUT NOCOPY NUMBER
973    ,p_message                   OUT NOCOPY VARCHAR2
974   )
975     RETURN VARCHAR2;
976 
977 ------------------pqp_get_plan_extra_info------------------
978   FUNCTION pqp_get_plan_extra_info(
979     p_pl_id                     IN       NUMBER
980    ,p_information_type          IN       VARCHAR2
981    ,p_segment_name              IN       VARCHAR2
982    ,p_value                     OUT NOCOPY VARCHAR2
983    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
984    ,p_error_msg                 OUT NOCOPY VARCHAR2
985   )
986     RETURN NUMBER;
987 
988 ------------------pqp_get_other_plan_extra_info------------------
989   FUNCTION pqp_get_other_plan_extra_info(
990     p_business_group_id         IN       NUMBER
991    ,p_effective_date            IN       DATE
992    ,p_pl_name                   IN       VARCHAR2
993    ,p_information_type          IN       VARCHAR2
994    ,p_segment_name              IN       VARCHAR2
995    ,p_value                     OUT NOCOPY VARCHAR2
996    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
997    ,p_error_msg                 OUT NOCOPY VARCHAR2
998   )
999     RETURN NUMBER;
1000 
1001 ------------------pqp_get_osp_plan_extra_info------------------
1002   FUNCTION pqp_get_osp_pl_extra_info(
1003     p_pl_id                     IN       NUMBER
1004    ,p_segment_name              IN       VARCHAR2
1005    ,p_value                     OUT NOCOPY VARCHAR2
1006    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
1007    ,p_error_msg                 OUT NOCOPY VARCHAR2
1008   )
1009     RETURN NUMBER;
1010 
1011 ------------------pqp_get_osp_oth_plan_extra_info------------------
1012   FUNCTION pqp_get_osp_oth_pl_extra_info(
1013     p_business_group_id         IN       NUMBER
1014    ,p_effective_date            IN       DATE
1015    ,p_pl_name                   IN       VARCHAR2
1016    ,p_segment_name              IN       VARCHAR2
1017    ,p_value                     OUT NOCOPY VARCHAR2
1018    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
1019    ,p_error_msg                 OUT NOCOPY VARCHAR2
1020   )
1021     RETURN NUMBER;
1022 
1023 ------------------ben_get_absence_id------------------
1024   FUNCTION ben_get_absence_id(
1025     p_assignment_id             IN       NUMBER
1026    ,p_effective_date            IN       DATE
1027   )
1028     RETURN NUMBER;
1029 
1030 ------------------ben_get_per_abs_attendances--------------------
1031   FUNCTION ben_get_per_abs_attendances(
1032     p_assignment_id             IN       NUMBER
1033    ,p_effective_date            IN       DATE
1034    ,p_col_name                  IN       VARCHAR2
1035    ,p_error_code                OUT NOCOPY NUMBER
1036    ,p_message                   OUT NOCOPY VARCHAR2
1037   )
1038     RETURN VARCHAR2;
1039 
1040 ------------------ben_get_absence_further_info----------
1041   FUNCTION ben_get_absence_further_info(
1042     p_business_group_id         IN       NUMBER
1043    ,p_effective_date            IN       DATE
1044    ,p_assignment_id             IN       NUMBER
1045    ,p_segment_name              IN       VARCHAR2
1046    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
1047    ,p_error_code                OUT NOCOPY NUMBER
1048    ,p_message                   OUT NOCOPY VARCHAR2
1049   )
1050     RETURN VARCHAR2;
1051 
1052 ------------------ben_get_absence_addnl_attr------------------
1053   FUNCTION ben_get_absence_addnl_attr(
1054     p_business_group_id         IN       NUMBER
1055    ,p_effective_date            IN       DATE
1056    ,p_assignment_id             IN       NUMBER
1057    ,p_segment_name              IN       VARCHAR2
1058    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
1059    ,p_error_code                OUT NOCOPY NUMBER
1060    ,p_message                   OUT NOCOPY VARCHAR2
1061   )
1062     RETURN VARCHAR2;
1063 
1064 ------------------ben_get_ssp_medical_details--------------------
1065   FUNCTION ben_get_ssp_medicals_details(
1066     p_assignment_id             IN       NUMBER
1067    ,p_effective_date            IN       DATE
1068    ,p_col_name                  IN       VARCHAR2
1069    ,p_error_code                OUT NOCOPY NUMBER
1070    ,p_message                   OUT NOCOPY VARCHAR2
1071   )
1072     RETURN VARCHAR2;
1073 
1074 ------------------ben_get_ssp_medical_addnl_attr------------------
1075   FUNCTION ben_get_ssp_medical_addnl_attr(
1076     p_business_group_id         IN       NUMBER
1077    ,p_effective_date            IN       DATE
1078    ,p_assignment_id             IN       NUMBER
1079    ,p_segment_name              IN       VARCHAR2
1080    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
1081    ,p_error_code                OUT NOCOPY NUMBER
1082    ,p_message                   OUT NOCOPY VARCHAR2
1083   )
1084     RETURN VARCHAR2;
1085 
1086 ------------------ben_get_ssp_matrnty_details--------------------
1087   FUNCTION ben_get_ssp_matrnty_details(
1088     p_assignment_id             IN       NUMBER
1089    ,p_effective_date            IN       DATE
1090    ,p_col_name                  IN       VARCHAR2
1091    ,p_error_code                OUT NOCOPY NUMBER
1092    ,p_message                   OUT NOCOPY VARCHAR2
1093   )
1094     RETURN VARCHAR2;
1095 
1096 ------------------ben_get_ssp_matrnty_addnl_attr------------------
1097   FUNCTION ben_get_ssp_matrnty_addnl_attr(
1098     p_business_group_id         IN       NUMBER
1099    ,p_effective_date            IN       DATE
1100    ,p_assignment_id             IN       NUMBER
1101    ,p_segment_name              IN       VARCHAR2
1102    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
1103    ,p_error_code                OUT NOCOPY NUMBER
1104    ,p_message                   OUT NOCOPY VARCHAR2
1105   )
1106     RETURN VARCHAR2;
1107 
1108 ------------------------get_lookup_code---------------------------
1109   FUNCTION get_lookup_code(
1110     p_lookup_type               IN       VARCHAR2
1111    ,p_lookup_meaning            IN       VARCHAR2
1112    ,p_message                   OUT NOCOPY VARCHAR2
1113   )
1114     RETURN VARCHAR2;
1115 
1116 ------------------get_absence_details--------------------
1117   FUNCTION get_absence_details(
1118     p_absence_attendance_id     IN       NUMBER
1119    ,p_title                     IN       VARCHAR2
1120    ,p_error_code                OUT NOCOPY NUMBER
1121    ,p_message                   OUT NOCOPY VARCHAR2
1122   )
1123     RETURN VARCHAR2;
1124 
1125 ------------------ben_get_absence_details--------------------
1126   FUNCTION ben_get_absence_details(
1127     p_assignment_id             IN       NUMBER
1128    ,p_effective_date            IN       DATE
1129    ,p_title                     IN       VARCHAR2
1130    ,p_error_code                OUT NOCOPY NUMBER
1131    ,p_message                   OUT NOCOPY VARCHAR2
1132   )
1133     RETURN VARCHAR2;
1134 
1135 ------------------get_medical_details--------------------
1136   FUNCTION get_medical_details(
1137     p_absence_attendance_id     IN       NUMBER
1138    ,p_title                     IN       VARCHAR2
1139    ,p_error_code                OUT NOCOPY NUMBER
1140    ,p_message                   OUT NOCOPY VARCHAR2
1141   )
1142     RETURN VARCHAR2;
1143 
1144 ------------------get_matrnty_details--------------------
1145   FUNCTION get_matrnty_details(
1146     p_absence_attendance_id     IN       NUMBER
1147    ,p_title                     IN       VARCHAR2
1148    ,p_error_code                OUT NOCOPY NUMBER
1149    ,p_message                   OUT NOCOPY VARCHAR2
1150   )
1151     RETURN VARCHAR2;
1152 
1153 ------------------get_LOS_based_entitlements--------------------
1154 
1155   FUNCTION get_los_based_entitlements
1156    (p_assignment_id             IN       NUMBER
1157    ,p_business_group_id         IN       NUMBER
1158    ,p_effective_date            IN       DATE
1159    ,p_pl_id                     IN       NUMBER
1160    ,p_absence_pay_plan_class    IN       VARCHAR2
1161    ,p_entitlement_table_id      IN       NUMBER
1162    ,p_benefits_length_of_service IN      NUMBER
1163    ,p_band_entitlements         OUT NOCOPY pqp_absval_pkg.t_entitlements --t_band_info
1164    ,p_error_msg                 OUT NOCOPY VARCHAR2
1165    ,p_omp_intend_to_return_to_work IN    VARCHAR2 DEFAULT 'X'
1166    ,p_entitlement_bands_list_name IN     VARCHAR2
1167         DEFAULT 'PQP_GAP_ENTITLEMENT_BANDS'
1168    ,p_is_ent_override             IN OUT NOCOPY BOOLEAN
1169   )
1170     RETURN NUMBER;
1171 
1172 ------------------pqp_get_band_ent_parameters--------------------
1173 
1174   FUNCTION pqp_get_band_ent_parameters(
1175     p_business_group_id         IN       NUMBER
1176    ,p_effective_date            IN       DATE
1177    ,p_absence_pay_plan_class    IN       VARCHAR2
1178    ,p_entitlement_table_id      IN       NUMBER
1179    ,p_level_of_entitlement      IN       VARCHAR2
1180    ,p_entitlement_parameters    OUT NOCOPY r_entitlement_parameters
1181    ,p_error_msg                 OUT NOCOPY VARCHAR2
1182   )
1183     RETURN NUMBER;
1184 
1185 ------------------get_entitlement_parameters--------------------
1186 
1187   FUNCTION get_entitlement_parameters -- pqp_get_entitlement_parameters
1188    (p_business_group_id         IN       NUMBER
1189    ,p_effective_date            IN       DATE
1190    ,p_assignment_id             IN       NUMBER
1191    ,p_pl_id                     IN       NUMBER
1192    ,p_absence_pay_plan_class    IN       VARCHAR2
1193    ,p_entitlement_table_id      IN       NUMBER
1194    ,p_benefits_length_of_service IN      NUMBER
1195    ,p_entitlement_parameters    OUT NOCOPY t_entitlement_parameters
1196    ,p_error_msg                 OUT NOCOPY VARCHAR2
1197    ,p_omp_intend_to_return_to_work IN    VARCHAR2 DEFAULT 'X'
1198    ,p_entitlement_bands_list_name IN     VARCHAR2
1199         DEFAULT 'PQP_GAP_ENTITLEMENT_BANDS'
1200   )
1201     RETURN NUMBER;
1202 
1203 -------------pqp_get_band_ent_value------------------------------
1204 
1205   FUNCTION pqp_get_band_ent_value
1206     (p_business_group_id           IN            NUMBER
1207     ,p_effective_date              IN            DATE
1208     ,p_assignment_id               IN            NUMBER -- Context #3
1209     ,p_element_type_id             IN            NUMBER -- Context #4
1210     ,p_entitlement_tab_id          IN            NUMBER
1211     ,p_benefits_length_of_service  IN            NUMBER
1212     ,p_band1_entitlement              OUT NOCOPY NUMBER
1213     ,p_band1_percentage               OUT NOCOPY NUMBER
1214     ,p_band2_entitlement              OUT NOCOPY NUMBER
1215     ,p_band2_percentage               OUT NOCOPY NUMBER
1216     ,p_band3_entitlement              OUT NOCOPY NUMBER
1217     ,p_band3_percentage               OUT NOCOPY NUMBER
1218     ,p_band4_entitlement              OUT NOCOPY NUMBER
1219     ,p_band4_percentage               OUT NOCOPY NUMBER
1220     ,p_error_msg                      OUT NOCOPY VARCHAR2
1221     ,p_entitlement_bands_list_name IN            VARCHAR2 DEFAULT
1222        'PQP_GAP_ENTITLEMENT_BANDS'
1223     ,p_override_effective_date     IN            DATE DEFAULT NULL
1224     ) RETURN NUMBER;
1225 
1226 ------------------pqp_get_maternity_id------------------
1227   FUNCTION pqp_get_maternity_id(
1228     p_absence_id                IN       NUMBER
1229    ,p_message                   OUT NOCOPY VARCHAR2
1230   )
1231     RETURN NUMBER;
1232 
1233 ------------------pqp_get_medical_id------------------
1234   FUNCTION pqp_get_medical_id(
1235     p_absence_id                IN       NUMBER
1236    ,p_message                   OUT NOCOPY VARCHAR2
1237   )
1238     RETURN NUMBER;
1239 
1240 ----------------pqp_gb_get_no_of_holidays---------------
1241   FUNCTION pqp_gb_get_no_of_holidays(
1242     p_business_group_id         IN       NUMBER
1243    ,p_abs_start_date            IN       DATE
1244    ,p_abs_end_date              IN       DATE
1245    ,p_table_id                  IN       NUMBER DEFAULT NULL
1246    ,p_column_name               IN       VARCHAR2 DEFAULT NULL
1247    ,p_value                     IN       VARCHAR2 DEFAULT NULL
1248   )
1249     RETURN NUMBER;
1250 
1251 ----------------pqp_gb_get_calendar_abs_days---------------
1252   FUNCTION pqp_gb_get_calendar_days(p_start_date IN DATE, p_end_date IN DATE)
1253     RETURN NUMBER;
1254 
1255 ----------------pqp_gb_get_cal_abs_hol_days---------------
1256   FUNCTION pqp_gb_get_cal_abs_hol_days(
1257     p_business_group_id         IN       NUMBER
1258    ,p_abs_start_date            IN       DATE
1259    ,p_abs_end_date              IN       DATE
1260    ,p_holidays                  OUT NOCOPY NUMBER
1261    ,p_table_id                  IN       NUMBER DEFAULT NULL
1262    ,p_column_name               IN       VARCHAR2 DEFAULT NULL
1263    ,p_value                     IN       VARCHAR2 DEFAULT NULL
1264   )
1265     RETURN NUMBER;
1266 
1267 ----------------pqp_gb_get_cal_abs_days---------------
1268   FUNCTION pqp_gb_get_cal_abs_days(
1269     p_business_group_id         IN       NUMBER
1270    ,p_abs_start_date            IN       DATE
1271    ,p_abs_end_date              IN       DATE
1272    ,p_holidays                  OUT NOCOPY NUMBER
1273    ,p_table_id                  IN       NUMBER DEFAULT NULL
1274    ,p_column_name               IN       VARCHAR2 DEFAULT NULL
1275    ,p_value                     IN       VARCHAR2 DEFAULT NULL
1276   )
1277     RETURN NUMBER;
1278 
1279 ----------------pqp_gb_get_cal_abs_days---------------
1280   FUNCTION pqp_gb_get_no_of_work_holidays(
1281     p_business_group_id         IN       NUMBER
1282    ,p_work_dates                IN       pqp_schedule_calculation_pkg.t_working_dates
1283    ,p_table_id                  IN       NUMBER
1284    ,p_column_name               IN       VARCHAR2
1285    ,p_value                     IN       VARCHAR2
1286   )
1287     RETURN NUMBER;
1288 
1289 ----------------pqp_gb_get_work_abs_days_udt---------------
1290   FUNCTION pqp_gb_get_work_abs_days_udt(
1291     p_assignment_id             IN       NUMBER
1292    ,p_business_group_id         IN       NUMBER
1293    ,p_start_date                IN       DATE
1294    ,p_end_date                  IN       DATE
1295    ,p_default_wp                IN       VARCHAR2
1296    ,p_table_id                  IN       NUMBER
1297    ,p_column_name               IN       VARCHAR2
1298    ,p_value                     IN       VARCHAR2
1299    ,p_holidays                  OUT NOCOPY NUMBER
1300    ,p_error_code                OUT NOCOPY NUMBER
1301    ,p_error_message             OUT NOCOPY VARCHAR2
1302   )
1303     RETURN NUMBER;
1304 
1305 ----------------pqp_gb_get_work_abs_days---------------
1306   FUNCTION pqp_gb_get_work_abs_days(
1307     p_assignment_id             IN       NUMBER
1308    ,p_business_group_id         IN       NUMBER
1309    ,p_start_date                IN       DATE
1310    ,p_end_date                  IN       DATE
1311    ,p_holidays                  OUT NOCOPY NUMBER
1312    ,p_error_code                OUT NOCOPY NUMBER
1313    ,p_error_message             OUT NOCOPY VARCHAR2
1314    ,p_default_wp                IN       VARCHAR2
1315    ,p_table_id                  IN       NUMBER DEFAULT NULL
1316    ,p_column_name               IN       VARCHAR2 DEFAULT NULL
1317    ,p_value                     IN       VARCHAR2 DEFAULT NULL
1318   )
1319     RETURN NUMBER;
1320 
1321 -------------pqp_get_omp_band_ent_value------------------------------
1322   FUNCTION pqp_get_omp_band_ent_value
1323     (p_business_group_id           IN            NUMBER
1324     ,p_effective_date              IN            DATE
1325     ,p_assignment_id               IN            NUMBER -- Context #3
1326     ,p_element_type_id             IN            NUMBER -- Context #4
1327     ,p_entitlement_tab_id          IN            NUMBER
1328     ,p_benefits_length_of_service  IN            NUMBER
1329     ,p_return_to_work              IN            VARCHAR2
1330     ,p_band1_entitlement              OUT NOCOPY NUMBER
1331     ,p_band1_percentage               OUT NOCOPY NUMBER
1332     ,p_band1_avg_rec_ind              OUT NOCOPY VARCHAR2
1333     ,p_band2_entitlement              OUT NOCOPY NUMBER
1334     ,p_band2_percentage               OUT NOCOPY NUMBER
1335     ,p_band2_avg_rec_ind              OUT NOCOPY VARCHAR2
1336     ,p_band3_entitlement              OUT NOCOPY NUMBER
1337     ,p_band3_percentage               OUT NOCOPY NUMBER
1338     ,p_band3_avg_rec_ind              OUT NOCOPY VARCHAR2
1339     ,p_band4_entitlement              OUT NOCOPY NUMBER
1340     ,p_band4_percentage               OUT NOCOPY NUMBER
1341     ,p_band4_avg_rec_ind              OUT NOCOPY VARCHAR2
1342     ,p_error_msg                      OUT NOCOPY VARCHAR2
1343     ,p_entitlement_bands_list_name IN            VARCHAR2 DEFAULT
1344        'PQP_GAP_ENTITLEMENT_BANDS'
1345     ,p_override_effective_date     IN            DATE DEFAULT NULL
1346     ) RETURN NUMBER;
1347 
1348 -------------get_next_working_date------------------------------
1349 
1350   FUNCTION get_next_working_date(
1351     p_assignment_id             IN       NUMBER
1352    ,p_business_group_id         IN       NUMBER
1353    ,p_date_start                IN       DATE
1354    ,p_days                      IN       NUMBER
1355    ,p_error_code                OUT NOCOPY NUMBER
1356    ,p_error_message             OUT NOCOPY VARCHAR2
1357    ,p_default_wp                IN       VARCHAR2 DEFAULT NULL
1358    ,p_table_id                  IN       NUMBER DEFAULT NULL
1359    ,p_column_name               IN       VARCHAR2 DEFAULT NULL
1360    ,p_value                     IN       VARCHAR2 DEFAULT NULL
1361   )
1362     RETURN DATE;
1363 
1364 ------------------pqp_get_omp_plan_extra_info------------------
1365   FUNCTION pqp_get_omp_pl_extra_info(
1366     p_pl_id                     IN       NUMBER
1367    ,p_segment_name              IN       VARCHAR2
1368    ,p_value                     OUT NOCOPY VARCHAR2
1369    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
1370    ,p_error_msg                 OUT NOCOPY VARCHAR2
1371   )
1372     RETURN NUMBER;
1373 
1374 ------------------pqp_get_omp_oth_plan_extra_info------------------
1375   FUNCTION pqp_get_omp_oth_pl_extra_info(
1376     p_business_group_id         IN       NUMBER
1377    ,p_effective_date            IN       DATE
1378    ,p_pl_name                   IN       VARCHAR2
1379    ,p_segment_name              IN       VARCHAR2
1380    ,p_value                     OUT NOCOPY VARCHAR2
1381    ,p_truncated_yes_no          OUT NOCOPY VARCHAR2
1382    ,p_error_msg                 OUT NOCOPY VARCHAR2
1383   )
1384     RETURN NUMBER;
1385 
1386 ------------ PQP_GB_GET_ABSENCE_SSP ----------------------
1387   FUNCTION pqp_gb_get_absence_ssp
1388     (p_business_group_id         IN       NUMBER
1389     ,p_assignment_id             IN       NUMBER
1390     ,p_absence_id                IN       NUMBER
1391     ,p_start_date                IN       DATE
1392     ,p_end_date                  IN       DATE
1393     ,p_range_total               OUT NOCOPY NUMBER
1394     ,p_absence_total             OUT NOCOPY NUMBER
1395     ,p_error_code                OUT NOCOPY NUMBER
1396     ,p_error_msg                 OUT NOCOPY VARCHAR2
1397     ) RETURN NUMBER;
1398 
1399 ------------ PQP_GB_GET_ABSENCE_SMP ----------------------
1400   FUNCTION pqp_gb_get_absence_smp
1401     (p_business_group_id         IN       NUMBER
1402     ,p_assignment_id             IN       NUMBER
1403     ,p_absence_id                IN       NUMBER
1404     ,p_start_date                IN       DATE
1405     ,p_end_date                  IN       DATE
1406     ,p_range_total               OUT NOCOPY NUMBER
1407     ,p_absence_total             OUT NOCOPY NUMBER
1408     ,p_error_code                OUT NOCOPY NUMBER
1409     ,p_error_msg                 OUT NOCOPY VARCHAR2
1410     ) RETURN NUMBER;
1411 
1412 ------------BEN_MATRNTY_DETAILS----------------------
1413   FUNCTION ben_matrnty_details(
1414     p_assignment_id             IN       NUMBER
1415    ,p_effective_date            IN       DATE
1416    ,p_title                     IN       VARCHAR2
1417    ,p_error_code                OUT NOCOPY NUMBER
1418    ,p_message                   OUT NOCOPY VARCHAR2
1419   )
1420     RETURN VARCHAR2;
1421 
1422 ------------BEN_MEDICAL_DETAILS----------------------
1423   FUNCTION ben_medical_details(
1424     p_assignment_id             IN       NUMBER
1425    ,p_effective_date            IN       DATE
1426    ,p_title                     IN       VARCHAR2
1427    ,p_error_code                OUT NOCOPY NUMBER
1428    ,p_message                   OUT NOCOPY VARCHAR2
1429   )
1430     RETURN VARCHAR2;
1431 
1432 -----------------------------------------------------------
1433 --This function have three variants for Entitled, Paid, Work Pattern Columns
1434 --p_search_start_date, p_search_end_date should be checked against absence start
1435 -- date
1436 --and absence end date. For search start date greatest (
1437 -- search_start_date,absence_start_date)
1438 --for search end date least(search_end_date,absence_end_date)
1439   FUNCTION get_abs_plan_ent_days_info(
1440     p_absence_attendance_id     IN       NUMBER
1441    ,p_pl_id                     IN       NUMBER
1442    ,p_error_code                OUT NOCOPY NUMBER
1443    ,p_error_message             OUT NOCOPY VARCHAR2
1444    ,p_search_start_date         IN       DATE DEFAULT NULL
1445    ,p_search_end_date           IN       DATE DEFAULT NULL
1446    ,p_level_of_entitlement      IN       VARCHAR2 DEFAULT NULL
1447   )
1448     RETURN NUMBER;
1449 
1450 ------------------------------------------------------------
1451   FUNCTION get_abs_plan_paid_days_info(
1452     p_absence_attendance_id     IN       NUMBER
1453    ,p_pl_id                     IN       NUMBER
1454    ,p_error_code                OUT NOCOPY NUMBER
1455    ,p_error_message             OUT NOCOPY VARCHAR2
1456    ,p_search_start_date         IN       DATE DEFAULT NULL
1457    ,p_search_end_date           IN       DATE DEFAULT NULL
1458    ,p_level_of_pay              IN       VARCHAR2 DEFAULT NULL
1459   )
1460     RETURN NUMBER;
1461 
1462 ------------------------------------------------------------
1463   FUNCTION get_abs_plan_wp_info(
1464     p_absence_attendance_id     IN       NUMBER
1465    ,p_pl_id                     IN       NUMBER
1466    ,p_error_code                OUT NOCOPY NUMBER
1467    ,p_error_message             OUT NOCOPY VARCHAR2
1468    ,p_search_start_date         IN       DATE DEFAULT NULL
1469    ,p_search_end_date           IN       DATE DEFAULT NULL
1470    ,p_work_pattern_day_type     IN       VARCHAR2 DEFAULT NULL
1471   )
1472     RETURN NUMBER;
1473 
1474 -----------------------------------------
1475   FUNCTION get_osp_band_paid_entitlements(
1476     p_absence_attendance_id     IN       NUMBER
1477    ,p_pl_id                     IN       NUMBER
1478    ,p_band1_entitled            OUT NOCOPY NUMBER
1479    ,p_band1_paid                OUT NOCOPY NUMBER
1480    ,p_band2_entitled            OUT NOCOPY NUMBER
1481    ,p_band2_paid                OUT NOCOPY NUMBER
1482    ,p_band3_entitled            OUT NOCOPY NUMBER
1483    ,p_band3_paid                OUT NOCOPY NUMBER
1484    ,p_band4_entitled            OUT NOCOPY NUMBER
1485    ,p_band4_paid                OUT NOCOPY NUMBER
1486    ,p_noband_entitled           OUT NOCOPY NUMBER
1487    ,p_noband_paid               OUT NOCOPY NUMBER
1488    ,p_error_code                OUT NOCOPY NUMBER
1489    ,p_error_message             OUT NOCOPY VARCHAR2
1490    ,p_search_start_date         IN       DATE DEFAULT NULL
1491    ,p_search_end_date           IN       DATE DEFAULT NULL
1492   )
1493     RETURN NUMBER;
1494 
1495 -----------------------------------------------
1496   FUNCTION chk_calendar_occurance(
1497     p_date                      IN       DATE
1498    ,p_calendar_table_id         IN       NUMBER
1499    ,p_calendar_rules_list       IN       VARCHAR2
1500    ,p_cal_rul_name              OUT NOCOPY VARCHAR2
1501    ,p_cal_day_name              OUT NOCOPY VARCHAR2
1502    ,p_cal_rule_value            OUT NOCOPY VARCHAR2
1503    ,p_error_code                OUT NOCOPY NUMBER
1504    ,p_error_message             OUT NOCOPY VARCHAR2
1505    ,p_cal_value                 IN       VARCHAR2 DEFAULT NULL
1506    ,p_filter                    IN       VARCHAR2 DEFAULT 'AllMatch'
1507   )
1508     RETURN NUMBER;
1509 
1510 ----------------------------------------------------------------
1511   FUNCTION get_band_entitlement_balance(
1512     p_business_group_id        IN       NUMBER
1513    ,p_effective_date           IN       DATE
1514    ,p_assignment_id            IN       NUMBER
1515    ,p_pl_typ_id                IN       NUMBER
1516    ,p_scheme_calendar_type     IN       VARCHAR2
1517    ,p_scheme_calendar_duration IN       VARCHAR2
1518    ,p_scheme_calendar_uom      IN       VARCHAR2
1519    ,p_scheme_start_date        IN       VARCHAR2
1520    ,p_scheme_overlap_rule      IN       VARCHAR2
1521    ,p_level_of_entitlement     IN       VARCHAR2
1522    ,p_error_code               OUT NOCOPY NUMBER
1523    ,p_error_message            OUT NOCOPY VARCHAR2
1524    ,p_days_hours               IN  VARCHAR2 DEFAULT 'DAYS'
1525 --Added for CS
1526    ,p_default_work_pattern      IN VARCHAR2
1527    ,p_plan_types_to_extend_period IN VARCHAR2 -- LG/PT
1528    ,p_entitlement_uom             IN VARCHAR2 -- LG/PT
1529    ,p_absence_schedule_wp         IN VARCHAR2 -- LG/PT
1530    ,p_track_part_timers           IN VARCHAR2 -- LG/PT
1531    ,p_absence_start_date          IN DATE  DEFAULT NULL
1532 
1533   )
1534     RETURN NUMBER;
1535 
1536 -----------------------------------------------------
1537   FUNCTION get_band_ent_bal_by_ele_typ_id(
1538     p_business_group_id         IN       NUMBER
1539    ,p_assignment_id             IN       NUMBER
1540    ,p_element_type_id           IN       NUMBER
1541    ,p_effective_date            IN       DATE
1542    ,p_level_of_entitlement      IN       VARCHAR2
1543    ,p_error_code                OUT NOCOPY NUMBER
1544    ,p_error_message             OUT NOCOPY VARCHAR2
1545    ,p_days_hours                IN  VARCHAR2 DEFAULT 'DAYS'
1546    ,p_absence_start_date        IN       DATE DEFAULT NULL
1547   )
1548     RETURN NUMBER;
1549 
1550 ----------------------------------------------------
1551   FUNCTION get_all_band_ent_balance(
1552     p_business_group_id         IN       NUMBER
1553    ,p_assignment_id             IN       NUMBER
1554    ,p_element_type_id           IN       NUMBER
1555    ,p_effective_date            IN       DATE
1556    ,p_band1_ent_bal             OUT NOCOPY NUMBER
1557    ,p_band2_ent_bal             OUT NOCOPY NUMBER
1558    ,p_band3_ent_bal             OUT NOCOPY NUMBER
1559    ,p_band4_ent_bal             OUT NOCOPY NUMBER
1560    ,p_noband_ent_bal            OUT NOCOPY NUMBER
1561    ,p_error_code                OUT NOCOPY NUMBER
1562    ,p_error_message             OUT NOCOPY VARCHAR2
1563    ,p_absence_start_date        IN       DATE  DEFAULT NULL
1564   )
1565     RETURN NUMBER;
1566 
1567 ---------------------------------------------------
1568   FUNCTION get_band_ent_bal_by_pl_id(
1569     p_business_group_id         IN       NUMBER
1570    ,p_assignment_id             IN       NUMBER
1571    ,p_pl_id                     IN       NUMBER
1572    ,p_effective_date            IN       DATE
1573    ,p_level_of_entitlement      IN       VARCHAR2
1574    ,p_error_code                OUT NOCOPY NUMBER
1575    ,p_error_message             OUT NOCOPY VARCHAR2
1576   )
1577     RETURN NUMBER;
1578 
1579 -------------------------------------------------------------
1580 --function added by sshetty.
1581   FUNCTION get_paid_days_duration(
1582     p_assignment_id             IN       NUMBER
1583    ,p_business_group_id         IN       NUMBER
1584    ,p_effective_date            IN       DATE
1585    ,p_pl_id                     IN       NUMBER
1586    ,p_level_of_pay              IN       VARCHAR2
1587    ,p_search_start_date         IN       DATE
1588    ,p_search_end_date           IN       DATE
1589    ,p_error_code                OUT NOCOPY NUMBER
1590    ,p_message                   OUT NOCOPY VARCHAR2
1591   )
1592     RETURN NUMBER;
1593 
1594 --------------------------------------------------------------------
1595   FUNCTION get_entitled_days_duration(
1596     p_assignment_id             IN       NUMBER
1597    ,p_business_group_id         IN       NUMBER
1598    ,p_effective_date            IN       DATE
1599    ,p_pl_id                     IN       NUMBER
1600    ,p_level_of_entitlement      IN       VARCHAR2
1601    ,p_search_start_date         IN       DATE
1602    ,p_search_end_date           IN       DATE
1603    ,p_error_code                OUT NOCOPY NUMBER
1604    ,p_message                   OUT NOCOPY VARCHAR2
1605   )
1606     RETURN NUMBER;
1607 
1608 --------------------------------------------------------
1609   FUNCTION get_wp_days_duration(
1610     p_assignment_id             IN       NUMBER
1611    ,p_business_group_id         IN       NUMBER
1612    ,p_effective_date            IN       DATE
1613    ,p_pl_id                     IN       NUMBER
1614    ,p_wp_day_type               IN       VARCHAR2
1615    ,p_search_start_date         IN       DATE
1616    ,p_search_end_date           IN       DATE
1617    ,p_error_code                OUT NOCOPY NUMBER
1618    ,p_message                   OUT NOCOPY VARCHAR2
1619   )
1620     RETURN NUMBER;
1621 
1622 --------------------------------------------------------
1623   FUNCTION get_subpriority(
1624     p_business_group_id         IN       NUMBER
1625    ,p_assignment_id             IN       NUMBER
1626    ,p_payroll_action_id         IN       NUMBER
1627    ,p_effective_date            IN       DATE
1628    ,p_pl_id                     IN       NUMBER
1629    ,p_ler_id                    IN       NUMBER
1630    ,p_absence_start_date        IN       DATE
1631   )
1632     RETURN NUMBER;
1633 
1634 ---------------------------------------------------
1635   FUNCTION get_next_cal_date(
1636     p_business_group_id         IN       NUMBER
1637    ,p_date_start                IN       DATE
1638    ,p_days                      IN       NUMBER
1639    ,p_error_code                OUT NOCOPY NUMBER
1640    ,p_error_message             OUT NOCOPY VARCHAR2
1641    ,p_table_id                  IN       NUMBER DEFAULT NULL
1642    ,p_column_name               IN       VARCHAR2 DEFAULT NULL
1643    ,p_value                     IN       VARCHAR2 DEFAULT NULL
1644   )
1645     RETURN DATE;
1646 
1647 ---------------------------------------------------
1648 -- Added this function for absence DDF context usage
1649   FUNCTION exists_in_gap_lookup(
1650     p_business_group_id         IN       NUMBER
1651    ,p_lookup_code               IN       VARCHAR2
1652    ,p_effective_date            IN       DATE
1653    ,p_lookup_type               IN       VARCHAR2
1654         DEFAULT 'PQP_GAP_ABSENCE_TYPES_LIST'
1655   )
1656     RETURN BOOLEAN;
1657 
1658 ---------------------------------------------------
1659 ---- Added for Daily Absences in OMP from here-----
1660 ---------------------------------------------------
1661 
1662   FUNCTION get_omp_all_band_ent_balance(
1663     p_business_group_id         IN       NUMBER
1664    ,p_assignment_id             IN       NUMBER
1665    ,p_element_type_id           IN       NUMBER
1666    ,p_effective_date            IN       DATE
1667    ,p_band1_ent_bal             OUT NOCOPY NUMBER
1668    ,p_band2_ent_bal             OUT NOCOPY NUMBER
1669    ,p_band3_ent_bal             OUT NOCOPY NUMBER
1670    ,p_band4_ent_bal             OUT NOCOPY NUMBER
1671    ,p_noband_ent_bal            OUT NOCOPY NUMBER
1672    ,p_error_code                OUT NOCOPY NUMBER
1673    ,p_error_message             OUT NOCOPY VARCHAR2
1674   )
1675     RETURN NUMBER;
1676 
1677 -------------------------------------------------------------
1678   FUNCTION get_omp_band_ent_bal_ele_typ(
1679     p_business_group_id         IN       NUMBER
1680    ,p_assignment_id             IN       NUMBER
1681    ,p_element_type_id           IN       NUMBER
1682    ,p_effective_date            IN       DATE
1683    ,p_level_of_entitlement      IN       VARCHAR2
1684    ,p_error_code                OUT NOCOPY NUMBER
1685    ,p_error_message             OUT NOCOPY VARCHAR2
1686    ,p_days_hours                IN  VARCHAR2 DEFAULT 'DAYS'
1687   )
1688     RETURN NUMBER;
1689 
1690 --------------------------------------------------------------
1691   FUNCTION get_omp_band_ent_bal_pl_typ(
1692     p_business_group_id         IN       NUMBER
1693    ,p_effective_date            IN       DATE
1694    ,p_assignment_id             IN       NUMBER
1695    ,p_pl_typ_id                 IN       NUMBER
1696    ,p_level_of_entitlement      IN       VARCHAR2
1697    ,p_error_code                OUT NOCOPY NUMBER
1698    ,p_error_message             OUT NOCOPY VARCHAR2
1699    ,p_days_hours                IN  VARCHAR2
1700   )
1701     RETURN NUMBER;
1702 ---------------------------------------------------
1703 ---- Added for Daily Absences in OMP End here-----
1704 ---------------------------------------------------
1705 
1706 -------------------------------------------------------
1707 ------------- Added for Hours Solution ----------------
1708 -------------------------------------------------------
1709 
1710 
1711 ----------get_osp_hours_band_paid_ent------------------
1712 FUNCTION get_osp_hours_band_paid_ent(
1713               p_absence_attendance_id IN  NUMBER,
1714               p_pl_id                 IN  NUMBER,
1715               p_band1_entitled        OUT NOCOPY NUMBER,
1716               p_band2_entitled        OUT NOCOPY NUMBER,
1717               p_band3_entitled        OUT NOCOPY NUMBER,
1718               p_band4_entitled        OUT NOCOPY NUMBER,
1719               p_noband_entitled       OUT NOCOPY NUMBER,
1720               p_error_code            OUT NOCOPY NUMBER,
1721               p_error_message         OUT NOCOPY VARCHAR2,
1722               p_search_start_date     IN  DATE DEFAULT NULL,
1723               p_search_end_Date       IN  DATE DEFAULT NULL )
1724             RETURN NUMBER ;
1725 
1726 --------------get_all_band_hours_ent_balance------------------
1727 
1728 FUNCTION get_all_band_hours_ent_balance(
1729                     p_business_group_id IN  NUMBER
1730                    ,p_assignment_id     IN  NUMBER
1731                    ,p_element_type_id   IN  NUMBER
1732                    ,p_effective_date    IN  DATE
1733                    ,p_band1_ent_bal     OUT NOCOPY NUMBER
1734                    ,p_band2_ent_bal     OUT NOCOPY NUMBER
1735                    ,p_band3_ent_bal     OUT NOCOPY NUMBER
1736                    ,p_band4_ent_bal     OUT NOCOPY NUMBER
1737                    ,p_noband_ent_bal    OUT NOCOPY NUMBER
1738                    ,p_error_code        OUT NOCOPY NUMBER
1739                    ,p_error_message     OUT NOCOPY VARCHAR2
1740                    )
1741         RETURN NUMBER ;
1742 --------------get_omp_all_band_hours_ent_bal------------------
1743 FUNCTION get_omp_all_band_hours_ent_bal(
1744                      p_business_group_id IN  NUMBER
1745                     ,p_assignment_id     IN  NUMBER
1746                     ,p_element_type_id   IN  NUMBER
1747                     ,p_effective_date    IN  DATE
1748                     ,p_band1_ent_bal     OUT NOCOPY NUMBER
1749                     ,p_band2_ent_bal     OUT NOCOPY NUMBER
1750                     ,p_band3_ent_bal     OUT NOCOPY NUMBER
1751                     ,p_band4_ent_bal     OUT NOCOPY NUMBER
1752                     ,p_noband_ent_bal    OUT NOCOPY NUMBER
1753                     ,p_error_code        OUT NOCOPY NUMBER
1754                     ,p_error_message     OUT NOCOPY VARCHAR2
1755                     )
1756         RETURN NUMBER ;
1757 -------------------------------------------------------
1758 ------------- Added for Hours Solution ----------------
1759 -------------------------------------------------------
1760 --
1761 --
1762 --
1763 FUNCTION get_first_paid_day
1764   (p_absence_attendance_id IN            NUMBER
1765   ,p_pl_id                 IN            NUMBER
1766   ,p_level_of_pay          IN            VARCHAR2 DEFAULT NULL
1767   ) RETURN DATE;
1768 --
1769 FUNCTION get_last_paid_day
1770   (p_absence_attendance_id IN            NUMBER
1771   ,p_pl_id                 IN            NUMBER
1772   ,p_level_of_pay          IN            VARCHAR2 DEFAULT NULL
1773   ) RETURN DATE;
1774 --
1775 FUNCTION get_first_entitled_day
1776   (p_absence_attendance_id IN            NUMBER
1777   ,p_pl_id                 IN            NUMBER
1778   ,p_level_of_entitlement  IN            VARCHAR2 DEFAULT NULL
1779   ) RETURN DATE;
1780 --
1781 FUNCTION get_last_entitled_day
1782   (p_absence_attendance_id IN            NUMBER
1783   ,p_pl_id                 IN            NUMBER
1784   ,p_level_of_entitlement  IN            VARCHAR2 DEFAULT NULL
1785   ) RETURN DATE;
1786 --
1787 
1788 PROCEDURE chk_override_entitlements -- AI and AU USER HOOK PROC pepeihcd.sql
1789   (p_person_extra_info_id          IN      NUMBER
1790   ,p_person_id                     IN      NUMBER
1791   ,p_information_type              IN      VARCHAR2
1792   ,p_pei_information_category      IN      VARCHAR2
1793   ,p_pei_information1              IN      VARCHAR2
1794   ,p_pei_information2              IN      VARCHAR2
1795   ,p_pei_information3              IN      VARCHAR2
1796   ,p_pei_information11             IN      VARCHAR2
1797   ,p_pei_information12             IN      VARCHAR2
1798   ,p_pei_information13             IN      VARCHAR2
1799   ,p_pei_information14             IN      VARCHAR2
1800   );
1801 
1802 FUNCTION get_absence_ssp
1803   (p_business_group_id         IN       NUMBER
1804   ,p_assignment_id             IN       NUMBER
1805   ,p_absence_attendance_id     IN       NUMBER
1806   ,p_range_start_date          IN       DATE
1807   ,p_range_end_date            IN       DATE
1808   ) RETURN NUMBER;
1809 
1810 FUNCTION get_period_ssp
1811   (p_business_group_id         IN       NUMBER -- Context
1812   ,p_assignment_id             IN       NUMBER -- Context
1813   ,p_range_start_date          IN       DATE
1814   ,p_range_end_date            IN       DATE
1815   ) RETURN NUMBER;
1816 
1817 FUNCTION get_absence_smp
1818   (p_business_group_id         IN       NUMBER
1819   ,p_assignment_id             IN       NUMBER
1820   ,p_absence_attendance_id     IN       NUMBER
1821   ,p_range_start_date          IN       DATE
1822   ,p_range_end_date            IN       DATE
1823   ) RETURN NUMBER;
1824 
1825 PROCEDURE clear_cache;
1826 
1827 FUNCTION get_absence_paid_days_tp
1828  ( p_assignment_id IN NUMBER
1829   ,p_start_date    IN DATE
1830   ,p_end_date      IN DATE
1831   ,p_level_of_pay  IN VARCHAR2
1832  ) RETURN NUMBER ;
1833 
1834 FUNCTION get_all_band_cs_4_yr_ent_bal
1835     ( p_business_group_id    IN     NUMBER
1836      ,p_assignment_id        IN     NUMBER
1837      ,p_element_type_id      IN     NUMBER
1838      ,p_effective_date       IN     DATE
1839      ,p_band1_ent_bal           OUT NOCOPY NUMBER
1840      ,p_band2_ent_bal           OUT NOCOPY NUMBER
1841      ,p_band3_ent_bal           OUT NOCOPY NUMBER
1842      ,p_band4_ent_bal           OUT NOCOPY NUMBER
1843      ,p_noband_ent_bal          OUT NOCOPY NUMBER
1844      ,p_error_message           OUT NOCOPY VARCHAR2
1845      ) RETURN NUMBER ;
1846 
1847 
1848 ------------------ For LG/PT
1849  PROCEDURE get_entitlements
1850    (p_assignment_id             IN       NUMBER
1851    ,p_business_group_id         IN       NUMBER
1852    ,p_effective_date            IN       DATE
1853    ,p_pl_id                     IN       NUMBER
1854    ,p_entitlement_table_id      IN       NUMBER
1855    ,p_benefits_length_of_service IN      NUMBER
1856    ,p_band_entitlements         OUT NOCOPY pqp_absval_pkg.t_entitlements
1857    ,p_entitlement_bands_list_name IN     VARCHAR2 DEFAULT
1858       'PQP_GAP_ENTITLEMENT_BANDS'
1859    ) ;
1860 
1861 FUNCTION get_minimum_pay_info
1862    (p_assignment_id             IN       NUMBER
1863    ,p_business_group_id         IN       NUMBER
1864    ,p_absence_id                IN         NUMBER
1865    ,p_minpay_start_date          OUT NOCOPY DATE
1866    ,p_minpay_end_date            OUT NOCOPY DATE
1867     ) RETURN NUMBER ;
1868 
1869 ------------------
1870 FUNCTION get_osp_minimum_pay_rate
1871        (p_assignment_id     IN  NUMBER
1872         ,p_business_group_id IN  NUMBER
1873         ,p_pl_id             IN  NUMBER
1874         ,p_effective_date    IN  DATE
1875        ) RETURN NUMBER ;
1876 
1877 ------------------
1878 
1879 PROCEDURE set_osp_omp_rounding_factors
1880   (p_pl_id            IN              NUMBER
1881   ,p_pt_entitl_rounding_type      OUT NOCOPY      VARCHAR2
1882   ,p_pt_rounding_precision        OUT NOCOPY      NUMBER
1883   ,p_ft_entitl_rounding_type      OUT NOCOPY      VARCHAR2
1884   ,p_ft_rounding_precision        OUT NOCOPY      NUMBER
1885   );
1886 
1887 
1888 FUNCTION chk_absence_belongs_to_person
1889  ( p_assignment_id         IN NUMBER
1890   ,p_business_group_id     IN NUMBER
1891   ,p_absence_attendance_id IN NUMBER
1892  ) RETURN BOOLEAN ;
1893 
1894 FUNCTION get_absence_statutory_pay
1895   (p_business_group_id         IN       NUMBER
1896   ,p_assignment_id             IN       NUMBER
1897   ,p_absence_attendance_id     IN       NUMBER
1898   ,p_start_date          IN       DATE
1899   ,p_end_date            IN       DATE
1900   ) RETURN NUMBER ;
1901 
1902 PROCEDURE decode_round_config
1903   (p_code                 IN           VARCHAR2
1904   ,p_rounding_type        OUT NOCOPY   VARCHAR2
1905   ,p_rounding_precision   OUT NOCOPY   NUMBER
1906   ,p_enb_prorat           IN VARCHAR2 DEFAULT 'Y'
1907   );
1908 
1909 
1910 FUNCTION  get_all_band_ent_used_and_rem(
1911      p_business_group_id           IN         NUMBER
1912     ,p_assignment_id               IN         NUMBER
1913     ,p_element_type_id             IN         NUMBER
1914     ,p_date_earned                 IN         DATE
1915     ,p_effective_date              IN         DATE
1916     ,p_entitlement_tab_id          IN         NUMBER
1917     ,p_benefits_length_of_service  IN         NUMBER
1918     ,p_band1_abs_used               IN         NUMBER
1919     ,p_band2_abs_used               IN         NUMBER
1920     ,p_band3_abs_used               IN         NUMBER
1921     ,p_band4_abs_used               IN         NUMBER
1922     ,p_override_effective_date     IN            DATE DEFAULT NULL
1923     ,p_scheme_cal_type             IN VARCHAR2 DEFAULT 'FIXED'
1924     ,p_band1_ent_used	           OUT NOCOPY NUMBER
1925     ,p_band2_ent_used              OUT NOCOPY NUMBER
1926     ,p_band3_ent_used              OUT NOCOPY NUMBER
1927     ,p_band4_ent_used              OUT NOCOPY NUMBER
1928     ,p_noband_ent_used             OUT NOCOPY NUMBER
1929     ,p_band1_4year_ent_used        OUT NOCOPY NUMBER
1930     ,p_band2_4year_ent_used        OUT NOCOPY NUMBER
1931     ,p_band3_4year_ent_used        OUT NOCOPY NUMBER
1932     ,p_band4_4year_ent_used        OUT NOCOPY NUMBER
1933     ,p_noband_4year_ent_used       OUT NOCOPY NUMBER
1934     ,p_band1_remaining             OUT NOCOPY NUMBER
1935     ,p_band2_remaining             OUT NOCOPY NUMBER
1936     ,p_band3_remaining             OUT NOCOPY NUMBER
1937     ,p_band4_remaining             OUT NOCOPY NUMBER
1938     ,p_band1_percentage            OUT NOCOPY NUMBER
1939     ,p_band2_percentage            OUT NOCOPY NUMBER
1940     ,p_band3_percentage            OUT NOCOPY NUMBER
1941     ,p_band4_percentage            OUT NOCOPY NUMBER
1942     ,p_error_msg                   OUT NOCOPY VARCHAR2
1943     )RETURN NUMBER;
1944 
1945 
1946 PROCEDURE abs_pension_date_chk( p_date_start             IN DATE
1947                                  ,p_date_end               IN DATE
1948 				 ,p_absence_attendance_id  IN NUMBER
1949 	                         ,p_abs_information4       IN VARCHAR2
1950 	   	                 ,p_abs_information5       IN VARCHAR2
1951 			         ,p_abs_information6       IN VARCHAR2
1952 				  -- bug 5975119
1953 				 ,p_abs_information_category in VARCHAR2 default null
1954 				 );
1955 
1956 PROCEDURE abs_pension_date_check( p_date_start          IN DATE
1957                                  ,p_date_end            IN DATE
1958 	                         ,p_abs_information4    IN VARCHAR2
1959 	   	                 ,p_abs_information5    IN VARCHAR2
1960 			         ,p_abs_information6    IN VARCHAR2
1961 				 );
1962 
1963 FUNCTION get_ssp_smp_paid_days
1964  ( p_range_start_date IN DATE
1965   ,p_range_end_date IN DATE
1966   ,p_assignment_id IN NUMBER
1967  ) RETURN NUMBER ;
1968 
1969 END pqp_gb_osp_functions;