2: /* $Header: hxttdet.pkb 120.49.12020000.2 2013/02/18 11:14:02 jnerella ship $ */
3: --
4: -- Global variables for package
5: -- Used for parameters received that are not changed
6: g_debug BOOLEAN := hr_utility.debug_enabled;
7: g_ep_id NUMBER;
8: g_ep_type hxt_earning_policies.fcl_earn_type%TYPE;
9: g_egt_id NUMBER;
10: g_sdf_id NUMBER;
376: );
377:
378: IF g_debug
379: THEN
380: hr_utility.TRACE ('Adding to g_otm_messages' || p_msg_name);
381: END IF;
382:
383: hxt_util.DEBUG ('Return code is 2 from call gen error');
384: RETURN 2;
488: -- p_GROUP_ID IN NUMBER) -- HXT11i1
489: RETURN NUMBER
490: IS
491: BEGIN
492: g_debug := hr_utility.debug_enabled;
493:
494: IF g_debug
495: THEN
496: hr_utility.set_location ('hxt_time_detail.GENERATE_SPECIAL', 10);
492: g_debug := hr_utility.debug_enabled;
493:
494: IF g_debug
495: THEN
496: hr_utility.set_location ('hxt_time_detail.GENERATE_SPECIAL', 10);
497: hr_utility.TRACE ( 'p_time_in :'
498: || TO_CHAR (p_time_in, 'DD-MON-YYYY HH24:MI:SS')
499: );
500: hr_utility.TRACE ( 'p_time_out :'
493:
494: IF g_debug
495: THEN
496: hr_utility.set_location ('hxt_time_detail.GENERATE_SPECIAL', 10);
497: hr_utility.TRACE ( 'p_time_in :'
498: || TO_CHAR (p_time_in, 'DD-MON-YYYY HH24:MI:SS')
499: );
500: hr_utility.TRACE ( 'p_time_out :'
501: || TO_CHAR (p_time_out, 'DD-MON-YYYY HH24:MI:SS')
496: hr_utility.set_location ('hxt_time_detail.GENERATE_SPECIAL', 10);
497: hr_utility.TRACE ( 'p_time_in :'
498: || TO_CHAR (p_time_in, 'DD-MON-YYYY HH24:MI:SS')
499: );
500: hr_utility.TRACE ( 'p_time_out :'
501: || TO_CHAR (p_time_out, 'DD-MON-YYYY HH24:MI:SS')
502: );
503: END IF;
504:
561:
562: -- g_GROUP_ID := p_GROUP_ID; -- HXT11i1
563: IF g_debug
564: THEN
565: hr_utility.set_location ('hxt_time_detail.GENERATE_SPECIAL', 20);
566: END IF;
567:
568: -- Bug 12967677
569: -- Ignore Negative hours
572:
573: /*
574: IF g_hours < 0
575: THEN
576: hr_utility.set_location('hxt_time_detail.generate_special ', 25);
577: hr_utility.trace('G_hours is negative - '||g_hours);
578: hr_utility.trace(' Not exploding and returning 0 to ignore the hours ');
579: RETURN 0;
580: END IF;
573: /*
574: IF g_hours < 0
575: THEN
576: hr_utility.set_location('hxt_time_detail.generate_special ', 25);
577: hr_utility.trace('G_hours is negative - '||g_hours);
578: hr_utility.trace(' Not exploding and returning 0 to ignore the hours ');
579: RETURN 0;
580: END IF;
581: */
574: IF g_hours < 0
575: THEN
576: hr_utility.set_location('hxt_time_detail.generate_special ', 25);
577: hr_utility.trace('G_hours is negative - '||g_hours);
578: hr_utility.trace(' Not exploding and returning 0 to ignore the hours ');
579: RETURN 0;
580: END IF;
581: */
582:
590: );
591:
592: IF g_debug
593: THEN
594: hr_utility.set_location ('hxt_time_detail.GENERATE_SPECIAL', 30);
595: END IF;
596: -- parameters used for compatibility with this version of gen special
597: END;
598:
1241: INTO l_daily_total;
1242:
1243: CLOSE daily_total;
1244:
1245: hr_utility.trace(' Hol : G_date_worked'||g_date_worked);
1246:
1247: hr_utility.trace(' Hol : l_daily_total '||l_daily_total);
1248:
1249: IF NVL(fnd_profile.value('HXT_HOLIDAY_EXPLOSION'),'EX') <> 'EX'
1243: CLOSE daily_total;
1244:
1245: hr_utility.trace(' Hol : G_date_worked'||g_date_worked);
1246:
1247: hr_utility.trace(' Hol : l_daily_total '||l_daily_total);
1248:
1249: IF NVL(fnd_profile.value('HXT_HOLIDAY_EXPLOSION'),'EX') <> 'EX'
1250: THEN
1251: OPEN daily_hol_total(g_det_session_date);
1252: FETCH daily_hol_total INTO l_daily_hol_total;
1253: CLOSE daily_hol_total;
1254:
1255: l_daily_total := l_daily_total - l_daily_hol_total;
1256: hr_utility.trace(' Hol : l_dailyhol_total '||l_daily_hol_total);
1257: hr_utility.trace(' Hol : l_daily_total '||l_daily_total);
1258: END IF;
1259:
1260: RETURN NVL (l_daily_total, 0);
1253: CLOSE daily_hol_total;
1254:
1255: l_daily_total := l_daily_total - l_daily_hol_total;
1256: hr_utility.trace(' Hol : l_dailyhol_total '||l_daily_hol_total);
1257: hr_utility.trace(' Hol : l_daily_total '||l_daily_total);
1258: END IF;
1259:
1260: RETURN NVL (l_daily_total, 0);
1261: END get_daily_total;
1341: l_double_time_elem NUMBER;
1342: BEGIN
1343: IF g_debug
1344: THEN
1345: hr_utility.set_location ('adjust_for_double_time', 10);
1346: END IF;
1347:
1348: l_delta := p_day_total - 12;
1349:
1411: CLOSE daily_earn_rules_cur2;
1412:
1413: IF g_debug
1414: THEN
1415: hr_utility.set_location ('adjust_for_double_time', 50);
1416: END IF;
1417:
1418: IF pay (l_delta,
1419: l_double_time_elem,
1445: ) <> 0
1446: THEN
1447: IF g_debug
1448: THEN
1449: hr_utility.set_location ('adjust_for_double_time', 75);
1450: END IF;
1451:
1452: RETURN 5;
1453: END IF;
1453: END IF;
1454:
1455: IF g_debug
1456: THEN
1457: hr_utility.set_location ('adjust_for_double_time', 100);
1458: END IF;
1459:
1460: RETURN 0;
1461: END adjust_for_double_time;
1754: BEGIN
1755: IF g_debug
1756: THEN
1757: l_proc := 'hxt_time_detail.adjust_for_hdp_shortage';
1758: hr_utility.set_location (l_proc, 10);
1759: END IF;
1760:
1761: -- Bug 7359347
1762: -- Setting session date.
1773: IF current_dtl%NOTFOUND
1774: THEN
1775: IF g_debug
1776: THEN
1777: hr_utility.set_location (l_proc, 20);
1778: END IF;
1779:
1780: CLOSE current_dtl;
1781:
1785: CLOSE current_dtl;
1786:
1787: IF g_debug
1788: THEN
1789: hr_utility.set_location (l_proc, 30);
1790: hr_utility.TRACE ('current_dtl_row.hours:'
1791: || current_dtl_row.hours
1792: );
1793: hr_utility.TRACE ('p_hours_short :' || p_hours_short);
1786:
1787: IF g_debug
1788: THEN
1789: hr_utility.set_location (l_proc, 30);
1790: hr_utility.TRACE ('current_dtl_row.hours:'
1791: || current_dtl_row.hours
1792: );
1793: hr_utility.TRACE ('p_hours_short :' || p_hours_short);
1794: END IF;
1789: hr_utility.set_location (l_proc, 30);
1790: hr_utility.TRACE ('current_dtl_row.hours:'
1791: || current_dtl_row.hours
1792: );
1793: hr_utility.TRACE ('p_hours_short :' || p_hours_short);
1794: END IF;
1795:
1796: l_hours_to_adjust := current_dtl_row.hours - p_hours_short;
1797:
1796: l_hours_to_adjust := current_dtl_row.hours - p_hours_short;
1797:
1798: IF g_debug
1799: THEN
1800: hr_utility.TRACE ('l_hours_to_adjust:' || l_hours_to_adjust);
1801: hr_utility.TRACE ( 'current_dtl_row.parent_id:'
1802: || current_dtl_row.parent_id
1803: );
1804: hr_utility.TRACE ('current_dtl_row.seqno:'
1797:
1798: IF g_debug
1799: THEN
1800: hr_utility.TRACE ('l_hours_to_adjust:' || l_hours_to_adjust);
1801: hr_utility.TRACE ( 'current_dtl_row.parent_id:'
1802: || current_dtl_row.parent_id
1803: );
1804: hr_utility.TRACE ('current_dtl_row.seqno:'
1805: || current_dtl_row.seqno
1800: hr_utility.TRACE ('l_hours_to_adjust:' || l_hours_to_adjust);
1801: hr_utility.TRACE ( 'current_dtl_row.parent_id:'
1802: || current_dtl_row.parent_id
1803: );
1804: hr_utility.TRACE ('current_dtl_row.seqno:'
1805: || current_dtl_row.seqno
1806: );
1807: hr_utility.TRACE ('current_dtl_row.hours:'
1808: || current_dtl_row.hours
1803: );
1804: hr_utility.TRACE ('current_dtl_row.seqno:'
1805: || current_dtl_row.seqno
1806: );
1807: hr_utility.TRACE ('current_dtl_row.hours:'
1808: || current_dtl_row.hours
1809: );
1810: END IF;
1811:
1817: )
1818: LOOP
1819: IF g_debug
1820: THEN
1821: hr_utility.set_location (l_proc, 40);
1822: END IF;
1823:
1824: -- Bug 7359347
1825: -- Changed the view referred to base table as the where
1838: END LOOP;
1839:
1840: IF g_debug
1841: THEN
1842: hr_utility.set_location (l_proc, 50);
1843: END IF;
1844:
1845: -- Bug 7359347
1846: -- Changed the view referred to base table as the where
1858:
1859:
1860: IF g_debug
1861: THEN
1862: hr_utility.set_location (l_proc, 60);
1863: END IF;
1864:
1865: RETURN (0);
1866: END adjust_for_hdp_shortage;
2022: END IF;
2023:
2024: IF g_debug
2025: THEN
2026: hr_utility.set_location ('adjust_for_3tier', 10);
2027: END IF;
2028:
2029: OPEN weekly_earn_rules_cur2 (a_ep_id, a_date_worked);
2030:
2061: CLOSE weekly_earn_rules_cur2;
2062:
2063: IF g_debug
2064: THEN
2065: hr_utility.set_location ('adjust_for_3tier', 30);
2066: END IF;
2067:
2068: -- fetch sum of regular hours to date
2069: /* CHANGED call to get only REGULAR Hours Worked instead of total hours*/
2082: CLOSE sum_ovt_cur;
2083:
2084: IF g_debug
2085: THEN
2086: hr_utility.set_location ('adjust_for_3tier', 50);
2087: END IF;
2088:
2089: IF (l_sum_reg + l_delta) <= l_second_cap
2090: THEN
2089: IF (l_sum_reg + l_delta) <= l_second_cap
2090: THEN
2091: IF g_debug
2092: THEN
2093: hr_utility.set_location ('adjust_for_3tier', 60);
2094: END IF;
2095:
2096: RETURN 0;
2097: END IF;
2191:
2192: --
2193: IF g_debug
2194: THEN
2195: hr_utility.set_location ('adjust_for_3tier', 100);
2196: END IF;
2197:
2198: IF (l_ovt_hrs_cur.hours > l_hours_left)
2199: THEN
2198: IF (l_ovt_hrs_cur.hours > l_hours_left)
2199: THEN
2200: IF g_debug
2201: THEN
2202: hr_utility.set_location ('adjust_for_3tier', 110);
2203: END IF;
2204:
2205: l_error_code :=
2206: pay (l_hours_left,
2236: ELSIF (l_ovt_hrs_cur.hours = l_hours_left)
2237: THEN
2238: IF g_debug
2239: THEN
2240: hr_utility.set_location ('adjust_for_3tier', 120);
2241: END IF;
2242:
2243: l_error_code :=
2244: pay (l_hours_left,
2272: ); --SIR337
2273: ELSE
2274: IF g_debug
2275: THEN
2276: hr_utility.set_location ('adjust_for_3tier', 130);
2277: END IF;
2278:
2279: l_error_code :=
2280: pay (l_hours_left,
2327: CLOSE ovt_hrs_cur;
2328:
2329: IF g_debug
2330: THEN
2331: hr_utility.set_location ('adjust_for_3tier', 200);
2332: END IF;
2333:
2334: RETURN 0;
2335: EXCEPTION
2592: CLOSE get_sdf_prem_detail_time;
2593:
2594: IF g_debug
2595: THEN
2596: hr_utility.trace('G_id '||g_id);
2597: END IF;
2598:
2599: IF g_debug
2600: THEN
2600: THEN
2601: idx := sdf_time.FIRST;
2602: IF IDX is not null then
2603: LOOP
2604: hr_utility.trace('sdf_time beginning('||idx||').'
2605: ||to_char(sdf_time(idx).time_in,'HH-MI')||'-'
2606: ||to_char(sdf_time(idx).time_out,'HH-MI'));
2607: idx := sdf_time.NEXT(idx);
2608: EXIT WHEN idx IS NULL;
2622: THEN
2623: nex:= sdf_time.NEXT(idx);
2624: IF g_debug
2625: THEN
2626: hr_utility.trace('sdf_time processin('||idx||').'
2627: ||to_char(sdf_time(idx).time_in,'HH-MI')||'-'
2628: ||to_char(sdf_time(idx).time_out,'HH-MI'));
2629: hr_utility.trace('sdf_time processin('||idx||').'||sdf_time(idx).rowid);
2630: hr_utility.trace(' : Nex is '||nex);
2625: THEN
2626: hr_utility.trace('sdf_time processin('||idx||').'
2627: ||to_char(sdf_time(idx).time_in,'HH-MI')||'-'
2628: ||to_char(sdf_time(idx).time_out,'HH-MI'));
2629: hr_utility.trace('sdf_time processin('||idx||').'||sdf_time(idx).rowid);
2630: hr_utility.trace(' : Nex is '||nex);
2631: hr_utility.trace('sdf_time processin on('||nex||').'
2632: ||to_char(sdf_time(nex).time_in,'HH-MI')
2633: ||'-'||to_char(sdf_time(nex).time_out,'HH-MI'));
2626: hr_utility.trace('sdf_time processin('||idx||').'
2627: ||to_char(sdf_time(idx).time_in,'HH-MI')||'-'
2628: ||to_char(sdf_time(idx).time_out,'HH-MI'));
2629: hr_utility.trace('sdf_time processin('||idx||').'||sdf_time(idx).rowid);
2630: hr_utility.trace(' : Nex is '||nex);
2631: hr_utility.trace('sdf_time processin on('||nex||').'
2632: ||to_char(sdf_time(nex).time_in,'HH-MI')
2633: ||'-'||to_char(sdf_time(nex).time_out,'HH-MI'));
2634: hr_utility.trace('sdf_time processin on('||nex||').'||sdf_time(nex).rowid);
2627: ||to_char(sdf_time(idx).time_in,'HH-MI')||'-'
2628: ||to_char(sdf_time(idx).time_out,'HH-MI'));
2629: hr_utility.trace('sdf_time processin('||idx||').'||sdf_time(idx).rowid);
2630: hr_utility.trace(' : Nex is '||nex);
2631: hr_utility.trace('sdf_time processin on('||nex||').'
2632: ||to_char(sdf_time(nex).time_in,'HH-MI')
2633: ||'-'||to_char(sdf_time(nex).time_out,'HH-MI'));
2634: hr_utility.trace('sdf_time processin on('||nex||').'||sdf_time(nex).rowid);
2635:
2630: hr_utility.trace(' : Nex is '||nex);
2631: hr_utility.trace('sdf_time processin on('||nex||').'
2632: ||to_char(sdf_time(nex).time_in,'HH-MI')
2633: ||'-'||to_char(sdf_time(nex).time_out,'HH-MI'));
2634: hr_utility.trace('sdf_time processin on('||nex||').'||sdf_time(nex).rowid);
2635:
2636: END IF;
2637:
2638: IF sdf_time(nex).time_in = sdf_time(idx).time_out
2640: THEN
2641: sdf_time(nex).time_in := sdf_time(idx).time_in;
2642: sdf_time.DELETE(idx);
2643: idx := nex;
2644: hr_utility.trace(': IDX is '||idx);
2645: ELSE
2646: idx := nex;
2647: END IF;
2648:
2675: THEN
2676: idx := sdf_time.FIRST;
2677: IF IDX is not null then
2678: LOOP
2679: hr_utility.trace('sdf_time processed('||idx||').'||to_char(sdf_time(idx).time_in,'HH-MI')
2680: ||'-'||to_char(sdf_time(idx).time_out,'HH-MI'));
2681: hr_utility.trace('sdf_time processed('||idx||').'||sdf_time(idx).rowid);
2682:
2683: idx := sdf_time.NEXT(idx);
2677: IF IDX is not null then
2678: LOOP
2679: hr_utility.trace('sdf_time processed('||idx||').'||to_char(sdf_time(idx).time_in,'HH-MI')
2680: ||'-'||to_char(sdf_time(idx).time_out,'HH-MI'));
2681: hr_utility.trace('sdf_time processed('||idx||').'||sdf_time(idx).rowid);
2682:
2683: idx := sdf_time.NEXT(idx);
2684: EXIT WHEN idx IS NULL;
2685: END LOOP;
2698: IF hdp_rules.time_period <= (sdf_time(idx).time_out-sdf_time(idx).time_in)*24
2699: THEN
2700: deduct_hours := FLOOR(((sdf_time(idx).time_out-sdf_time(idx).time_in)*24) /hdp_rules.time_period)
2701: *hdp_rules.hours;
2702: hr_utility.trace('adj stretch '||deduct_hours||' for '||hdp_rules.time_period);
2703: UPDATE hxt_det_hours_worked_f
2704: SET time_out = time_out - (deduct_hours/24),
2705: hours = hours - deduct_hours
2706: WHERE ROWID = CHARTOROWID(sdf_time(idx).rowid)
3252: := 'hxt_time_detail.adjust_hours_for_hdp';
3253: BEGIN
3254: IF g_debug
3255: THEN
3256: hr_utility.set_location (l_proc, 10);
3257: END IF;
3258:
3259: -- Bug 7359347
3260: -- Setting session date
3269: IF g_hdp_id IS NULL
3270: THEN
3271: IF g_debug
3272: THEN
3273: hr_utility.set_location (l_proc, 20);
3274: END IF;
3275:
3276: RETURN (0);
3277: END IF;
3282: INTO sum_hours, sum_time_in, sum_time_out;
3283:
3284: IF g_debug
3285: THEN
3286: hr_utility.TRACE ( 'sum_time_in:'
3287: || TO_CHAR (sum_time_in,
3288: 'dd-mon-yyyy hh24:mi:ss'
3289: )
3290: );
3287: || TO_CHAR (sum_time_in,
3288: 'dd-mon-yyyy hh24:mi:ss'
3289: )
3290: );
3291: hr_utility.TRACE ( 'sum_time_out:'
3292: || TO_CHAR (sum_time_out,
3293: 'dd-mon-yyyy hh24:mi:ss'
3294: )
3295: );
3292: || TO_CHAR (sum_time_out,
3293: 'dd-mon-yyyy hh24:mi:ss'
3294: )
3295: );
3296: hr_utility.TRACE ( 'g_time_out:'
3297: || TO_CHAR (g_time_out,
3298: 'dd-mon-yyyy hh24:mi:ss')
3299: );
3300: END IF;
3306: IF g_time_out < sum_time_out
3307: THEN
3308: IF g_debug
3309: THEN
3310: hr_utility.set_location (l_proc, 30);
3311: END IF;
3312:
3313: RETURN (0);
3314: END IF;
3315: END IF;
3316:
3317: IF g_debug
3318: THEN
3319: hr_utility.TRACE ( 'g_time_out:'
3320: || TO_CHAR (g_time_out,
3321: 'dd-mon-yyyy hh24:mi:ss')
3322: );
3323: hr_utility.TRACE ('g_tim_id:' || g_tim_id);
3319: hr_utility.TRACE ( 'g_time_out:'
3320: || TO_CHAR (g_time_out,
3321: 'dd-mon-yyyy hh24:mi:ss')
3322: );
3323: hr_utility.TRACE ('g_tim_id:' || g_tim_id);
3324: END IF;
3325:
3326: -- Check for contiguity when time entered in Hours
3327: IF sum_time_in IS NULL AND sum_time_out IS NULL
3327: IF sum_time_in IS NULL AND sum_time_out IS NULL
3328: THEN
3329: IF g_debug
3330: THEN
3331: hr_utility.set_location (l_proc, 31);
3332: END IF;
3333:
3334: OPEN detail_hours_incl_prev_rows;
3335:
3337: INTO detail_hrs_total;
3338:
3339: IF g_debug
3340: THEN
3341: hr_utility.TRACE ('detail_hrs_total:' || detail_hrs_total);
3342: END IF;
3343:
3344: CLOSE detail_hours_incl_prev_rows;
3345:
3349: INTO sum_hrs_total, sum_row_count;
3350:
3351: IF g_debug
3352: THEN
3353: hr_utility.TRACE ('sum_hrs_total:' || sum_hrs_total);
3354: END IF;
3355:
3356: CLOSE get_sum_hrs;
3357:
3372: -- So apply hour deduction policy considering both the rows and see
3373: -- if the summed up hours are eligible for any deduction.
3374: IF g_debug
3375: THEN
3376: hr_utility.set_location (l_proc, 32);
3377: END IF;
3378:
3379: OPEN detail_hours_incl_prev_rows;
3380:
3382: INTO hours_paid_today;
3383:
3384: IF g_debug
3385: THEN
3386: hr_utility.TRACE ('hours_paid_today:' || hours_paid_today);
3387: END IF;
3388:
3389: CLOSE detail_hours_incl_prev_rows;
3390: /* v115.103 - M. Bhammar
3395: -- current row being processed and see if any hours can be deducted
3396: -- from this row based on the hour deduction policy.
3397: IF g_debug
3398: THEN
3399: hr_utility.set_location (l_proc, 33);
3400: END IF;
3401:
3402: OPEN detail_hours_today;
3403:
3405: INTO hours_paid_today;
3406:
3407: IF g_debug
3408: THEN
3409: hr_utility.TRACE ('hours_paid_today:' || hours_paid_today);
3410: END IF;
3411:
3412: CLOSE detail_hours_today;
3413: */
3416: ELSIF sum_time_in IS NOT NULL AND sum_time_out IS NOT NULL
3417: THEN
3418: IF g_debug
3419: THEN
3420: hr_utility.set_location (l_proc, 35);
3421: END IF;
3422:
3423: FOR rec_work_hrs IN csr_work_hrs (g_date_worked, g_tim_id)
3424: LOOP
3423: FOR rec_work_hrs IN csr_work_hrs (g_date_worked, g_tim_id)
3424: LOOP
3425: IF g_debug
3426: THEN
3427: hr_utility.set_location (l_proc, 40);
3428: END IF;
3429:
3430: loop_count := loop_count + 1;
3431:
3430: loop_count := loop_count + 1;
3431:
3432: IF g_debug
3433: THEN
3434: hr_utility.TRACE ('loop_count:' || loop_count);
3435: hr_utility.TRACE ( 'sum_time_in:'
3436: || TO_CHAR (sum_time_in,
3437: 'dd-mon-yyyy hh24:mi:ss'
3438: )
3431:
3432: IF g_debug
3433: THEN
3434: hr_utility.TRACE ('loop_count:' || loop_count);
3435: hr_utility.TRACE ( 'sum_time_in:'
3436: || TO_CHAR (sum_time_in,
3437: 'dd-mon-yyyy hh24:mi:ss'
3438: )
3439: );
3436: || TO_CHAR (sum_time_in,
3437: 'dd-mon-yyyy hh24:mi:ss'
3438: )
3439: );
3440: hr_utility.TRACE ( 'sum_time_out:'
3441: || TO_CHAR (sum_time_out,
3442: 'dd-mon-yyyy hh24:mi:ss'
3443: )
3444: );
3441: || TO_CHAR (sum_time_out,
3442: 'dd-mon-yyyy hh24:mi:ss'
3443: )
3444: );
3445: hr_utility.TRACE ( 'rec_work_hrs.time_out:'
3446: || TO_CHAR (rec_work_hrs.time_out,
3447: 'dd-mon-yyyy hh24:mi:ss'
3448: )
3449: );
3446: || TO_CHAR (rec_work_hrs.time_out,
3447: 'dd-mon-yyyy hh24:mi:ss'
3448: )
3449: );
3450: hr_utility.TRACE ('rec_work_hrs.id:' || rec_work_hrs.ID);
3451: hr_utility.TRACE ('g_id:' || g_id);
3452: END IF;
3453:
3454: -- Check whether the Time entered on two rows is contiguous or not
3447: 'dd-mon-yyyy hh24:mi:ss'
3448: )
3449: );
3450: hr_utility.TRACE ('rec_work_hrs.id:' || rec_work_hrs.ID);
3451: hr_utility.TRACE ('g_id:' || g_id);
3452: END IF;
3453:
3454: -- Check whether the Time entered on two rows is contiguous or not
3455: IF sum_time_in <> sum_time_out
3456: AND sum_time_in = rec_work_hrs.time_out
3457: THEN
3458: IF g_debug
3459: THEN
3460: hr_utility.set_location (l_proc, 50);
3461: END IF;
3462:
3463: OPEN hdp_hours_deducted_today;
3464:
3466: INTO hrs_deducted_today;
3467:
3468: IF g_debug
3469: THEN
3470: hr_utility.TRACE ( 'hrs_deducted_today :'
3471: || hrs_deducted_today
3472: );
3473: END IF;
3474:
3480: INTO detail_hrs_total;
3481:
3482: IF g_debug
3483: THEN
3484: hr_utility.TRACE ('detail_hrs_total:' || detail_hrs_total
3485: );
3486: END IF;
3487:
3488: CLOSE detail_hours_incl_prev_rows;
3490: hours_paid_today := detail_hrs_total + hrs_deducted_today;
3491:
3492: IF g_debug
3493: THEN
3494: hr_utility.TRACE ('hours_paid_today:' || hours_paid_today
3495: );
3496: END IF;
3497:
3498: EXIT;
3499: ELSIF loop_count = 1 AND g_id = rec_work_hrs.ID
3500: THEN
3501: IF g_debug
3502: THEN
3503: hr_utility.set_location (l_proc, 51);
3504: END IF;
3505:
3506: OPEN detail_hours_incl_prev_rows;
3507:
3509: INTO hours_paid_today;
3510:
3511: IF g_debug
3512: THEN
3513: hr_utility.TRACE ('hours_paid_today:' || hours_paid_today
3514: );
3515: END IF;
3516:
3517: CLOSE detail_hours_incl_prev_rows;
3519: EXIT;
3520: ELSE
3521: IF g_debug
3522: THEN
3523: hr_utility.set_location (l_proc, 52);
3524: END IF;
3525:
3526: OPEN detail_hours_today;
3527:
3535: END IF;
3536:
3537: IF g_debug
3538: THEN
3539: hr_utility.set_location (l_proc, 53);
3540: END IF;
3541:
3542: FOR hdp_rule IN hdp_rule_cursor
3543: LOOP
3542: FOR hdp_rule IN hdp_rule_cursor
3543: LOOP
3544: IF g_debug
3545: THEN
3546: hr_utility.set_location (l_proc, 54);
3547: END IF;
3548:
3549: IF g_debug
3550: THEN
3547: END IF;
3548:
3549: IF g_debug
3550: THEN
3551: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3552: hr_utility.TRACE ('hours_paid_today:' || hours_paid_today);
3553: hr_utility.TRACE ( 'hdp_rule.time_period:'
3554: || hdp_rule.time_period
3555: );
3548:
3549: IF g_debug
3550: THEN
3551: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3552: hr_utility.TRACE ('hours_paid_today:' || hours_paid_today);
3553: hr_utility.TRACE ( 'hdp_rule.time_period:'
3554: || hdp_rule.time_period
3555: );
3556: hr_utility.TRACE ('hdp_rule.hours:' || hdp_rule.hours);
3549: IF g_debug
3550: THEN
3551: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3552: hr_utility.TRACE ('hours_paid_today:' || hours_paid_today);
3553: hr_utility.TRACE ( 'hdp_rule.time_period:'
3554: || hdp_rule.time_period
3555: );
3556: hr_utility.TRACE ('hdp_rule.hours:' || hdp_rule.hours);
3557: END IF;
3552: hr_utility.TRACE ('hours_paid_today:' || hours_paid_today);
3553: hr_utility.TRACE ( 'hdp_rule.time_period:'
3554: || hdp_rule.time_period
3555: );
3556: hr_utility.TRACE ('hdp_rule.hours:' || hdp_rule.hours);
3557: END IF;
3558:
3559: deduct_hours :=
3560: deduct_hours
3563: );
3564:
3565: IF g_debug
3566: THEN
3567: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3568: END IF;
3569:
3570: /* Moved the following statement outside the cursor loop for bug: 5481772 */
3571: -- deduct_hours := deduct_hours - hrs_deducted_today;
3571: -- deduct_hours := deduct_hours - hrs_deducted_today;
3572:
3573: IF g_debug
3574: THEN
3575: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3576: END IF;
3577: END LOOP;
3578:
3579: deduct_hours := deduct_hours - hrs_deducted_today;
3579: deduct_hours := deduct_hours - hrs_deducted_today;
3580:
3581: IF g_debug
3582: THEN
3583: hr_utility.set_location (l_proc, 55);
3584: END IF;
3585:
3586: -- deduct_prem_hours := deduct_hours;
3587: OPEN sdf_prem_detail_hours;
3590: INTO sdf_prem_hours_paid;
3591:
3592: IF g_debug
3593: THEN
3594: hr_utility.TRACE ('sdf_prem_hours_paid:' || sdf_prem_hours_paid);
3595: END IF;
3596:
3597: CLOSE sdf_prem_detail_hours;
3598:
3604: CLOSE oth_prem_detail_hours;
3605:
3606: IF g_debug
3607: THEN
3608: hr_utility.TRACE ('oth_prem_hours_paid' || oth_prem_hours_paid);
3609: END IF;
3610:
3611: IF g_debug
3612: THEN
3609: END IF;
3610:
3611: IF g_debug
3612: THEN
3613: hr_utility.TRACE ('deduct_prem_hours:' || deduct_prem_hours);
3614: hr_utility.TRACE ('sdf_prem_hours_paid:' || sdf_prem_hours_paid);
3615: END IF;
3616:
3617: FOR hdp_rule IN hdp_rule_cursor
3610:
3611: IF g_debug
3612: THEN
3613: hr_utility.TRACE ('deduct_prem_hours:' || deduct_prem_hours);
3614: hr_utility.TRACE ('sdf_prem_hours_paid:' || sdf_prem_hours_paid);
3615: END IF;
3616:
3617: FOR hdp_rule IN hdp_rule_cursor
3618: LOOP
3623: );
3624:
3625: IF g_debug
3626: THEN
3627: hr_utility.TRACE ('deduct_prem_hours:' || deduct_prem_hours);
3628: END IF;
3629: END LOOP;
3630:
3631: IF g_debug
3629: END LOOP;
3630:
3631: IF g_debug
3632: THEN
3633: hr_utility.set_location (l_proc, 60);
3634: END IF;
3635:
3636: FOR current_dtl_row IN current_dtl
3637: LOOP
3636: FOR current_dtl_row IN current_dtl
3637: LOOP
3638: IF g_debug
3639: THEN
3640: hr_utility.set_location (l_proc, 70);
3641: END IF;
3642:
3643: EXIT WHEN deduct_hours = 0 AND l_prem_adjusted = TRUE;
3644:
3643: EXIT WHEN deduct_hours = 0 AND l_prem_adjusted = TRUE;
3644:
3645: IF g_debug
3646: THEN
3647: hr_utility.set_location (l_proc, 80);
3648: END IF;
3649:
3650: IF deduct_hours = 0 AND l_prem_adjusted = FALSE
3651: THEN
3650: IF deduct_hours = 0 AND l_prem_adjusted = FALSE
3651: THEN
3652: IF g_debug
3653: THEN
3654: hr_utility.set_location (l_proc, 90);
3655: END IF;
3656:
3657: -- We just need to adjust the premium hrs and not the
3658: -- REG or OT detail rows
3669: END IF;
3670:
3671: IF g_debug
3672: THEN
3673: hr_utility.set_location (l_proc, 100);
3674: END IF;
3675:
3676: IF deduct_hours <> 0
3677: THEN
3676: IF deduct_hours <> 0
3677: THEN
3678: IF g_debug
3679: THEN
3680: hr_utility.set_location (l_proc, 110);
3681: END IF;
3682:
3683: IF g_debug
3684: THEN
3681: END IF;
3682:
3683: IF g_debug
3684: THEN
3685: hr_utility.TRACE ( 'current_dtl_row.hours:'
3686: || current_dtl_row.hours
3687: );
3688: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3689: END IF;
3684: THEN
3685: hr_utility.TRACE ( 'current_dtl_row.hours:'
3686: || current_dtl_row.hours
3687: );
3688: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3689: END IF;
3690:
3691: IF current_dtl_row.hours <= deduct_hours
3692: THEN
3691: IF current_dtl_row.hours <= deduct_hours
3692: THEN
3693: IF g_debug
3694: THEN
3695: hr_utility.set_location (l_proc, 120);
3696: END IF;
3697:
3698: adjust_hours_for_premium (current_dtl_row.parent_id,
3699: current_dtl_row.tim_id,
3707: );
3708:
3709: IF g_debug
3710: THEN
3711: hr_utility.TRACE ('g_osp_id:' || g_osp_id);
3712: END IF;
3713:
3714: IF g_osp_id IS NOT NULL
3715: THEN
3714: IF g_osp_id IS NOT NULL
3715: THEN
3716: IF g_debug
3717: THEN
3718: hr_utility.set_location (l_proc, 130);
3719: END IF;
3720:
3721: FOR osp_dtl_row IN day_of_wk_prem_dtl
3722: LOOP
3721: FOR osp_dtl_row IN day_of_wk_prem_dtl
3722: LOOP
3723: IF g_debug
3724: THEN
3725: hr_utility.set_location (l_proc, 140);
3726: END IF;
3727:
3728: IF g_debug
3729: THEN
3726: END IF;
3727:
3728: IF g_debug
3729: THEN
3730: hr_utility.TRACE ( 'osp_dtl_row.hours:'
3731: || osp_dtl_row.hours
3732: );
3733: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3734: END IF;
3729: THEN
3730: hr_utility.TRACE ( 'osp_dtl_row.hours:'
3731: || osp_dtl_row.hours
3732: );
3733: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3734: END IF;
3735:
3736: -- Bug 7359347
3737: -- changing view to table as WHERE clause is on rowid.
3759: THEN
3760:
3761: IF g_debug
3762: THEN
3763: hr_utility.set_location (l_proc, 140.1);
3764: END IF;
3765:
3766: FOR oth_dtl_row IN oth_prem_dtl
3767: LOOP
3767: LOOP
3768:
3769: IF g_debug
3770: THEN
3771: hr_utility.set_location (l_proc, 140.2);
3772: END IF;
3773:
3774: IF g_debug
3775: THEN
3772: END IF;
3773:
3774: IF g_debug
3775: THEN
3776: hr_utility.TRACE ('oth_prem_dtl.hours:' || oth_dtl_row.hours);
3777: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3778: END IF;
3779:
3780: -- Bug 7359347
3773:
3774: IF g_debug
3775: THEN
3776: hr_utility.TRACE ('oth_prem_dtl.hours:' || oth_dtl_row.hours);
3777: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3778: END IF;
3779:
3780: -- Bug 7359347
3781: -- changing view to table as where clause is on rowid
3807:
3808:
3809: IF g_debug
3810: THEN
3811: hr_utility.TRACE ( 'current_dtl_row.hours:'
3812: || current_dtl_row.hours
3813: );
3814: END IF;
3815:
3816: deduct_hours := deduct_hours - current_dtl_row.hours;
3817:
3818: IF g_debug
3819: THEN
3820: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3821: END IF;
3822: ELSE
3823: IF g_debug
3824: THEN
3821: END IF;
3822: ELSE
3823: IF g_debug
3824: THEN
3825: hr_utility.set_location (l_proc, 150);
3826: END IF;
3827:
3828: IF l_prem_adjusted = TRUE
3829: THEN
3828: IF l_prem_adjusted = TRUE
3829: THEN
3830: IF g_debug
3831: THEN
3832: hr_utility.set_location (l_proc, 160);
3833: END IF;
3834:
3835: adjust_hours_for_premium (current_dtl_row.parent_id,
3836: current_dtl_row.tim_id,
3845: ELSIF l_prem_adjusted = FALSE
3846: THEN
3847: IF g_debug
3848: THEN
3849: hr_utility.set_location (l_proc, 170);
3850: END IF;
3851:
3852: adjust_hours_for_premium (current_dtl_row.parent_id,
3853: current_dtl_row.tim_id,
3862: END IF;
3863:
3864: IF g_debug
3865: THEN
3866: hr_utility.set_location (l_proc, 180);
3867: END IF;
3868:
3869: IF g_osp_id IS NOT NULL
3870: THEN
3869: IF g_osp_id IS NOT NULL
3870: THEN
3871: IF g_debug
3872: THEN
3873: hr_utility.set_location (l_proc, 190);
3874: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
3875: hr_utility.TRACE ('g_id :' || g_id);
3876: hr_utility.TRACE ('g_osp_id :' || g_osp_id);
3877: hr_utility.TRACE ('g_date_worked :' || g_date_worked);
3870: THEN
3871: IF g_debug
3872: THEN
3873: hr_utility.set_location (l_proc, 190);
3874: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
3875: hr_utility.TRACE ('g_id :' || g_id);
3876: hr_utility.TRACE ('g_osp_id :' || g_osp_id);
3877: hr_utility.TRACE ('g_date_worked :' || g_date_worked);
3878: END IF;
3871: IF g_debug
3872: THEN
3873: hr_utility.set_location (l_proc, 190);
3874: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
3875: hr_utility.TRACE ('g_id :' || g_id);
3876: hr_utility.TRACE ('g_osp_id :' || g_osp_id);
3877: hr_utility.TRACE ('g_date_worked :' || g_date_worked);
3878: END IF;
3879:
3872: THEN
3873: hr_utility.set_location (l_proc, 190);
3874: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
3875: hr_utility.TRACE ('g_id :' || g_id);
3876: hr_utility.TRACE ('g_osp_id :' || g_osp_id);
3877: hr_utility.TRACE ('g_date_worked :' || g_date_worked);
3878: END IF;
3879:
3880: FOR osp_dtl_row IN day_of_wk_prem_dtl
3873: hr_utility.set_location (l_proc, 190);
3874: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
3875: hr_utility.TRACE ('g_id :' || g_id);
3876: hr_utility.TRACE ('g_osp_id :' || g_osp_id);
3877: hr_utility.TRACE ('g_date_worked :' || g_date_worked);
3878: END IF;
3879:
3880: FOR osp_dtl_row IN day_of_wk_prem_dtl
3881: LOOP
3880: FOR osp_dtl_row IN day_of_wk_prem_dtl
3881: LOOP
3882: IF g_debug
3883: THEN
3884: hr_utility.set_location (l_proc, 200);
3885: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
3886: END IF;
3887:
3888: -- Bug 7359347
3881: LOOP
3882: IF g_debug
3883: THEN
3884: hr_utility.set_location (l_proc, 200);
3885: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
3886: END IF;
3887:
3888: -- Bug 7359347
3889: -- changing view to table.
3917:
3918:
3919: IF g_debug
3920: THEN
3921: hr_utility.set_location (l_proc, 200.5);
3922: hr_utility.TRACE ('test_hours :' || test_hours);
3923: END IF;
3924: END LOOP;
3925: END IF;
3918:
3919: IF g_debug
3920: THEN
3921: hr_utility.set_location (l_proc, 200.5);
3922: hr_utility.TRACE ('test_hours :' || test_hours);
3923: END IF;
3924: END LOOP;
3925: END IF;
3926:
3928: THEN
3929:
3930: IF g_debug
3931: THEN
3932: hr_utility.set_location (l_proc, 200.6);
3933: END IF;
3934:
3935: FOR oth_dtl_row IN oth_prem_dtl
3936: LOOP
3936: LOOP
3937:
3938: IF g_debug
3939: THEN
3940: hr_utility.set_location (l_proc, 200.7);
3941: END IF;
3942:
3943: IF g_debug
3944: THEN
3941: END IF;
3942:
3943: IF g_debug
3944: THEN
3945: hr_utility.TRACE ('oth_prem_dtl.hours:' || oth_dtl_row.hours);
3946: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3947: END IF;
3948:
3949: -- Bug 7359347
3942:
3943: IF g_debug
3944: THEN
3945: hr_utility.TRACE ('oth_prem_dtl.hours:' || oth_dtl_row.hours);
3946: hr_utility.TRACE ('deduct_hours:' || deduct_hours);
3947: END IF;
3948:
3949: -- Bug 7359347
3950: -- changing view to table.
3966: END IF;
3967:
3968: IF g_debug
3969: THEN
3970: hr_utility.set_location (l_proc, 210);
3971: END IF;
3972:
3973: -- Bug 7359347
3974: -- changing view to table.
3999: adj_stretch_sdp;
4000:
4001: IF g_debug
4002: THEN
4003: hr_utility.set_location (l_proc, 220);
4004: END IF;
4005:
4006: RETURN (0);
4007: END adjust_hours_for_hdp;
4106: BEGIN
4107: IF g_debug
4108: THEN
4109: l_proc := 'hxt_time_detail.adjust_for_hdp';
4110: hr_utility.set_location (l_proc, 10);
4111: hr_utility.TRACE ('g_hdp_id :' || g_hdp_id);
4112: END IF;
4113:
4114: IF g_hdp_id IS NULL
4107: IF g_debug
4108: THEN
4109: l_proc := 'hxt_time_detail.adjust_for_hdp';
4110: hr_utility.set_location (l_proc, 10);
4111: hr_utility.TRACE ('g_hdp_id :' || g_hdp_id);
4112: END IF;
4113:
4114: IF g_hdp_id IS NULL
4115: THEN
4114: IF g_hdp_id IS NULL
4115: THEN
4116: IF g_debug
4117: THEN
4118: hr_utility.set_location (l_proc, 20);
4119: END IF;
4120:
4121: RETURN (p_hours_this_segment);
4122: END IF;
4122: END IF;
4123:
4124: IF g_debug
4125: THEN
4126: hr_utility.set_location (l_proc, 30);
4127: END IF;
4128:
4129: OPEN get_sum_time_out;
4130:
4134: CLOSE get_sum_time_out;
4135:
4136: IF g_debug
4137: THEN
4138: hr_utility.TRACE ( 'sum_time_in :'
4139: || TO_CHAR (sum_time_in,
4140: 'dd-mon-yyyy hh24:mi:ss'
4141: )
4142: );
4139: || TO_CHAR (sum_time_in,
4140: 'dd-mon-yyyy hh24:mi:ss'
4141: )
4142: );
4143: hr_utility.TRACE ( 'sum_time_out:'
4144: || TO_CHAR (sum_time_out,
4145: 'dd-mon-yyyy hh24:mi:ss'
4146: )
4147: );
4144: || TO_CHAR (sum_time_out,
4145: 'dd-mon-yyyy hh24:mi:ss'
4146: )
4147: );
4148: hr_utility.TRACE ( 'g_TIME_OUT :'
4149: || TO_CHAR (g_time_out,
4150: 'dd-mon-yyyy hh24:mi:ss')
4151: );
4152: END IF;
4154: IF sum_time_out IS NOT NULL AND g_time_out IS NOT NULL
4155: THEN
4156: IF g_debug
4157: THEN
4158: hr_utility.set_location (l_proc, 40);
4159: END IF;
4160:
4161: IF g_time_out < sum_time_out
4162: THEN
4161: IF g_time_out < sum_time_out
4162: THEN
4163: IF g_debug
4164: THEN
4165: hr_utility.set_location (l_proc, 50);
4166: END IF;
4167:
4168: RETURN (p_hours_this_segment);
4169: END IF;
4170: END IF;
4171:
4172: IF g_debug
4173: THEN
4174: hr_utility.set_location (l_proc, 60);
4175: END IF;
4176:
4177: OPEN detail_hours_today;
4178:
4180: INTO hours_paid_already;
4181:
4182: IF g_debug
4183: THEN
4184: hr_utility.TRACE ('hours_paid_already :' || hours_paid_already);
4185: END IF;
4186:
4187: CLOSE detail_hours_today;
4188:
4192: INTO addback_hours;
4193:
4194: IF g_debug
4195: THEN
4196: hr_utility.TRACE ('addback_hours :' || addback_hours);
4197: END IF;
4198:
4199: CLOSE hdp_hours_deducted_today;
4200:
4199: CLOSE hdp_hours_deducted_today;
4200:
4201: IF g_debug
4202: THEN
4203: hr_utility.TRACE ( 'sum_time_in :'
4204: || TO_CHAR (sum_time_in,
4205: 'dd-mon-yyyy hh24:mi:ss'
4206: )
4207: );
4204: || TO_CHAR (sum_time_in,
4205: 'dd-mon-yyyy hh24:mi:ss'
4206: )
4207: );
4208: hr_utility.TRACE ( 'g_TIME_IN :'
4209: || TO_CHAR (g_time_in, 'dd-mon-yyyy hh24:mi:ss')
4210: );
4211: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4212: END IF;
4207: );
4208: hr_utility.TRACE ( 'g_TIME_IN :'
4209: || TO_CHAR (g_time_in, 'dd-mon-yyyy hh24:mi:ss')
4210: );
4211: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4212: END IF;
4213:
4214: IF sum_time_in IS NOT NULL AND g_time_in IS NOT NULL
4215: THEN
4214: IF sum_time_in IS NOT NULL AND g_time_in IS NOT NULL
4215: THEN
4216: IF g_debug
4217: THEN
4218: hr_utility.set_location (l_proc, 70);
4219: END IF;
4220:
4221: IF g_time_in > sum_time_in
4222: THEN
4221: IF g_time_in > sum_time_in
4222: THEN
4223: IF g_debug
4224: THEN
4225: hr_utility.set_location (l_proc, 80);
4226: hr_utility.TRACE ('-------g_time_in > sum_time_in------');
4227: END IF;
4228:
4229: addback_hours := addback_hours - p_hours_this_segment;
4222: THEN
4223: IF g_debug
4224: THEN
4225: hr_utility.set_location (l_proc, 80);
4226: hr_utility.TRACE ('-------g_time_in > sum_time_in------');
4227: END IF;
4228:
4229: addback_hours := addback_hours - p_hours_this_segment;
4230:
4229: addback_hours := addback_hours - p_hours_this_segment;
4230:
4231: IF g_debug
4232: THEN
4233: hr_utility.TRACE ('addback_hours :' || addback_hours);
4234: END IF;
4235: END IF;
4236: END IF;
4237:
4236: END IF;
4237:
4238: IF g_debug
4239: THEN
4240: hr_utility.set_location (l_proc, 90);
4241: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4242: hr_utility.TRACE ('hours_paid_already :' || hours_paid_already);
4243: hr_utility.TRACE ('addback_hours :' || addback_hours);
4244: END IF;
4237:
4238: IF g_debug
4239: THEN
4240: hr_utility.set_location (l_proc, 90);
4241: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4242: hr_utility.TRACE ('hours_paid_already :' || hours_paid_already);
4243: hr_utility.TRACE ('addback_hours :' || addback_hours);
4244: END IF;
4245:
4238: IF g_debug
4239: THEN
4240: hr_utility.set_location (l_proc, 90);
4241: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4242: hr_utility.TRACE ('hours_paid_already :' || hours_paid_already);
4243: hr_utility.TRACE ('addback_hours :' || addback_hours);
4244: END IF;
4245:
4246: daily_total_hours :=
4239: THEN
4240: hr_utility.set_location (l_proc, 90);
4241: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4242: hr_utility.TRACE ('hours_paid_already :' || hours_paid_already);
4243: hr_utility.TRACE ('addback_hours :' || addback_hours);
4244: END IF;
4245:
4246: daily_total_hours :=
4247: p_hours_this_segment + hours_paid_already + addback_hours;
4247: p_hours_this_segment + hours_paid_already + addback_hours;
4248:
4249: IF g_debug
4250: THEN
4251: hr_utility.TRACE ('daily_total_hours :' || daily_total_hours);
4252: END IF;
4253:
4254: FOR hdp_rule IN hdp_rule_cursor
4255: LOOP
4255: LOOP
4256: -- Calculate totals needed
4257: IF g_debug
4258: THEN
4259: hr_utility.set_location (l_proc, 100);
4260: hr_utility.TRACE ( 'hdp_rule.time_period:'
4261: || hdp_rule.time_period
4262: );
4263: END IF;
4256: -- Calculate totals needed
4257: IF g_debug
4258: THEN
4259: hr_utility.set_location (l_proc, 100);
4260: hr_utility.TRACE ( 'hdp_rule.time_period:'
4261: || hdp_rule.time_period
4262: );
4263: END IF;
4264:
4269: );
4270:
4271: IF g_debug
4272: THEN
4273: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4274: END IF;
4275: END LOOP;
4276:
4277: IF g_debug
4275: END LOOP;
4276:
4277: IF g_debug
4278: THEN
4279: hr_utility.set_location (l_proc, 110);
4280: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4281: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4282: hr_utility.TRACE ('addback_hours :' || addback_hours);
4283: END IF;
4276:
4277: IF g_debug
4278: THEN
4279: hr_utility.set_location (l_proc, 110);
4280: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4281: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4282: hr_utility.TRACE ('addback_hours :' || addback_hours);
4283: END IF;
4284:
4277: IF g_debug
4278: THEN
4279: hr_utility.set_location (l_proc, 110);
4280: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4281: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4282: hr_utility.TRACE ('addback_hours :' || addback_hours);
4283: END IF;
4284:
4285: --IF p_hours_this_segment <= (deduct_hours - addback_hours) THEN
4278: THEN
4279: hr_utility.set_location (l_proc, 110);
4280: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4281: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4282: hr_utility.TRACE ('addback_hours :' || addback_hours);
4283: END IF;
4284:
4285: --IF p_hours_this_segment <= (deduct_hours - addback_hours) THEN
4286: --Above IF condition changed as follows for bug 3147339
4287: IF p_hours_this_segment < (deduct_hours - addback_hours)
4288: THEN
4289: IF g_debug
4290: THEN
4291: hr_utility.set_location (l_proc, 120);
4292: END IF;
4293:
4294: IF adjust_for_hdp_shortage (deduct_hours - addback_hours) <> 0
4295: THEN
4294: IF adjust_for_hdp_shortage (deduct_hours - addback_hours) <> 0
4295: THEN
4296: IF g_debug
4297: THEN
4298: hr_utility.set_location (l_proc, 130);
4299: END IF;
4300:
4301: fnd_message.set_name ('HXT', 'HXT_39488_CANT_DEDUCT_HOURS');
4302: p_error_code :=
4310: END IF;
4311:
4312: IF g_debug
4313: THEN
4314: hr_utility.set_location (l_proc, 140);
4315: END IF;
4316:
4317: RETURN (p_hours_this_segment);
4318: END IF;
4318: END IF;
4319:
4320: IF g_debug
4321: THEN
4322: hr_utility.set_location (l_proc, 150);
4323: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4324: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4325: hr_utility.TRACE ('addback_hours :' || addback_hours);
4326: END IF;
4319:
4320: IF g_debug
4321: THEN
4322: hr_utility.set_location (l_proc, 150);
4323: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4324: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4325: hr_utility.TRACE ('addback_hours :' || addback_hours);
4326: END IF;
4327:
4320: IF g_debug
4321: THEN
4322: hr_utility.set_location (l_proc, 150);
4323: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4324: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4325: hr_utility.TRACE ('addback_hours :' || addback_hours);
4326: END IF;
4327:
4328: RETURN (p_hours_this_segment - (deduct_hours - addback_hours));
4321: THEN
4322: hr_utility.set_location (l_proc, 150);
4323: hr_utility.TRACE ('p_hours_this_segment:' || p_hours_this_segment);
4324: hr_utility.TRACE ('deduct_hours :' || deduct_hours);
4325: hr_utility.TRACE ('addback_hours :' || addback_hours);
4326: END IF;
4327:
4328: RETURN (p_hours_this_segment - (deduct_hours - addback_hours));
4329: END;
4422: BEGIN
4423: IF g_debug
4424: THEN
4425: l_proc := 'hxt_time_detail.GetConsecutiveDaysWorked';
4426: hr_utility.set_location (l_proc, 10);
4427: END IF;
4428:
4429: -- Bug 7359347
4430: -- Setting session date
4438: l_date_start := a_date_worked;
4439:
4440: IF g_debug
4441: THEN
4442: hr_utility.TRACE ( 'l_date_start :'
4443: || TO_CHAR (l_date_start,
4444: 'DD-MON-YYYY HH24:MI:SS'
4445: )
4446: );
4443: || TO_CHAR (l_date_start,
4444: 'DD-MON-YYYY HH24:MI:SS'
4445: )
4446: );
4447: hr_utility.TRACE ('i :' || i);
4448: hr_utility.set_location (l_proc, 20);
4449: END IF;
4450:
4451: WHILE (l_continue = TRUE AND i < 7)
4444: 'DD-MON-YYYY HH24:MI:SS'
4445: )
4446: );
4447: hr_utility.TRACE ('i :' || i);
4448: hr_utility.set_location (l_proc, 20);
4449: END IF;
4450:
4451: WHILE (l_continue = TRUE AND i < 7)
4452: LOOP
4451: WHILE (l_continue = TRUE AND i < 7)
4452: LOOP
4453: IF g_debug
4454: THEN
4455: hr_utility.set_location (l_proc, 30);
4456: hr_utility.TRACE ('i :' || i);
4457: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
4458: hr_utility.TRACE ( 'a_date_worked :'
4459: || TO_CHAR (a_date_worked,
4452: LOOP
4453: IF g_debug
4454: THEN
4455: hr_utility.set_location (l_proc, 30);
4456: hr_utility.TRACE ('i :' || i);
4457: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
4458: hr_utility.TRACE ( 'a_date_worked :'
4459: || TO_CHAR (a_date_worked,
4460: 'DD-MON-YYYY HH24:MI:SS'
4453: IF g_debug
4454: THEN
4455: hr_utility.set_location (l_proc, 30);
4456: hr_utility.TRACE ('i :' || i);
4457: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
4458: hr_utility.TRACE ( 'a_date_worked :'
4459: || TO_CHAR (a_date_worked,
4460: 'DD-MON-YYYY HH24:MI:SS'
4461: )
4454: THEN
4455: hr_utility.set_location (l_proc, 30);
4456: hr_utility.TRACE ('i :' || i);
4457: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
4458: hr_utility.TRACE ( 'a_date_worked :'
4459: || TO_CHAR (a_date_worked,
4460: 'DD-MON-YYYY HH24:MI:SS'
4461: )
4462: );
4459: || TO_CHAR (a_date_worked,
4460: 'DD-MON-YYYY HH24:MI:SS'
4461: )
4462: );
4463: hr_utility.TRACE ('start_day_of_week :' || start_day_of_week);
4464: hr_utility.TRACE ('g_person_id :' || g_person_id);
4465: END IF;
4466:
4467: OPEN date_start_cur (g_tim_id, a_date_worked - i, a_date_worked,g_det_session_date);
4460: 'DD-MON-YYYY HH24:MI:SS'
4461: )
4462: );
4463: hr_utility.TRACE ('start_day_of_week :' || start_day_of_week);
4464: hr_utility.TRACE ('g_person_id :' || g_person_id);
4465: END IF;
4466:
4467: OPEN date_start_cur (g_tim_id, a_date_worked - i, a_date_worked,g_det_session_date);
4468:
4471: INTO l_date_start;
4472:
4473: IF g_debug
4474: THEN
4475: hr_utility.TRACE ( 'l_date_start :'
4476: || TO_CHAR (l_date_start,
4477: 'DD-MON-YYYY HH24:MI:SS'
4478: )
4479: );
4482: IF date_start_cur%NOTFOUND
4483: THEN
4484: IF g_debug
4485: THEN
4486: hr_utility.set_location (l_proc, 40);
4487: END IF;
4488:
4489: l_continue := FALSE;
4490: END IF;
4494: IF l_continue = TRUE
4495: THEN
4496: IF g_debug
4497: THEN
4498: hr_utility.set_location (l_proc, 50);
4499: END IF;
4500:
4501: i := i + 1;
4502: END IF;
4502: END IF;
4503:
4504: IF g_debug
4505: THEN
4506: hr_utility.set_location (l_proc, 60);
4507: END IF;
4508: END LOOP;
4509:
4510: IF g_debug
4508: END LOOP;
4509:
4510: IF g_debug
4511: THEN
4512: hr_utility.set_location (l_proc, 70);
4513: hr_utility.TRACE ('i :' || i);
4514: END IF;
4515:
4516: RETURN i;
4509:
4510: IF g_debug
4511: THEN
4512: hr_utility.set_location (l_proc, 70);
4513: hr_utility.TRACE ('i :' || i);
4514: END IF;
4515:
4516: RETURN i;
4517: END;
4612: BEGIN
4613: IF g_debug
4614: THEN
4615: l_proc := 'hxt_time_detail.ConsecutiveDaysWorked_for_SPC';
4616: hr_utility.set_location (l_proc, 10);
4617: END IF;
4618:
4619: -- Bug 7359347
4620: -- Setting session date.
4630: l_date_start := a_date_worked;
4631:
4632: IF g_debug
4633: THEN
4634: hr_utility.TRACE ( 'l_date_start :'
4635: || TO_CHAR (l_date_start,
4636: 'DD-MON-YYYY HH24:MI:SS'
4637: )
4638: );
4635: || TO_CHAR (l_date_start,
4636: 'DD-MON-YYYY HH24:MI:SS'
4637: )
4638: );
4639: hr_utility.TRACE ('i :' || i);
4640: hr_utility.set_location (l_proc, 20);
4641: END IF;
4642:
4643: WHILE (l_continue = TRUE AND i < 7)
4636: 'DD-MON-YYYY HH24:MI:SS'
4637: )
4638: );
4639: hr_utility.TRACE ('i :' || i);
4640: hr_utility.set_location (l_proc, 20);
4641: END IF;
4642:
4643: WHILE (l_continue = TRUE AND i < 7)
4644: LOOP
4643: WHILE (l_continue = TRUE AND i < 7)
4644: LOOP
4645: IF g_debug
4646: THEN
4647: hr_utility.set_location (l_proc, 30);
4648: END IF;
4649:
4650: l_day_worked := FALSE;
4651:
4650: l_day_worked := FALSE;
4651:
4652: IF g_debug
4653: THEN
4654: hr_utility.TRACE ('i :' || i);
4655: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
4656: hr_utility.TRACE ( 'a_date_worked :'
4657: || TO_CHAR (a_date_worked,
4658: 'DD-MON-YYYY HH24:MI:SS'
4651:
4652: IF g_debug
4653: THEN
4654: hr_utility.TRACE ('i :' || i);
4655: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
4656: hr_utility.TRACE ( 'a_date_worked :'
4657: || TO_CHAR (a_date_worked,
4658: 'DD-MON-YYYY HH24:MI:SS'
4659: )
4652: IF g_debug
4653: THEN
4654: hr_utility.TRACE ('i :' || i);
4655: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
4656: hr_utility.TRACE ( 'a_date_worked :'
4657: || TO_CHAR (a_date_worked,
4658: 'DD-MON-YYYY HH24:MI:SS'
4659: )
4660: );
4657: || TO_CHAR (a_date_worked,
4658: 'DD-MON-YYYY HH24:MI:SS'
4659: )
4660: );
4661: hr_utility.TRACE ('start_day_of_week :' || start_day_of_week);
4662: hr_utility.TRACE ('g_person_id :' || g_person_id);
4663: END IF;
4664:
4665: OPEN date_start_cur (g_tim_id, a_date_worked - i, a_date_worked);
4658: 'DD-MON-YYYY HH24:MI:SS'
4659: )
4660: );
4661: hr_utility.TRACE ('start_day_of_week :' || start_day_of_week);
4662: hr_utility.TRACE ('g_person_id :' || g_person_id);
4663: END IF;
4664:
4665: OPEN date_start_cur (g_tim_id, a_date_worked - i, a_date_worked);
4666:
4668: INTO l_date_start;
4669:
4670: IF g_debug
4671: THEN
4672: hr_utility.TRACE ( 'l_date_start :'
4673: || TO_CHAR (l_date_start,
4674: 'DD-MON-YYYY HH24:MI:SS'
4675: )
4676: );
4679: IF date_start_cur%NOTFOUND
4680: THEN
4681: IF g_debug
4682: THEN
4683: hr_utility.set_location (l_proc, 40);
4684: END IF;
4685:
4686: l_continue := FALSE;
4687: END IF;
4687: END IF;
4688:
4689: IF g_debug
4690: THEN
4691: hr_utility.set_location (l_proc, 50);
4692: END IF;
4693:
4694: IF l_continue = TRUE
4695: THEN
4694: IF l_continue = TRUE
4695: THEN
4696: IF g_debug
4697: THEN
4698: hr_utility.set_location (l_proc, 60);
4699: END IF;
4700:
4701: -- IF a_date_worked <> l_date_start THEN
4702: IF g_debug
4700:
4701: -- IF a_date_worked <> l_date_start THEN
4702: IF g_debug
4703: THEN
4704: hr_utility.set_location (l_proc, 70);
4705: END IF;
4706:
4707: OPEN chk_det_for_wrkd_elements (l_date_start);
4708:
4708:
4709: LOOP -- fetch worked element rows
4710: IF g_debug
4711: THEN
4712: hr_utility.set_location (l_proc, 80);
4713: END IF;
4714:
4715: FETCH chk_det_for_wrkd_elements
4716: INTO l_chk_det_elements_cur;
4716: INTO l_chk_det_elements_cur;
4717:
4718: IF g_debug
4719: THEN
4720: hr_utility.TRACE
4721: ( 'l_chk_det_elements_cur.element_type_id:'
4722: || l_chk_det_elements_cur.element_type_id
4723: );
4724: END IF;
4727:
4728: -- OR l_day_worked = TRUE;
4729: IF g_debug
4730: THEN
4731: hr_utility.set_location (l_proc, 90);
4732: END IF;
4733:
4734: OPEN worked_elements_cur;
4735:
4735:
4736: LOOP
4737: IF g_debug
4738: THEN
4739: hr_utility.set_location (l_proc, 100);
4740: END IF;
4741:
4742: FETCH worked_elements_cur
4743: INTO l_wrkd_elements_cur;
4743: INTO l_wrkd_elements_cur;
4744:
4745: IF g_debug
4746: THEN
4747: hr_utility.TRACE
4748: ( 'l_wrkd_elements_cur.element_type_id:'
4749: || l_wrkd_elements_cur.element_type_id
4750: );
4751: END IF;
4753: EXIT WHEN worked_elements_cur%NOTFOUND;
4754:
4755: IF g_debug
4756: THEN
4757: hr_utility.set_location (l_proc, 110);
4758: END IF;
4759:
4760: IF (l_chk_det_elements_cur.element_type_id =
4761: l_wrkd_elements_cur.element_type_id
4762: )
4763: THEN
4764: IF g_debug
4765: THEN
4766: hr_utility.set_location (l_proc, 120);
4767: END IF;
4768:
4769: l_day_worked := TRUE;
4770:
4770:
4771: -- CLOSE worked_elements_cur;
4772: IF g_debug
4773: THEN
4774: hr_utility.set_location (l_proc, 125);
4775: END IF;
4776:
4777: EXIT;
4778:
4777: EXIT;
4778:
4779: IF g_debug
4780: THEN
4781: hr_utility.set_location (l_proc, 130);
4782: END IF;
4783: END IF;
4784:
4785: IF g_debug
4783: END IF;
4784:
4785: IF g_debug
4786: THEN
4787: hr_utility.set_location (l_proc, 140);
4788: END IF;
4789: END LOOP;
4790:
4791: CLOSE worked_elements_cur;
4791: CLOSE worked_elements_cur;
4792:
4793: IF g_debug
4794: THEN
4795: hr_utility.set_location (l_proc, 150);
4796: END IF;
4797:
4798: IF l_day_worked = TRUE
4799: THEN
4798: IF l_day_worked = TRUE
4799: THEN
4800: IF g_debug
4801: THEN
4802: hr_utility.set_location (l_proc, 160);
4803: END IF;
4804:
4805: -- CLOSE chk_det_for_wrkd_elements;
4806: EXIT;
4807: END IF;
4808:
4809: IF g_debug
4810: THEN
4811: hr_utility.set_location (l_proc, 170);
4812: END IF;
4813: END LOOP;
4814:
4815: CLOSE chk_det_for_wrkd_elements;
4815: CLOSE chk_det_for_wrkd_elements;
4816:
4817: IF g_debug
4818: THEN
4819: hr_utility.set_location (l_proc, 180);
4820: END IF;
4821:
4822: -- END IF;
4823: IF (l_day_worked = TRUE) OR (l_date_start = a_date_worked)
4823: IF (l_day_worked = TRUE) OR (l_date_start = a_date_worked)
4824: THEN
4825: IF g_debug
4826: THEN
4827: hr_utility.set_location (l_proc, 185);
4828: END IF;
4829:
4830: j := j + 1;
4831:
4830: j := j + 1;
4831:
4832: IF g_debug
4833: THEN
4834: hr_utility.TRACE ('j:' || j);
4835: END IF;
4836: END IF;
4837:
4838: CLOSE date_start_cur;
4840: IF l_continue = TRUE
4841: THEN
4842: IF g_debug
4843: THEN
4844: hr_utility.set_location (l_proc, 190);
4845: END IF;
4846:
4847: i := i + 1;
4848:
4847: i := i + 1;
4848:
4849: IF g_debug
4850: THEN
4851: hr_utility.TRACE ('i:' || i);
4852: END IF;
4853: END IF;
4854:
4855: IF g_debug
4853: END IF;
4854:
4855: IF g_debug
4856: THEN
4857: hr_utility.set_location (l_proc, 190);
4858: END IF;
4859: END IF;
4860:
4861: IF g_debug
4859: END IF;
4860:
4861: IF g_debug
4862: THEN
4863: hr_utility.set_location (l_proc, 200);
4864: END IF;
4865: END LOOP;
4866:
4867: IF g_debug
4865: END LOOP;
4866:
4867: IF g_debug
4868: THEN
4869: hr_utility.set_location (l_proc, 210);
4870: hr_utility.TRACE ('j :' || j);
4871: END IF;
4872:
4873: RETURN j;
4866:
4867: IF g_debug
4868: THEN
4869: hr_utility.set_location (l_proc, 210);
4870: hr_utility.TRACE ('j :' || j);
4871: END IF;
4872:
4873: RETURN j;
4874: END;
5132: BEGIN
5133: IF g_debug
5134: THEN
5135: l_proc := 'hxt_time_detail.adjust_abs_hrs_on_prev_days';
5136: hr_utility.set_location (l_proc, 10);
5137: hr_utility.TRACE ('c_tim_id:' || c_tim_id);
5138: hr_utility.TRACE ( 'c_date_worked :'
5139: || TO_CHAR (c_date_worked,
5140: 'DD-MON-YYYY HH24:MI:SS'
5133: IF g_debug
5134: THEN
5135: l_proc := 'hxt_time_detail.adjust_abs_hrs_on_prev_days';
5136: hr_utility.set_location (l_proc, 10);
5137: hr_utility.TRACE ('c_tim_id:' || c_tim_id);
5138: hr_utility.TRACE ( 'c_date_worked :'
5139: || TO_CHAR (c_date_worked,
5140: 'DD-MON-YYYY HH24:MI:SS'
5141: )
5134: THEN
5135: l_proc := 'hxt_time_detail.adjust_abs_hrs_on_prev_days';
5136: hr_utility.set_location (l_proc, 10);
5137: hr_utility.TRACE ('c_tim_id:' || c_tim_id);
5138: hr_utility.TRACE ( 'c_date_worked :'
5139: || TO_CHAR (c_date_worked,
5140: 'DD-MON-YYYY HH24:MI:SS'
5141: )
5142: );
5139: || TO_CHAR (c_date_worked,
5140: 'DD-MON-YYYY HH24:MI:SS'
5141: )
5142: );
5143: hr_utility.TRACE ('c_hours_left:' || c_hours_left);
5144: END IF;
5145:
5146: -- Bug 7359347
5147: -- Setting session date
5161: l_hours_left := c_hours_left;
5162:
5163: IF g_debug
5164: THEN
5165: hr_utility.TRACE ('l_hours_left:' || l_hours_left);
5166: END IF;
5167:
5168: IF l_hours_left = 0
5169: THEN
5187: END LOOP;
5188: */
5189: IF g_debug
5190: THEN
5191: hr_utility.TRACE
5192: ('Deleting g_parent_to_re_explode PL/SQL table');
5193: END IF;
5194:
5195: g_parent_to_re_explode.DELETE;
5200: WHILE l_hours_left > 0
5201: LOOP
5202: IF g_debug
5203: THEN
5204: hr_utility.set_location (l_proc, 20);
5205: END IF;
5206:
5207: FETCH reg_hrs_cur
5208: INTO l_reg_hrs_cur;
5210: IF reg_hrs_cur%NOTFOUND
5211: THEN
5212: IF g_debug
5213: THEN
5214: hr_utility.set_location (l_proc, 30);
5215: END IF;
5216:
5217: -- Bug 7359347
5218: -- Changed the below query to pick up session date from global variable
5266:
5267:
5268: IF g_debug
5269: THEN
5270: hr_utility.TRACE ('l_abs_count :' || l_abs_count);
5271: END IF;
5272:
5273: IF g_spc_dy_eg IS NOT NULL
5274: THEN
5276: consecutivedaysworked_for_spc (g_date_worked);
5277:
5278: IF g_debug
5279: THEN
5280: hr_utility.TRACE ( 'date_worked :'
5281: || TO_CHAR (g_date_worked, 'DD/MON/YY')
5282: );
5283: hr_utility.TRACE ( 'consec_days_worked:'
5284: || TO_CHAR (consec_days_worked)
5279: THEN
5280: hr_utility.TRACE ( 'date_worked :'
5281: || TO_CHAR (g_date_worked, 'DD/MON/YY')
5282: );
5283: hr_utility.TRACE ( 'consec_days_worked:'
5284: || TO_CHAR (consec_days_worked)
5285: );
5286: END IF;
5287: ELSE
5288: l_days_worked := getconsecutivedaysworked (g_date_worked);
5289:
5290: IF g_debug
5291: THEN
5292: hr_utility.TRACE ( 'date_worked:'
5293: || TO_CHAR (g_date_worked, 'DD/MON/YY')
5294: );
5295: hr_utility.TRACE ( 'consec_days_worked:'
5296: || TO_CHAR (consec_days_worked)
5291: THEN
5292: hr_utility.TRACE ( 'date_worked:'
5293: || TO_CHAR (g_date_worked, 'DD/MON/YY')
5294: );
5295: hr_utility.TRACE ( 'consec_days_worked:'
5296: || TO_CHAR (consec_days_worked)
5297: );
5298: END IF;
5299: END IF;
5299: END IF;
5300:
5301: IF g_debug
5302: THEN
5303: hr_utility.TRACE ('l_days_worked :' || l_days_worked);
5304: END IF;
5305:
5306: --If Timecard hours are all Vacation , i.e.,if a week of just vacation
5307: --,then do not calculate for an overtime amount
5308: IF l_abs_count = l_days_worked
5309: THEN
5310: IF g_debug
5311: THEN
5312: hr_utility.set_location (l_proc, 40);
5313: END IF;
5314:
5315: CLOSE reg_hrs_cur;
5316:
5318: END IF;
5319:
5320: IF g_debug
5321: THEN
5322: hr_utility.set_location (l_proc, 50);
5323: END IF;
5324:
5325: CLOSE reg_hrs_cur;
5326:
5361: l_reg_hrs_cur.parent_id;
5362:
5363: IF g_debug
5364: THEN
5365: hr_utility.set_location (l_proc, 51);
5366: END IF;
5367:
5368: l_hours_to_adjust := l_reg_hrs_cur.hours;
5369:
5368: l_hours_to_adjust := l_reg_hrs_cur.hours;
5369:
5370: IF g_debug
5371: THEN
5372: hr_utility.TRACE ('l_hours_to_adjust :' || l_hours_to_adjust);
5373: hr_utility.TRACE ('l_hours_left :' || l_hours_left);
5374: END IF;
5375:
5376: IF l_hours_to_adjust <> 0
5369:
5370: IF g_debug
5371: THEN
5372: hr_utility.TRACE ('l_hours_to_adjust :' || l_hours_to_adjust);
5373: hr_utility.TRACE ('l_hours_left :' || l_hours_left);
5374: END IF;
5375:
5376: IF l_hours_to_adjust <> 0
5377: THEN
5376: IF l_hours_to_adjust <> 0
5377: THEN
5378: IF g_debug
5379: THEN
5380: hr_utility.set_location (l_proc, 55);
5381: END IF;
5382:
5383: IF l_hours_to_adjust <= l_hours_left
5384: THEN
5383: IF l_hours_to_adjust <= l_hours_left
5384: THEN
5385: IF g_debug
5386: THEN
5387: hr_utility.set_location (l_proc, 60);
5388: END IF;
5389:
5390: l_hours_left := l_hours_left - l_hours_to_adjust;
5391: l_hours_to_pay := l_hours_to_adjust;
5392: l_hours_to_adjust := 0;
5393:
5394: IF g_debug
5395: THEN
5396: hr_utility.TRACE ('l_hours_left :' || l_hours_left);
5397: hr_utility.TRACE ('l_hours_to_pay :' || l_hours_to_pay
5398: );
5399: hr_utility.TRACE ( 'l_hours_to_adjust :'
5400: || l_hours_to_adjust
5393:
5394: IF g_debug
5395: THEN
5396: hr_utility.TRACE ('l_hours_left :' || l_hours_left);
5397: hr_utility.TRACE ('l_hours_to_pay :' || l_hours_to_pay
5398: );
5399: hr_utility.TRACE ( 'l_hours_to_adjust :'
5400: || l_hours_to_adjust
5401: );
5395: THEN
5396: hr_utility.TRACE ('l_hours_left :' || l_hours_left);
5397: hr_utility.TRACE ('l_hours_to_pay :' || l_hours_to_pay
5398: );
5399: hr_utility.TRACE ( 'l_hours_to_adjust :'
5400: || l_hours_to_adjust
5401: );
5402: END IF;
5403: ELSE
5402: END IF;
5403: ELSE
5404: IF g_debug
5405: THEN
5406: hr_utility.set_location (l_proc, 70);
5407: END IF;
5408:
5409: l_hours_to_adjust := l_hours_to_adjust - l_hours_left;
5410: l_hours_to_pay := l_hours_left;
5411: l_hours_left := 0;
5412:
5413: IF g_debug
5414: THEN
5415: hr_utility.TRACE ('l_hours_left :' || l_hours_left);
5416: hr_utility.TRACE ('l_hours_to_pay :' || l_hours_to_pay
5417: );
5418: hr_utility.TRACE ( 'l_hours_to_adjust :'
5419: || l_hours_to_adjust
5412:
5413: IF g_debug
5414: THEN
5415: hr_utility.TRACE ('l_hours_left :' || l_hours_left);
5416: hr_utility.TRACE ('l_hours_to_pay :' || l_hours_to_pay
5417: );
5418: hr_utility.TRACE ( 'l_hours_to_adjust :'
5419: || l_hours_to_adjust
5420: );
5414: THEN
5415: hr_utility.TRACE ('l_hours_left :' || l_hours_left);
5416: hr_utility.TRACE ('l_hours_to_pay :' || l_hours_to_pay
5417: );
5418: hr_utility.TRACE ( 'l_hours_to_adjust :'
5419: || l_hours_to_adjust
5420: );
5421: END IF;
5422: END IF;
5422: END IF;
5423:
5424: IF g_debug
5425: THEN
5426: hr_utility.set_location (l_proc, 80);
5427: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id :'
5428: || l_reg_hrs_cur.parent_id
5429: );
5430: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5423:
5424: IF g_debug
5425: THEN
5426: hr_utility.set_location (l_proc, 80);
5427: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id :'
5428: || l_reg_hrs_cur.parent_id
5429: );
5430: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5431: hr_utility.TRACE ( 'l_reg_hrs_cur.seqno :'
5426: hr_utility.set_location (l_proc, 80);
5427: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id :'
5428: || l_reg_hrs_cur.parent_id
5429: );
5430: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5431: hr_utility.TRACE ( 'l_reg_hrs_cur.seqno :'
5432: || l_reg_hrs_cur.seqno
5433: );
5434: hr_utility.TRACE ( 'l_reg_hrs_cur.hours :'
5427: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id :'
5428: || l_reg_hrs_cur.parent_id
5429: );
5430: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5431: hr_utility.TRACE ( 'l_reg_hrs_cur.seqno :'
5432: || l_reg_hrs_cur.seqno
5433: );
5434: hr_utility.TRACE ( 'l_reg_hrs_cur.hours :'
5435: || l_reg_hrs_cur.hours
5430: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5431: hr_utility.TRACE ( 'l_reg_hrs_cur.seqno :'
5432: || l_reg_hrs_cur.seqno
5433: );
5434: hr_utility.TRACE ( 'l_reg_hrs_cur.hours :'
5435: || l_reg_hrs_cur.hours
5436: );
5437: hr_utility.TRACE ( 'l_reg_hrs_cur.date_worked :'
5438: || TO_CHAR (l_reg_hrs_cur.date_worked,
5433: );
5434: hr_utility.TRACE ( 'l_reg_hrs_cur.hours :'
5435: || l_reg_hrs_cur.hours
5436: );
5437: hr_utility.TRACE ( 'l_reg_hrs_cur.date_worked :'
5438: || TO_CHAR (l_reg_hrs_cur.date_worked,
5439: 'DD-MON-YYYY HH24:MI:SS'
5440: )
5441: );
5438: || TO_CHAR (l_reg_hrs_cur.date_worked,
5439: 'DD-MON-YYYY HH24:MI:SS'
5440: )
5441: );
5442: hr_utility.TRACE ( 'l_reg_hrs_cur.time_in :'
5443: || TO_CHAR (l_reg_hrs_cur.time_in,
5444: 'DD-MON-YYYY HH24:MI:SS'
5445: )
5446: );
5443: || TO_CHAR (l_reg_hrs_cur.time_in,
5444: 'DD-MON-YYYY HH24:MI:SS'
5445: )
5446: );
5447: hr_utility.TRACE ( 'l_reg_hrs_cur.time_out :'
5448: || TO_CHAR (l_reg_hrs_cur.time_out,
5449: 'DD-MON-YYYY HH24:MI:SS'
5450: )
5451: );
5448: || TO_CHAR (l_reg_hrs_cur.time_out,
5449: 'DD-MON-YYYY HH24:MI:SS'
5450: )
5451: );
5452: hr_utility.TRACE ( 'l_reg_hrs_cur.earn_pol_id :'
5453: || l_reg_hrs_cur.earn_pol_id
5454: );
5455: hr_utility.TRACE ( 'l_reg_hrs_cur.assignment_id :'
5456: || l_reg_hrs_cur.assignment_id
5451: );
5452: hr_utility.TRACE ( 'l_reg_hrs_cur.earn_pol_id :'
5453: || l_reg_hrs_cur.earn_pol_id
5454: );
5455: hr_utility.TRACE ( 'l_reg_hrs_cur.assignment_id :'
5456: || l_reg_hrs_cur.assignment_id
5457: );
5458: hr_utility.set_location (l_proc, 81);
5459: END IF;
5454: );
5455: hr_utility.TRACE ( 'l_reg_hrs_cur.assignment_id :'
5456: || l_reg_hrs_cur.assignment_id
5457: );
5458: hr_utility.set_location (l_proc, 81);
5459: END IF;
5460:
5461: -- Get the Policies and Premiums for current day - on which
5462: -- the REG hrs were found - where the absence hrs
5482:
5483: -- Check if error encountered
5484: IF g_debug
5485: THEN
5486: hr_utility.set_location (l_proc, 82);
5487: hr_utility.TRACE ('l_egp_id :' || l_egp_id);
5488: END IF;
5489:
5490: IF l_error <> 0
5483: -- Check if error encountered
5484: IF g_debug
5485: THEN
5486: hr_utility.set_location (l_proc, 82);
5487: hr_utility.TRACE ('l_egp_id :' || l_egp_id);
5488: END IF;
5489:
5490: IF l_error <> 0
5491: THEN
5490: IF l_error <> 0
5491: THEN
5492: IF g_debug
5493: THEN
5494: hr_utility.set_location (l_proc, 83);
5495: END IF;
5496:
5497: RETURN 3;
5498: END IF;
5499:
5500: -- Check if person assigned work or rotation plan
5501: IF g_debug
5502: THEN
5503: hr_utility.TRACE ('l_work_plan :' || l_work_plan);
5504: hr_utility.TRACE ('l_rotation_plan :' || l_rotation_plan);
5505: END IF;
5506:
5507: IF (l_work_plan IS NOT NULL) OR (l_rotation_plan IS NOT NULL)
5500: -- Check if person assigned work or rotation plan
5501: IF g_debug
5502: THEN
5503: hr_utility.TRACE ('l_work_plan :' || l_work_plan);
5504: hr_utility.TRACE ('l_rotation_plan :' || l_rotation_plan);
5505: END IF;
5506:
5507: IF (l_work_plan IS NOT NULL) OR (l_rotation_plan IS NOT NULL)
5508: THEN
5507: IF (l_work_plan IS NOT NULL) OR (l_rotation_plan IS NOT NULL)
5508: THEN
5509: IF g_debug
5510: THEN
5511: hr_utility.set_location (l_proc, 84);
5512: END IF;
5513:
5514: --Get premiums for shift
5515: hxt_util.get_shift_info (l_reg_hrs_cur.date_worked,
5528:
5529: -- Check if error encountered
5530: IF g_debug
5531: THEN
5532: hr_utility.set_location (l_proc, 85);
5533: END IF;
5534:
5535: IF l_error <> 0
5536: THEN
5535: IF l_error <> 0
5536: THEN
5537: IF g_debug
5538: THEN
5539: hr_utility.set_location (l_proc, 86);
5540: END IF;
5541:
5542: RETURN 3;
5543: END IF;
5543: END IF;
5544:
5545: IF g_debug
5546: THEN
5547: hr_utility.set_location (l_proc, 87);
5548: END IF;
5549: END IF;
5550:
5551: IF g_debug
5549: END IF;
5550:
5551: IF g_debug
5552: THEN
5553: hr_utility.set_location (l_proc, 88);
5554: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id:'
5555: || l_reg_hrs_cur.parent_id
5556: );
5557: END IF;
5550:
5551: IF g_debug
5552: THEN
5553: hr_utility.set_location (l_proc, 88);
5554: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id:'
5555: || l_reg_hrs_cur.parent_id
5556: );
5557: END IF;
5558:
5576:
5577:
5578: IF g_debug
5579: THEN
5580: hr_utility.set_location (l_proc, 89);
5581: hr_utility.TRACE ( 'l_reg_hrs_cur.time_in :'
5582: || TO_CHAR (l_reg_hrs_cur.time_in,
5583: 'DD-MON-YYYY HH24:MI:SS'
5584: )
5577:
5578: IF g_debug
5579: THEN
5580: hr_utility.set_location (l_proc, 89);
5581: hr_utility.TRACE ( 'l_reg_hrs_cur.time_in :'
5582: || TO_CHAR (l_reg_hrs_cur.time_in,
5583: 'DD-MON-YYYY HH24:MI:SS'
5584: )
5585: );
5582: || TO_CHAR (l_reg_hrs_cur.time_in,
5583: 'DD-MON-YYYY HH24:MI:SS'
5584: )
5585: );
5586: hr_utility.TRACE ( 'l_reg_hrs_cur.time_out :'
5587: || TO_CHAR (l_reg_hrs_cur.time_out,
5588: 'DD-MON-YYYY HH24:MI:SS'
5589: )
5590: );
5587: || TO_CHAR (l_reg_hrs_cur.time_out,
5588: 'DD-MON-YYYY HH24:MI:SS'
5589: )
5590: );
5591: hr_utility.TRACE ('l_hours_to_adjust:' || l_hours_to_adjust);
5592: hr_utility.TRACE
5593: ( 'l_reg_hrs_cur.time_in + (l_hours_to_adjust/24):'
5594: || TO_CHAR ( l_reg_hrs_cur.time_in
5595: + (l_hours_to_adjust / 24),
5588: 'DD-MON-YYYY HH24:MI:SS'
5589: )
5590: );
5591: hr_utility.TRACE ('l_hours_to_adjust:' || l_hours_to_adjust);
5592: hr_utility.TRACE
5593: ( 'l_reg_hrs_cur.time_in + (l_hours_to_adjust/24):'
5594: || TO_CHAR ( l_reg_hrs_cur.time_in
5595: + (l_hours_to_adjust / 24),
5596: 'DD-MON-YYYY HH24:MI:SS'
5680: );
5681:
5682: IF g_debug
5683: THEN
5684: hr_utility.set_location (l_proc, 90);
5685: END IF;
5686:
5687: IF l_status <> 0
5688: THEN
5687: IF l_status <> 0
5688: THEN
5689: IF g_debug
5690: THEN
5691: hr_utility.set_location (l_proc, 91);
5692: END IF;
5693:
5694: RETURN 3;
5695: END IF;
5695: END IF;
5696:
5697: IF g_debug
5698: THEN
5699: hr_utility.set_location (l_proc, 92);
5700: END IF;
5701:
5702: -- Now generate the detail records for c_element_type_id
5703: -- i.e., the OT or the DT that gets adjusted on
5705: IF l_reg_hrs_cur.time_in IS NOT NULL
5706: THEN
5707: IF g_debug
5708: THEN
5709: hr_utility.set_location (l_proc, 101);
5710: END IF;
5711:
5712: l_segment_start_time :=
5713: l_reg_hrs_cur.time_in
5717: + (l_hours_to_pay / 24);
5718: ELSE -- time_in is null, i.e., time entered in hours
5719: IF g_debug
5720: THEN
5721: hr_utility.set_location (l_proc, 102);
5722: END IF;
5723:
5724: l_segment_start_time := NULL;
5725: l_segment_stop_time := NULL;
5726: END IF;
5727:
5728: IF g_debug
5729: THEN
5730: hr_utility.TRACE ( 'l_segment_start_time :'
5731: || TO_CHAR (l_segment_start_time,
5732: 'DD-MON-YYYY HH24:MI:SS'
5733: )
5734: );
5731: || TO_CHAR (l_segment_start_time,
5732: 'DD-MON-YYYY HH24:MI:SS'
5733: )
5734: );
5735: hr_utility.TRACE ( 'l_segment_stop_time :'
5736: || TO_CHAR (l_segment_stop_time,
5737: 'DD-MON-YYYY HH24:MI:SS'
5738: )
5739: );
5741:
5742: --BEGIN SIR 491
5743: IF g_debug
5744: THEN
5745: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id:'
5746: || l_reg_hrs_cur.parent_id
5747: );
5748: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5749: hr_utility.TRACE ( 'c_element_type_id :'
5744: THEN
5745: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id:'
5746: || l_reg_hrs_cur.parent_id
5747: );
5748: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5749: hr_utility.TRACE ( 'c_element_type_id :'
5750: || c_element_type_id
5751: );
5752: hr_utility.set_location (l_proc, 103);
5745: hr_utility.TRACE ( 'l_reg_hrs_cur.parent_id:'
5746: || l_reg_hrs_cur.parent_id
5747: );
5748: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5749: hr_utility.TRACE ( 'c_element_type_id :'
5750: || c_element_type_id
5751: );
5752: hr_utility.set_location (l_proc, 103);
5753: END IF;
5748: hr_utility.TRACE ('c_tim_id :' || c_tim_id);
5749: hr_utility.TRACE ( 'c_element_type_id :'
5750: || c_element_type_id
5751: );
5752: hr_utility.set_location (l_proc, 103);
5753: END IF;
5754:
5755: -- Bug 8540828
5756: -- Reverted the change done for bug 4967495 for
5830: );
5831:
5832: IF g_debug
5833: THEN
5834: hr_utility.set_location (l_proc, 104);
5835: END IF;
5836:
5837: IF l_status <> 0
5838: THEN
5837: IF l_status <> 0
5838: THEN
5839: IF g_debug
5840: THEN
5841: hr_utility.set_location (l_proc, 105);
5842: END IF;
5843:
5844: RETURN 3;
5845: END IF;
5845: END IF;
5846:
5847: IF g_debug
5848: THEN
5849: hr_utility.set_location (l_proc, 106);
5850: END IF;
5851: END IF; -- end if l_hours_to_adjust <> 0;
5852:
5853: IF g_debug
5851: END IF; -- end if l_hours_to_adjust <> 0;
5852:
5853: IF g_debug
5854: THEN
5855: hr_utility.set_location (l_proc, 107);
5856: END IF;
5857: END LOOP; -- While l_hours_left > 0
5858:
5859: -- After adjusting all the absence hrs, populate the details
5865: -- the Shift Premiums, associated with the REG, OT and DT
5866: -- hours, correctly.
5867: IF g_debug
5868: THEN
5869: hr_utility.TRACE ('FYI');
5870: END IF;
5871:
5872: i := g_parent_to_re_explode.FIRST;
5873:
5875: EXIT WHEN NOT g_parent_to_re_explode.EXISTS (i);
5876:
5877: IF g_debug
5878: THEN
5879: hr_utility.set_location (l_proc, 107.1);
5880: hr_utility.TRACE ('i:' || i);
5881: hr_utility.TRACE ( 'g_parent_to_re_explode(i).parent_id:'
5882: || g_parent_to_re_explode (i).parent_id
5883: );
5876:
5877: IF g_debug
5878: THEN
5879: hr_utility.set_location (l_proc, 107.1);
5880: hr_utility.TRACE ('i:' || i);
5881: hr_utility.TRACE ( 'g_parent_to_re_explode(i).parent_id:'
5882: || g_parent_to_re_explode (i).parent_id
5883: );
5884: hr_utility.set_location (l_proc, 107.2);
5877: IF g_debug
5878: THEN
5879: hr_utility.set_location (l_proc, 107.1);
5880: hr_utility.TRACE ('i:' || i);
5881: hr_utility.TRACE ( 'g_parent_to_re_explode(i).parent_id:'
5882: || g_parent_to_re_explode (i).parent_id
5883: );
5884: hr_utility.set_location (l_proc, 107.2);
5885: END IF;
5880: hr_utility.TRACE ('i:' || i);
5881: hr_utility.TRACE ( 'g_parent_to_re_explode(i).parent_id:'
5882: || g_parent_to_re_explode (i).parent_id
5883: );
5884: hr_utility.set_location (l_proc, 107.2);
5885: END IF;
5886:
5887: i := g_parent_to_re_explode.NEXT (i);
5888: END LOOP;
5888: END LOOP;
5889:
5890: IF g_debug
5891: THEN
5892: hr_utility.TRACE ('END FYI');
5893: hr_utility.set_location (l_proc, 107.3);
5894: hr_utility.TRACE ( 'g_parent_to_re_explode.count:'
5895: || g_parent_to_re_explode.COUNT
5896: );
5889:
5890: IF g_debug
5891: THEN
5892: hr_utility.TRACE ('END FYI');
5893: hr_utility.set_location (l_proc, 107.3);
5894: hr_utility.TRACE ( 'g_parent_to_re_explode.count:'
5895: || g_parent_to_re_explode.COUNT
5896: );
5897: END IF;
5890: IF g_debug
5891: THEN
5892: hr_utility.TRACE ('END FYI');
5893: hr_utility.set_location (l_proc, 107.3);
5894: hr_utility.TRACE ( 'g_parent_to_re_explode.count:'
5895: || g_parent_to_re_explode.COUNT
5896: );
5897: END IF;
5898:
5902: EXIT WHEN NOT g_parent_to_re_explode.EXISTS (j);
5903:
5904: IF g_debug
5905: THEN
5906: hr_utility.set_location (l_proc, 107.4);
5907: hr_utility.TRACE ('j:' || j);
5908: hr_utility.TRACE ( 'g_parent_to_re_explode(j).parent_id:'
5909: || g_parent_to_re_explode (j).parent_id
5910: );
5903:
5904: IF g_debug
5905: THEN
5906: hr_utility.set_location (l_proc, 107.4);
5907: hr_utility.TRACE ('j:' || j);
5908: hr_utility.TRACE ( 'g_parent_to_re_explode(j).parent_id:'
5909: || g_parent_to_re_explode (j).parent_id
5910: );
5911: END IF;
5904: IF g_debug
5905: THEN
5906: hr_utility.set_location (l_proc, 107.4);
5907: hr_utility.TRACE ('j:' || j);
5908: hr_utility.TRACE ( 'g_parent_to_re_explode(j).parent_id:'
5909: || g_parent_to_re_explode (j).parent_id
5910: );
5911: END IF;
5912:
5913: IF g_re_explode_detail.COUNT > 0
5914: THEN
5915: IF g_debug
5916: THEN
5917: hr_utility.set_location (l_proc, 107.5);
5918: END IF;
5919:
5920: -- Bug 8540828
5921: -- Not connected here, but the change is made.
5972: END LOOP;
5973: */
5974: IF g_debug
5975: THEN
5976: hr_utility.TRACE
5977: ('Deleting g_re_explode_detail PL/SQL table');
5978: END IF;
5979:
5980: g_re_explode_detail.DELETE;
5981: END IF;
5982:
5983: IF g_debug
5984: THEN
5985: hr_utility.set_location (l_proc, 107.6);
5986: END IF;
5987:
5988: -- Populate the g_re_explode_detail plsql table with the details of
5989: -- the rows that need to be re-exploded
5990: OPEN re_explode_details (g_parent_to_re_explode (j).parent_id,g_det_session_date);
5991:
5992: IF g_debug
5993: THEN
5994: hr_utility.set_location (l_proc, 107.61);
5995: END IF;
5996:
5997: LOOP
5998: FETCH re_explode_details
6001: EXIT WHEN re_explode_details%NOTFOUND;
6002:
6003: IF g_debug
6004: THEN
6005: hr_utility.set_location (l_proc, 108);
6006: END IF;
6007:
6008: l_next_index := g_re_explode_detail.COUNT + 1;
6009:
6030:
6031:
6032: IF g_debug
6033: THEN
6034: hr_utility.TRACE ('l_next_index:' || l_next_index);
6035: END IF;
6036:
6037: g_re_explode_detail (l_next_index).earn_pol_id :=
6038: l_re_explode_details.earn_pol_id;
6107: END LOOP; -- end populating g_re_explode_detail plsql table
6108:
6109: IF g_debug
6110: THEN
6111: hr_utility.set_location (l_proc, 109);
6112: END IF;
6113:
6114: CLOSE re_explode_details;
6115:
6114: CLOSE re_explode_details;
6115:
6116: IF g_debug
6117: THEN
6118: hr_utility.set_location (l_proc, 109.1);
6119: hr_utility.TRACE ('parent_id:' || l_reg_hrs_cur.parent_id);
6120: END IF;
6121:
6122: -- Clear all the detail records for l_reg_hrs_cur.parent_id
6115:
6116: IF g_debug
6117: THEN
6118: hr_utility.set_location (l_proc, 109.1);
6119: hr_utility.TRACE ('parent_id:' || l_reg_hrs_cur.parent_id);
6120: END IF;
6121:
6122: -- Clear all the detail records for l_reg_hrs_cur.parent_id
6123: -- Bug 7359347
6142: -- You need to loop only if g_debug is enabled.
6143: -- Neednt loop, and then check inside the loop each time.
6144: IF g_debug
6145: THEN
6146: hr_utility.TRACE ('FYI');
6147: k := g_re_explode_detail.FIRST;
6148:
6149: LOOP
6150: EXIT WHEN NOT g_re_explode_detail.EXISTS (k);
6148:
6149: LOOP
6150: EXIT WHEN NOT g_re_explode_detail.EXISTS (k);
6151:
6152: hr_utility.set_location (l_proc, 109.2);
6153: hr_utility.TRACE ('k:' || k);
6154: hr_utility.TRACE ( 'g_re_explode_detail(k).earn_pol_id:'
6155: || g_re_explode_detail (k).earn_pol_id
6156: );
6149: LOOP
6150: EXIT WHEN NOT g_re_explode_detail.EXISTS (k);
6151:
6152: hr_utility.set_location (l_proc, 109.2);
6153: hr_utility.TRACE ('k:' || k);
6154: hr_utility.TRACE ( 'g_re_explode_detail(k).earn_pol_id:'
6155: || g_re_explode_detail (k).earn_pol_id
6156: );
6157: hr_utility.TRACE ( 'g_re_explode_detail(k).parent_id:'
6150: EXIT WHEN NOT g_re_explode_detail.EXISTS (k);
6151:
6152: hr_utility.set_location (l_proc, 109.2);
6153: hr_utility.TRACE ('k:' || k);
6154: hr_utility.TRACE ( 'g_re_explode_detail(k).earn_pol_id:'
6155: || g_re_explode_detail (k).earn_pol_id
6156: );
6157: hr_utility.TRACE ( 'g_re_explode_detail(k).parent_id:'
6158: || g_re_explode_detail (k).parent_id
6153: hr_utility.TRACE ('k:' || k);
6154: hr_utility.TRACE ( 'g_re_explode_detail(k).earn_pol_id:'
6155: || g_re_explode_detail (k).earn_pol_id
6156: );
6157: hr_utility.TRACE ( 'g_re_explode_detail(k).parent_id:'
6158: || g_re_explode_detail (k).parent_id
6159: );
6160: hr_utility.TRACE ( 'g_re_explode_detail(k).tim_id:'
6161: || g_re_explode_detail (k).tim_id
6156: );
6157: hr_utility.TRACE ( 'g_re_explode_detail(k).parent_id:'
6158: || g_re_explode_detail (k).parent_id
6159: );
6160: hr_utility.TRACE ( 'g_re_explode_detail(k).tim_id:'
6161: || g_re_explode_detail (k).tim_id
6162: );
6163: hr_utility.TRACE ( 'g_re_explode_detail(k).date_worked:'
6164: || g_re_explode_detail (k).date_worked
6159: );
6160: hr_utility.TRACE ( 'g_re_explode_detail(k).tim_id:'
6161: || g_re_explode_detail (k).tim_id
6162: );
6163: hr_utility.TRACE ( 'g_re_explode_detail(k).date_worked:'
6164: || g_re_explode_detail (k).date_worked
6165: );
6166: hr_utility.TRACE ( 'g_re_explode_detail(k).assignment_id:'
6167: || g_re_explode_detail (k).assignment_id
6162: );
6163: hr_utility.TRACE ( 'g_re_explode_detail(k).date_worked:'
6164: || g_re_explode_detail (k).date_worked
6165: );
6166: hr_utility.TRACE ( 'g_re_explode_detail(k).assignment_id:'
6167: || g_re_explode_detail (k).assignment_id
6168: );
6169: hr_utility.TRACE ( 'g_re_explode_detail(k).hours:'
6170: || g_re_explode_detail (k).hours
6165: );
6166: hr_utility.TRACE ( 'g_re_explode_detail(k).assignment_id:'
6167: || g_re_explode_detail (k).assignment_id
6168: );
6169: hr_utility.TRACE ( 'g_re_explode_detail(k).hours:'
6170: || g_re_explode_detail (k).hours
6171: );
6172: hr_utility.TRACE ( 'g_re_explode_detail(k).time_in:'
6173: || TO_CHAR
6168: );
6169: hr_utility.TRACE ( 'g_re_explode_detail(k).hours:'
6170: || g_re_explode_detail (k).hours
6171: );
6172: hr_utility.TRACE ( 'g_re_explode_detail(k).time_in:'
6173: || TO_CHAR
6174: (g_re_explode_detail (k).time_in,
6175: 'DD-MON-YYYY HH24:MI:SS'
6176: )
6174: (g_re_explode_detail (k).time_in,
6175: 'DD-MON-YYYY HH24:MI:SS'
6176: )
6177: );
6178: hr_utility.TRACE ( 'g_re_explode_detail(k).time_out:'
6179: || TO_CHAR
6180: (g_re_explode_detail (k).time_out,
6181: 'DD-MON-YYYY HH24:MI:SS'
6182: )
6180: (g_re_explode_detail (k).time_out,
6181: 'DD-MON-YYYY HH24:MI:SS'
6182: )
6183: );
6184: hr_utility.TRACE
6185: ( 'g_re_explode_detail(k).element_type_id:'
6186: || g_re_explode_detail (k).element_type_id
6187: );
6188: hr_utility.TRACE
6184: hr_utility.TRACE
6185: ( 'g_re_explode_detail(k).element_type_id:'
6186: || g_re_explode_detail (k).element_type_id
6187: );
6188: hr_utility.TRACE
6189: ( 'g_re_explode_detail(k).fcl_earn_reason_code:'
6190: || g_re_explode_detail (k).fcl_earn_reason_code
6191: );
6192: hr_utility.TRACE
6188: hr_utility.TRACE
6189: ( 'g_re_explode_detail(k).fcl_earn_reason_code:'
6190: || g_re_explode_detail (k).fcl_earn_reason_code
6191: );
6192: hr_utility.TRACE
6193: ( 'g_re_explode_detail(k).ffv_cost_center_id:'
6194: || g_re_explode_detail (k).ffv_cost_center_id
6195: );
6196: hr_utility.TRACE ( 'g_re_explode_detail(k).tas_id:'
6192: hr_utility.TRACE
6193: ( 'g_re_explode_detail(k).ffv_cost_center_id:'
6194: || g_re_explode_detail (k).ffv_cost_center_id
6195: );
6196: hr_utility.TRACE ( 'g_re_explode_detail(k).tas_id:'
6197: || g_re_explode_detail (k).tas_id
6198: );
6199: hr_utility.TRACE ( 'g_re_explode_detail(k).location_id:'
6200: || g_re_explode_detail (k).location_id
6195: );
6196: hr_utility.TRACE ( 'g_re_explode_detail(k).tas_id:'
6197: || g_re_explode_detail (k).tas_id
6198: );
6199: hr_utility.TRACE ( 'g_re_explode_detail(k).location_id:'
6200: || g_re_explode_detail (k).location_id
6201: );
6202: hr_utility.TRACE ( 'g_re_explode_detail(k).sht_id:'
6203: || g_re_explode_detail (k).sht_id
6198: );
6199: hr_utility.TRACE ( 'g_re_explode_detail(k).location_id:'
6200: || g_re_explode_detail (k).location_id
6201: );
6202: hr_utility.TRACE ( 'g_re_explode_detail(k).sht_id:'
6203: || g_re_explode_detail (k).sht_id
6204: );
6205: hr_utility.TRACE ( 'g_re_explode_detail(k).hrw_comment:'
6206: || g_re_explode_detail (k).hrw_comment
6201: );
6202: hr_utility.TRACE ( 'g_re_explode_detail(k).sht_id:'
6203: || g_re_explode_detail (k).sht_id
6204: );
6205: hr_utility.TRACE ( 'g_re_explode_detail(k).hrw_comment:'
6206: || g_re_explode_detail (k).hrw_comment
6207: );
6208: hr_utility.TRACE
6209: ( 'g_re_explode_detail(k).ffv_rate_code_id:'
6204: );
6205: hr_utility.TRACE ( 'g_re_explode_detail(k).hrw_comment:'
6206: || g_re_explode_detail (k).hrw_comment
6207: );
6208: hr_utility.TRACE
6209: ( 'g_re_explode_detail(k).ffv_rate_code_id:'
6210: || g_re_explode_detail (k).ffv_rate_code_id
6211: );
6212: hr_utility.TRACE ( 'g_re_explode_detail(k).rate_multiple:'
6208: hr_utility.TRACE
6209: ( 'g_re_explode_detail(k).ffv_rate_code_id:'
6210: || g_re_explode_detail (k).ffv_rate_code_id
6211: );
6212: hr_utility.TRACE ( 'g_re_explode_detail(k).rate_multiple:'
6213: || g_re_explode_detail (k).rate_multiple
6214: );
6215: hr_utility.TRACE ( 'g_re_explode_detail(k).hourly_rate:'
6216: || g_re_explode_detail (k).hourly_rate
6211: );
6212: hr_utility.TRACE ( 'g_re_explode_detail(k).rate_multiple:'
6213: || g_re_explode_detail (k).rate_multiple
6214: );
6215: hr_utility.TRACE ( 'g_re_explode_detail(k).hourly_rate:'
6216: || g_re_explode_detail (k).hourly_rate
6217: );
6218: hr_utility.TRACE ( 'g_re_explode_detail(k).amount:'
6219: || g_re_explode_detail (k).amount
6214: );
6215: hr_utility.TRACE ( 'g_re_explode_detail(k).hourly_rate:'
6216: || g_re_explode_detail (k).hourly_rate
6217: );
6218: hr_utility.TRACE ( 'g_re_explode_detail(k).amount:'
6219: || g_re_explode_detail (k).amount
6220: );
6221: hr_utility.TRACE
6222: ( 'g_re_explode_detail(k).fcl_tax_rule_code:'
6217: );
6218: hr_utility.TRACE ( 'g_re_explode_detail(k).amount:'
6219: || g_re_explode_detail (k).amount
6220: );
6221: hr_utility.TRACE
6222: ( 'g_re_explode_detail(k).fcl_tax_rule_code:'
6223: || g_re_explode_detail (k).fcl_tax_rule_code
6224: );
6225: hr_utility.TRACE
6221: hr_utility.TRACE
6222: ( 'g_re_explode_detail(k).fcl_tax_rule_code:'
6223: || g_re_explode_detail (k).fcl_tax_rule_code
6224: );
6225: hr_utility.TRACE
6226: ( 'g_re_explode_detail(k).separate_check_flag:'
6227: || g_re_explode_detail (k).separate_check_flag
6228: );
6229: hr_utility.TRACE ( 'g_re_explode_detail(k).seqno:'
6225: hr_utility.TRACE
6226: ( 'g_re_explode_detail(k).separate_check_flag:'
6227: || g_re_explode_detail (k).separate_check_flag
6228: );
6229: hr_utility.TRACE ( 'g_re_explode_detail(k).seqno:'
6230: || g_re_explode_detail (k).seqno
6231: );
6232: hr_utility.TRACE ( 'g_re_explode_detail(k).created_by:'
6233: || g_re_explode_detail (k).created_by
6228: );
6229: hr_utility.TRACE ( 'g_re_explode_detail(k).seqno:'
6230: || g_re_explode_detail (k).seqno
6231: );
6232: hr_utility.TRACE ( 'g_re_explode_detail(k).created_by:'
6233: || g_re_explode_detail (k).created_by
6234: );
6235: hr_utility.TRACE ( 'g_re_explode_detail(k).creation_date:'
6236: || g_re_explode_detail (k).creation_date
6231: );
6232: hr_utility.TRACE ( 'g_re_explode_detail(k).created_by:'
6233: || g_re_explode_detail (k).created_by
6234: );
6235: hr_utility.TRACE ( 'g_re_explode_detail(k).creation_date:'
6236: || g_re_explode_detail (k).creation_date
6237: );
6238: hr_utility.TRACE
6239: ( 'g_re_explode_detail(k).last_updated_by:'
6234: );
6235: hr_utility.TRACE ( 'g_re_explode_detail(k).creation_date:'
6236: || g_re_explode_detail (k).creation_date
6237: );
6238: hr_utility.TRACE
6239: ( 'g_re_explode_detail(k).last_updated_by:'
6240: || g_re_explode_detail (k).last_updated_by
6241: );
6242: hr_utility.TRACE
6238: hr_utility.TRACE
6239: ( 'g_re_explode_detail(k).last_updated_by:'
6240: || g_re_explode_detail (k).last_updated_by
6241: );
6242: hr_utility.TRACE
6243: ( 'g_re_explode_detail(k).last_update_date:'
6244: || g_re_explode_detail (k).last_update_date
6245: );
6246: hr_utility.TRACE
6242: hr_utility.TRACE
6243: ( 'g_re_explode_detail(k).last_update_date:'
6244: || g_re_explode_detail (k).last_update_date
6245: );
6246: hr_utility.TRACE
6247: ( 'g_re_explode_detail(k).last_update_login:'
6248: || g_re_explode_detail (k).last_update_login
6249: );
6250: hr_utility.TRACE
6246: hr_utility.TRACE
6247: ( 'g_re_explode_detail(k).last_update_login:'
6248: || g_re_explode_detail (k).last_update_login
6249: );
6250: hr_utility.TRACE
6251: ( 'g_re_explode_detail(k).effective_start_date:'
6252: || g_re_explode_detail (k).effective_start_date
6253: );
6254: hr_utility.TRACE
6250: hr_utility.TRACE
6251: ( 'g_re_explode_detail(k).effective_start_date:'
6252: || g_re_explode_detail (k).effective_start_date
6253: );
6254: hr_utility.TRACE
6255: ( 'g_re_explode_detail(k).effective_end_date:'
6256: || g_re_explode_detail (k).effective_end_date
6257: );
6258: hr_utility.TRACE ( 'g_re_explode_detail(k).project_id:'
6254: hr_utility.TRACE
6255: ( 'g_re_explode_detail(k).effective_end_date:'
6256: || g_re_explode_detail (k).effective_end_date
6257: );
6258: hr_utility.TRACE ( 'g_re_explode_detail(k).project_id:'
6259: || g_re_explode_detail (k).project_id
6260: );
6261: hr_utility.TRACE ( 'g_re_explode_detail(k).job_id:'
6262: || g_re_explode_detail (k).job_id
6257: );
6258: hr_utility.TRACE ( 'g_re_explode_detail(k).project_id:'
6259: || g_re_explode_detail (k).project_id
6260: );
6261: hr_utility.TRACE ( 'g_re_explode_detail(k).job_id:'
6262: || g_re_explode_detail (k).job_id
6263: );
6264: hr_utility.set_location (l_proc, 109.22);
6265:
6260: );
6261: hr_utility.TRACE ( 'g_re_explode_detail(k).job_id:'
6262: || g_re_explode_detail (k).job_id
6263: );
6264: hr_utility.set_location (l_proc, 109.22);
6265:
6266: k := g_re_explode_detail.NEXT (k);
6267: END LOOP;
6268:
6265:
6266: k := g_re_explode_detail.NEXT (k);
6267: END LOOP;
6268:
6269: hr_utility.TRACE ('END FYI');
6270: hr_utility.set_location (l_proc, 109.23);
6271: hr_utility.TRACE ( 'g_re_explode_detail.count:'
6272: || g_re_explode_detail.COUNT
6273: );
6266: k := g_re_explode_detail.NEXT (k);
6267: END LOOP;
6268:
6269: hr_utility.TRACE ('END FYI');
6270: hr_utility.set_location (l_proc, 109.23);
6271: hr_utility.TRACE ( 'g_re_explode_detail.count:'
6272: || g_re_explode_detail.COUNT
6273: );
6274: END IF;
6267: END LOOP;
6268:
6269: hr_utility.TRACE ('END FYI');
6270: hr_utility.set_location (l_proc, 109.23);
6271: hr_utility.TRACE ( 'g_re_explode_detail.count:'
6272: || g_re_explode_detail.COUNT
6273: );
6274: END IF;
6275:
6280: EXIT WHEN NOT g_re_explode_detail.EXISTS (l_re_explode);
6281:
6282: IF g_debug
6283: THEN
6284: hr_utility.set_location (l_proc, 109.3);
6285: hr_utility.TRACE ('l_re_explode:' || l_re_explode);
6286: hr_utility.TRACE
6287: ( 'g_re_explode_detail(l_re_explode).earn_pol_id:'
6288: || g_re_explode_detail (l_re_explode).earn_pol_id
6281:
6282: IF g_debug
6283: THEN
6284: hr_utility.set_location (l_proc, 109.3);
6285: hr_utility.TRACE ('l_re_explode:' || l_re_explode);
6286: hr_utility.TRACE
6287: ( 'g_re_explode_detail(l_re_explode).earn_pol_id:'
6288: || g_re_explode_detail (l_re_explode).earn_pol_id
6289: );
6282: IF g_debug
6283: THEN
6284: hr_utility.set_location (l_proc, 109.3);
6285: hr_utility.TRACE ('l_re_explode:' || l_re_explode);
6286: hr_utility.TRACE
6287: ( 'g_re_explode_detail(l_re_explode).earn_pol_id:'
6288: || g_re_explode_detail (l_re_explode).earn_pol_id
6289: );
6290: hr_utility.TRACE
6286: hr_utility.TRACE
6287: ( 'g_re_explode_detail(l_re_explode).earn_pol_id:'
6288: || g_re_explode_detail (l_re_explode).earn_pol_id
6289: );
6290: hr_utility.TRACE
6291: ( 'g_re_explode_detail(l_re_explode).parent_id:'
6292: || g_re_explode_detail (l_re_explode).parent_id
6293: );
6294: hr_utility.TRACE
6290: hr_utility.TRACE
6291: ( 'g_re_explode_detail(l_re_explode).parent_id:'
6292: || g_re_explode_detail (l_re_explode).parent_id
6293: );
6294: hr_utility.TRACE
6295: ( 'g_re_explode_detail(l_re_explode).tim_id:'
6296: || g_re_explode_detail (l_re_explode).tim_id
6297: );
6298: hr_utility.TRACE
6294: hr_utility.TRACE
6295: ( 'g_re_explode_detail(l_re_explode).tim_id:'
6296: || g_re_explode_detail (l_re_explode).tim_id
6297: );
6298: hr_utility.TRACE
6299: ( 'g_re_explode_detail(l_re_explode).date_worked:'
6300: || g_re_explode_detail (l_re_explode).date_worked
6301: );
6302: hr_utility.TRACE
6298: hr_utility.TRACE
6299: ( 'g_re_explode_detail(l_re_explode).date_worked:'
6300: || g_re_explode_detail (l_re_explode).date_worked
6301: );
6302: hr_utility.TRACE
6303: ( 'g_re_explode_detail(l_re_explode).assignment_id:'
6304: || g_re_explode_detail (l_re_explode).assignment_id
6305: );
6306: hr_utility.TRACE
6302: hr_utility.TRACE
6303: ( 'g_re_explode_detail(l_re_explode).assignment_id:'
6304: || g_re_explode_detail (l_re_explode).assignment_id
6305: );
6306: hr_utility.TRACE
6307: ( 'g_re_explode_detail(l_re_explode).hours:'
6308: || g_re_explode_detail (l_re_explode).hours
6309: );
6310: hr_utility.TRACE
6306: hr_utility.TRACE
6307: ( 'g_re_explode_detail(l_re_explode).hours:'
6308: || g_re_explode_detail (l_re_explode).hours
6309: );
6310: hr_utility.TRACE
6311: ( 'g_re_explode_detail(l_re_explode).time_in:'
6312: || TO_CHAR
6313: (g_re_explode_detail (l_re_explode).time_in,
6314: 'DD-MON-YYYY HH24:MI:SS'
6313: (g_re_explode_detail (l_re_explode).time_in,
6314: 'DD-MON-YYYY HH24:MI:SS'
6315: )
6316: );
6317: hr_utility.TRACE
6318: ( 'g_re_explode_detail(l_re_explode).time_out:'
6319: || TO_CHAR
6320: (g_re_explode_detail (l_re_explode).time_out,
6321: 'DD-MON-YYYY HH24:MI:SS'
6320: (g_re_explode_detail (l_re_explode).time_out,
6321: 'DD-MON-YYYY HH24:MI:SS'
6322: )
6323: );
6324: hr_utility.TRACE
6325: ( 'g_re_explode_detail(l_re_explode).element_type_id:'
6326: || g_re_explode_detail (l_re_explode).element_type_id
6327: );
6328: hr_utility.TRACE
6324: hr_utility.TRACE
6325: ( 'g_re_explode_detail(l_re_explode).element_type_id:'
6326: || g_re_explode_detail (l_re_explode).element_type_id
6327: );
6328: hr_utility.TRACE
6329: ( 'g_re_explode_detail(l_re_explode).fcl_earn_reason_code:'
6330: || g_re_explode_detail (l_re_explode).fcl_earn_reason_code
6331: );
6332: hr_utility.TRACE
6328: hr_utility.TRACE
6329: ( 'g_re_explode_detail(l_re_explode).fcl_earn_reason_code:'
6330: || g_re_explode_detail (l_re_explode).fcl_earn_reason_code
6331: );
6332: hr_utility.TRACE
6333: ( 'g_re_explode_detail(l_re_explode).ffv_cost_center_id:'
6334: || g_re_explode_detail (l_re_explode).ffv_cost_center_id
6335: );
6336: hr_utility.TRACE
6332: hr_utility.TRACE
6333: ( 'g_re_explode_detail(l_re_explode).ffv_cost_center_id:'
6334: || g_re_explode_detail (l_re_explode).ffv_cost_center_id
6335: );
6336: hr_utility.TRACE
6337: ( 'g_re_explode_detail(l_re_explode).tas_id:'
6338: || g_re_explode_detail (l_re_explode).tas_id
6339: );
6340: hr_utility.TRACE
6336: hr_utility.TRACE
6337: ( 'g_re_explode_detail(l_re_explode).tas_id:'
6338: || g_re_explode_detail (l_re_explode).tas_id
6339: );
6340: hr_utility.TRACE
6341: ( 'g_re_explode_detail(l_re_explode).location_id:'
6342: || g_re_explode_detail (l_re_explode).location_id
6343: );
6344: hr_utility.TRACE
6340: hr_utility.TRACE
6341: ( 'g_re_explode_detail(l_re_explode).location_id:'
6342: || g_re_explode_detail (l_re_explode).location_id
6343: );
6344: hr_utility.TRACE
6345: ( 'g_re_explode_detail(l_re_explode).sht_id:'
6346: || g_re_explode_detail (l_re_explode).sht_id
6347: );
6348: hr_utility.TRACE
6344: hr_utility.TRACE
6345: ( 'g_re_explode_detail(l_re_explode).sht_id:'
6346: || g_re_explode_detail (l_re_explode).sht_id
6347: );
6348: hr_utility.TRACE
6349: ( 'g_re_explode_detail(l_re_explode).hrw_comment:'
6350: || g_re_explode_detail (l_re_explode).hrw_comment
6351: );
6352: hr_utility.TRACE
6348: hr_utility.TRACE
6349: ( 'g_re_explode_detail(l_re_explode).hrw_comment:'
6350: || g_re_explode_detail (l_re_explode).hrw_comment
6351: );
6352: hr_utility.TRACE
6353: ( 'g_re_explode_detail(l_re_explode).ffv_rate_code_id:'
6354: || g_re_explode_detail (l_re_explode).ffv_rate_code_id
6355: );
6356: hr_utility.TRACE
6352: hr_utility.TRACE
6353: ( 'g_re_explode_detail(l_re_explode).ffv_rate_code_id:'
6354: || g_re_explode_detail (l_re_explode).ffv_rate_code_id
6355: );
6356: hr_utility.TRACE
6357: ( 'g_re_explode_detail(l_re_explode).rate_multiple:'
6358: || g_re_explode_detail (l_re_explode).rate_multiple
6359: );
6360: hr_utility.TRACE
6356: hr_utility.TRACE
6357: ( 'g_re_explode_detail(l_re_explode).rate_multiple:'
6358: || g_re_explode_detail (l_re_explode).rate_multiple
6359: );
6360: hr_utility.TRACE
6361: ( 'g_re_explode_detail(l_re_explode).hourly_rate:'
6362: || g_re_explode_detail (l_re_explode).hourly_rate
6363: );
6364: hr_utility.TRACE
6360: hr_utility.TRACE
6361: ( 'g_re_explode_detail(l_re_explode).hourly_rate:'
6362: || g_re_explode_detail (l_re_explode).hourly_rate
6363: );
6364: hr_utility.TRACE
6365: ( 'g_re_explode_detail(l_re_explode).amount:'
6366: || g_re_explode_detail (l_re_explode).amount
6367: );
6368: hr_utility.TRACE
6364: hr_utility.TRACE
6365: ( 'g_re_explode_detail(l_re_explode).amount:'
6366: || g_re_explode_detail (l_re_explode).amount
6367: );
6368: hr_utility.TRACE
6369: ( 'g_re_explode_detail(l_re_explode).fcl_tax_rule_code:'
6370: || g_re_explode_detail (l_re_explode).fcl_tax_rule_code
6371: );
6372: hr_utility.TRACE
6368: hr_utility.TRACE
6369: ( 'g_re_explode_detail(l_re_explode).fcl_tax_rule_code:'
6370: || g_re_explode_detail (l_re_explode).fcl_tax_rule_code
6371: );
6372: hr_utility.TRACE
6373: ( 'g_re_explode_detail(l_re_explode).separate_check_flag:'
6374: || g_re_explode_detail (l_re_explode).separate_check_flag
6375: );
6376: hr_utility.TRACE
6372: hr_utility.TRACE
6373: ( 'g_re_explode_detail(l_re_explode).separate_check_flag:'
6374: || g_re_explode_detail (l_re_explode).separate_check_flag
6375: );
6376: hr_utility.TRACE
6377: ( 'g_re_explode_detail(l_re_explode).seqno:'
6378: || g_re_explode_detail (l_re_explode).seqno
6379: );
6380: hr_utility.TRACE
6376: hr_utility.TRACE
6377: ( 'g_re_explode_detail(l_re_explode).seqno:'
6378: || g_re_explode_detail (l_re_explode).seqno
6379: );
6380: hr_utility.TRACE
6381: ( 'g_re_explode_detail(l_re_explode).created_by:'
6382: || g_re_explode_detail (l_re_explode).created_by
6383: );
6384: hr_utility.TRACE
6380: hr_utility.TRACE
6381: ( 'g_re_explode_detail(l_re_explode).created_by:'
6382: || g_re_explode_detail (l_re_explode).created_by
6383: );
6384: hr_utility.TRACE
6385: ( 'g_re_explode_detail(l_re_explode).creation_date:'
6386: || g_re_explode_detail (l_re_explode).creation_date
6387: );
6388: hr_utility.TRACE
6384: hr_utility.TRACE
6385: ( 'g_re_explode_detail(l_re_explode).creation_date:'
6386: || g_re_explode_detail (l_re_explode).creation_date
6387: );
6388: hr_utility.TRACE
6389: ( 'g_re_explode_detail(l_re_explode).last_updated_by:'
6390: || g_re_explode_detail (l_re_explode).last_updated_by
6391: );
6392: hr_utility.TRACE
6388: hr_utility.TRACE
6389: ( 'g_re_explode_detail(l_re_explode).last_updated_by:'
6390: || g_re_explode_detail (l_re_explode).last_updated_by
6391: );
6392: hr_utility.TRACE
6393: ( 'g_re_explode_detail(l_re_explode).last_update_date:'
6394: || g_re_explode_detail (l_re_explode).last_update_date
6395: );
6396: hr_utility.TRACE
6392: hr_utility.TRACE
6393: ( 'g_re_explode_detail(l_re_explode).last_update_date:'
6394: || g_re_explode_detail (l_re_explode).last_update_date
6395: );
6396: hr_utility.TRACE
6397: ( 'g_re_explode_detail(l_re_explode).last_update_login:'
6398: || g_re_explode_detail (l_re_explode).last_update_login
6399: );
6400: hr_utility.TRACE
6396: hr_utility.TRACE
6397: ( 'g_re_explode_detail(l_re_explode).last_update_login:'
6398: || g_re_explode_detail (l_re_explode).last_update_login
6399: );
6400: hr_utility.TRACE
6401: ( 'g_re_explode_detail(l_re_explode).effective_start_date:'
6402: || g_re_explode_detail (l_re_explode).effective_start_date
6403: );
6404: hr_utility.TRACE
6400: hr_utility.TRACE
6401: ( 'g_re_explode_detail(l_re_explode).effective_start_date:'
6402: || g_re_explode_detail (l_re_explode).effective_start_date
6403: );
6404: hr_utility.TRACE
6405: ( 'g_re_explode_detail(l_re_explode).effective_end_date:'
6406: || g_re_explode_detail (l_re_explode).effective_end_date
6407: );
6408: hr_utility.TRACE
6404: hr_utility.TRACE
6405: ( 'g_re_explode_detail(l_re_explode).effective_end_date:'
6406: || g_re_explode_detail (l_re_explode).effective_end_date
6407: );
6408: hr_utility.TRACE
6409: ( 'g_re_explode_detail(l_re_explode).project_id:'
6410: || g_re_explode_detail (l_re_explode).project_id
6411: );
6412: hr_utility.TRACE
6408: hr_utility.TRACE
6409: ( 'g_re_explode_detail(l_re_explode).project_id:'
6410: || g_re_explode_detail (l_re_explode).project_id
6411: );
6412: hr_utility.TRACE
6413: ( 'g_re_explode_detail(l_re_explode).job_id:'
6414: || g_re_explode_detail (l_re_explode).job_id
6415: );
6416: END IF;
6495: );
6496:
6497: IF g_debug
6498: THEN
6499: hr_utility.set_location (l_proc, 109.4);
6500: hr_utility.TRACE ('l_status:' || l_status);
6501: END IF;
6502:
6503: IF l_status <> 0
6496:
6497: IF g_debug
6498: THEN
6499: hr_utility.set_location (l_proc, 109.4);
6500: hr_utility.TRACE ('l_status:' || l_status);
6501: END IF;
6502:
6503: IF l_status <> 0
6504: THEN
6503: IF l_status <> 0
6504: THEN
6505: IF g_debug
6506: THEN
6507: hr_utility.set_location (l_proc, 109.5);
6508: END IF;
6509:
6510: RETURN 3;
6511: END IF;
6511: END IF;
6512:
6513: IF g_debug
6514: THEN
6515: hr_utility.set_location (l_proc, 109.6);
6516: END IF;
6517:
6518: l_re_explode := g_re_explode_detail.NEXT (l_re_explode);
6519: END LOOP; -- g_re_explode_detail.first .. g_re_explode_detail.last
6523:
6524: -- g_parent_to_re_explode.first .. g_parent_to_re_explode.last
6525: IF g_debug
6526: THEN
6527: hr_utility.set_location (l_proc, 110);
6528: END IF;
6529:
6530: CLOSE reg_hrs_cur;
6531:
6530: CLOSE reg_hrs_cur;
6531:
6532: IF g_debug
6533: THEN
6534: hr_utility.set_location (l_proc, 120);
6535: END IF;
6536:
6537: RETURN 0;
6538: END adjust_abs_hrs_on_prev_days;
6714: BEGIN
6715: IF g_debug
6716: THEN
6717: l_proc := 'hxt_time_detail.adjust_for_absence';
6718: hr_utility.set_location (l_proc, 10);
6719: hr_utility.TRACE ('a_ep_id:' || a_ep_id);
6720: hr_utility.TRACE ( 'a_date_worked :'
6721: || TO_CHAR (a_date_worked,
6722: 'DD-MON-YYYY HH24:MI:SS'
6715: IF g_debug
6716: THEN
6717: l_proc := 'hxt_time_detail.adjust_for_absence';
6718: hr_utility.set_location (l_proc, 10);
6719: hr_utility.TRACE ('a_ep_id:' || a_ep_id);
6720: hr_utility.TRACE ( 'a_date_worked :'
6721: || TO_CHAR (a_date_worked,
6722: 'DD-MON-YYYY HH24:MI:SS'
6723: )
6716: THEN
6717: l_proc := 'hxt_time_detail.adjust_for_absence';
6718: hr_utility.set_location (l_proc, 10);
6719: hr_utility.TRACE ('a_ep_id:' || a_ep_id);
6720: hr_utility.TRACE ( 'a_date_worked :'
6721: || TO_CHAR (a_date_worked,
6722: 'DD-MON-YYYY HH24:MI:SS'
6723: )
6724: );
6725: END IF;
6726:
6727: IF g_ep_type = 'SPECIAL'
6728: THEN
6729: hr_utility.set_location (l_proc, 10.5);
6730:
6731: OPEN daily_earn_rules_cur2 (a_ep_id, a_date_worked);
6732:
6733: FETCH daily_earn_rules_cur2
6734: INTO l_first_daily_cap, l_first_daily_elem;
6735:
6736: IF g_debug
6737: THEN
6738: hr_utility.TRACE ('l_first_daily_cap :' || l_first_daily_cap);
6739: hr_utility.TRACE ('l_first_daily_elem:' || l_first_daily_elem);
6740: END IF;
6741:
6742: IF daily_earn_rules_cur2%FOUND
6735:
6736: IF g_debug
6737: THEN
6738: hr_utility.TRACE ('l_first_daily_cap :' || l_first_daily_cap);
6739: hr_utility.TRACE ('l_first_daily_elem:' || l_first_daily_elem);
6740: END IF;
6741:
6742: IF daily_earn_rules_cur2%FOUND
6743: THEN
6742: IF daily_earn_rules_cur2%FOUND
6743: THEN
6744: IF g_debug
6745: THEN
6746: hr_utility.set_location (l_proc, 11);
6747: END IF;
6748:
6749: FETCH daily_earn_rules_cur2
6750: INTO l_second_daily_cap, l_second_daily_elem;
6750: INTO l_second_daily_cap, l_second_daily_elem;
6751:
6752: IF g_debug
6753: THEN
6754: hr_utility.TRACE ( 'l_second_daily_cap :'
6755: || l_second_daily_cap
6756: );
6757: hr_utility.TRACE ( 'l_second_daily_elem:'
6758: || l_second_daily_elem
6753: THEN
6754: hr_utility.TRACE ( 'l_second_daily_cap :'
6755: || l_second_daily_cap
6756: );
6757: hr_utility.TRACE ( 'l_second_daily_elem:'
6758: || l_second_daily_elem
6759: );
6760: END IF;
6761:
6762: IF daily_earn_rules_cur2%FOUND
6763: THEN
6764: IF g_debug
6765: THEN
6766: hr_utility.set_location (l_proc, 12);
6767: END IF;
6768:
6769: FETCH daily_earn_rules_cur2
6770: INTO l_third_daily_cap, l_third_daily_elem;
6770: INTO l_third_daily_cap, l_third_daily_elem;
6771:
6772: IF g_debug
6773: THEN
6774: hr_utility.TRACE ( 'l_third_daily_cap :'
6775: || l_third_daily_cap
6776: );
6777: hr_utility.TRACE ( 'l_third_daily_elem:'
6778: || l_third_daily_elem
6773: THEN
6774: hr_utility.TRACE ( 'l_third_daily_cap :'
6775: || l_third_daily_cap
6776: );
6777: hr_utility.TRACE ( 'l_third_daily_elem:'
6778: || l_third_daily_elem
6779: );
6780: END IF;
6781:
6782: IF daily_earn_rules_cur2%FOUND
6783: THEN
6784: IF g_debug
6785: THEN
6786: hr_utility.set_location (l_proc, 13);
6787: END IF;
6788:
6789: NULL;
6790: ELSE
6789: NULL;
6790: ELSE
6791: IF g_debug
6792: THEN
6793: hr_utility.set_location (l_proc, 14);
6794: END IF;
6795:
6796: l_third_daily_cap := 999;
6797: END IF;
6797: END IF;
6798: ELSE
6799: IF g_debug
6800: THEN
6801: hr_utility.set_location (l_proc, 15);
6802: END IF;
6803:
6804: l_second_daily_cap := 999;
6805: END IF;
6805: END IF;
6806: ELSE
6807: IF g_debug
6808: THEN
6809: hr_utility.set_location (l_proc, 16);
6810: END IF;
6811:
6812: CLOSE daily_earn_rules_cur2;
6813:
6817: END IF;
6818:
6819: IF g_debug
6820: THEN
6821: hr_utility.set_location (l_proc, 20);
6822: END IF;
6823:
6824: CLOSE daily_earn_rules_cur2;
6825: END IF;
6830: INTO l_first_cap, l_first_elem;
6831:
6832: IF g_debug
6833: THEN
6834: hr_utility.TRACE ('l_first_cap :' || l_first_cap);
6835: hr_utility.TRACE ('l_first_elem:' || l_first_elem);
6836: END IF;
6837:
6838: IF weekly_earn_rules_cur2%FOUND
6831:
6832: IF g_debug
6833: THEN
6834: hr_utility.TRACE ('l_first_cap :' || l_first_cap);
6835: hr_utility.TRACE ('l_first_elem:' || l_first_elem);
6836: END IF;
6837:
6838: IF weekly_earn_rules_cur2%FOUND
6839: THEN
6838: IF weekly_earn_rules_cur2%FOUND
6839: THEN
6840: IF g_debug
6841: THEN
6842: hr_utility.set_location (l_proc, 25);
6843: END IF;
6844:
6845: FETCH weekly_earn_rules_cur2
6846: INTO l_second_cap, l_second_elem;
6846: INTO l_second_cap, l_second_elem;
6847:
6848: IF g_debug
6849: THEN
6850: hr_utility.TRACE ('l_second_cap :' || l_second_cap);
6851: hr_utility.TRACE ('l_second_elem:' || l_second_elem);
6852: END IF;
6853:
6854: IF weekly_earn_rules_cur2%FOUND
6847:
6848: IF g_debug
6849: THEN
6850: hr_utility.TRACE ('l_second_cap :' || l_second_cap);
6851: hr_utility.TRACE ('l_second_elem:' || l_second_elem);
6852: END IF;
6853:
6854: IF weekly_earn_rules_cur2%FOUND
6855: THEN
6854: IF weekly_earn_rules_cur2%FOUND
6855: THEN
6856: IF g_debug
6857: THEN
6858: hr_utility.set_location (l_proc, 30);
6859: END IF;
6860:
6861: FETCH weekly_earn_rules_cur2
6862: INTO l_third_cap, l_third_elem;
6862: INTO l_third_cap, l_third_elem;
6863:
6864: IF g_debug
6865: THEN
6866: hr_utility.TRACE ('l_third_cap :' || l_third_cap);
6867: hr_utility.TRACE ('l_third_elem:' || l_third_elem);
6868: END IF;
6869:
6870: IF weekly_earn_rules_cur2%FOUND
6863:
6864: IF g_debug
6865: THEN
6866: hr_utility.TRACE ('l_third_cap :' || l_third_cap);
6867: hr_utility.TRACE ('l_third_elem:' || l_third_elem);
6868: END IF;
6869:
6870: IF weekly_earn_rules_cur2%FOUND
6871: THEN
6870: IF weekly_earn_rules_cur2%FOUND
6871: THEN
6872: IF g_debug
6873: THEN
6874: hr_utility.set_location (l_proc, 40);
6875: END IF;
6876:
6877: NULL;
6878: ELSE
6877: NULL;
6878: ELSE
6879: IF g_debug
6880: THEN
6881: hr_utility.set_location (l_proc, 50);
6882: END IF;
6883:
6884: l_third_cap := 999;
6885: END IF;
6885: END IF;
6886: ELSE
6887: IF g_debug
6888: THEN
6889: hr_utility.set_location (l_proc, 60);
6890: END IF;
6891:
6892: l_second_cap := 999;
6893: END IF;
6893: END IF;
6894: ELSE
6895: IF g_debug
6896: THEN
6897: hr_utility.set_location (l_proc, 70);
6898: END IF;
6899:
6900: CLOSE weekly_earn_rules_cur2;
6901:
6905: END IF;
6906:
6907: IF g_debug
6908: THEN
6909: hr_utility.set_location (l_proc, 80);
6910: END IF;
6911:
6912: CLOSE weekly_earn_rules_cur2;
6913:
6926: -- l_earning_category := hxt_util.element_cat(g_element_type_id
6927: -- ,g_date_worked);
6928: IF g_debug
6929: THEN
6930: hr_utility.set_location (l_proc, 81);
6931: hr_utility.TRACE ('l_earning_category:' || l_earning_category);
6932: END IF;
6933:
6934: /* IF l_earning_category <> 'ABS' THEN
6927: -- ,g_date_worked);
6928: IF g_debug
6929: THEN
6930: hr_utility.set_location (l_proc, 81);
6931: hr_utility.TRACE ('l_earning_category:' || l_earning_category);
6932: END IF;
6933:
6934: /* IF l_earning_category <> 'ABS' THEN
6935: hr_utility.set_location(l_proc,82);
6931: hr_utility.TRACE ('l_earning_category:' || l_earning_category);
6932: END IF;
6933:
6934: /* IF l_earning_category <> 'ABS' THEN
6935: hr_utility.set_location(l_proc,82);
6936: l_tot_hours := get_weekly_total_to_date;
6937: ELSIF l_earning_category = 'ABS' THEN
6938: hr_utility.set_location(l_proc,83);
6939: OPEN get_wkl_tot_incl_non_abs_2day;
6934: /* IF l_earning_category <> 'ABS' THEN
6935: hr_utility.set_location(l_proc,82);
6936: l_tot_hours := get_weekly_total_to_date;
6937: ELSIF l_earning_category = 'ABS' THEN
6938: hr_utility.set_location(l_proc,83);
6939: OPEN get_wkl_tot_incl_non_abs_2day;
6940: FETCH get_wkl_tot_incl_non_abs_2day into l_tot_hours;
6941: CLOSE get_wkl_tot_incl_non_abs_2day;
6942: END IF; */
6941: CLOSE get_wkl_tot_incl_non_abs_2day;
6942: END IF; */
6943: IF g_debug
6944: THEN
6945: hr_utility.TRACE ('start_day_of_week:' || start_day_of_week);
6946: hr_utility.TRACE ('g_person_id :' || g_person_id);
6947: hr_utility.TRACE ('g_ep_id :' || g_ep_id);
6948: hr_utility.TRACE ('g_id(parent_id) :' || g_id);
6949: hr_utility.TRACE ( 'g_date_worked :'
6942: END IF; */
6943: IF g_debug
6944: THEN
6945: hr_utility.TRACE ('start_day_of_week:' || start_day_of_week);
6946: hr_utility.TRACE ('g_person_id :' || g_person_id);
6947: hr_utility.TRACE ('g_ep_id :' || g_ep_id);
6948: hr_utility.TRACE ('g_id(parent_id) :' || g_id);
6949: hr_utility.TRACE ( 'g_date_worked :'
6950: || TO_CHAR (g_date_worked, 'dd/mon/yy')
6943: IF g_debug
6944: THEN
6945: hr_utility.TRACE ('start_day_of_week:' || start_day_of_week);
6946: hr_utility.TRACE ('g_person_id :' || g_person_id);
6947: hr_utility.TRACE ('g_ep_id :' || g_ep_id);
6948: hr_utility.TRACE ('g_id(parent_id) :' || g_id);
6949: hr_utility.TRACE ( 'g_date_worked :'
6950: || TO_CHAR (g_date_worked, 'dd/mon/yy')
6951: );
6944: THEN
6945: hr_utility.TRACE ('start_day_of_week:' || start_day_of_week);
6946: hr_utility.TRACE ('g_person_id :' || g_person_id);
6947: hr_utility.TRACE ('g_ep_id :' || g_ep_id);
6948: hr_utility.TRACE ('g_id(parent_id) :' || g_id);
6949: hr_utility.TRACE ( 'g_date_worked :'
6950: || TO_CHAR (g_date_worked, 'dd/mon/yy')
6951: );
6952: END IF;
6945: hr_utility.TRACE ('start_day_of_week:' || start_day_of_week);
6946: hr_utility.TRACE ('g_person_id :' || g_person_id);
6947: hr_utility.TRACE ('g_ep_id :' || g_ep_id);
6948: hr_utility.TRACE ('g_id(parent_id) :' || g_id);
6949: hr_utility.TRACE ( 'g_date_worked :'
6950: || TO_CHAR (g_date_worked, 'dd/mon/yy')
6951: );
6952: END IF;
6953:
6961: CLOSE get_wkl_tot_incl_hrs_2day;
6962:
6963: IF g_debug
6964: THEN
6965: hr_utility.TRACE ('l_tot_hours :' || l_tot_hours);
6966: END IF;
6967:
6968: -- Bug 4444969 fix
6969: -- While processing a row, the g_hours(hrs entered on the row being
6976: l_tot_hours := l_tot_hours - g_hours;
6977:
6978: IF g_debug
6979: THEN
6980: hr_utility.TRACE ('l_tot_hours :' || l_tot_hours);
6981: hr_utility.TRACE ('l_first_cap :' || l_first_cap);
6982: hr_utility.TRACE ('g_hours :' || g_hours);
6983: END IF;
6984:
6977:
6978: IF g_debug
6979: THEN
6980: hr_utility.TRACE ('l_tot_hours :' || l_tot_hours);
6981: hr_utility.TRACE ('l_first_cap :' || l_first_cap);
6982: hr_utility.TRACE ('g_hours :' || g_hours);
6983: END IF;
6984:
6985: --If total weekly hours are less than the first weekly cap:
6978: IF g_debug
6979: THEN
6980: hr_utility.TRACE ('l_tot_hours :' || l_tot_hours);
6981: hr_utility.TRACE ('l_first_cap :' || l_first_cap);
6982: hr_utility.TRACE ('g_hours :' || g_hours);
6983: END IF;
6984:
6985: --If total weekly hours are less than the first weekly cap:
6986: IF l_tot_hours <= l_first_cap
6986: IF l_tot_hours <= l_first_cap
6987: THEN
6988: IF g_debug
6989: THEN
6990: hr_utility.set_location (l_proc, 90);
6991: END IF;
6992:
6993: IF (l_tot_hours + g_hours) <= l_first_cap
6994: THEN
6993: IF (l_tot_hours + g_hours) <= l_first_cap
6994: THEN
6995: IF g_debug
6996: THEN
6997: hr_utility.set_location (l_proc, 95);
6998: END IF;
6999:
7000: -- Nothing to adjust as per the Earning Policy's Weekly caps.
7001:
7015: -- but if it is a SPECIAL Earning Policy then check if any hours
7016: -- need to be adjusted based on Earning Policy's Daily caps.
7017:
7018: IF (l_first_cap - l_tot_hours) >= g_hours THEN
7019: hr_utility.set_location(l_proc,100);
7020: hr_utility.trace('l_first_daily_cap :'||l_first_daily_cap);
7021: hr_utility.trace('l_second_daily_cap :'||l_second_daily_cap);
7022: IF g_EP_TYPE = 'SPECIAL' THEN
7023: hr_utility.set_location(l_proc,105);
7016: -- need to be adjusted based on Earning Policy's Daily caps.
7017:
7018: IF (l_first_cap - l_tot_hours) >= g_hours THEN
7019: hr_utility.set_location(l_proc,100);
7020: hr_utility.trace('l_first_daily_cap :'||l_first_daily_cap);
7021: hr_utility.trace('l_second_daily_cap :'||l_second_daily_cap);
7022: IF g_EP_TYPE = 'SPECIAL' THEN
7023: hr_utility.set_location(l_proc,105);
7024: IF g_hours <= l_first_daily_cap THEN
7017:
7018: IF (l_first_cap - l_tot_hours) >= g_hours THEN
7019: hr_utility.set_location(l_proc,100);
7020: hr_utility.trace('l_first_daily_cap :'||l_first_daily_cap);
7021: hr_utility.trace('l_second_daily_cap :'||l_second_daily_cap);
7022: IF g_EP_TYPE = 'SPECIAL' THEN
7023: hr_utility.set_location(l_proc,105);
7024: IF g_hours <= l_first_daily_cap THEN
7025: hr_utility.set_location(l_proc,110);
7019: hr_utility.set_location(l_proc,100);
7020: hr_utility.trace('l_first_daily_cap :'||l_first_daily_cap);
7021: hr_utility.trace('l_second_daily_cap :'||l_second_daily_cap);
7022: IF g_EP_TYPE = 'SPECIAL' THEN
7023: hr_utility.set_location(l_proc,105);
7024: IF g_hours <= l_first_daily_cap THEN
7025: hr_utility.set_location(l_proc,110);
7026: -- Nothing to adjust as per daily caps.
7027: l_hours_left := 0;
7021: hr_utility.trace('l_second_daily_cap :'||l_second_daily_cap);
7022: IF g_EP_TYPE = 'SPECIAL' THEN
7023: hr_utility.set_location(l_proc,105);
7024: IF g_hours <= l_first_daily_cap THEN
7025: hr_utility.set_location(l_proc,110);
7026: -- Nothing to adjust as per daily caps.
7027: l_hours_left := 0;
7028: ELSIF l_first_daily_cap < g_hours AND
7029: g_hours <= l_second_daily_cap THEN
7026: -- Nothing to adjust as per daily caps.
7027: l_hours_left := 0;
7028: ELSIF l_first_daily_cap < g_hours AND
7029: g_hours <= l_second_daily_cap THEN
7030: hr_utility.set_location(l_proc,115);
7031: l_hours_left := g_hours -l_first_daily_cap;
7032: hr_utility.trace('l_hours_left :'||l_hours_left);
7033: l_error_return := adjust_abs_hrs_on_prev_days
7034: (a_tim_id
7028: ELSIF l_first_daily_cap < g_hours AND
7029: g_hours <= l_second_daily_cap THEN
7030: hr_utility.set_location(l_proc,115);
7031: l_hours_left := g_hours -l_first_daily_cap;
7032: hr_utility.trace('l_hours_left :'||l_hours_left);
7033: l_error_return := adjust_abs_hrs_on_prev_days
7034: (a_tim_id
7035: ,a_date_worked
7036: ,l_tot_hours
7035: ,a_date_worked
7036: ,l_tot_hours
7037: ,l_hours_left
7038: ,l_second_elem);
7039: hr_utility.set_location(l_proc,120);
7040: hr_utility.trace('l_error_return :'||l_error_return);
7041: ELSIF l_second_daily_cap < g_hours THEN
7042: hr_utility.set_location(l_proc,125);
7043: l_hours_left := g_hours - l_second_daily_cap;
7036: ,l_tot_hours
7037: ,l_hours_left
7038: ,l_second_elem);
7039: hr_utility.set_location(l_proc,120);
7040: hr_utility.trace('l_error_return :'||l_error_return);
7041: ELSIF l_second_daily_cap < g_hours THEN
7042: hr_utility.set_location(l_proc,125);
7043: l_hours_left := g_hours - l_second_daily_cap;
7044: hr_utility.trace('l_hours_left :'||l_hours_left);
7038: ,l_second_elem);
7039: hr_utility.set_location(l_proc,120);
7040: hr_utility.trace('l_error_return :'||l_error_return);
7041: ELSIF l_second_daily_cap < g_hours THEN
7042: hr_utility.set_location(l_proc,125);
7043: l_hours_left := g_hours - l_second_daily_cap;
7044: hr_utility.trace('l_hours_left :'||l_hours_left);
7045: l_error_return := adjust_abs_hrs_on_prev_days
7046: (a_tim_id
7040: hr_utility.trace('l_error_return :'||l_error_return);
7041: ELSIF l_second_daily_cap < g_hours THEN
7042: hr_utility.set_location(l_proc,125);
7043: l_hours_left := g_hours - l_second_daily_cap;
7044: hr_utility.trace('l_hours_left :'||l_hours_left);
7045: l_error_return := adjust_abs_hrs_on_prev_days
7046: (a_tim_id
7047: ,a_date_worked
7048: ,l_tot_hours
7047: ,a_date_worked
7048: ,l_tot_hours
7049: ,l_hours_left
7050: ,l_third_elem);
7051: hr_utility.set_location(l_proc,130);
7052: hr_utility.trace('l_error_return :'||l_error_return);
7053: IF l_error_return <> 0 THEN
7054: hr_utility.set_location(l_proc,135);
7055: return l_error_return;
7048: ,l_tot_hours
7049: ,l_hours_left
7050: ,l_third_elem);
7051: hr_utility.set_location(l_proc,130);
7052: hr_utility.trace('l_error_return :'||l_error_return);
7053: IF l_error_return <> 0 THEN
7054: hr_utility.set_location(l_proc,135);
7055: return l_error_return;
7056: END IF;
7050: ,l_third_elem);
7051: hr_utility.set_location(l_proc,130);
7052: hr_utility.trace('l_error_return :'||l_error_return);
7053: IF l_error_return <> 0 THEN
7054: hr_utility.set_location(l_proc,135);
7055: return l_error_return;
7056: END IF;
7057: hr_utility.set_location(l_proc,140);
7058: l_hours_left := l_second_daily_cap - l_first_daily_cap;
7053: IF l_error_return <> 0 THEN
7054: hr_utility.set_location(l_proc,135);
7055: return l_error_return;
7056: END IF;
7057: hr_utility.set_location(l_proc,140);
7058: l_hours_left := l_second_daily_cap - l_first_daily_cap;
7059: hr_utility.trace('l_hours_left :'||l_hours_left);
7060: l_error_return := adjust_abs_hrs_on_prev_days
7061: (a_tim_id
7055: return l_error_return;
7056: END IF;
7057: hr_utility.set_location(l_proc,140);
7058: l_hours_left := l_second_daily_cap - l_first_daily_cap;
7059: hr_utility.trace('l_hours_left :'||l_hours_left);
7060: l_error_return := adjust_abs_hrs_on_prev_days
7061: (a_tim_id
7062: ,a_date_worked
7063: ,l_tot_hours
7062: ,a_date_worked
7063: ,l_tot_hours
7064: ,l_hours_left
7065: ,l_second_elem);
7066: hr_utility.set_location(l_proc,145);
7067: hr_utility.trace('l_error_return :'||l_error_return);
7068: END IF;
7069: hr_utility.set_location(l_proc,150);
7070: END IF; -- g_EP_TYPE = 'SPECIAL'
7063: ,l_tot_hours
7064: ,l_hours_left
7065: ,l_second_elem);
7066: hr_utility.set_location(l_proc,145);
7067: hr_utility.trace('l_error_return :'||l_error_return);
7068: END IF;
7069: hr_utility.set_location(l_proc,150);
7070: END IF; -- g_EP_TYPE = 'SPECIAL'
7071: hr_utility.set_location(l_proc,155);
7065: ,l_second_elem);
7066: hr_utility.set_location(l_proc,145);
7067: hr_utility.trace('l_error_return :'||l_error_return);
7068: END IF;
7069: hr_utility.set_location(l_proc,150);
7070: END IF; -- g_EP_TYPE = 'SPECIAL'
7071: hr_utility.set_location(l_proc,155);
7072: END IF; -- (first_cap - l_tot_hours) >= g_hours
7073: hr_utility.set_location(l_proc,160);
7067: hr_utility.trace('l_error_return :'||l_error_return);
7068: END IF;
7069: hr_utility.set_location(l_proc,150);
7070: END IF; -- g_EP_TYPE = 'SPECIAL'
7071: hr_utility.set_location(l_proc,155);
7072: END IF; -- (first_cap - l_tot_hours) >= g_hours
7073: hr_utility.set_location(l_proc,160);
7074: */
7075: -- Since nothing to adjust, implies return back
7069: hr_utility.set_location(l_proc,150);
7070: END IF; -- g_EP_TYPE = 'SPECIAL'
7071: hr_utility.set_location(l_proc,155);
7072: END IF; -- (first_cap - l_tot_hours) >= g_hours
7073: hr_utility.set_location(l_proc,160);
7074: */
7075: -- Since nothing to adjust, implies return back
7076: l_error_return := 0;
7077:
7076: l_error_return := 0;
7077:
7078: IF g_debug
7079: THEN
7080: hr_utility.set_location (l_proc, 165);
7081: hr_utility.TRACE ('l_first_cap:' || l_first_cap);
7082: hr_utility.TRACE ('l_second_cap:' || l_second_cap);
7083: hr_utility.TRACE ('l_tot_hours:' || l_tot_hours);
7084: END IF;
7077:
7078: IF g_debug
7079: THEN
7080: hr_utility.set_location (l_proc, 165);
7081: hr_utility.TRACE ('l_first_cap:' || l_first_cap);
7082: hr_utility.TRACE ('l_second_cap:' || l_second_cap);
7083: hr_utility.TRACE ('l_tot_hours:' || l_tot_hours);
7084: END IF;
7085: ELSIF l_first_cap < (l_tot_hours + g_hours)
7078: IF g_debug
7079: THEN
7080: hr_utility.set_location (l_proc, 165);
7081: hr_utility.TRACE ('l_first_cap:' || l_first_cap);
7082: hr_utility.TRACE ('l_second_cap:' || l_second_cap);
7083: hr_utility.TRACE ('l_tot_hours:' || l_tot_hours);
7084: END IF;
7085: ELSIF l_first_cap < (l_tot_hours + g_hours)
7086: AND (l_tot_hours + g_hours) <= l_second_cap
7079: THEN
7080: hr_utility.set_location (l_proc, 165);
7081: hr_utility.TRACE ('l_first_cap:' || l_first_cap);
7082: hr_utility.TRACE ('l_second_cap:' || l_second_cap);
7083: hr_utility.TRACE ('l_tot_hours:' || l_tot_hours);
7084: END IF;
7085: ELSIF l_first_cap < (l_tot_hours + g_hours)
7086: AND (l_tot_hours + g_hours) <= l_second_cap
7087: THEN
7086: AND (l_tot_hours + g_hours) <= l_second_cap
7087: THEN
7088: IF g_debug
7089: THEN
7090: hr_utility.set_location (l_proc, 170);
7091: END IF;
7092:
7093: l_hours_left := (l_tot_hours + g_hours) - l_first_cap;
7094:
7093: l_hours_left := (l_tot_hours + g_hours) - l_first_cap;
7094:
7095: IF g_debug
7096: THEN
7097: hr_utility.TRACE ('l_hours_left:' || l_hours_left);
7098: END IF;
7099:
7100: l_error_return :=
7101: adjust_abs_hrs_on_prev_days (a_tim_id,
7106: );
7107:
7108: IF g_debug
7109: THEN
7110: hr_utility.set_location (l_proc, 175);
7111: hr_utility.TRACE ('l_error_return:' || l_error_return);
7112: END IF;
7113: ELSIF l_second_cap < (l_tot_hours + g_hours)
7114: THEN
7107:
7108: IF g_debug
7109: THEN
7110: hr_utility.set_location (l_proc, 175);
7111: hr_utility.TRACE ('l_error_return:' || l_error_return);
7112: END IF;
7113: ELSIF l_second_cap < (l_tot_hours + g_hours)
7114: THEN
7115: IF g_debug
7113: ELSIF l_second_cap < (l_tot_hours + g_hours)
7114: THEN
7115: IF g_debug
7116: THEN
7117: hr_utility.set_location (l_proc, 180);
7118: END IF;
7119:
7120: l_hours_left := (l_tot_hours + g_hours) - l_second_cap;
7121:
7120: l_hours_left := (l_tot_hours + g_hours) - l_second_cap;
7121:
7122: IF g_debug
7123: THEN
7124: hr_utility.TRACE ('l_hours_left:' || l_hours_left);
7125: END IF;
7126:
7127: l_error_return :=
7128: adjust_abs_hrs_on_prev_days (a_tim_id,
7133: );
7134:
7135: IF g_debug
7136: THEN
7137: hr_utility.set_location (l_proc, 185);
7138: hr_utility.TRACE ('l_error_return:' || l_error_return);
7139: END IF;
7140:
7141: IF l_error_return <> 0
7134:
7135: IF g_debug
7136: THEN
7137: hr_utility.set_location (l_proc, 185);
7138: hr_utility.TRACE ('l_error_return:' || l_error_return);
7139: END IF;
7140:
7141: IF l_error_return <> 0
7142: THEN
7141: IF l_error_return <> 0
7142: THEN
7143: IF g_debug
7144: THEN
7145: hr_utility.set_location (l_proc, 190);
7146: END IF;
7147:
7148: RETURN l_error_return;
7149: END IF;
7151: l_hours_left := l_second_cap - l_first_cap;
7152:
7153: IF g_debug
7154: THEN
7155: hr_utility.set_location (l_proc, 195);
7156: END IF;
7157:
7158: l_error_return :=
7159: adjust_abs_hrs_on_prev_days (a_tim_id,
7164: );
7165:
7166: IF g_debug
7167: THEN
7168: hr_utility.set_location (l_proc, 200);
7169: END IF;
7170: END IF;
7171:
7172: IF g_debug
7170: END IF;
7171:
7172: IF g_debug
7173: THEN
7174: hr_utility.set_location (l_proc, 205);
7175: END IF;
7176: --IF total weekly hours are between first weekly cap and second weekly cap:
7177: ELSIF l_first_cap < l_tot_hours AND l_tot_hours <= l_second_cap
7178: THEN
7177: ELSIF l_first_cap < l_tot_hours AND l_tot_hours <= l_second_cap
7178: THEN
7179: IF g_debug
7180: THEN
7181: hr_utility.set_location (l_proc, 210);
7182: END IF;
7183:
7184: IF (l_tot_hours + g_hours) <= l_second_cap
7185: THEN
7184: IF (l_tot_hours + g_hours) <= l_second_cap
7185: THEN
7186: IF g_debug
7187: THEN
7188: hr_utility.set_location (l_proc, 215);
7189: END IF;
7190:
7191: l_hours_left := g_hours;
7192:
7191: l_hours_left := g_hours;
7192:
7193: IF g_debug
7194: THEN
7195: hr_utility.TRACE ('l_hours_left:' || l_hours_left);
7196: END IF;
7197:
7198: l_error_return :=
7199: adjust_abs_hrs_on_prev_days (a_tim_id,
7204: );
7205:
7206: IF g_debug
7207: THEN
7208: hr_utility.set_location (l_proc, 220);
7209: hr_utility.TRACE ('l_error_return:' || l_error_return);
7210: END IF;
7211: ELSIF l_second_cap < (l_tot_hours + g_hours)
7212: THEN
7205:
7206: IF g_debug
7207: THEN
7208: hr_utility.set_location (l_proc, 220);
7209: hr_utility.TRACE ('l_error_return:' || l_error_return);
7210: END IF;
7211: ELSIF l_second_cap < (l_tot_hours + g_hours)
7212: THEN
7213: IF g_debug
7211: ELSIF l_second_cap < (l_tot_hours + g_hours)
7212: THEN
7213: IF g_debug
7214: THEN
7215: hr_utility.set_location (l_proc, 225);
7216: END IF;
7217:
7218: l_hours_left := (l_tot_hours + g_hours) - l_second_cap;
7219:
7218: l_hours_left := (l_tot_hours + g_hours) - l_second_cap;
7219:
7220: IF g_debug
7221: THEN
7222: hr_utility.TRACE ('l_hours_left:' || l_hours_left);
7223: END IF;
7224:
7225: l_error_return :=
7226: adjust_abs_hrs_on_prev_days (a_tim_id,
7231: );
7232:
7233: IF g_debug
7234: THEN
7235: hr_utility.set_location (l_proc, 230);
7236: hr_utility.TRACE ('l_error_return:' || l_error_return);
7237: END IF;
7238:
7239: IF l_error_return <> 0
7232:
7233: IF g_debug
7234: THEN
7235: hr_utility.set_location (l_proc, 230);
7236: hr_utility.TRACE ('l_error_return:' || l_error_return);
7237: END IF;
7238:
7239: IF l_error_return <> 0
7240: THEN
7239: IF l_error_return <> 0
7240: THEN
7241: IF g_debug
7242: THEN
7243: hr_utility.set_location (l_proc, 235);
7244: END IF;
7245:
7246: RETURN l_error_return;
7247: END IF;
7247: END IF;
7248:
7249: IF g_debug
7250: THEN
7251: hr_utility.set_location (l_proc, 240);
7252: END IF;
7253:
7254: l_hours_left := l_second_cap - l_tot_hours;
7255:
7254: l_hours_left := l_second_cap - l_tot_hours;
7255:
7256: IF g_debug
7257: THEN
7258: hr_utility.TRACE ('l_hours_left:' || l_hours_left);
7259: END IF;
7260:
7261: l_error_return :=
7262: adjust_abs_hrs_on_prev_days (a_tim_id,
7267: );
7268:
7269: IF g_debug
7270: THEN
7271: hr_utility.set_location (l_proc, 245);
7272: hr_utility.TRACE ('l_error_return:' || l_error_return);
7273: END IF;
7274: END IF;
7275:
7268:
7269: IF g_debug
7270: THEN
7271: hr_utility.set_location (l_proc, 245);
7272: hr_utility.TRACE ('l_error_return:' || l_error_return);
7273: END IF;
7274: END IF;
7275:
7276: IF g_debug
7274: END IF;
7275:
7276: IF g_debug
7277: THEN
7278: hr_utility.set_location (l_proc, 250);
7279: END IF;
7280: --IF total weekly hours are greater than second weekly cap:
7281: ELSIF l_tot_hours > l_second_cap
7282: THEN
7281: ELSIF l_tot_hours > l_second_cap
7282: THEN
7283: IF g_debug
7284: THEN
7285: hr_utility.set_location (l_proc, 255);
7286: END IF;
7287:
7288: l_hours_left := g_hours;
7289:
7288: l_hours_left := g_hours;
7289:
7290: IF g_debug
7291: THEN
7292: hr_utility.TRACE ('l_hours_left:' || l_hours_left);
7293: END IF;
7294:
7295: l_error_return :=
7296: adjust_abs_hrs_on_prev_days (a_tim_id,
7301: );
7302:
7303: IF g_debug
7304: THEN
7305: hr_utility.set_location (l_proc, 260);
7306: hr_utility.TRACE ('l_error_return:' || l_error_return);
7307: END IF;
7308: END IF;
7309:
7302:
7303: IF g_debug
7304: THEN
7305: hr_utility.set_location (l_proc, 260);
7306: hr_utility.TRACE ('l_error_return:' || l_error_return);
7307: END IF;
7308: END IF;
7309:
7310: IF g_debug
7308: END IF;
7309:
7310: IF g_debug
7311: THEN
7312: hr_utility.set_location (l_proc, 270);
7313: END IF;
7314:
7315: RETURN l_error_return;
7316: END adjust_for_absence;
7323: IS
7324: BEGIN
7325: IF g_debug
7326: THEN
7327: hr_utility.set_location ('select_weekly_hours', 1);
7328: hr_utility.TRACE
7329: ( 'p_element_type_id_to_pay i.e weekly_earning_type:'
7330: || weekly_earning_type
7331: );
7324: BEGIN
7325: IF g_debug
7326: THEN
7327: hr_utility.set_location ('select_weekly_hours', 1);
7328: hr_utility.TRACE
7329: ( 'p_element_type_id_to_pay i.e weekly_earning_type:'
7330: || weekly_earning_type
7331: );
7332: hr_utility.TRACE ('hours_left_to_pay :' || hours_left_to_pay);
7328: hr_utility.TRACE
7329: ( 'p_element_type_id_to_pay i.e weekly_earning_type:'
7330: || weekly_earning_type
7331: );
7332: hr_utility.TRACE ('hours_left_to_pay :' || hours_left_to_pay);
7333: hr_utility.TRACE ('weekly_rule_cap:' || weekly_rule_cap);
7334: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
7335: || hours_paid_weekly_rule
7336: );
7329: ( 'p_element_type_id_to_pay i.e weekly_earning_type:'
7330: || weekly_earning_type
7331: );
7332: hr_utility.TRACE ('hours_left_to_pay :' || hours_left_to_pay);
7333: hr_utility.TRACE ('weekly_rule_cap:' || weekly_rule_cap);
7334: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
7335: || hours_paid_weekly_rule
7336: );
7337: END IF;
7330: || weekly_earning_type
7331: );
7332: hr_utility.TRACE ('hours_left_to_pay :' || hours_left_to_pay);
7333: hr_utility.TRACE ('weekly_rule_cap:' || weekly_rule_cap);
7334: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
7335: || hours_paid_weekly_rule
7336: );
7337: END IF;
7338:
7346: );
7347:
7348: IF g_debug
7349: THEN
7350: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
7351: || p_hours_to_pay_this_rule
7352: );
7353: hr_utility.set_location ('select_weekly_hours', 2);
7354: END IF;
7349: THEN
7350: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
7351: || p_hours_to_pay_this_rule
7352: );
7353: hr_utility.set_location ('select_weekly_hours', 2);
7354: END IF;
7355: END select_weekly_hours;
7356:
7357: --------------------------------------------------------------------------------
7363: IS
7364: BEGIN
7365: IF g_debug
7366: THEN
7367: hr_utility.set_location ('select_hol_weekly_hours', 10);
7368: hr_utility.trace('hours_left_to_pay is '||hours_left_to_pay);
7369: hr_utility.trace('hours_paid_daily_rule '||hours_paid_daily_rule);
7370: hr_utility.trace('hours daily_rule_cap '||daily_rule_cap);
7371: END IF;
7364: BEGIN
7365: IF g_debug
7366: THEN
7367: hr_utility.set_location ('select_hol_weekly_hours', 10);
7368: hr_utility.trace('hours_left_to_pay is '||hours_left_to_pay);
7369: hr_utility.trace('hours_paid_daily_rule '||hours_paid_daily_rule);
7370: hr_utility.trace('hours daily_rule_cap '||daily_rule_cap);
7371: END IF;
7372:
7365: IF g_debug
7366: THEN
7367: hr_utility.set_location ('select_hol_weekly_hours', 10);
7368: hr_utility.trace('hours_left_to_pay is '||hours_left_to_pay);
7369: hr_utility.trace('hours_paid_daily_rule '||hours_paid_daily_rule);
7370: hr_utility.trace('hours daily_rule_cap '||daily_rule_cap);
7371: END IF;
7372:
7373: p_rule_to_pay := 'DAY';
7366: THEN
7367: hr_utility.set_location ('select_hol_weekly_hours', 10);
7368: hr_utility.trace('hours_left_to_pay is '||hours_left_to_pay);
7369: hr_utility.trace('hours_paid_daily_rule '||hours_paid_daily_rule);
7370: hr_utility.trace('hours daily_rule_cap '||daily_rule_cap);
7371: END IF;
7372:
7373: p_rule_to_pay := 'DAY';
7374: p_hours_to_pay_this_rule :=
7379: p_element_type_id_to_pay := daily_earning_type;
7380:
7381: IF g_debug
7382: THEN
7383: hr_utility.set_location ('select_hol_weekly_hours', 20);
7384: END IF;
7385: END select_hol_weekly_hours;
7386:
7387: --------------------------------------------------------------------------------
7418: lv_override_element NUMBER;
7419: BEGIN
7420: IF g_debug
7421: THEN
7422: hr_utility.set_location ('select_rule_and_hours', 10);
7423: END IF;
7424:
7425: OPEN get_weekly_cap (g_ep_id);
7426:
7428: INTO l_first_weekly_rule;
7429:
7430: IF g_debug
7431: THEN
7432: hr_utility.TRACE ( 'first_weekly_rule :'
7433: || l_first_weekly_rule
7434: );
7435: END IF;
7436:
7441: IF consecutive_days_reached = FALSE
7442: THEN
7443: IF g_debug
7444: THEN
7445: hr_utility.set_location ('select_rule_and_hours', 20);
7446: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
7447: || hours_paid_weekly_rule
7448: );
7449: hr_utility.TRACE ( 'weekly_rule_cap :'
7442: THEN
7443: IF g_debug
7444: THEN
7445: hr_utility.set_location ('select_rule_and_hours', 20);
7446: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
7447: || hours_paid_weekly_rule
7448: );
7449: hr_utility.TRACE ( 'weekly_rule_cap :'
7450: || weekly_rule_cap
7445: hr_utility.set_location ('select_rule_and_hours', 20);
7446: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
7447: || hours_paid_weekly_rule
7448: );
7449: hr_utility.TRACE ( 'weekly_rule_cap :'
7450: || weekly_rule_cap
7451: );
7452: hr_utility.TRACE ( 'first_daily_rule_cap :'
7453: || first_daily_rule_cap
7448: );
7449: hr_utility.TRACE ( 'weekly_rule_cap :'
7450: || weekly_rule_cap
7451: );
7452: hr_utility.TRACE ( 'first_daily_rule_cap :'
7453: || first_daily_rule_cap
7454: );
7455: hr_utility.TRACE ( 'get_weekly_total_to_date :'
7456: || get_weekly_total_to_date
7451: );
7452: hr_utility.TRACE ( 'first_daily_rule_cap :'
7453: || first_daily_rule_cap
7454: );
7455: hr_utility.TRACE ( 'get_weekly_total_to_date :'
7456: || get_weekly_total_to_date
7457: );
7458: hr_utility.TRACE ( 'l_first_weekly_rule :'
7459: || l_first_weekly_rule
7454: );
7455: hr_utility.TRACE ( 'get_weekly_total_to_date :'
7456: || get_weekly_total_to_date
7457: );
7458: hr_utility.TRACE ( 'l_first_weekly_rule :'
7459: || l_first_weekly_rule
7460: );
7461: END IF;
7462:
7463: IF (first_weekly_cap_reached = TRUE)
7464: THEN -- hours paid over weekly cap
7465: IF g_debug
7466: THEN
7467: hr_utility.set_location ('Select_rule_and_hours', 30);
7468: hr_utility.TRACE ( 'hours_left_to_pay :'
7469: || hours_left_to_pay
7470: );
7471: hr_utility.TRACE ( 'weekly_rule_cap :'
7464: THEN -- hours paid over weekly cap
7465: IF g_debug
7466: THEN
7467: hr_utility.set_location ('Select_rule_and_hours', 30);
7468: hr_utility.TRACE ( 'hours_left_to_pay :'
7469: || hours_left_to_pay
7470: );
7471: hr_utility.TRACE ( 'weekly_rule_cap :'
7472: || weekly_rule_cap
7467: hr_utility.set_location ('Select_rule_and_hours', 30);
7468: hr_utility.TRACE ( 'hours_left_to_pay :'
7469: || hours_left_to_pay
7470: );
7471: hr_utility.TRACE ( 'weekly_rule_cap :'
7472: || weekly_rule_cap
7473: );
7474: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
7475: || hours_paid_weekly_rule
7470: );
7471: hr_utility.TRACE ( 'weekly_rule_cap :'
7472: || weekly_rule_cap
7473: );
7474: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
7475: || hours_paid_weekly_rule
7476: );
7477: END IF;
7478:
7485: srh_rule := 'WKL';
7486:
7487: IF g_debug
7488: THEN
7489: hr_utility.set_location ('select_rule_and_hours', 40);
7490: END IF;
7491:
7492: p_hours_to_pay_this_rule :=
7493: LEAST (hours_left_to_pay,
7497: p_element_type_id := weekly_earning_type;
7498:
7499: IF g_debug
7500: THEN
7501: hr_utility.TRACE ( 'p_hours_to_pay_this_rule :'
7502: || p_hours_to_pay_this_rule
7503: );
7504: hr_utility.TRACE ('p_element_type_id :' || p_element_type_id);
7505: END IF;
7500: THEN
7501: hr_utility.TRACE ( 'p_hours_to_pay_this_rule :'
7502: || p_hours_to_pay_this_rule
7503: );
7504: hr_utility.TRACE ('p_element_type_id :' || p_element_type_id);
7505: END IF;
7506: /*IF weekly_rule_cap > l_first_weekly_rule THEN
7507: IF second_weekly_cap_reached = TRUE THEN
7508: srh_rule := 'WKL';
7505: END IF;
7506: /*IF weekly_rule_cap > l_first_weekly_rule THEN
7507: IF second_weekly_cap_reached = TRUE THEN
7508: srh_rule := 'WKL';
7509: hr_utility.set_location('select_rule_and_hours',40);
7510: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,
7511: (weekly_rule_cap - hours_paid_for_dtime_elig));
7512: p_element_type_id := weekly_earning_type;
7513: hr_utility.trace('p_hours_to_pay_this_rule :'
7509: hr_utility.set_location('select_rule_and_hours',40);
7510: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,
7511: (weekly_rule_cap - hours_paid_for_dtime_elig));
7512: p_element_type_id := weekly_earning_type;
7513: hr_utility.trace('p_hours_to_pay_this_rule :'
7514: ||p_hours_to_pay_this_rule);
7515: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7516: ELSE
7517: srh_rule := 'WKL';
7511: (weekly_rule_cap - hours_paid_for_dtime_elig));
7512: p_element_type_id := weekly_earning_type;
7513: hr_utility.trace('p_hours_to_pay_this_rule :'
7514: ||p_hours_to_pay_this_rule);
7515: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7516: ELSE
7517: srh_rule := 'WKL';
7518: hr_utility.set_location('select_rule_and_hours',50);
7519: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,
7514: ||p_hours_to_pay_this_rule);
7515: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7516: ELSE
7517: srh_rule := 'WKL';
7518: hr_utility.set_location('select_rule_and_hours',50);
7519: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,
7520: (weekly_rule_cap - hours_paid_weekly_rule));
7521: p_element_type_id := weekly_earning_type;
7522: hr_utility.trace('p_hours_to_pay_this_rule :'
7518: hr_utility.set_location('select_rule_and_hours',50);
7519: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,
7520: (weekly_rule_cap - hours_paid_weekly_rule));
7521: p_element_type_id := weekly_earning_type;
7522: hr_utility.trace('p_hours_to_pay_this_rule :'
7523: ||p_hours_to_pay_this_rule);
7524: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7525: END IF;
7526: ELSE
7520: (weekly_rule_cap - hours_paid_weekly_rule));
7521: p_element_type_id := weekly_earning_type;
7522: hr_utility.trace('p_hours_to_pay_this_rule :'
7523: ||p_hours_to_pay_this_rule);
7524: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7525: END IF;
7526: ELSE
7527: srh_rule := 'WKL';
7528: hr_utility.set_location('select_rule_and_hours',60);
7524: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7525: END IF;
7526: ELSE
7527: srh_rule := 'WKL';
7528: hr_utility.set_location('select_rule_and_hours',60);
7529: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,
7530: (weekly_rule_cap - hours_paid_weekly_rule)) ;
7531: p_element_type_id := weekly_earning_type;
7532: hr_utility.trace('p_hours_to_pay_this_rule :'
7528: hr_utility.set_location('select_rule_and_hours',60);
7529: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,
7530: (weekly_rule_cap - hours_paid_weekly_rule)) ;
7531: p_element_type_id := weekly_earning_type;
7532: hr_utility.trace('p_hours_to_pay_this_rule :'
7533: ||p_hours_to_pay_this_rule);
7534: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7535: END IF;*/
7536: ELSIF (first_weekly_cap_reached = FALSE)
7530: (weekly_rule_cap - hours_paid_weekly_rule)) ;
7531: p_element_type_id := weekly_earning_type;
7532: hr_utility.trace('p_hours_to_pay_this_rule :'
7533: ||p_hours_to_pay_this_rule);
7534: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7535: END IF;*/
7536: ELSIF (first_weekly_cap_reached = FALSE)
7537: OR ( seven_day_cal_rule = TRUE
7538: AND g_cons_days_worked = 5
7552: )
7553: THEN
7554: IF g_debug
7555: THEN
7556: hr_utility.set_location ('select_rule_and_hours', 70);
7557: END IF;
7558:
7559: srh_rule := 'DAY';
7560:
7564: -- it is not an error at that time as it allowed as long as another
7565: -- sub-segment does not need daily rules to pay
7566: IF g_debug
7567: THEN
7568: hr_utility.set_location ('select_rule_and_hours', 80);
7569: END IF;
7570:
7571: fnd_message.set_name ('HXT', 'HXT_39294_ERN_RUL_NF');
7572: p_error_code :=
7580: p_hours_to_pay_this_rule := 0;
7581: ELSE
7582: IF g_debug
7583: THEN
7584: hr_utility.set_location ('select_rule_and_hours', 90);
7585: END IF;
7586:
7587: overtime_hoursoverride (g_date_worked,
7588: g_egt_id,
7592: );
7593:
7594: IF g_debug
7595: THEN
7596: hr_utility.TRACE ('lv_override_hrs :'
7597: || lv_override_hrs
7598: );
7599: hr_utility.TRACE ( 'lv_override_element :'
7600: || lv_override_element
7595: THEN
7596: hr_utility.TRACE ('lv_override_hrs :'
7597: || lv_override_hrs
7598: );
7599: hr_utility.TRACE ( 'lv_override_element :'
7600: || lv_override_element
7601: );
7602: hr_utility.set_location ('select_rule_and_hours', 91);
7603: hr_utility.TRACE ( 'hours_left_to_pay :'
7598: );
7599: hr_utility.TRACE ( 'lv_override_element :'
7600: || lv_override_element
7601: );
7602: hr_utility.set_location ('select_rule_and_hours', 91);
7603: hr_utility.TRACE ( 'hours_left_to_pay :'
7604: || hours_left_to_pay
7605: );
7606: hr_utility.TRACE ('daily_rule_cap :' || daily_rule_cap);
7599: hr_utility.TRACE ( 'lv_override_element :'
7600: || lv_override_element
7601: );
7602: hr_utility.set_location ('select_rule_and_hours', 91);
7603: hr_utility.TRACE ( 'hours_left_to_pay :'
7604: || hours_left_to_pay
7605: );
7606: hr_utility.TRACE ('daily_rule_cap :' || daily_rule_cap);
7607: hr_utility.TRACE ( 'hours_paid_daily_rule:'
7602: hr_utility.set_location ('select_rule_and_hours', 91);
7603: hr_utility.TRACE ( 'hours_left_to_pay :'
7604: || hours_left_to_pay
7605: );
7606: hr_utility.TRACE ('daily_rule_cap :' || daily_rule_cap);
7607: hr_utility.TRACE ( 'hours_paid_daily_rule:'
7608: || hours_paid_daily_rule
7609: );
7610: hr_utility.TRACE ( 'first_daily_rule_cap :'
7603: hr_utility.TRACE ( 'hours_left_to_pay :'
7604: || hours_left_to_pay
7605: );
7606: hr_utility.TRACE ('daily_rule_cap :' || daily_rule_cap);
7607: hr_utility.TRACE ( 'hours_paid_daily_rule:'
7608: || hours_paid_daily_rule
7609: );
7610: hr_utility.TRACE ( 'first_daily_rule_cap :'
7611: || first_daily_rule_cap
7606: hr_utility.TRACE ('daily_rule_cap :' || daily_rule_cap);
7607: hr_utility.TRACE ( 'hours_paid_daily_rule:'
7608: || hours_paid_daily_rule
7609: );
7610: hr_utility.TRACE ( 'first_daily_rule_cap :'
7611: || first_daily_rule_cap
7612: );
7613: END IF;
7614:
7616: first_daily_rule_cap
7617: THEN
7618: IF g_debug
7619: THEN
7620: hr_utility.set_location ('select_rule_and_hours',
7621: 100);
7622: END IF;
7623:
7624: p_hours_to_pay_this_rule :=
7636: -- p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,
7637: -- daily_rule_cap - hours_paid_daily_rule);
7638: IF g_debug
7639: THEN
7640: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
7641: || p_hours_to_pay_this_rule
7642: );
7643: END IF;
7644:
7646: AND p_hours_to_pay_this_rule > lv_override_hrs
7647: THEN
7648: IF g_debug
7649: THEN
7650: hr_utility.set_location ('select_rule_and_hours',
7651: 101
7652: );
7653: END IF;
7654:
7658: AND p_hours_to_pay_this_rule <= lv_override_hrs
7659: THEN
7660: IF g_debug
7661: THEN
7662: hr_utility.TRACE ( 'lv_override_hrs:'
7663: || lv_override_hrs
7664: );
7665: hr_utility.TRACE ( 'daily_earning_type:'
7666: || daily_earning_type
7661: THEN
7662: hr_utility.TRACE ( 'lv_override_hrs:'
7663: || lv_override_hrs
7664: );
7665: hr_utility.TRACE ( 'daily_earning_type:'
7666: || daily_earning_type
7667: );
7668: hr_utility.TRACE ( 'first_daily_rule_cap:'
7669: || first_daily_rule_cap
7664: );
7665: hr_utility.TRACE ( 'daily_earning_type:'
7666: || daily_earning_type
7667: );
7668: hr_utility.TRACE ( 'first_daily_rule_cap:'
7669: || first_daily_rule_cap
7670: );
7671: END IF;
7672:
7674: daily_rule_cap - first_daily_rule_cap
7675: THEN
7676: IF g_debug
7677: THEN
7678: hr_utility.set_location
7679: ('select_rule_and_hours',
7680: 102
7681: );
7682: END IF;
7686: END IF;
7687: ELSE
7688: IF g_debug
7689: THEN
7690: hr_utility.set_location ('select_rule_and_hours',
7691: 105);
7692: hr_utility.TRACE ( 'hours_left_to_pay :'
7693: || hours_left_to_pay
7694: );
7688: IF g_debug
7689: THEN
7690: hr_utility.set_location ('select_rule_and_hours',
7691: 105);
7692: hr_utility.TRACE ( 'hours_left_to_pay :'
7693: || hours_left_to_pay
7694: );
7695: hr_utility.TRACE ( 'daily_rule_cap :'
7696: || daily_rule_cap
7691: 105);
7692: hr_utility.TRACE ( 'hours_left_to_pay :'
7693: || hours_left_to_pay
7694: );
7695: hr_utility.TRACE ( 'daily_rule_cap :'
7696: || daily_rule_cap
7697: );
7698: hr_utility.TRACE ( 'hours_paid_daily_rule:'
7699: || hours_paid_daily_rule
7694: );
7695: hr_utility.TRACE ( 'daily_rule_cap :'
7696: || daily_rule_cap
7697: );
7698: hr_utility.TRACE ( 'hours_paid_daily_rule:'
7699: || hours_paid_daily_rule
7700: );
7701: END IF;
7702:
7708: )
7709: THEN
7710: IF g_debug
7711: THEN
7712: hr_utility.set_location
7713: ('select_rule_and_hours',
7714: 110
7715: );
7716: END IF;
7723: );
7724: ELSE
7725: IF g_debug
7726: THEN
7727: hr_utility.set_location
7728: ('select_rule_and_hours',
7729: 115
7730: );
7731: END IF;
7740: END IF;
7741: ELSE
7742: IF g_debug
7743: THEN
7744: hr_utility.set_location ('select_rule_and_hours',
7745: 116
7746: );
7747: END IF;
7748:
7755: END IF;
7756:
7757: IF g_debug
7758: THEN
7759: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
7760: || p_hours_to_pay_this_rule
7761: );
7762: END IF;
7763:
7765: AND p_hours_to_pay_this_rule > lv_override_hrs
7766: THEN
7767: IF g_debug
7768: THEN
7769: hr_utility.set_location ('select_rule_and_hours',
7770: 120
7771: );
7772: END IF;
7773:
7777: AND p_hours_to_pay_this_rule <= lv_override_hrs
7778: THEN
7779: IF g_debug
7780: THEN
7781: hr_utility.set_location ('select_rule_and_hours',
7782: 125
7783: );
7784: hr_utility.TRACE ( 'lv_override_hrs:'
7785: || lv_override_hrs
7780: THEN
7781: hr_utility.set_location ('select_rule_and_hours',
7782: 125
7783: );
7784: hr_utility.TRACE ( 'lv_override_hrs:'
7785: || lv_override_hrs
7786: );
7787: hr_utility.TRACE ( 'daily_earning_type:'
7788: || daily_earning_type
7783: );
7784: hr_utility.TRACE ( 'lv_override_hrs:'
7785: || lv_override_hrs
7786: );
7787: hr_utility.TRACE ( 'daily_earning_type:'
7788: || daily_earning_type
7789: );
7790: hr_utility.TRACE ( 'first_daily_rule_cap:'
7791: || first_daily_rule_cap
7786: );
7787: hr_utility.TRACE ( 'daily_earning_type:'
7788: || daily_earning_type
7789: );
7790: hr_utility.TRACE ( 'first_daily_rule_cap:'
7791: || first_daily_rule_cap
7792: );
7793: END IF;
7794:
7796: daily_rule_cap - first_daily_rule_cap
7797: THEN
7798: IF g_debug
7799: THEN
7800: hr_utility.set_location
7801: ('select_rule_and_hours',
7802: 130
7803: );
7804: END IF;
7810: END IF;
7811:
7812: IF g_debug
7813: THEN
7814: hr_utility.set_location ('select_rule_and_hours', 135);
7815: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
7816: || p_hours_to_pay_this_rule
7817: );
7818: END IF;
7811:
7812: IF g_debug
7813: THEN
7814: hr_utility.set_location ('select_rule_and_hours', 135);
7815: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
7816: || p_hours_to_pay_this_rule
7817: );
7818: END IF;
7819:
7820: p_element_type_id := daily_earning_type;
7821:
7822: IF g_debug
7823: THEN
7824: hr_utility.TRACE ('p_element_type_id :' || p_element_type_id
7825: );
7826: END IF;
7827: /*ELSE -- hours paid over weekly cap
7828: hr_utility.set_location('select_rule_and_hours',120);
7824: hr_utility.TRACE ('p_element_type_id :' || p_element_type_id
7825: );
7826: END IF;
7827: /*ELSE -- hours paid over weekly cap
7828: hr_utility.set_location('select_rule_and_hours',120);
7829: hr_utility.trace('hours_left_to_pay :'||hours_left_to_pay);
7830: hr_utility.trace('weekly_rule_cap :'||weekly_rule_cap);
7831: hr_utility.trace('hours_paid_weekly_rule :'||hours_paid_weekly_rule);
7832: srh_rule := 'WKL';
7825: );
7826: END IF;
7827: /*ELSE -- hours paid over weekly cap
7828: hr_utility.set_location('select_rule_and_hours',120);
7829: hr_utility.trace('hours_left_to_pay :'||hours_left_to_pay);
7830: hr_utility.trace('weekly_rule_cap :'||weekly_rule_cap);
7831: hr_utility.trace('hours_paid_weekly_rule :'||hours_paid_weekly_rule);
7832: srh_rule := 'WKL';
7833: hr_utility.set_location('select_rule_and_hours',130);
7826: END IF;
7827: /*ELSE -- hours paid over weekly cap
7828: hr_utility.set_location('select_rule_and_hours',120);
7829: hr_utility.trace('hours_left_to_pay :'||hours_left_to_pay);
7830: hr_utility.trace('weekly_rule_cap :'||weekly_rule_cap);
7831: hr_utility.trace('hours_paid_weekly_rule :'||hours_paid_weekly_rule);
7832: srh_rule := 'WKL';
7833: hr_utility.set_location('select_rule_and_hours',130);
7834: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,(weekly_rule_cap -
7827: /*ELSE -- hours paid over weekly cap
7828: hr_utility.set_location('select_rule_and_hours',120);
7829: hr_utility.trace('hours_left_to_pay :'||hours_left_to_pay);
7830: hr_utility.trace('weekly_rule_cap :'||weekly_rule_cap);
7831: hr_utility.trace('hours_paid_weekly_rule :'||hours_paid_weekly_rule);
7832: srh_rule := 'WKL';
7833: hr_utility.set_location('select_rule_and_hours',130);
7834: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,(weekly_rule_cap -
7835: hours_paid_weekly_rule)) ;
7829: hr_utility.trace('hours_left_to_pay :'||hours_left_to_pay);
7830: hr_utility.trace('weekly_rule_cap :'||weekly_rule_cap);
7831: hr_utility.trace('hours_paid_weekly_rule :'||hours_paid_weekly_rule);
7832: srh_rule := 'WKL';
7833: hr_utility.set_location('select_rule_and_hours',130);
7834: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,(weekly_rule_cap -
7835: hours_paid_weekly_rule)) ;
7836: p_element_type_id := weekly_earning_type;
7837: hr_utility.trace('p_hours_to_pay_this_rule :'||p_hours_to_pay_this_rule);
7833: hr_utility.set_location('select_rule_and_hours',130);
7834: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,(weekly_rule_cap -
7835: hours_paid_weekly_rule)) ;
7836: p_element_type_id := weekly_earning_type;
7837: hr_utility.trace('p_hours_to_pay_this_rule :'||p_hours_to_pay_this_rule);
7838: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7839: */
7840: END IF;
7841: ELSE -- special days limit reached
7834: p_hours_to_pay_this_rule := LEAST(hours_left_to_pay,(weekly_rule_cap -
7835: hours_paid_weekly_rule)) ;
7836: p_element_type_id := weekly_earning_type;
7837: hr_utility.trace('p_hours_to_pay_this_rule :'||p_hours_to_pay_this_rule);
7838: hr_utility.trace('p_element_type_id :'||p_element_type_id);
7839: */
7840: END IF;
7841: ELSE -- special days limit reached
7842: IF g_debug
7840: END IF;
7841: ELSE -- special days limit reached
7842: IF g_debug
7843: THEN
7844: hr_utility.set_location ('select_rule_and_hours', 140);
7845: END IF;
7846:
7847: IF hours_paid_daily_rule < special_daily_cap
7848: THEN
7847: IF hours_paid_daily_rule < special_daily_cap
7848: THEN
7849: IF g_debug
7850: THEN
7851: hr_utility.set_location ('select_rule_and_hours', 150);
7852: END IF;
7853:
7854: srh_rule := 'SPC';
7855: p_hours_to_pay_this_rule :=
7860: p_element_type_id := special_earning_type; -- SPR C355
7861:
7862: IF g_debug
7863: THEN
7864: hr_utility.TRACE ('p_element_type_id :' || p_element_type_id
7865: );
7866: END IF;
7867: ELSE -- over special days and hours limits
7868: IF g_debug
7866: END IF;
7867: ELSE -- over special days and hours limits
7868: IF g_debug
7869: THEN
7870: hr_utility.set_location ('select_rule_and_hours', 160);
7871: END IF;
7872:
7873: srh_rule := 'SPC';
7874: p_hours_to_pay_this_rule := hours_left_to_pay;
7876:
7877: -- SPR C355 - chg'd to type2
7878: IF g_debug
7879: THEN
7880: hr_utility.TRACE ('p_element_type_id :' || p_element_type_id
7881: );
7882: END IF;
7883: END IF;
7884: END IF;
7886: p_rule_to_pay := srh_rule;
7887:
7888: IF g_debug
7889: THEN
7890: hr_utility.TRACE ('p_rule_to_pay :' || p_rule_to_pay);
7891: END IF;
7892:
7893: IF srh_rule IS NULL
7894: THEN
7893: IF srh_rule IS NULL
7894: THEN
7895: IF g_debug
7896: THEN
7897: hr_utility.set_location ('select_rule_and_hours', 170);
7898: END IF;
7899:
7900: fnd_message.set_name ('HXT', 'HXT_39295_ERN_TYPE_NF');
7901: p_error_code :=
7909: END IF;
7910:
7911: IF g_debug
7912: THEN
7913: hr_utility.set_location ('select_rule_and_hours', 180);
7914: END IF;
7915: EXCEPTION
7916: WHEN OTHERS
7917: THEN
7916: WHEN OTHERS
7917: THEN
7918: IF g_debug
7919: THEN
7920: hr_utility.set_location ('select_rule_and_hours', 190);
7921: END IF;
7922:
7923: fnd_message.set_name ('HXT', 'HXT_39274_OR_ERR_SEL_ERN_TYP');
7924: p_error_code :=
8179: BEGIN
8180: IF g_debug
8181: THEN
8182: l_proc := 'HXT_TIME_DETAIL.init_for_wkl_combine_pts_cal';
8183: hr_utility.set_location (l_proc, 10);
8184: END IF;
8185:
8186: OPEN weekly_earn_category_total; --('REG');
8187:
8189: INTO l_weekly_reg_hrs;
8190:
8191: IF g_debug
8192: THEN
8193: hr_utility.TRACE ('l_weekly_REG_hrs:' || l_weekly_reg_hrs);
8194: END IF;
8195:
8196: CLOSE weekly_earn_category_total;
8197:
8200: FOR i IN 1 .. g_daily_explosion.COUNT
8201: LOOP
8202: IF g_debug
8203: THEN
8204: hr_utility.set_location (l_proc, 20);
8205: END IF;
8206:
8207: IF g_daily_explosion (i).earning_category = 'REG'
8208: THEN
8207: IF g_daily_explosion (i).earning_category = 'REG'
8208: THEN
8209: IF g_debug
8210: THEN
8211: hr_utility.set_location (l_proc, 30);
8212: END IF;
8213:
8214: l_reg_for_day := g_daily_explosion (i).hours_to_pay;
8215:
8214: l_reg_for_day := g_daily_explosion (i).hours_to_pay;
8215:
8216: IF g_debug
8217: THEN
8218: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
8219: END IF;
8220:
8221: IF l_weekly_reg_hrs >= l_weekly_reg_cap
8222: AND l_use_weekly_reg = 'Y'
8222: AND l_use_weekly_reg = 'Y'
8223: THEN
8224: IF g_debug
8225: THEN
8226: hr_utility.set_location (l_proc, 40);
8227: END IF;
8228:
8229: l_dy_wk_reg_elem_id :=
8230: g_weekly_earn_category (i).element_type_id;
8230: g_weekly_earn_category (i).element_type_id;
8231: ELSE
8232: IF g_debug
8233: THEN
8234: hr_utility.set_location (l_proc, 50);
8235: END IF;
8236:
8237: l_use_daily_reg := 'Y';
8238: l_dy_wk_reg_elem_id :=
8240: END IF;
8241:
8242: IF g_debug
8243: THEN
8244: hr_utility.set_location (l_proc, 60);
8245: hr_utility.TRACE ( 'l_dy_wk_reg_elem_id:'
8246: || l_dy_wk_reg_elem_id
8247: );
8248: END IF;
8241:
8242: IF g_debug
8243: THEN
8244: hr_utility.set_location (l_proc, 60);
8245: hr_utility.TRACE ( 'l_dy_wk_reg_elem_id:'
8246: || l_dy_wk_reg_elem_id
8247: );
8248: END IF;
8249: ELSIF g_daily_explosion (i).earning_category = 'OVT'
8249: ELSIF g_daily_explosion (i).earning_category = 'OVT'
8250: THEN
8251: IF g_debug
8252: THEN
8253: hr_utility.set_location (l_proc, 70);
8254: END IF;
8255:
8256: l_ovt_for_day := g_daily_explosion (i).hours_to_pay;
8257:
8256: l_ovt_for_day := g_daily_explosion (i).hours_to_pay;
8257:
8258: IF g_debug
8259: THEN
8260: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
8261: END IF;
8262:
8263: IF l_weekly_reg_hrs >= l_weekly_reg_cap
8264: AND use_weekly_ot = 'Y'
8264: AND use_weekly_ot = 'Y'
8265: THEN
8266: IF g_debug
8267: THEN
8268: hr_utility.set_location (l_proc, 80);
8269: END IF;
8270:
8271: l_dy_wk_ovt_elem_id :=
8272: g_weekly_earn_category (i).element_type_id;
8272: g_weekly_earn_category (i).element_type_id;
8273: ELSE
8274: IF g_debug
8275: THEN
8276: hr_utility.set_location (l_proc, 90);
8277: END IF;
8278:
8279: l_use_daily_ot := 'Y';
8280: l_dy_wk_ovt_elem_id :=
8282: END IF;
8283:
8284: IF g_debug
8285: THEN
8286: hr_utility.set_location (l_proc, 100);
8287: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
8288: || l_dy_wk_ovt_elem_id
8289: );
8290: END IF;
8283:
8284: IF g_debug
8285: THEN
8286: hr_utility.set_location (l_proc, 100);
8287: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
8288: || l_dy_wk_ovt_elem_id
8289: );
8290: END IF;
8291: ELSIF g_daily_explosion (i).earning_category = 'DT'
8291: ELSIF g_daily_explosion (i).earning_category = 'DT'
8292: THEN
8293: IF g_debug
8294: THEN
8295: hr_utility.set_location (l_proc, 110);
8296: END IF;
8297:
8298: l_dt_for_day := g_daily_explosion (i).hours_to_pay;
8299:
8301: AND use_weekly_dt = 'Y'
8302: THEN
8303: IF g_debug
8304: THEN
8305: hr_utility.set_location (l_proc, 120);
8306: END IF;
8307:
8308: l_dy_wk_dt_elem_id :=
8309: g_weekly_earn_category (i).element_type_id;
8309: g_weekly_earn_category (i).element_type_id;
8310: ELSE
8311: IF g_debug
8312: THEN
8313: hr_utility.set_location (l_proc, 130);
8314: END IF;
8315:
8316: l_use_daily_dt := 'Y';
8317: l_dy_wk_dt_elem_id :=
8319: END IF;
8320:
8321: IF g_debug
8322: THEN
8323: hr_utility.set_location (l_proc, 140);
8324: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
8325: hr_utility.TRACE ( 'l_dy_wk_dt_elem_id:'
8326: || l_dy_wk_dt_elem_id
8327: );
8320:
8321: IF g_debug
8322: THEN
8323: hr_utility.set_location (l_proc, 140);
8324: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
8325: hr_utility.TRACE ( 'l_dy_wk_dt_elem_id:'
8326: || l_dy_wk_dt_elem_id
8327: );
8328: END IF;
8321: IF g_debug
8322: THEN
8323: hr_utility.set_location (l_proc, 140);
8324: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
8325: hr_utility.TRACE ( 'l_dy_wk_dt_elem_id:'
8326: || l_dy_wk_dt_elem_id
8327: );
8328: END IF;
8329: END IF;
8329: END IF;
8330:
8331: IF g_debug
8332: THEN
8333: hr_utility.set_location (l_proc, 150);
8334: END IF;
8335: END LOOP;
8336:
8337: IF g_debug
8335: END LOOP;
8336:
8337: IF g_debug
8338: THEN
8339: hr_utility.set_location (l_proc, 160);
8340: END IF;
8341:
8342: OPEN weekly_earning_rules (g_ep_id);
8343:
8345: INTO weekly_earning_cap, weekly_element_type_id;
8346:
8347: IF g_debug
8348: THEN
8349: hr_utility.TRACE ('weekly_earning_cap:' || weekly_earning_cap);
8350: hr_utility.TRACE ( 'weekly_element_type_id:'
8351: || weekly_element_type_id
8352: );
8353: END IF;
8346:
8347: IF g_debug
8348: THEN
8349: hr_utility.TRACE ('weekly_earning_cap:' || weekly_earning_cap);
8350: hr_utility.TRACE ( 'weekly_element_type_id:'
8351: || weekly_element_type_id
8352: );
8353: END IF;
8354:
8355: CLOSE weekly_earning_rules;
8356:
8357: IF g_debug
8358: THEN
8359: hr_utility.set_location (l_proc, 170);
8360: hr_utility.TRACE ('l_weekly_reg_hrs:' || l_weekly_reg_hrs);
8361: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
8362: END IF;
8363:
8356:
8357: IF g_debug
8358: THEN
8359: hr_utility.set_location (l_proc, 170);
8360: hr_utility.TRACE ('l_weekly_reg_hrs:' || l_weekly_reg_hrs);
8361: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
8362: END IF;
8363:
8364: -- Calculate the weekly reg total including today's REG hrs
8357: IF g_debug
8358: THEN
8359: hr_utility.set_location (l_proc, 170);
8360: hr_utility.TRACE ('l_weekly_reg_hrs:' || l_weekly_reg_hrs);
8361: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
8362: END IF;
8363:
8364: -- Calculate the weekly reg total including today's REG hrs
8365: wky_reg_incl_dy_reg_expl := l_weekly_reg_hrs + l_reg_for_day;
8365: wky_reg_incl_dy_reg_expl := l_weekly_reg_hrs + l_reg_for_day;
8366:
8367: IF g_debug
8368: THEN
8369: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
8370: || wky_reg_incl_dy_reg_expl
8371: );
8372: hr_utility.set_location (l_proc, 180);
8373: END IF;
8368: THEN
8369: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
8370: || wky_reg_incl_dy_reg_expl
8371: );
8372: hr_utility.set_location (l_proc, 180);
8373: END IF;
8374: END;
8375: -- Selects the rule type, hours, and earning element id to be paid on the
8376: -- current sub-segment.
8401: -- weekly cap until the special hours cap is hit.
8402: -- returns 0 for success, 2 for error
8403: -- Set hours_left_to_pay = 0 when last record from the array is fetched
8404: BEGIN
8405: g_debug := hr_utility.debug_enabled;
8406:
8407: -- Bug 7359347
8408: -- Setting session date.
8409: IF g_det_session_date IS NULL
8415:
8416: IF g_debug
8417: THEN
8418: l_proc := 'hxt_time_detail.use_points_to_select_rule_hrs';
8419: hr_utility.set_location (l_proc, 10);
8420: END IF;
8421:
8422: -- Populate the g_daily_earn_category plsql table with element type, hrs
8423: -- and earning Category for each element.
8424: FOR daily_categories IN daily_earning_rules (g_ep_id)
8425: LOOP
8426: IF g_debug
8427: THEN
8428: hr_utility.set_location (l_proc, 15);
8429: hr_utility.TRACE ( 'daily_categories.hours :'
8430: || daily_categories.hours
8431: );
8432: hr_utility.TRACE ( 'daily_categories.element_type_id :'
8425: LOOP
8426: IF g_debug
8427: THEN
8428: hr_utility.set_location (l_proc, 15);
8429: hr_utility.TRACE ( 'daily_categories.hours :'
8430: || daily_categories.hours
8431: );
8432: hr_utility.TRACE ( 'daily_categories.element_type_id :'
8433: || daily_categories.element_type_id
8428: hr_utility.set_location (l_proc, 15);
8429: hr_utility.TRACE ( 'daily_categories.hours :'
8430: || daily_categories.hours
8431: );
8432: hr_utility.TRACE ( 'daily_categories.element_type_id :'
8433: || daily_categories.element_type_id
8434: );
8435: END IF;
8436:
8443: IF l_category_index = 1
8444: THEN
8445: IF g_debug
8446: THEN
8447: hr_utility.set_location (l_proc, 20);
8448: END IF;
8449:
8450: g_daily_earn_category (l_category_index).earning_category :=
8451: 'REG';
8452: ELSIF l_category_index = 2
8453: THEN
8454: IF g_debug
8455: THEN
8456: hr_utility.set_location (l_proc, 25);
8457: END IF;
8458:
8459: g_daily_earn_category (l_category_index).earning_category :=
8460: 'OVT';
8461: ELSIF l_category_index = 3
8462: THEN
8463: IF g_debug
8464: THEN
8465: hr_utility.set_location (l_proc, 30);
8466: END IF;
8467:
8468: g_daily_earn_category (l_category_index).earning_category :=
8469: 'DT';
8470: END IF;
8471:
8472: IF g_debug
8473: THEN
8474: hr_utility.set_location (l_proc, 35);
8475: END IF;
8476: END LOOP;
8477:
8478: IF g_debug
8476: END LOOP;
8477:
8478: IF g_debug
8479: THEN
8480: hr_utility.set_location (l_proc, 40);
8481: END IF;
8482:
8483: FOR i IN 1 .. g_daily_earn_category.COUNT
8484: LOOP
8483: FOR i IN 1 .. g_daily_earn_category.COUNT
8484: LOOP
8485: IF g_debug
8486: THEN
8487: hr_utility.set_location (l_proc, 45);
8488: hr_utility.TRACE ( 'daily_element_type_id:'
8489: || g_daily_earn_category (i).element_type_id
8490: );
8491: hr_utility.TRACE ( 'daily_hours:'
8484: LOOP
8485: IF g_debug
8486: THEN
8487: hr_utility.set_location (l_proc, 45);
8488: hr_utility.TRACE ( 'daily_element_type_id:'
8489: || g_daily_earn_category (i).element_type_id
8490: );
8491: hr_utility.TRACE ( 'daily_hours:'
8492: || g_daily_earn_category (i).hours
8487: hr_utility.set_location (l_proc, 45);
8488: hr_utility.TRACE ( 'daily_element_type_id:'
8489: || g_daily_earn_category (i).element_type_id
8490: );
8491: hr_utility.TRACE ( 'daily_hours:'
8492: || g_daily_earn_category (i).hours
8493: );
8494: hr_utility.TRACE ( 'daily_earning_category:'
8495: || g_daily_earn_category (i).earning_category
8490: );
8491: hr_utility.TRACE ( 'daily_hours:'
8492: || g_daily_earn_category (i).hours
8493: );
8494: hr_utility.TRACE ( 'daily_earning_category:'
8495: || g_daily_earn_category (i).earning_category
8496: );
8497: hr_utility.set_location (l_proc, 50);
8498: END IF;
8493: );
8494: hr_utility.TRACE ( 'daily_earning_category:'
8495: || g_daily_earn_category (i).earning_category
8496: );
8497: hr_utility.set_location (l_proc, 50);
8498: END IF;
8499: END LOOP;
8500:
8501: -- Populate the g_weekly_earn_category plsql table with element type, hrs
8503: FOR weekly_categories IN weekly_earning_rules (g_ep_id)
8504: LOOP
8505: IF g_debug
8506: THEN
8507: hr_utility.set_location (l_proc, 55);
8508: hr_utility.TRACE ( 'weekly_categories.hours :'
8509: || weekly_categories.hours
8510: );
8511: hr_utility.TRACE ( 'weekly_categories.element_type_id :'
8504: LOOP
8505: IF g_debug
8506: THEN
8507: hr_utility.set_location (l_proc, 55);
8508: hr_utility.TRACE ( 'weekly_categories.hours :'
8509: || weekly_categories.hours
8510: );
8511: hr_utility.TRACE ( 'weekly_categories.element_type_id :'
8512: || weekly_categories.element_type_id
8507: hr_utility.set_location (l_proc, 55);
8508: hr_utility.TRACE ( 'weekly_categories.hours :'
8509: || weekly_categories.hours
8510: );
8511: hr_utility.TRACE ( 'weekly_categories.element_type_id :'
8512: || weekly_categories.element_type_id
8513: );
8514: END IF;
8515:
8522: IF l_wkl_category_index = 1
8523: THEN
8524: IF g_debug
8525: THEN
8526: hr_utility.set_location (l_proc, 60);
8527: END IF;
8528:
8529: g_weekly_earn_category (l_wkl_category_index).earning_category :=
8530: 'REG';
8539: ELSIF l_wkl_category_index = 2
8540: THEN
8541: IF g_debug
8542: THEN
8543: hr_utility.set_location (l_proc, 65);
8544: END IF;
8545:
8546: g_weekly_earn_category (l_wkl_category_index).earning_category :=
8547: 'OVT';
8554: ELSIF l_wkl_category_index = 3
8555: THEN
8556: IF g_debug
8557: THEN
8558: hr_utility.set_location (l_proc, 70);
8559: END IF;
8560:
8561: g_weekly_earn_category (l_wkl_category_index).earning_category :=
8562: 'DT';
8569: END IF;
8570:
8571: IF g_debug
8572: THEN
8573: hr_utility.set_location (l_proc, 75);
8574: END IF;
8575: END LOOP;
8576:
8577: IF g_debug
8575: END LOOP;
8576:
8577: IF g_debug
8578: THEN
8579: hr_utility.set_location (l_proc, 80);
8580: END IF;
8581:
8582: FOR i IN 1 .. g_weekly_earn_category.COUNT
8583: LOOP
8582: FOR i IN 1 .. g_weekly_earn_category.COUNT
8583: LOOP
8584: IF g_debug
8585: THEN
8586: hr_utility.set_location (l_proc, 85);
8587: hr_utility.TRACE ( 'weekly_element_type_id:'
8588: || g_weekly_earn_category (i).element_type_id
8589: );
8590: hr_utility.TRACE ( 'weekly_hours:'
8583: LOOP
8584: IF g_debug
8585: THEN
8586: hr_utility.set_location (l_proc, 85);
8587: hr_utility.TRACE ( 'weekly_element_type_id:'
8588: || g_weekly_earn_category (i).element_type_id
8589: );
8590: hr_utility.TRACE ( 'weekly_hours:'
8591: || g_weekly_earn_category (i).hours
8586: hr_utility.set_location (l_proc, 85);
8587: hr_utility.TRACE ( 'weekly_element_type_id:'
8588: || g_weekly_earn_category (i).element_type_id
8589: );
8590: hr_utility.TRACE ( 'weekly_hours:'
8591: || g_weekly_earn_category (i).hours
8592: );
8593: hr_utility.TRACE ( 'weekly_earning_category:'
8594: || g_weekly_earn_category (i).earning_category
8589: );
8590: hr_utility.TRACE ( 'weekly_hours:'
8591: || g_weekly_earn_category (i).hours
8592: );
8593: hr_utility.TRACE ( 'weekly_earning_category:'
8594: || g_weekly_earn_category (i).earning_category
8595: );
8596: hr_utility.set_location (l_proc, 90);
8597: END IF;
8592: );
8593: hr_utility.TRACE ( 'weekly_earning_category:'
8594: || g_weekly_earn_category (i).earning_category
8595: );
8596: hr_utility.set_location (l_proc, 90);
8597: END IF;
8598: END LOOP;
8599:
8600: IF g_debug
8598: END LOOP;
8599:
8600: IF g_debug
8601: THEN
8602: hr_utility.set_location (l_proc, 100);
8603: hr_utility.TRACE ('g_explosion_to_use :' || g_explosion_to_use);
8604: END IF;
8605:
8606: IF g_explosion_to_use IS NOT NULL
8599:
8600: IF g_debug
8601: THEN
8602: hr_utility.set_location (l_proc, 100);
8603: hr_utility.TRACE ('g_explosion_to_use :' || g_explosion_to_use);
8604: END IF;
8605:
8606: IF g_explosion_to_use IS NOT NULL
8607: THEN
8606: IF g_explosion_to_use IS NOT NULL
8607: THEN
8608: IF g_debug
8609: THEN
8610: hr_utility.set_location (l_proc, 110);
8611: END IF;
8612:
8613: IF g_explosion_to_use = 'SPC'
8614: THEN
8613: IF g_explosion_to_use = 'SPC'
8614: THEN
8615: IF g_debug
8616: THEN
8617: hr_utility.set_location (l_proc, 120);
8618: END IF;
8619:
8620: FOR i IN g_special_explosion.FIRST .. g_special_explosion.LAST
8621: LOOP
8620: FOR i IN g_special_explosion.FIRST .. g_special_explosion.LAST
8621: LOOP
8622: IF g_debug
8623: THEN
8624: hr_utility.set_location (l_proc, 130);
8625: hr_utility.TRACE ('i:' || i);
8626: hr_utility.TRACE
8627: ( 'g_special_explosion(i).element_type_id:'
8628: || g_special_explosion (i).element_type_id
8621: LOOP
8622: IF g_debug
8623: THEN
8624: hr_utility.set_location (l_proc, 130);
8625: hr_utility.TRACE ('i:' || i);
8626: hr_utility.TRACE
8627: ( 'g_special_explosion(i).element_type_id:'
8628: || g_special_explosion (i).element_type_id
8629: );
8622: IF g_debug
8623: THEN
8624: hr_utility.set_location (l_proc, 130);
8625: hr_utility.TRACE ('i:' || i);
8626: hr_utility.TRACE
8627: ( 'g_special_explosion(i).element_type_id:'
8628: || g_special_explosion (i).element_type_id
8629: );
8630: END IF;
8631: END LOOP;
8632:
8633: IF g_debug
8634: THEN
8635: hr_utility.set_location (l_proc, 140);
8636: END IF;
8637:
8638: g_count := g_count + 1;
8639:
8638: g_count := g_count + 1;
8639:
8640: IF g_debug
8641: THEN
8642: hr_utility.TRACE ('g_count:' || g_count);
8643: END IF;
8644:
8645: p_error_code := 0;
8646: p_rule_to_pay := 'SPC';
8650: g_special_explosion (g_count).element_type_id;
8651:
8652: IF g_debug
8653: THEN
8654: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
8655: || p_hours_to_pay_this_rule
8656: );
8657: hr_utility.TRACE ( 'p_element_type_id :'
8658: || p_element_type_id
8653: THEN
8654: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
8655: || p_hours_to_pay_this_rule
8656: );
8657: hr_utility.TRACE ( 'p_element_type_id :'
8658: || p_element_type_id
8659: );
8660: END IF;
8661:
8662: IF g_count = g_special_explosion.COUNT
8663: THEN
8664: IF g_debug
8665: THEN
8666: hr_utility.set_location (l_proc, 150);
8667: END IF;
8668:
8669: hours_left_to_pay := 0;
8670: g_explosion_to_use := NULL;
8672: special_day := FALSE;
8673:
8674: IF g_debug
8675: THEN
8676: hr_utility.TRACE ( 'hours_left_to_pay :'
8677: || hours_left_to_pay
8678: );
8679: hr_utility.TRACE ( 'g_explosion_to_use:'
8680: || g_explosion_to_use
8675: THEN
8676: hr_utility.TRACE ( 'hours_left_to_pay :'
8677: || hours_left_to_pay
8678: );
8679: hr_utility.TRACE ( 'g_explosion_to_use:'
8680: || g_explosion_to_use
8681: );
8682: END IF;
8683: END IF;
8686: ELSIF g_explosion_to_use = 'COMBO'
8687: THEN
8688: IF g_debug
8689: THEN
8690: hr_utility.set_location (l_proc, 160);
8691: END IF;
8692:
8693: FOR i IN
8694: g_dy_wk_combo_explosion.FIRST .. g_dy_wk_combo_explosion.LAST
8694: g_dy_wk_combo_explosion.FIRST .. g_dy_wk_combo_explosion.LAST
8695: LOOP
8696: IF g_debug
8697: THEN
8698: hr_utility.TRACE ('i:' || i);
8699: hr_utility.TRACE
8700: ( 'g_dy_wk_combo_explosion(i).element_type_id:'
8701: || g_dy_wk_combo_explosion (i).element_type_id
8702: );
8695: LOOP
8696: IF g_debug
8697: THEN
8698: hr_utility.TRACE ('i:' || i);
8699: hr_utility.TRACE
8700: ( 'g_dy_wk_combo_explosion(i).element_type_id:'
8701: || g_dy_wk_combo_explosion (i).element_type_id
8702: );
8703: END IF;
8704: END LOOP;
8705:
8706: IF g_debug
8707: THEN
8708: hr_utility.set_location (l_proc, 165);
8709: END IF;
8710:
8711: g_count := g_count + 1;
8712:
8711: g_count := g_count + 1;
8712:
8713: IF g_debug
8714: THEN
8715: hr_utility.TRACE ('g_count:' || g_count);
8716: END IF;
8717:
8718: p_error_code := 0;
8719: p_rule_to_pay := 'DAY';
8723: g_dy_wk_combo_explosion (g_count).element_type_id;
8724:
8725: IF g_debug
8726: THEN
8727: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
8728: || p_hours_to_pay_this_rule
8729: );
8730: hr_utility.TRACE ( 'p_element_type_id :'
8731: || p_element_type_id
8726: THEN
8727: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
8728: || p_hours_to_pay_this_rule
8729: );
8730: hr_utility.TRACE ( 'p_element_type_id :'
8731: || p_element_type_id
8732: );
8733: END IF;
8734:
8735: IF g_count = g_dy_wk_combo_explosion.COUNT
8736: THEN
8737: IF g_debug
8738: THEN
8739: hr_utility.set_location (l_proc, 170);
8740: END IF;
8741:
8742: hours_left_to_pay := 0;
8743: g_explosion_to_use := NULL;
8744: g_count := 0;
8745:
8746: IF g_debug
8747: THEN
8748: hr_utility.TRACE ( 'hours_left_to_pay :'
8749: || hours_left_to_pay
8750: );
8751: hr_utility.TRACE ( 'g_explosion_to_use:'
8752: || g_explosion_to_use
8747: THEN
8748: hr_utility.TRACE ( 'hours_left_to_pay :'
8749: || hours_left_to_pay
8750: );
8751: hr_utility.TRACE ( 'g_explosion_to_use:'
8752: || g_explosion_to_use
8753: );
8754: END IF;
8755: END IF;
8758: ELSIF g_explosion_to_use = 'DAILY'
8759: THEN
8760: IF g_debug
8761: THEN
8762: hr_utility.set_location (l_proc, 175);
8763: END IF;
8764:
8765: FOR i IN g_daily_explosion.FIRST .. g_daily_explosion.LAST
8766: LOOP
8765: FOR i IN g_daily_explosion.FIRST .. g_daily_explosion.LAST
8766: LOOP
8767: IF g_debug
8768: THEN
8769: hr_utility.TRACE ('i:' || i);
8770: hr_utility.TRACE
8771: ( 'g_daily_explosion(i).element_type_id:'
8772: || g_daily_explosion (i).element_type_id
8773: );
8766: LOOP
8767: IF g_debug
8768: THEN
8769: hr_utility.TRACE ('i:' || i);
8770: hr_utility.TRACE
8771: ( 'g_daily_explosion(i).element_type_id:'
8772: || g_daily_explosion (i).element_type_id
8773: );
8774: END IF;
8775: END LOOP;
8776:
8777: IF g_debug
8778: THEN
8779: hr_utility.set_location (l_proc, 180);
8780: END IF;
8781:
8782: g_count := g_count + 1;
8783:
8782: g_count := g_count + 1;
8783:
8784: IF g_debug
8785: THEN
8786: hr_utility.TRACE ('g_count:' || g_count);
8787: END IF;
8788:
8789: p_error_code := 0;
8790: p_rule_to_pay := 'DAY';
8794: g_daily_explosion (g_count).element_type_id;
8795:
8796: IF g_debug
8797: THEN
8798: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
8799: || p_hours_to_pay_this_rule
8800: );
8801: hr_utility.TRACE ( 'p_element_type_id :'
8802: || p_element_type_id
8797: THEN
8798: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
8799: || p_hours_to_pay_this_rule
8800: );
8801: hr_utility.TRACE ( 'p_element_type_id :'
8802: || p_element_type_id
8803: );
8804: END IF;
8805:
8806: IF g_count = g_daily_explosion.COUNT
8807: THEN
8808: IF g_debug
8809: THEN
8810: hr_utility.set_location (l_proc, 185);
8811: END IF;
8812:
8813: hours_left_to_pay := 0;
8814: g_explosion_to_use := NULL;
8815: g_count := 0;
8816:
8817: IF g_debug
8818: THEN
8819: hr_utility.TRACE ( 'hours_left_to_pay :'
8820: || hours_left_to_pay
8821: );
8822: hr_utility.TRACE ( 'g_explosion_to_use:'
8823: || g_explosion_to_use
8818: THEN
8819: hr_utility.TRACE ( 'hours_left_to_pay :'
8820: || hours_left_to_pay
8821: );
8822: hr_utility.TRACE ( 'g_explosion_to_use:'
8823: || g_explosion_to_use
8824: );
8825: END IF;
8826: END IF;
8829: ELSIF g_explosion_to_use = 'WEEKLY'
8830: THEN
8831: IF g_debug
8832: THEN
8833: hr_utility.set_location (l_proc, 190);
8834: END IF;
8835:
8836: FOR i IN g_weekly_explosion.FIRST .. g_weekly_explosion.LAST
8837: LOOP
8836: FOR i IN g_weekly_explosion.FIRST .. g_weekly_explosion.LAST
8837: LOOP
8838: IF g_debug
8839: THEN
8840: hr_utility.TRACE ('i:' || i);
8841: hr_utility.TRACE
8842: ( 'g_weekly_explosion(i).element_type_id:'
8843: || g_weekly_explosion (i).element_type_id
8844: );
8837: LOOP
8838: IF g_debug
8839: THEN
8840: hr_utility.TRACE ('i:' || i);
8841: hr_utility.TRACE
8842: ( 'g_weekly_explosion(i).element_type_id:'
8843: || g_weekly_explosion (i).element_type_id
8844: );
8845: END IF;
8846: END LOOP;
8847:
8848: IF g_debug
8849: THEN
8850: hr_utility.set_location (l_proc, 200);
8851: END IF;
8852:
8853: g_count := g_count + 1;
8854:
8853: g_count := g_count + 1;
8854:
8855: IF g_debug
8856: THEN
8857: hr_utility.TRACE ('g_count:' || g_count);
8858: END IF;
8859:
8860: p_error_code := 0;
8861: p_rule_to_pay := 'WKL';
8865: g_weekly_explosion (g_count).element_type_id;
8866:
8867: IF g_debug
8868: THEN
8869: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
8870: || p_hours_to_pay_this_rule
8871: );
8872: hr_utility.TRACE ( 'p_element_type_id :'
8873: || p_element_type_id
8868: THEN
8869: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
8870: || p_hours_to_pay_this_rule
8871: );
8872: hr_utility.TRACE ( 'p_element_type_id :'
8873: || p_element_type_id
8874: );
8875: END IF;
8876:
8877: IF g_count = g_weekly_explosion.COUNT
8878: THEN
8879: IF g_debug
8880: THEN
8881: hr_utility.set_location (l_proc, 210);
8882: END IF;
8883:
8884: hours_left_to_pay := 0;
8885: g_explosion_to_use := NULL;
8886: g_count := 0;
8887:
8888: IF g_debug
8889: THEN
8890: hr_utility.TRACE ( 'hours_left_to_pay :'
8891: || hours_left_to_pay
8892: );
8893: hr_utility.TRACE ( 'g_explosion_to_use:'
8894: || g_explosion_to_use
8889: THEN
8890: hr_utility.TRACE ( 'hours_left_to_pay :'
8891: || hours_left_to_pay
8892: );
8893: hr_utility.TRACE ( 'g_explosion_to_use:'
8894: || g_explosion_to_use
8895: );
8896: hr_utility.TRACE ('g_count :' || g_count);
8897: END IF;
8892: );
8893: hr_utility.TRACE ( 'g_explosion_to_use:'
8894: || g_explosion_to_use
8895: );
8896: hr_utility.TRACE ('g_count :' || g_count);
8897: END IF;
8898: END IF;
8899:
8900: RETURN;
8902: ELSIF g_explosion_to_use IS NULL
8903: THEN
8904: IF g_debug
8905: THEN
8906: hr_utility.set_location (l_proc, 220);
8907: hr_utility.TRACE ('g_ep_id :' || g_ep_id);
8908: END IF;
8909:
8910: IF consecutive_days_reached = TRUE
8903: THEN
8904: IF g_debug
8905: THEN
8906: hr_utility.set_location (l_proc, 220);
8907: hr_utility.TRACE ('g_ep_id :' || g_ep_id);
8908: END IF;
8909:
8910: IF consecutive_days_reached = TRUE
8911: THEN
8910: IF consecutive_days_reached = TRUE
8911: THEN
8912: IF g_debug
8913: THEN
8914: hr_utility.set_location (l_proc, 230);
8915: END IF;
8916:
8917: -- Get the contiguous hours worked on the special day
8918: -- Following code changed to fix 2839573
8919: spc_hours_paid := NVL (previous_detail_hours_day, 0);
8920:
8921: IF g_debug
8922: THEN
8923: hr_utility.TRACE ('spc_hours_paid :' || spc_hours_paid);
8924: hr_utility.TRACE ('g_hours :' || g_hours);
8925: END IF;
8926:
8927: total_hrs_worked_on_spc := g_hours + NVL (spc_hours_paid, 0);
8920:
8921: IF g_debug
8922: THEN
8923: hr_utility.TRACE ('spc_hours_paid :' || spc_hours_paid);
8924: hr_utility.TRACE ('g_hours :' || g_hours);
8925: END IF;
8926:
8927: total_hrs_worked_on_spc := g_hours + NVL (spc_hours_paid, 0);
8928:
8927: total_hrs_worked_on_spc := g_hours + NVL (spc_hours_paid, 0);
8928:
8929: IF g_debug
8930: THEN
8931: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
8932: || total_hrs_worked_on_spc
8933: );
8934: END IF;
8935:
8935:
8936: /*
8937: IF g_time_in IS NOT NULL
8938: THEN
8939: hr_utility.set_location (l_proc, 240);
8940: spc_hours_paid :=
8941: contig_hours_worked (g_date_worked, g_egt_id, g_tim_id);
8942: hr_utility.TRACE ('spc_hours_paid :' || spc_hours_paid);
8943: hr_utility.TRACE ('g_hours :' || g_hours);
8938: THEN
8939: hr_utility.set_location (l_proc, 240);
8940: spc_hours_paid :=
8941: contig_hours_worked (g_date_worked, g_egt_id, g_tim_id);
8942: hr_utility.TRACE ('spc_hours_paid :' || spc_hours_paid);
8943: hr_utility.TRACE ('g_hours :' || g_hours);
8944: total_hrs_worked_on_spc :=
8945: g_hours + NVL (spc_hours_paid, 0);
8946: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
8939: hr_utility.set_location (l_proc, 240);
8940: spc_hours_paid :=
8941: contig_hours_worked (g_date_worked, g_egt_id, g_tim_id);
8942: hr_utility.TRACE ('spc_hours_paid :' || spc_hours_paid);
8943: hr_utility.TRACE ('g_hours :' || g_hours);
8944: total_hrs_worked_on_spc :=
8945: g_hours + NVL (spc_hours_paid, 0);
8946: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
8947: || total_hrs_worked_on_spc
8942: hr_utility.TRACE ('spc_hours_paid :' || spc_hours_paid);
8943: hr_utility.TRACE ('g_hours :' || g_hours);
8944: total_hrs_worked_on_spc :=
8945: g_hours + NVL (spc_hours_paid, 0);
8946: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
8947: || total_hrs_worked_on_spc
8948: );
8949: ELSE
8950: hr_utility.set_location (l_proc, 250);
8946: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
8947: || total_hrs_worked_on_spc
8948: );
8949: ELSE
8950: hr_utility.set_location (l_proc, 250);
8951: OPEN all_detail_hours_spc (g_date_worked,
8952: g_person_id,
8953: g_tim_id
8954: );
8955:
8956: FETCH all_detail_hours_spc
8957: INTO spc_hours_paid;
8958:
8959: hr_utility.TRACE ('spc_hours_paid :' || spc_hours_paid);
8960: CLOSE all_detail_hours_spc;
8961:
8962: hr_utility.TRACE ('g_hours :' || g_hours);
8963: total_hrs_worked_on_spc := g_hours + NVL (spc_hours_paid, 0);
8958:
8959: hr_utility.TRACE ('spc_hours_paid :' || spc_hours_paid);
8960: CLOSE all_detail_hours_spc;
8961:
8962: hr_utility.TRACE ('g_hours :' || g_hours);
8963: total_hrs_worked_on_spc := g_hours + NVL (spc_hours_paid, 0);
8964: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
8965: || total_hrs_worked_on_spc
8966: );
8960: CLOSE all_detail_hours_spc;
8961:
8962: hr_utility.TRACE ('g_hours :' || g_hours);
8963: total_hrs_worked_on_spc := g_hours + NVL (spc_hours_paid, 0);
8964: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
8965: || total_hrs_worked_on_spc
8966: );
8967: END IF;
8968: */
8967: END IF;
8968: */
8969: IF g_debug
8970: THEN
8971: hr_utility.set_location (l_proc, 240);
8972: END IF;
8973:
8974: -- Commented out the following as the fix for 2828201 was to do with
8975: -- the total hours not being calculated correctly when entering time
8993:
8994: LOOP
8995: IF g_debug
8996: THEN
8997: hr_utility.set_location (l_proc, 270);
8998: END IF;
8999:
9000: FETCH special_earning_rules
9001: INTO spc_daily_earning_cap, spc_element_type_id,
9002: special_days;
9003:
9004: IF g_debug
9005: THEN
9006: hr_utility.TRACE ( 'spc_daily_earning_cap :'
9007: || spc_daily_earning_cap
9008: );
9009: hr_utility.TRACE ( 'spc_element_type_id :'
9010: || spc_element_type_id
9005: THEN
9006: hr_utility.TRACE ( 'spc_daily_earning_cap :'
9007: || spc_daily_earning_cap
9008: );
9009: hr_utility.TRACE ( 'spc_element_type_id :'
9010: || spc_element_type_id
9011: );
9012: hr_utility.TRACE ( 'special_days :'
9013: || special_days
9008: );
9009: hr_utility.TRACE ( 'spc_element_type_id :'
9010: || spc_element_type_id
9011: );
9012: hr_utility.TRACE ( 'special_days :'
9013: || special_days
9014: );
9015: hr_utility.TRACE ( 'spc_hours_paid :'
9016: || spc_hours_paid
9011: );
9012: hr_utility.TRACE ( 'special_days :'
9013: || special_days
9014: );
9015: hr_utility.TRACE ( 'spc_hours_paid :'
9016: || spc_hours_paid
9017: );
9018: hr_utility.TRACE ('g_hours :'
9019: || g_hours
9014: );
9015: hr_utility.TRACE ( 'spc_hours_paid :'
9016: || spc_hours_paid
9017: );
9018: hr_utility.TRACE ('g_hours :'
9019: || g_hours
9020: );
9021: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
9022: || total_hrs_worked_on_spc
9017: );
9018: hr_utility.TRACE ('g_hours :'
9019: || g_hours
9020: );
9021: hr_utility.TRACE ( 'total_hrs_worked_on_spc :'
9022: || total_hrs_worked_on_spc
9023: );
9024: END IF;
9025:
9029: IF special_earning_rules%FOUND
9030: THEN
9031: IF g_debug
9032: THEN
9033: hr_utility.set_location (l_proc, 280);
9034: END IF;
9035:
9036: special_day := TRUE;
9037: g_explosion_to_use := 'SPC';
9040: IF spc_hours_paid < total_hrs_worked_on_spc
9041: THEN
9042: IF g_debug
9043: THEN
9044: hr_utility.set_location (l_proc, 290);
9045: END IF;
9046:
9047: spc_hours :=
9048: LEAST ((spc_daily_earning_cap - spc_hours_paid),
9058: FOR i IN 1 .. g_special_explosion.COUNT
9059: LOOP
9060: IF g_debug
9061: THEN
9062: hr_utility.TRACE
9063: ( 'spc_element_type_id:'
9064: || g_special_explosion (i).element_type_id
9065: );
9066: hr_utility.TRACE
9062: hr_utility.TRACE
9063: ( 'spc_element_type_id:'
9064: || g_special_explosion (i).element_type_id
9065: );
9066: hr_utility.TRACE
9067: ( 'hours_to_pay in plsql table:'
9068: || g_special_explosion (i).hours_to_pay
9069: );
9070: END IF;
9073: spc_hours_paid := spc_hours_paid + spc_hours;
9074:
9075: IF g_debug
9076: THEN
9077: hr_utility.TRACE ('spc_hours_paid:' || spc_hours_paid);
9078: END IF;
9079: END IF;
9080:
9081: IF g_debug
9079: END IF;
9080:
9081: IF g_debug
9082: THEN
9083: hr_utility.set_location (l_proc, 300);
9084: END IF;
9085: END LOOP;
9086:
9087: IF g_debug
9085: END LOOP;
9086:
9087: IF g_debug
9088: THEN
9089: hr_utility.set_location (l_proc, 310);
9090: END IF;
9091:
9092: CLOSE special_earning_rules;
9093: END IF;
9095: IF special_day = FALSE
9096: THEN
9097: IF g_debug
9098: THEN
9099: hr_utility.set_location (l_proc, 320);
9100: END IF;
9101:
9102: --
9103: -----------------------------BEGIN Daily Points Calculation---------------------
9105: OPEN daily_earning_rules (g_ep_id);
9106:
9107: IF g_debug
9108: THEN
9109: hr_utility.set_location (l_proc, 330);
9110: END IF;
9111:
9112: -- Commented out the following. Instead calling the adjust_for_hdp funtion
9113: -- to determine the hours that are left to be paid, since hours need to be
9117: hours_left := p_hours_worked;
9118:
9119: IF g_debug
9120: THEN
9121: hr_utility.TRACE ('hours_left :' || hours_left);
9122: hr_utility.TRACE ('l_override_hrs :' || l_override_hrs);
9123: hr_utility.TRACE ( 'g_date_worked :'
9124: || TO_CHAR (g_date_worked,
9125: 'DD-MON-YYYY HH24:MI:SS'
9118:
9119: IF g_debug
9120: THEN
9121: hr_utility.TRACE ('hours_left :' || hours_left);
9122: hr_utility.TRACE ('l_override_hrs :' || l_override_hrs);
9123: hr_utility.TRACE ( 'g_date_worked :'
9124: || TO_CHAR (g_date_worked,
9125: 'DD-MON-YYYY HH24:MI:SS'
9126: )
9119: IF g_debug
9120: THEN
9121: hr_utility.TRACE ('hours_left :' || hours_left);
9122: hr_utility.TRACE ('l_override_hrs :' || l_override_hrs);
9123: hr_utility.TRACE ( 'g_date_worked :'
9124: || TO_CHAR (g_date_worked,
9125: 'DD-MON-YYYY HH24:MI:SS'
9126: )
9127: );
9124: || TO_CHAR (g_date_worked,
9125: 'DD-MON-YYYY HH24:MI:SS'
9126: )
9127: );
9128: hr_utility.TRACE ('g_egt_id :' || g_egt_id);
9129: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
9130: END IF;
9131:
9132: overtime_hoursoverride (g_date_worked,
9125: 'DD-MON-YYYY HH24:MI:SS'
9126: )
9127: );
9128: hr_utility.TRACE ('g_egt_id :' || g_egt_id);
9129: hr_utility.TRACE ('g_tim_id :' || g_tim_id);
9130: END IF;
9131:
9132: overtime_hoursoverride (g_date_worked,
9133: g_egt_id,
9137: );
9138:
9139: IF g_debug
9140: THEN
9141: hr_utility.TRACE ('l_override_hrs :' || l_override_hrs);
9142: hr_utility.TRACE ( 'l_override_element :'
9143: || l_override_element
9144: );
9145: END IF;
9138:
9139: IF g_debug
9140: THEN
9141: hr_utility.TRACE ('l_override_hrs :' || l_override_hrs);
9142: hr_utility.TRACE ( 'l_override_element :'
9143: || l_override_element
9144: );
9145: END IF;
9146:
9146:
9147: LOOP
9148: IF g_debug
9149: THEN
9150: hr_utility.set_location (l_proc, 340);
9151: END IF;
9152:
9153: hrs_already_paid := FALSE;
9154: h := h + 1;
9157: INTO daily_earning_cap, daily_element_type_id;
9158:
9159: IF g_debug
9160: THEN
9161: hr_utility.TRACE ( 'daily_earning_cap :'
9162: || daily_earning_cap
9163: );
9164: hr_utility.TRACE ( 'daily_element_type_id :'
9165: || daily_element_type_id
9160: THEN
9161: hr_utility.TRACE ( 'daily_earning_cap :'
9162: || daily_earning_cap
9163: );
9164: hr_utility.TRACE ( 'daily_element_type_id :'
9165: || daily_element_type_id
9166: );
9167: END IF;
9168:
9169: IF h = 1
9170: THEN
9171: IF g_debug
9172: THEN
9173: hr_utility.set_location (l_proc, 350);
9174: END IF;
9175:
9176: hours_paid_for_day := NVL (previous_detail_hours_day, 0);
9177: --hours_paid_for_day:=hours_paid_for_day-2;
9183: END IF;
9184:
9185: IF g_debug
9186: THEN
9187: hr_utility.set_location (l_proc, 360);
9188: hr_utility.TRACE ( 'hours_paid_for_day :'
9189: || hours_paid_for_day
9190: );
9191: hr_utility.TRACE ('g_hours :' || g_hours);
9184:
9185: IF g_debug
9186: THEN
9187: hr_utility.set_location (l_proc, 360);
9188: hr_utility.TRACE ( 'hours_paid_for_day :'
9189: || hours_paid_for_day
9190: );
9191: hr_utility.TRACE ('g_hours :' || g_hours);
9192: hr_utility.TRACE ( 'total_hours_to_pay :'
9187: hr_utility.set_location (l_proc, 360);
9188: hr_utility.TRACE ( 'hours_paid_for_day :'
9189: || hours_paid_for_day
9190: );
9191: hr_utility.TRACE ('g_hours :' || g_hours);
9192: hr_utility.TRACE ( 'total_hours_to_pay :'
9193: || total_hours_to_pay
9194: );
9195: END IF;
9188: hr_utility.TRACE ( 'hours_paid_for_day :'
9189: || hours_paid_for_day
9190: );
9191: hr_utility.TRACE ('g_hours :' || g_hours);
9192: hr_utility.TRACE ( 'total_hours_to_pay :'
9193: || total_hours_to_pay
9194: );
9195: END IF;
9196:
9197: EXIT WHEN hours_left = 0 AND h > 1;
9198:
9199: IF g_debug
9200: THEN
9201: hr_utility.set_location (l_proc, 370);
9202: END IF;
9203:
9204: /* IF hours_paid_for_day < total_hours_to_pay THEN
9205: hr_utility.set_location(l_proc,100);
9201: hr_utility.set_location (l_proc, 370);
9202: END IF;
9203:
9204: /* IF hours_paid_for_day < total_hours_to_pay THEN
9205: hr_utility.set_location(l_proc,100);
9206: hours_for_points := LEAST( (daily_earning_cap - hours_paid_for_day)
9207: ,(g_hours - hours_paid_for_day) );
9208: hr_utility.trace('hours_for_points :'||hours_for_points);
9209: */
9204: /* IF hours_paid_for_day < total_hours_to_pay THEN
9205: hr_utility.set_location(l_proc,100);
9206: hours_for_points := LEAST( (daily_earning_cap - hours_paid_for_day)
9207: ,(g_hours - hours_paid_for_day) );
9208: hr_utility.trace('hours_for_points :'||hours_for_points);
9209: */
9210: /* IF hours_paid_for_day < daily_earning_cap THEN
9211: hours_for_points :=LEAST(g_hours,(daily_earning_cap - hours_paid_for_day));
9212: hr_utility.set_location(l_proc,100);
9208: hr_utility.trace('hours_for_points :'||hours_for_points);
9209: */
9210: /* IF hours_paid_for_day < daily_earning_cap THEN
9211: hours_for_points :=LEAST(g_hours,(daily_earning_cap - hours_paid_for_day));
9212: hr_utility.set_location(l_proc,100);
9213: hr_utility.trace('hours_for_points :'||hours_for_points);
9214: */
9215: IF g_debug
9216: THEN
9209: */
9210: /* IF hours_paid_for_day < daily_earning_cap THEN
9211: hours_for_points :=LEAST(g_hours,(daily_earning_cap - hours_paid_for_day));
9212: hr_utility.set_location(l_proc,100);
9213: hr_utility.trace('hours_for_points :'||hours_for_points);
9214: */
9215: IF g_debug
9216: THEN
9217: hr_utility.TRACE ('hours_left:' || hours_left);
9213: hr_utility.trace('hours_for_points :'||hours_for_points);
9214: */
9215: IF g_debug
9216: THEN
9217: hr_utility.TRACE ('hours_left:' || hours_left);
9218: hr_utility.TRACE ( 'hours_paid_for_day:'
9219: || hours_paid_for_day
9220: );
9221: hr_utility.TRACE ('l_override_hrs:' || l_override_hrs);
9214: */
9215: IF g_debug
9216: THEN
9217: hr_utility.TRACE ('hours_left:' || hours_left);
9218: hr_utility.TRACE ( 'hours_paid_for_day:'
9219: || hours_paid_for_day
9220: );
9221: hr_utility.TRACE ('l_override_hrs:' || l_override_hrs);
9222: hr_utility.TRACE ( 'daily_earning_cap:'
9217: hr_utility.TRACE ('hours_left:' || hours_left);
9218: hr_utility.TRACE ( 'hours_paid_for_day:'
9219: || hours_paid_for_day
9220: );
9221: hr_utility.TRACE ('l_override_hrs:' || l_override_hrs);
9222: hr_utility.TRACE ( 'daily_earning_cap:'
9223: || daily_earning_cap
9224: );
9225: END IF;
9218: hr_utility.TRACE ( 'hours_paid_for_day:'
9219: || hours_paid_for_day
9220: );
9221: hr_utility.TRACE ('l_override_hrs:' || l_override_hrs);
9222: hr_utility.TRACE ( 'daily_earning_cap:'
9223: || daily_earning_cap
9224: );
9225: END IF;
9226:
9227: IF hours_left >= 0
9228: THEN
9229: IF g_debug
9230: THEN
9231: hr_utility.set_location (l_proc, 380);
9232: END IF;
9233:
9234: IF (hours_paid_for_day - l_override_hrs) >=
9235: daily_earning_cap
9238: -- used anymore.
9239: -- OR l_daily_total >= daily_earning_cap THEN
9240: IF g_debug
9241: THEN
9242: hr_utility.set_location (l_proc, 390);
9243: END IF;
9244:
9245: -- next line changed for bug 2822172
9246: OPEN daily_earning_rules2 (g_ep_id,
9253: INTO daily_earning_cap2, daily_element_type_id;
9254:
9255: IF g_debug
9256: THEN
9257: hr_utility.TRACE ( 'daily_earning_cap2 :'
9258: || daily_earning_cap2
9259: );
9260: hr_utility.TRACE ( 'daily_element_type_id :'
9261: || daily_element_type_id
9256: THEN
9257: hr_utility.TRACE ( 'daily_earning_cap2 :'
9258: || daily_earning_cap2
9259: );
9260: hr_utility.TRACE ( 'daily_element_type_id :'
9261: || daily_element_type_id
9262: );
9263: END IF;
9264:
9275: AND hours_for_points <= l_override_hrs
9276: THEN
9277: IF g_debug
9278: THEN
9279: hr_utility.TRACE ( 'l_override_hrs:'
9280: || l_override_hrs
9281: );
9282: hr_utility.TRACE ( 'daily_earning_cap2:'
9283: || daily_earning_cap2
9278: THEN
9279: hr_utility.TRACE ( 'l_override_hrs:'
9280: || l_override_hrs
9281: );
9282: hr_utility.TRACE ( 'daily_earning_cap2:'
9283: || daily_earning_cap2
9284: );
9285: hr_utility.TRACE ( 'daily_earning_cap:'
9286: || daily_earning_cap
9281: );
9282: hr_utility.TRACE ( 'daily_earning_cap2:'
9283: || daily_earning_cap2
9284: );
9285: hr_utility.TRACE ( 'daily_earning_cap:'
9286: || daily_earning_cap
9287: );
9288: END IF;
9289:
9291: daily_earning_cap2 - daily_earning_cap
9292: THEN
9293: IF g_debug
9294: THEN
9295: hr_utility.set_location (l_proc, 390.1);
9296: END IF;
9297:
9298: hrs_already_paid := TRUE;
9299: hours_for_points := 0;
9302: END IF;
9303:
9304: IF g_debug
9305: THEN
9306: hr_utility.TRACE ( 'hours_for_points :'
9307: || hours_for_points
9308: );
9309: END IF;
9310: ELSE
9309: END IF;
9310: ELSE
9311: IF g_debug
9312: THEN
9313: hr_utility.set_location (l_proc, 400);
9314: END IF;
9315:
9316: IF daily_element_type_id = l_override_element
9317: THEN
9321: )
9322: THEN
9323: IF g_debug
9324: THEN
9325: hr_utility.set_location (l_proc, 400.1);
9326: END IF;
9327:
9328: hours_for_points :=
9329: LEAST (hours_left,
9333: );
9334: ELSE
9335: IF g_debug
9336: THEN
9337: hr_utility.set_location (l_proc, 400.2);
9338: END IF;
9339:
9340: hours_for_points :=
9341: LEAST (hours_left,
9348: END IF;
9349: ELSE
9350: IF g_debug
9351: THEN
9352: hr_utility.set_location (l_proc, 400.3);
9353: END IF;
9354:
9355: hours_for_points :=
9356: LEAST (hours_left,
9362: END IF;
9363:
9364: IF g_debug
9365: THEN
9366: hr_utility.TRACE ( 'hours_for_points :'
9367: || hours_for_points
9368: );
9369: END IF;
9370:
9384: AND hours_for_points > l_override_hrs
9385: THEN
9386: IF g_debug
9387: THEN
9388: hr_utility.set_location (l_proc, 401);
9389: END IF;
9390:
9391: hrs_already_paid := FALSE;
9392: hours_for_points :=
9395: AND hours_for_points <= l_override_hrs
9396: THEN
9397: IF g_debug
9398: THEN
9399: hr_utility.TRACE ( 'l_override_hrs:'
9400: || l_override_hrs
9401: );
9402: hr_utility.TRACE ( 'daily_earning_cap:'
9403: || daily_earning_cap
9398: THEN
9399: hr_utility.TRACE ( 'l_override_hrs:'
9400: || l_override_hrs
9401: );
9402: hr_utility.TRACE ( 'daily_earning_cap:'
9403: || daily_earning_cap
9404: );
9405: hr_utility.TRACE ( 'prev_daily_cap:'
9406: || prev_daily_cap
9401: );
9402: hr_utility.TRACE ( 'daily_earning_cap:'
9403: || daily_earning_cap
9404: );
9405: hr_utility.TRACE ( 'prev_daily_cap:'
9406: || prev_daily_cap
9407: );
9408: END IF;
9409:
9411: daily_earning_cap - prev_daily_cap
9412: THEN
9413: IF g_debug
9414: THEN
9415: hr_utility.set_location (l_proc, 402);
9416: END IF;
9417:
9418: hrs_already_paid := TRUE;
9419: hours_for_points := 0;
9420: segment_points := 0;
9421: ELSE
9422: IF g_debug
9423: THEN
9424: hr_utility.set_location (l_proc, 402.1);
9425: END IF;
9426:
9427: hrs_already_paid := FALSE;
9428: END IF;
9429: END IF;
9430:
9431: IF g_debug
9432: THEN
9433: hr_utility.set_location (l_proc, 403);
9434: hr_utility.TRACE ( 'hours_for_points :'
9435: || hours_for_points
9436: );
9437: END IF;
9430:
9431: IF g_debug
9432: THEN
9433: hr_utility.set_location (l_proc, 403);
9434: hr_utility.TRACE ( 'hours_for_points :'
9435: || hours_for_points
9436: );
9437: END IF;
9438: END IF;
9438: END IF;
9439:
9440: IF g_debug
9441: THEN
9442: hr_utility.set_location (l_proc, 405);
9443: hr_utility.TRACE ('segment_points:' || segment_points);
9444: END IF;
9445:
9446: IF hrs_already_paid = FALSE
9439:
9440: IF g_debug
9441: THEN
9442: hr_utility.set_location (l_proc, 405);
9443: hr_utility.TRACE ('segment_points:' || segment_points);
9444: END IF;
9445:
9446: IF hrs_already_paid = FALSE
9447: THEN
9446: IF hrs_already_paid = FALSE
9447: THEN
9448: IF g_debug
9449: THEN
9450: hr_utility.set_location (l_proc, 410);
9451: END IF;
9452:
9453: hours_left := (hours_left - (hours_for_points));
9454:
9453: hours_left := (hours_left - (hours_for_points));
9454:
9455: IF g_debug
9456: THEN
9457: hr_utility.TRACE ('hours_left :' || hours_left);
9458: END IF;
9459:
9460: SELECT NVL (points_assigned, 0)
9461: INTO l_points_assigned
9465: AND aei.effective_end_date;
9466:
9467: IF g_debug
9468: THEN
9469: hr_utility.TRACE ( 'l_points_assigned :'
9470: || l_points_assigned
9471: );
9472: END IF;
9473:
9474: segment_points := hours_for_points * l_points_assigned;
9475:
9476: IF g_debug
9477: THEN
9478: hr_utility.TRACE ( 'segment_points :'
9479: || segment_points
9480: );
9481: END IF;
9482:
9489: FOR i IN 1 .. g_daily_earn_category.COUNT
9490: LOOP
9491: IF g_debug
9492: THEN
9493: hr_utility.set_location (l_proc, 420);
9494: hr_utility.TRACE ( 'daily_element_type_id:'
9495: || daily_element_type_id
9496: );
9497: hr_utility.TRACE
9490: LOOP
9491: IF g_debug
9492: THEN
9493: hr_utility.set_location (l_proc, 420);
9494: hr_utility.TRACE ( 'daily_element_type_id:'
9495: || daily_element_type_id
9496: );
9497: hr_utility.TRACE
9498: ( 'g_daily_earn_category(i).element_type_id:'
9493: hr_utility.set_location (l_proc, 420);
9494: hr_utility.TRACE ( 'daily_element_type_id:'
9495: || daily_element_type_id
9496: );
9497: hr_utility.TRACE
9498: ( 'g_daily_earn_category(i).element_type_id:'
9499: || g_daily_earn_category (i).element_type_id
9500: );
9501: END IF;
9504: daily_element_type_id
9505: THEN
9506: IF g_debug
9507: THEN
9508: hr_utility.set_location (l_proc, 430);
9509: END IF;
9510:
9511: g_daily_explosion (l_daily_index).earning_category :=
9512: g_daily_earn_category (i).earning_category;
9513: END IF;
9514:
9515: IF g_debug
9516: THEN
9517: hr_utility.set_location (l_proc, 440);
9518: END IF;
9519: END LOOP;
9520:
9521: IF g_debug
9519: END LOOP;
9520:
9521: IF g_debug
9522: THEN
9523: hr_utility.set_location (l_proc, 450);
9524: END IF;
9525:
9526: FOR i IN 1 .. g_daily_explosion.COUNT
9527: LOOP
9526: FOR i IN 1 .. g_daily_explosion.COUNT
9527: LOOP
9528: IF g_debug
9529: THEN
9530: hr_utility.set_location (l_proc, 460);
9531: hr_utility.TRACE
9532: ( 'daily_element_type_id:'
9533: || g_daily_explosion (i).element_type_id
9534: );
9527: LOOP
9528: IF g_debug
9529: THEN
9530: hr_utility.set_location (l_proc, 460);
9531: hr_utility.TRACE
9532: ( 'daily_element_type_id:'
9533: || g_daily_explosion (i).element_type_id
9534: );
9535: hr_utility.TRACE
9531: hr_utility.TRACE
9532: ( 'daily_element_type_id:'
9533: || g_daily_explosion (i).element_type_id
9534: );
9535: hr_utility.TRACE
9536: ( 'hours_to_pay in plsql table:'
9537: || g_daily_explosion (i).hours_to_pay
9538: );
9539: hr_utility.set_location (l_proc, 470);
9535: hr_utility.TRACE
9536: ( 'hours_to_pay in plsql table:'
9537: || g_daily_explosion (i).hours_to_pay
9538: );
9539: hr_utility.set_location (l_proc, 470);
9540: END IF;
9541: END LOOP;
9542:
9543: IF g_debug
9541: END LOOP;
9542:
9543: IF g_debug
9544: THEN
9545: hr_utility.set_location (l_proc, 480);
9546: END IF;
9547:
9548: -- Added the following for bug 2853355.
9549: IF g_debug
9547:
9548: -- Added the following for bug 2853355.
9549: IF g_debug
9550: THEN
9551: hr_utility.set_location (l_proc, 490);
9552: hr_utility.TRACE ( 'hours_paid_for_day:'
9553: || hours_paid_for_day
9554: );
9555: hr_utility.TRACE ( 'hours_for_points:'
9548: -- Added the following for bug 2853355.
9549: IF g_debug
9550: THEN
9551: hr_utility.set_location (l_proc, 490);
9552: hr_utility.TRACE ( 'hours_paid_for_day:'
9553: || hours_paid_for_day
9554: );
9555: hr_utility.TRACE ( 'hours_for_points:'
9556: || hours_for_points
9551: hr_utility.set_location (l_proc, 490);
9552: hr_utility.TRACE ( 'hours_paid_for_day:'
9553: || hours_paid_for_day
9554: );
9555: hr_utility.TRACE ( 'hours_for_points:'
9556: || hours_for_points
9557: );
9558: hr_utility.TRACE ( 'l_override_hrs:'
9559: || l_override_hrs
9554: );
9555: hr_utility.TRACE ( 'hours_for_points:'
9556: || hours_for_points
9557: );
9558: hr_utility.TRACE ( 'l_override_hrs:'
9559: || l_override_hrs
9560: );
9561: END IF;
9562:
9564: hours_paid_for_day + hours_for_points;
9565:
9566: IF g_debug
9567: THEN
9568: hr_utility.TRACE ( 'hours_paid_for_day:'
9569: || hours_paid_for_day
9570: );
9571: hr_utility.set_location (l_proc, 500);
9572: END IF;
9567: THEN
9568: hr_utility.TRACE ( 'hours_paid_for_day:'
9569: || hours_paid_for_day
9570: );
9571: hr_utility.set_location (l_proc, 500);
9572: END IF;
9573: END IF;
9574: END IF;
9575:
9574: END IF;
9575:
9576: IF g_debug
9577: THEN
9578: hr_utility.set_location (l_proc, 510);
9579: END IF;
9580:
9581: total_daily_points := total_daily_points + segment_points;
9582:
9581: total_daily_points := total_daily_points + segment_points;
9582:
9583: IF g_debug
9584: THEN
9585: hr_utility.TRACE ( 'total_daily_points :'
9586: || total_daily_points
9587: );
9588: END IF;
9589:
9590: prev_daily_cap := daily_earning_cap;
9591:
9592: IF g_debug
9593: THEN
9594: hr_utility.TRACE ('prev_daily_cap:' || prev_daily_cap);
9595: END IF;
9596:
9597: IF g_debug
9598: THEN
9595: END IF;
9596:
9597: IF g_debug
9598: THEN
9599: hr_utility.TRACE ( 'total_hours_to_pay :'
9600: || total_hours_to_pay
9601: );
9602: hr_utility.TRACE ( 'hours_paid_for_day :'
9603: || hours_paid_for_day
9598: THEN
9599: hr_utility.TRACE ( 'total_hours_to_pay :'
9600: || total_hours_to_pay
9601: );
9602: hr_utility.TRACE ( 'hours_paid_for_day :'
9603: || hours_paid_for_day
9604: );
9605: END IF;
9606:
9607: -- EXIT WHEN hours_paid_for_day = g_hours;
9608: -- EXIT WHEN total_hours_to_pay = hours_paid_for_day;
9609: IF g_debug
9610: THEN
9611: hr_utility.set_location (l_proc, 520);
9612: END IF;
9613: END LOOP;
9614:
9615: IF g_debug
9613: END LOOP;
9614:
9615: IF g_debug
9616: THEN
9617: hr_utility.set_location (l_proc, 530);
9618: END IF;
9619:
9620: CLOSE daily_earning_rules;
9621:
9626: ---------------------------BEGIN Weekly Points Calculation----------------------
9627: --
9628: IF g_debug
9629: THEN
9630: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
9631: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
9632: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
9633: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap);
9634: END IF;
9627: --
9628: IF g_debug
9629: THEN
9630: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
9631: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
9632: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
9633: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap);
9634: END IF;
9635:
9628: IF g_debug
9629: THEN
9630: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
9631: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
9632: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
9633: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap);
9634: END IF;
9635:
9636: -- Initialize the variables before calculating the weekly points
9629: THEN
9630: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
9631: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
9632: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
9633: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap);
9634: END IF;
9635:
9636: -- Initialize the variables before calculating the weekly points
9637: init_for_wkl_combine_pts_cal (use_weekly_reg,
9652: );
9653:
9654: IF g_debug
9655: THEN
9656: hr_utility.TRACE ( 'l_dy_wk_reg_elem_id:'
9657: || l_dy_wk_reg_elem_id
9658: );
9659: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
9660: || l_dy_wk_ovt_elem_id
9655: THEN
9656: hr_utility.TRACE ( 'l_dy_wk_reg_elem_id:'
9657: || l_dy_wk_reg_elem_id
9658: );
9659: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
9660: || l_dy_wk_ovt_elem_id
9661: );
9662: hr_utility.TRACE ('l_dy_wk_dt_elem_id:'
9663: || l_dy_wk_dt_elem_id
9658: );
9659: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
9660: || l_dy_wk_ovt_elem_id
9661: );
9662: hr_utility.TRACE ('l_dy_wk_dt_elem_id:'
9663: || l_dy_wk_dt_elem_id
9664: );
9665: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
9666: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
9661: );
9662: hr_utility.TRACE ('l_dy_wk_dt_elem_id:'
9663: || l_dy_wk_dt_elem_id
9664: );
9665: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
9666: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
9667: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
9668: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
9669: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
9662: hr_utility.TRACE ('l_dy_wk_dt_elem_id:'
9663: || l_dy_wk_dt_elem_id
9664: );
9665: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
9666: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
9667: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
9668: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
9669: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
9670: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
9663: || l_dy_wk_dt_elem_id
9664: );
9665: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
9666: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
9667: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
9668: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
9669: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
9670: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
9671: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
9664: );
9665: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
9666: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
9667: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
9668: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
9669: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
9670: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
9671: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
9672: || wky_reg_incl_dy_reg_expl
9665: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
9666: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
9667: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
9668: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
9669: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
9670: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
9671: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
9672: || wky_reg_incl_dy_reg_expl
9673: );
9666: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
9667: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
9668: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
9669: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
9670: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
9671: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
9672: || wky_reg_incl_dy_reg_expl
9673: );
9674: hr_utility.TRACE ('l_weekly_REG_hrs:' || l_weekly_reg_hrs);
9667: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
9668: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
9669: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
9670: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
9671: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
9672: || wky_reg_incl_dy_reg_expl
9673: );
9674: hr_utility.TRACE ('l_weekly_REG_hrs:' || l_weekly_reg_hrs);
9675: END IF;
9670: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
9671: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
9672: || wky_reg_incl_dy_reg_expl
9673: );
9674: hr_utility.TRACE ('l_weekly_REG_hrs:' || l_weekly_reg_hrs);
9675: END IF;
9676:
9677: OPEN weekly_earning_rules (g_ep_id);
9678:
9677: OPEN weekly_earning_rules (g_ep_id);
9678:
9679: IF g_debug
9680: THEN
9681: hr_utility.set_location (l_proc, 620);
9682: END IF;
9683:
9684: -- Commented out the following. Instead calling the adjust_for_hdp funtion
9685: -- to determine the hours that are left to be paid, since hours need to be
9689: hours_left := p_hours_worked;
9690:
9691: IF g_debug
9692: THEN
9693: hr_utility.TRACE ('hours_left :' || hours_left);
9694: END IF;
9695:
9696: -- line added for bug 2822172
9697: hours_for_points := 0;
9698:
9699: LOOP
9700: IF g_debug
9701: THEN
9702: hr_utility.set_location (l_proc, 625);
9703: END IF;
9704:
9705: j := j + 1;
9706:
9708: INTO weekly_earning_cap, weekly_element_type_id;
9709:
9710: IF g_debug
9711: THEN
9712: hr_utility.TRACE ( 'weekly_earning_cap :'
9713: || weekly_earning_cap
9714: );
9715: hr_utility.TRACE ( 'weekly_element_type_id :'
9716: || weekly_element_type_id
9711: THEN
9712: hr_utility.TRACE ( 'weekly_earning_cap :'
9713: || weekly_earning_cap
9714: );
9715: hr_utility.TRACE ( 'weekly_element_type_id :'
9716: || weekly_element_type_id
9717: );
9718: END IF;
9719:
9720: -- line commented for bug 2822172
9721: -- IF j = 1 THEN
9722: IF g_debug
9723: THEN
9724: hr_utility.set_location (l_proc, 630);
9725: hr_utility.TRACE ( 'get_weekly_total_prev_days:'
9726: || get_weekly_total_prev_days
9727: );
9728: hr_utility.TRACE ( 'previous_detail_hours_day:'
9721: -- IF j = 1 THEN
9722: IF g_debug
9723: THEN
9724: hr_utility.set_location (l_proc, 630);
9725: hr_utility.TRACE ( 'get_weekly_total_prev_days:'
9726: || get_weekly_total_prev_days
9727: );
9728: hr_utility.TRACE ( 'previous_detail_hours_day:'
9729: || previous_detail_hours_day
9724: hr_utility.set_location (l_proc, 630);
9725: hr_utility.TRACE ( 'get_weekly_total_prev_days:'
9726: || get_weekly_total_prev_days
9727: );
9728: hr_utility.TRACE ( 'previous_detail_hours_day:'
9729: || previous_detail_hours_day
9730: );
9731: hr_utility.TRACE ('hours_for_points:' || hours_for_points);
9732: END IF;
9727: );
9728: hr_utility.TRACE ( 'previous_detail_hours_day:'
9729: || previous_detail_hours_day
9730: );
9731: hr_utility.TRACE ('hours_for_points:' || hours_for_points);
9732: END IF;
9733:
9734: -- line changed for bug 2822172
9735: -- hours_paid_for_week := get_weekly_total;
9741: -- line commented for bug 2822172
9742: -- END IF;
9743: IF g_debug
9744: THEN
9745: hr_utility.set_location (l_proc, 635);
9746: hr_utility.TRACE ( 'hours_paid_for_week :'
9747: || hours_paid_for_week
9748: );
9749: hr_utility.TRACE ('g_hours :' || g_hours);
9742: -- END IF;
9743: IF g_debug
9744: THEN
9745: hr_utility.set_location (l_proc, 635);
9746: hr_utility.TRACE ( 'hours_paid_for_week :'
9747: || hours_paid_for_week
9748: );
9749: hr_utility.TRACE ('g_hours :' || g_hours);
9750: END IF;
9745: hr_utility.set_location (l_proc, 635);
9746: hr_utility.TRACE ( 'hours_paid_for_week :'
9747: || hours_paid_for_week
9748: );
9749: hr_utility.TRACE ('g_hours :' || g_hours);
9750: END IF;
9751:
9752: -- Following condition modified for bug 3868995
9753: -- EXIT WHEN hours_left = 0;
9754: EXIT WHEN hours_left = 0 AND j > 1;
9755:
9756: IF g_debug
9757: THEN
9758: hr_utility.set_location (l_proc, 640);
9759: END IF;
9760:
9761: -- Following condition modified for bug 3868995
9762: -- IF hours_left > 0 THEN
9763: IF hours_left >= 0
9764: THEN
9765: IF g_debug
9766: THEN
9767: hr_utility.set_location (l_proc, 645);
9768: END IF;
9769:
9770: IF (hours_paid_for_week - l_override_hrs) >=
9771: weekly_earning_cap
9772: OR l_weekly_total >= weekly_earning_cap
9773: THEN
9774: IF g_debug
9775: THEN
9776: hr_utility.set_location (l_proc, 650);
9777: END IF;
9778:
9779: -- line changed for bug 2822172
9780: OPEN weekly_earning_rules2 (g_ep_id,
9785: INTO weekly_earning_cap2, weekly_element_type_id;
9786:
9787: IF g_debug
9788: THEN
9789: hr_utility.TRACE ( 'weekly_earning_cap2 :'
9790: || weekly_earning_cap2
9791: );
9792: hr_utility.TRACE ( 'weekly_element_type_id :'
9793: || weekly_element_type_id
9788: THEN
9789: hr_utility.TRACE ( 'weekly_earning_cap2 :'
9790: || weekly_earning_cap2
9791: );
9792: hr_utility.TRACE ( 'weekly_element_type_id :'
9793: || weekly_element_type_id
9794: );
9795: END IF;
9796:
9814: -- hours_for_points := hours_left;
9815: -- END ADDED BY MV TO AVOID INFINITE LOOP
9816: IF g_debug
9817: THEN
9818: hr_utility.TRACE ( 'hours_for_points :'
9819: || hours_for_points
9820: );
9821: END IF;
9822: ELSE
9821: END IF;
9822: ELSE
9823: IF g_debug
9824: THEN
9825: hr_utility.set_location (l_proc, 655);
9826: END IF;
9827:
9828: IF weekly_element_type_id = l_override_element
9829: THEN
9833: )
9834: THEN
9835: IF g_debug
9836: THEN
9837: hr_utility.set_location (l_proc, 655.1);
9838: END IF;
9839:
9840: hours_for_points :=
9841: LEAST (hours_left,
9845: );
9846: ELSE
9847: IF g_debug
9848: THEN
9849: hr_utility.set_location (l_proc, 655.2);
9850: END IF;
9851:
9852: hours_for_points :=
9853: LEAST (hours_left,
9860: END IF;
9861: ELSE
9862: IF g_debug
9863: THEN
9864: hr_utility.set_location (l_proc, 655.3);
9865: END IF;
9866:
9867: hours_for_points :=
9868: LEAST (hours_left,
9874: END IF;
9875:
9876: IF g_debug
9877: THEN
9878: hr_utility.TRACE ( 'hours_for_points :'
9879: || hours_for_points
9880: );
9881: END IF;
9882:
9896: AND hours_for_points > l_override_hrs
9897: THEN
9898: IF g_debug
9899: THEN
9900: hr_utility.set_location (l_proc, 656);
9901: END IF;
9902:
9903: hrs_already_paid := FALSE;
9904: hours_for_points :=
9907: AND hours_for_points <= l_override_hrs
9908: THEN
9909: IF g_debug
9910: THEN
9911: hr_utility.TRACE ( 'l_override_hrs:'
9912: || l_override_hrs
9913: );
9914: hr_utility.TRACE ( 'weekly_earning_cap:'
9915: || weekly_earning_cap
9910: THEN
9911: hr_utility.TRACE ( 'l_override_hrs:'
9912: || l_override_hrs
9913: );
9914: hr_utility.TRACE ( 'weekly_earning_cap:'
9915: || weekly_earning_cap
9916: );
9917: hr_utility.TRACE ( 'prev_weekly_cap:'
9918: || prev_weekly_cap
9913: );
9914: hr_utility.TRACE ( 'weekly_earning_cap:'
9915: || weekly_earning_cap
9916: );
9917: hr_utility.TRACE ( 'prev_weekly_cap:'
9918: || prev_weekly_cap
9919: );
9920: END IF;
9921:
9923: weekly_earning_cap - prev_weekly_cap
9924: THEN
9925: IF g_debug
9926: THEN
9927: hr_utility.set_location (l_proc, 657);
9928: END IF;
9929:
9930: hrs_already_paid := TRUE;
9931: hours_for_points := 0;
9932: segment_points := 0;
9933: ELSE
9934: IF g_debug
9935: THEN
9936: hr_utility.set_location (l_proc, 658);
9937: END IF;
9938:
9939: hrs_already_paid := FALSE;
9940: END IF;
9941: END IF;
9942:
9943: IF g_debug
9944: THEN
9945: hr_utility.set_location (l_proc, 659);
9946: hr_utility.TRACE ( 'hours_for_points :'
9947: || hours_for_points
9948: );
9949: END IF;
9942:
9943: IF g_debug
9944: THEN
9945: hr_utility.set_location (l_proc, 659);
9946: hr_utility.TRACE ( 'hours_for_points :'
9947: || hours_for_points
9948: );
9949: END IF;
9950: END IF;
9954: LEAST (hours_left,
9955: (weekly_earning_cap - hours_paid_for_week
9956: )
9957: );
9958: hr_utility.TRACE ( 'hours_for_points :'
9959: || hours_for_points
9960: );
9961: END IF;
9962: */
9961: END IF;
9962: */
9963: IF g_debug
9964: THEN
9965: hr_utility.set_location (l_proc, 659.1);
9966: hr_utility.TRACE ('segment_points:' || segment_points);
9967: END IF;
9968:
9969: IF hrs_already_paid = FALSE
9962: */
9963: IF g_debug
9964: THEN
9965: hr_utility.set_location (l_proc, 659.1);
9966: hr_utility.TRACE ('segment_points:' || segment_points);
9967: END IF;
9968:
9969: IF hrs_already_paid = FALSE
9970: THEN
9969: IF hrs_already_paid = FALSE
9970: THEN
9971: IF g_debug
9972: THEN
9973: hr_utility.set_location (l_proc, 660);
9974: END IF;
9975:
9976: hours_left :=
9977: (hours_left - hours_for_points - l_left_over_hours
9978: );
9979:
9980: IF g_debug
9981: THEN
9982: hr_utility.TRACE ('hours_left :' || hours_left);
9983: END IF;
9984:
9985: -- Added the following FOR LOOP to determine the elements that
9986: -- need to be paid when the Daily(REG,OT,DT) and Weekly(REG,OT,DT)
9988: FOR i IN 1 .. g_weekly_earn_category.COUNT
9989: LOOP
9990: IF g_debug
9991: THEN
9992: hr_utility.set_location (l_proc, 661);
9993: hr_utility.TRACE
9994: ( 'g_weekly_earn_category(i).element_type_id:'
9995: || g_weekly_earn_category (i).element_type_id
9996: );
9989: LOOP
9990: IF g_debug
9991: THEN
9992: hr_utility.set_location (l_proc, 661);
9993: hr_utility.TRACE
9994: ( 'g_weekly_earn_category(i).element_type_id:'
9995: || g_weekly_earn_category (i).element_type_id
9996: );
9997: hr_utility.TRACE
9993: hr_utility.TRACE
9994: ( 'g_weekly_earn_category(i).element_type_id:'
9995: || g_weekly_earn_category (i).element_type_id
9996: );
9997: hr_utility.TRACE
9998: ( 'g_weekly_earn_category(i).earning_category:'
9999: || g_weekly_earn_category (i).earning_category
10000: );
10001: hr_utility.TRACE ( 'weekly_element_type_id:'
9997: hr_utility.TRACE
9998: ( 'g_weekly_earn_category(i).earning_category:'
9999: || g_weekly_earn_category (i).earning_category
10000: );
10001: hr_utility.TRACE ( 'weekly_element_type_id:'
10002: || weekly_element_type_id
10003: );
10004: hr_utility.TRACE ( 'use_daily_REG:'
10005: || use_daily_reg
10000: );
10001: hr_utility.TRACE ( 'weekly_element_type_id:'
10002: || weekly_element_type_id
10003: );
10004: hr_utility.TRACE ( 'use_daily_REG:'
10005: || use_daily_reg
10006: );
10007: hr_utility.TRACE ('use_daily_OT:'
10008: || use_daily_ot
10003: );
10004: hr_utility.TRACE ( 'use_daily_REG:'
10005: || use_daily_reg
10006: );
10007: hr_utility.TRACE ('use_daily_OT:'
10008: || use_daily_ot
10009: );
10010: hr_utility.TRACE ('use_daily_DT:'
10011: || use_daily_dt
10006: );
10007: hr_utility.TRACE ('use_daily_OT:'
10008: || use_daily_ot
10009: );
10010: hr_utility.TRACE ('use_daily_DT:'
10011: || use_daily_dt
10012: );
10013: hr_utility.TRACE ( 'use_weekly_REG:'
10014: || use_weekly_reg
10009: );
10010: hr_utility.TRACE ('use_daily_DT:'
10011: || use_daily_dt
10012: );
10013: hr_utility.TRACE ( 'use_weekly_REG:'
10014: || use_weekly_reg
10015: );
10016: hr_utility.TRACE ( 'use_weekly_OT:'
10017: || use_weekly_ot
10012: );
10013: hr_utility.TRACE ( 'use_weekly_REG:'
10014: || use_weekly_reg
10015: );
10016: hr_utility.TRACE ( 'use_weekly_OT:'
10017: || use_weekly_ot
10018: );
10019: hr_utility.TRACE ( 'use_weekly_DT:'
10020: || use_weekly_dt
10015: );
10016: hr_utility.TRACE ( 'use_weekly_OT:'
10017: || use_weekly_ot
10018: );
10019: hr_utility.TRACE ( 'use_weekly_DT:'
10020: || use_weekly_dt
10021: );
10022: END IF;
10023:
10028: AND use_daily_reg = 'Y'
10029: THEN
10030: IF g_debug
10031: THEN
10032: hr_utility.set_location (l_proc, 662);
10033: END IF;
10034:
10035: weekly_element_type_id := l_dy_wk_reg_elem_id;
10036: EXIT;
10041: AND use_daily_ot = 'Y'
10042: THEN
10043: IF g_debug
10044: THEN
10045: hr_utility.set_location (l_proc, 663);
10046: END IF;
10047:
10048: weekly_element_type_id := l_dy_wk_ovt_elem_id;
10049: EXIT;
10054: AND use_daily_dt = 'Y'
10055: THEN
10056: IF g_debug
10057: THEN
10058: hr_utility.set_location (l_proc, 664);
10059: END IF;
10060:
10061: weekly_element_type_id := l_dy_wk_dt_elem_id;
10062: EXIT;
10063: END IF;
10064:
10065: IF g_debug
10066: THEN
10067: hr_utility.set_location (l_proc, 665);
10068: END IF;
10069: END LOOP;
10070:
10071: IF g_debug
10069: END LOOP;
10070:
10071: IF g_debug
10072: THEN
10073: hr_utility.set_location (l_proc, 670);
10074: hr_utility.TRACE ( 'weekly_element_type_id:'
10075: || weekly_element_type_id
10076: );
10077: END IF;
10070:
10071: IF g_debug
10072: THEN
10073: hr_utility.set_location (l_proc, 670);
10074: hr_utility.TRACE ( 'weekly_element_type_id:'
10075: || weekly_element_type_id
10076: );
10077: END IF;
10078:
10084: AND aei.effective_end_date;
10085:
10086: IF g_debug
10087: THEN
10088: hr_utility.TRACE ( 'l_points_assigned :'
10089: || l_points_assigned
10090: );
10091: END IF;
10092:
10093: segment_points := hours_for_points * l_points_assigned;
10094:
10095: IF g_debug
10096: THEN
10097: hr_utility.TRACE ( 'segment_points :'
10098: || segment_points
10099: );
10100: END IF;
10101:
10108: FOR i IN 1 .. g_weekly_earn_category.COUNT
10109: LOOP
10110: IF g_debug
10111: THEN
10112: hr_utility.set_location (l_proc, 675);
10113: hr_utility.TRACE ( 'weekly_element_type_id:'
10114: || weekly_element_type_id
10115: );
10116: hr_utility.TRACE
10109: LOOP
10110: IF g_debug
10111: THEN
10112: hr_utility.set_location (l_proc, 675);
10113: hr_utility.TRACE ( 'weekly_element_type_id:'
10114: || weekly_element_type_id
10115: );
10116: hr_utility.TRACE
10117: ( 'g_weekly_earn_category(i).element_type_id:'
10112: hr_utility.set_location (l_proc, 675);
10113: hr_utility.TRACE ( 'weekly_element_type_id:'
10114: || weekly_element_type_id
10115: );
10116: hr_utility.TRACE
10117: ( 'g_weekly_earn_category(i).element_type_id:'
10118: || g_weekly_earn_category (i).element_type_id
10119: );
10120: END IF;
10123: weekly_element_type_id
10124: THEN
10125: IF g_debug
10126: THEN
10127: hr_utility.set_location (l_proc, 680);
10128: END IF;
10129:
10130: g_weekly_explosion (l_weekly_index).earning_category :=
10131: g_weekly_earn_category (i).earning_category;
10132: END IF;
10133:
10134: IF g_debug
10135: THEN
10136: hr_utility.set_location (l_proc, 685);
10137: END IF;
10138: END LOOP;
10139:
10140: FOR i IN 1 .. g_weekly_explosion.COUNT
10140: FOR i IN 1 .. g_weekly_explosion.COUNT
10141: LOOP
10142: IF g_debug
10143: THEN
10144: hr_utility.TRACE
10145: ( 'weekly_element_type_id:'
10146: || g_weekly_explosion (i).element_type_id
10147: );
10148: hr_utility.TRACE
10144: hr_utility.TRACE
10145: ( 'weekly_element_type_id:'
10146: || g_weekly_explosion (i).element_type_id
10147: );
10148: hr_utility.TRACE
10149: ( 'hours_to_pay in plsql table:'
10150: || g_weekly_explosion (i).hours_to_pay
10151: );
10152: hr_utility.TRACE
10148: hr_utility.TRACE
10149: ( 'hours_to_pay in plsql table:'
10150: || g_weekly_explosion (i).hours_to_pay
10151: );
10152: hr_utility.TRACE
10153: ( 'earning_category:'
10154: || g_weekly_explosion (i).earning_category
10155: );
10156: END IF;
10158:
10159: -- hours_paid_for_week := hours_paid_for_week + hours_for_points;
10160: IF g_debug
10161: THEN
10162: hr_utility.TRACE ( 'hours_paid_for_week:'
10163: || hours_paid_for_week
10164: );
10165: hr_utility.TRACE ( 'hours_for_points:'
10166: || hours_for_points
10161: THEN
10162: hr_utility.TRACE ( 'hours_paid_for_week:'
10163: || hours_paid_for_week
10164: );
10165: hr_utility.TRACE ( 'hours_for_points:'
10166: || hours_for_points
10167: );
10168: hr_utility.TRACE ( 'l_override_hrs:'
10169: || l_override_hrs
10164: );
10165: hr_utility.TRACE ( 'hours_for_points:'
10166: || hours_for_points
10167: );
10168: hr_utility.TRACE ( 'l_override_hrs:'
10169: || l_override_hrs
10170: );
10171: END IF;
10172:
10174: hours_paid_for_week + hours_for_points;
10175:
10176: IF g_debug
10177: THEN
10178: hr_utility.TRACE ( 'l_weekly_total :'
10179: || l_weekly_total
10180: );
10181: END IF;
10182:
10184:
10185: LOOP
10186: IF g_debug
10187: THEN
10188: hr_utility.set_location (l_proc, 690);
10189: END IF;
10190:
10191: FETCH elements_in_earn_groups
10192: INTO l_element_type_id;
10194: EXIT WHEN elements_in_earn_groups%NOTFOUND;
10195:
10196: IF g_debug
10197: THEN
10198: hr_utility.TRACE ( 'l_element_type_id :'
10199: || l_element_type_id
10200: );
10201: hr_utility.TRACE ( 'hours_for_points :'
10202: || hours_for_points
10197: THEN
10198: hr_utility.TRACE ( 'l_element_type_id :'
10199: || l_element_type_id
10200: );
10201: hr_utility.TRACE ( 'hours_for_points :'
10202: || hours_for_points
10203: );
10204: hr_utility.TRACE ( 'hours_paid_for_week:'
10205: || hours_paid_for_week
10200: );
10201: hr_utility.TRACE ( 'hours_for_points :'
10202: || hours_for_points
10203: );
10204: hr_utility.TRACE ( 'hours_paid_for_week:'
10205: || hours_paid_for_week
10206: );
10207: END IF;
10208:
10209: IF weekly_element_type_id = l_element_type_id
10210: THEN
10211: IF g_debug
10212: THEN
10213: hr_utility.set_location (l_proc, 695);
10214: END IF;
10215:
10216: hours_paid_for_week :=
10217: hours_paid_for_week + hours_for_points;
10218: END IF;
10219:
10220: IF g_debug
10221: THEN
10222: hr_utility.TRACE ( 'hours_paid_for_week:'
10223: || hours_paid_for_week
10224: );
10225: hr_utility.set_location (l_proc, 700);
10226: END IF;
10221: THEN
10222: hr_utility.TRACE ( 'hours_paid_for_week:'
10223: || hours_paid_for_week
10224: );
10225: hr_utility.set_location (l_proc, 700);
10226: END IF;
10227: END LOOP;
10228:
10229: IF g_debug
10227: END LOOP;
10228:
10229: IF g_debug
10230: THEN
10231: hr_utility.set_location (l_proc, 710);
10232: END IF;
10233:
10234: CLOSE elements_in_earn_groups;
10235:
10234: CLOSE elements_in_earn_groups;
10235:
10236: IF g_debug
10237: THEN
10238: hr_utility.set_location (l_proc, 715);
10239: END IF;
10240: END IF;
10241: END IF;
10242:
10253: END IF;
10254:
10255: IF g_debug
10256: THEN
10257: hr_utility.set_location (l_proc, 720);
10258: END IF;
10259:
10260: total_weekly_points := total_weekly_points + segment_points;
10261:
10260: total_weekly_points := total_weekly_points + segment_points;
10261:
10262: IF g_debug
10263: THEN
10264: hr_utility.TRACE ( 'total_weekly_points :'
10265: || total_weekly_points
10266: );
10267: END IF;
10268: END LOOP;
10268: END LOOP;
10269:
10270: IF g_debug
10271: THEN
10272: hr_utility.set_location (l_proc, 725);
10273: hr_utility.TRACE ( 'total_daily_points :'
10274: || total_daily_points
10275: );
10276: hr_utility.TRACE ( 'total_weekly_points :'
10269:
10270: IF g_debug
10271: THEN
10272: hr_utility.set_location (l_proc, 725);
10273: hr_utility.TRACE ( 'total_daily_points :'
10274: || total_daily_points
10275: );
10276: hr_utility.TRACE ( 'total_weekly_points :'
10277: || total_weekly_points
10272: hr_utility.set_location (l_proc, 725);
10273: hr_utility.TRACE ( 'total_daily_points :'
10274: || total_daily_points
10275: );
10276: hr_utility.TRACE ( 'total_weekly_points :'
10277: || total_weekly_points
10278: );
10279: END IF;
10280:
10335: -- OT 4 + 1 = 5
10336: -- DT 1
10337: IF g_debug
10338: THEN
10339: hr_utility.TRACE
10340: ( 'fnd_profile.VALUE (''HXT_CA_LABOR_RULE''):'
10341: || fnd_profile.VALUE ('HXT_CA_LABOR_RULE')
10342: );
10343: END IF;
10347: IF (NVL (fnd_profile.VALUE ('HXT_CA_LABOR_RULE'), 'N') = 'Y')
10348: THEN
10349: IF g_debug
10350: THEN
10351: hr_utility.set_location (l_proc, 726);
10352: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
10353: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
10354: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
10355: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap
10348: THEN
10349: IF g_debug
10350: THEN
10351: hr_utility.set_location (l_proc, 726);
10352: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
10353: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
10354: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
10355: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap
10356: );
10349: IF g_debug
10350: THEN
10351: hr_utility.set_location (l_proc, 726);
10352: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
10353: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
10354: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
10355: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap
10356: );
10357: END IF;
10350: THEN
10351: hr_utility.set_location (l_proc, 726);
10352: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
10353: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
10354: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
10355: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap
10356: );
10357: END IF;
10358:
10351: hr_utility.set_location (l_proc, 726);
10352: hr_utility.TRACE ('use_weekly_REG:' || use_weekly_reg);
10353: hr_utility.TRACE ('use_weekly_OT:' || use_weekly_ot);
10354: hr_utility.TRACE ('use_weekly_DT:' || use_weekly_dt);
10355: hr_utility.TRACE ('l_weekly_reg_cap:' || l_weekly_reg_cap
10356: );
10357: END IF;
10358:
10359: -- Initialize the variables before calculating the combine points
10375: );
10376:
10377: IF g_debug
10378: THEN
10379: hr_utility.set_location (l_proc, 727);
10380: hr_utility.TRACE ( 'l_dy_wk_reg_elem_id:'
10381: || l_dy_wk_reg_elem_id
10382: );
10383: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
10376:
10377: IF g_debug
10378: THEN
10379: hr_utility.set_location (l_proc, 727);
10380: hr_utility.TRACE ( 'l_dy_wk_reg_elem_id:'
10381: || l_dy_wk_reg_elem_id
10382: );
10383: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
10384: || l_dy_wk_ovt_elem_id
10379: hr_utility.set_location (l_proc, 727);
10380: hr_utility.TRACE ( 'l_dy_wk_reg_elem_id:'
10381: || l_dy_wk_reg_elem_id
10382: );
10383: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
10384: || l_dy_wk_ovt_elem_id
10385: );
10386: hr_utility.TRACE ( 'l_dy_wk_dt_elem_id:'
10387: || l_dy_wk_dt_elem_id
10382: );
10383: hr_utility.TRACE ( 'l_dy_wk_ovt_elem_id:'
10384: || l_dy_wk_ovt_elem_id
10385: );
10386: hr_utility.TRACE ( 'l_dy_wk_dt_elem_id:'
10387: || l_dy_wk_dt_elem_id
10388: );
10389: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
10390: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
10385: );
10386: hr_utility.TRACE ( 'l_dy_wk_dt_elem_id:'
10387: || l_dy_wk_dt_elem_id
10388: );
10389: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
10390: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
10391: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
10392: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
10393: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
10386: hr_utility.TRACE ( 'l_dy_wk_dt_elem_id:'
10387: || l_dy_wk_dt_elem_id
10388: );
10389: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
10390: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
10391: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
10392: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
10393: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
10394: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
10387: || l_dy_wk_dt_elem_id
10388: );
10389: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
10390: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
10391: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
10392: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
10393: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
10394: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
10395: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
10388: );
10389: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
10390: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
10391: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
10392: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
10393: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
10394: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
10395: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
10396: || wky_reg_incl_dy_reg_expl
10389: hr_utility.TRACE ('use_daily_reg:' || use_daily_reg);
10390: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
10391: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
10392: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
10393: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
10394: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
10395: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
10396: || wky_reg_incl_dy_reg_expl
10397: );
10390: hr_utility.TRACE ('use_daily_ot:' || use_daily_ot);
10391: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
10392: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
10393: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
10394: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
10395: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
10396: || wky_reg_incl_dy_reg_expl
10397: );
10398: hr_utility.TRACE ('l_weekly_REG_hrs:' || l_weekly_reg_hrs);
10391: hr_utility.TRACE ('use_daily_dt:' || use_daily_dt);
10392: hr_utility.TRACE ('l_reg_for_day:' || l_reg_for_day);
10393: hr_utility.TRACE ('l_ovt_for_day:' || l_ovt_for_day);
10394: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
10395: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
10396: || wky_reg_incl_dy_reg_expl
10397: );
10398: hr_utility.TRACE ('l_weekly_REG_hrs:' || l_weekly_reg_hrs);
10399: END IF;
10394: hr_utility.TRACE ('l_dt_for_day:' || l_dt_for_day);
10395: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
10396: || wky_reg_incl_dy_reg_expl
10397: );
10398: hr_utility.TRACE ('l_weekly_REG_hrs:' || l_weekly_reg_hrs);
10399: END IF;
10400:
10401: FOR i IN 1 .. g_dy_wk_combo_explosion.COUNT
10402: LOOP
10401: FOR i IN 1 .. g_dy_wk_combo_explosion.COUNT
10402: LOOP
10403: IF g_debug
10404: THEN
10405: hr_utility.set_location (l_proc, 730);
10406: hr_utility.TRACE
10407: ( 'combo_element_type_id:'
10408: || g_dy_wk_combo_explosion (i).element_type_id
10409: );
10402: LOOP
10403: IF g_debug
10404: THEN
10405: hr_utility.set_location (l_proc, 730);
10406: hr_utility.TRACE
10407: ( 'combo_element_type_id:'
10408: || g_dy_wk_combo_explosion (i).element_type_id
10409: );
10410: hr_utility.TRACE
10406: hr_utility.TRACE
10407: ( 'combo_element_type_id:'
10408: || g_dy_wk_combo_explosion (i).element_type_id
10409: );
10410: hr_utility.TRACE
10411: ( 'hours_to_pay in plsql table:'
10412: || g_dy_wk_combo_explosion (i).hours_to_pay
10413: );
10414: END IF;
10415: END LOOP;
10416:
10417: IF g_debug
10418: THEN
10419: hr_utility.TRACE ( ' g_daily_explosion.COUNT:'
10420: || g_daily_explosion.COUNT
10421: );
10422: END IF;
10423:
10424: FOR i IN 1 .. g_daily_explosion.COUNT
10425: LOOP
10426: IF g_debug
10427: THEN
10428: hr_utility.set_location (l_proc, 735);
10429: hr_utility.TRACE
10430: ( 'daily_element_type_id:'
10431: || g_daily_explosion (i).element_type_id
10432: );
10425: LOOP
10426: IF g_debug
10427: THEN
10428: hr_utility.set_location (l_proc, 735);
10429: hr_utility.TRACE
10430: ( 'daily_element_type_id:'
10431: || g_daily_explosion (i).element_type_id
10432: );
10433: hr_utility.TRACE ( 'hours_to_pay in plsql table:'
10429: hr_utility.TRACE
10430: ( 'daily_element_type_id:'
10431: || g_daily_explosion (i).element_type_id
10432: );
10433: hr_utility.TRACE ( 'hours_to_pay in plsql table:'
10434: || g_daily_explosion (i).hours_to_pay
10435: );
10436: hr_utility.TRACE
10437: ( 'earning_category:'
10432: );
10433: hr_utility.TRACE ( 'hours_to_pay in plsql table:'
10434: || g_daily_explosion (i).hours_to_pay
10435: );
10436: hr_utility.TRACE
10437: ( 'earning_category:'
10438: || g_daily_explosion (i).earning_category
10439: );
10440: hr_utility.set_location (l_proc, 740);
10436: hr_utility.TRACE
10437: ( 'earning_category:'
10438: || g_daily_explosion (i).earning_category
10439: );
10440: hr_utility.set_location (l_proc, 740);
10441: END IF;
10442: END LOOP;
10443:
10444: OPEN weekly_earning_rules (g_ep_id);
10447: INTO weekly_earning_cap, weekly_element_type_id;
10448:
10449: IF g_debug
10450: THEN
10451: hr_utility.TRACE ( 'weekly_earning_cap:'
10452: || weekly_earning_cap
10453: );
10454: hr_utility.TRACE ( 'weekly_element_type_id:'
10455: || weekly_element_type_id
10450: THEN
10451: hr_utility.TRACE ( 'weekly_earning_cap:'
10452: || weekly_earning_cap
10453: );
10454: hr_utility.TRACE ( 'weekly_element_type_id:'
10455: || weekly_element_type_id
10456: );
10457: END IF;
10458:
10459: CLOSE weekly_earning_rules;
10460:
10461: IF g_debug
10462: THEN
10463: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
10464: || wky_reg_incl_dy_reg_expl
10465: );
10466: hr_utility.TRACE ( 'weekly_earning_cap:'
10467: || weekly_earning_cap
10462: THEN
10463: hr_utility.TRACE ( 'wky_reg_incl_dy_reg_expl:'
10464: || wky_reg_incl_dy_reg_expl
10465: );
10466: hr_utility.TRACE ( 'weekly_earning_cap:'
10467: || weekly_earning_cap
10468: );
10469: END IF;
10470:
10475: OR g_hours = 0
10476: THEN
10477: IF g_debug
10478: THEN
10479: hr_utility.set_location (l_proc, 745);
10480: END IF;
10481:
10482: OPEN weekly_earning_rules (g_ep_id);
10483:
10484: hours_left := NVL(l_reg_for_day, 0); -- added NVL for 5441313
10485:
10486: IF g_debug
10487: THEN
10488: hr_utility.TRACE ('hours_left :' || hours_left);
10489: END IF;
10490:
10491: hours_for_points := 0;
10492:
10492:
10493: LOOP
10494: IF g_debug
10495: THEN
10496: hr_utility.set_location (l_proc, 750);
10497: END IF;
10498:
10499: k := k + 1;
10500:
10502: INTO weekly_earning_cap, weekly_element_type_id;
10503:
10504: IF g_debug
10505: THEN
10506: hr_utility.TRACE ( 'weekly_earning_cap :'
10507: || weekly_earning_cap
10508: );
10509: hr_utility.TRACE ( 'weekly_element_type_id :'
10510: || weekly_element_type_id
10505: THEN
10506: hr_utility.TRACE ( 'weekly_earning_cap :'
10507: || weekly_earning_cap
10508: );
10509: hr_utility.TRACE ( 'weekly_element_type_id :'
10510: || weekly_element_type_id
10511: );
10512: END IF;
10513:
10517: + hours_for_points;
10518:
10519: IF g_debug
10520: THEN
10521: hr_utility.set_location (l_proc, 755);
10522: hr_utility.TRACE ( 'hours_paid_for_week :'
10523: || hours_paid_for_week
10524: );
10525: hr_utility.TRACE ( 'g_hours :'
10518:
10519: IF g_debug
10520: THEN
10521: hr_utility.set_location (l_proc, 755);
10522: hr_utility.TRACE ( 'hours_paid_for_week :'
10523: || hours_paid_for_week
10524: );
10525: hr_utility.TRACE ( 'g_hours :'
10526: || g_hours
10521: hr_utility.set_location (l_proc, 755);
10522: hr_utility.TRACE ( 'hours_paid_for_week :'
10523: || hours_paid_for_week
10524: );
10525: hr_utility.TRACE ( 'g_hours :'
10526: || g_hours
10527: );
10528: END IF;
10529:
10530: EXIT WHEN hours_left = 0 AND k > 1;
10531:
10532: IF g_debug
10533: THEN
10534: hr_utility.set_location (l_proc, 760);
10535: END IF;
10536:
10537: IF hours_left >= 0
10538: THEN
10537: IF hours_left >= 0
10538: THEN
10539: IF g_debug
10540: THEN
10541: hr_utility.set_location (l_proc, 770);
10542: hr_utility.TRACE ( 'hours_paid_for_week :'
10543: || hours_paid_for_week
10544: );
10545: hr_utility.TRACE ( 'weekly_earning_cap :'
10538: THEN
10539: IF g_debug
10540: THEN
10541: hr_utility.set_location (l_proc, 770);
10542: hr_utility.TRACE ( 'hours_paid_for_week :'
10543: || hours_paid_for_week
10544: );
10545: hr_utility.TRACE ( 'weekly_earning_cap :'
10546: || weekly_earning_cap
10541: hr_utility.set_location (l_proc, 770);
10542: hr_utility.TRACE ( 'hours_paid_for_week :'
10543: || hours_paid_for_week
10544: );
10545: hr_utility.TRACE ( 'weekly_earning_cap :'
10546: || weekly_earning_cap
10547: );
10548: END IF;
10549:
10550: IF (hours_paid_for_week - l_override_hrs) >= weekly_earning_cap
10551: THEN
10552: IF g_debug
10553: THEN
10554: hr_utility.set_location (l_proc, 780);
10555: END IF;
10556:
10557: OPEN weekly_earning_rules2 (g_ep_id,
10558: hours_paid_for_week
10563: weekly_element_type_id;
10564:
10565: IF g_debug
10566: THEN
10567: hr_utility.TRACE
10568: ( 'weekly_earning_cap2 :'
10569: || weekly_earning_cap2
10570: );
10571: hr_utility.TRACE
10567: hr_utility.TRACE
10568: ( 'weekly_earning_cap2 :'
10569: || weekly_earning_cap2
10570: );
10571: hr_utility.TRACE
10572: ( 'weekly_element_type_id :'
10573: || weekly_element_type_id
10574: );
10575: END IF;
10586: IF (hours_for_points = 0)
10587: THEN
10588: IF g_debug
10589: THEN
10590: hr_utility.set_location (l_proc, 790);
10591: END IF;
10592:
10593: l_left_over_hours := hours_left;
10594: ELSE
10593: l_left_over_hours := hours_left;
10594: ELSE
10595: IF g_debug
10596: THEN
10597: hr_utility.set_location (l_proc, 800);
10598: END IF;
10599:
10600: l_left_over_hours := 0;
10601: END IF;
10601: END IF;
10602:
10603: IF g_debug
10604: THEN
10605: hr_utility.set_location (l_proc, 810);
10606: hr_utility.TRACE ( 'hours_for_points :'
10607: || hours_for_points
10608: );
10609: END IF;
10602:
10603: IF g_debug
10604: THEN
10605: hr_utility.set_location (l_proc, 810);
10606: hr_utility.TRACE ( 'hours_for_points :'
10607: || hours_for_points
10608: );
10609: END IF;
10610: ELSE
10609: END IF;
10610: ELSE
10611: IF g_debug
10612: THEN
10613: hr_utility.set_location (l_proc, 815);
10614: END IF;
10615:
10616: IF weekly_element_type_id = l_override_element
10617: THEN
10621: )
10622: THEN
10623: IF g_debug
10624: THEN
10625: hr_utility.set_location (l_proc, 815.1);
10626: END IF;
10627:
10628: hours_for_points :=
10629: LEAST (hours_left,
10633: );
10634: ELSE
10635: IF g_debug
10636: THEN
10637: hr_utility.set_location (l_proc, 815.2);
10638: END IF;
10639:
10640: hours_for_points :=
10641: LEAST (hours_left,
10648: END IF;
10649: ELSE
10650: IF g_debug
10651: THEN
10652: hr_utility.set_location (l_proc, 815.3);
10653: END IF;
10654:
10655: hours_for_points :=
10656: LEAST (hours_left,
10662: END IF;
10663:
10664: IF g_debug
10665: THEN
10666: hr_utility.TRACE ( 'hours_for_points :'
10667: || hours_for_points
10668: );
10669: END IF;
10670:
10685: AND hours_for_points > l_override_hrs
10686: THEN
10687: IF g_debug
10688: THEN
10689: hr_utility.set_location (l_proc, 816);
10690: END IF;
10691:
10692: hrs_already_paid := FALSE;
10693: hours_for_points :=
10696: AND hours_for_points <= l_override_hrs
10697: THEN
10698: IF g_debug
10699: THEN
10700: hr_utility.TRACE ( 'l_override_hrs:'
10701: || l_override_hrs
10702: );
10703: hr_utility.TRACE ( 'weekly_earning_cap:'
10704: || weekly_earning_cap
10699: THEN
10700: hr_utility.TRACE ( 'l_override_hrs:'
10701: || l_override_hrs
10702: );
10703: hr_utility.TRACE ( 'weekly_earning_cap:'
10704: || weekly_earning_cap
10705: );
10706: hr_utility.TRACE ( 'prev_weekly_cap:'
10707: || prev_weekly_cap
10702: );
10703: hr_utility.TRACE ( 'weekly_earning_cap:'
10704: || weekly_earning_cap
10705: );
10706: hr_utility.TRACE ( 'prev_weekly_cap:'
10707: || prev_weekly_cap
10708: );
10709: END IF;
10710:
10712: weekly_earning_cap - prev_weekly_cap
10713: THEN
10714: IF g_debug
10715: THEN
10716: hr_utility.set_location (l_proc, 817);
10717: END IF;
10718:
10719: hrs_already_paid := TRUE;
10720: hours_for_points := 0;
10721: segment_points := 0;
10722: ELSE
10723: IF g_debug
10724: THEN
10725: hr_utility.set_location (l_proc, 818);
10726: END IF;
10727:
10728: hrs_already_paid := FALSE;
10729: END IF;
10730: END IF;
10731:
10732: IF g_debug
10733: THEN
10734: hr_utility.set_location (l_proc, 819);
10735: hr_utility.TRACE ( 'hours_for_points :'
10736: || hours_for_points
10737: );
10738: END IF;
10731:
10732: IF g_debug
10733: THEN
10734: hr_utility.set_location (l_proc, 819);
10735: hr_utility.TRACE ( 'hours_for_points :'
10736: || hours_for_points
10737: );
10738: END IF;
10739: END IF;
10747: );
10748:
10749: IF g_debug
10750: THEN
10751: hr_utility.TRACE ( 'hours_for_points :'
10752: || hours_for_points
10753: );
10754: END IF;
10755: END IF;
10756: */
10757:
10758: IF g_debug
10759: THEN
10760: hr_utility.set_location (l_proc, 819.1);
10761: hr_utility.TRACE ('segment_points:' || segment_points);
10762: END IF;
10763:
10764: IF hrs_already_paid = FALSE
10757:
10758: IF g_debug
10759: THEN
10760: hr_utility.set_location (l_proc, 819.1);
10761: hr_utility.TRACE ('segment_points:' || segment_points);
10762: END IF;
10763:
10764: IF hrs_already_paid = FALSE
10765: THEN
10764: IF hrs_already_paid = FALSE
10765: THEN
10766: IF g_debug
10767: THEN
10768: hr_utility.set_location (l_proc, 820);
10769: END IF;
10770:
10771: hours_left :=
10772: (hours_left - hours_for_points
10774: );
10775:
10776: IF g_debug
10777: THEN
10778: hr_utility.TRACE ('hours_left :' || hours_left);
10779: hr_utility.TRACE ( ' l_dy_wk_reg_elem_id:'
10780: || l_dy_wk_reg_elem_id
10781: );
10782: hr_utility.TRACE ( ' l_dy_wk_ovt_elem_id:'
10775:
10776: IF g_debug
10777: THEN
10778: hr_utility.TRACE ('hours_left :' || hours_left);
10779: hr_utility.TRACE ( ' l_dy_wk_reg_elem_id:'
10780: || l_dy_wk_reg_elem_id
10781: );
10782: hr_utility.TRACE ( ' l_dy_wk_ovt_elem_id:'
10783: || l_dy_wk_ovt_elem_id
10778: hr_utility.TRACE ('hours_left :' || hours_left);
10779: hr_utility.TRACE ( ' l_dy_wk_reg_elem_id:'
10780: || l_dy_wk_reg_elem_id
10781: );
10782: hr_utility.TRACE ( ' l_dy_wk_ovt_elem_id:'
10783: || l_dy_wk_ovt_elem_id
10784: );
10785: hr_utility.TRACE ( ' l_dy_wk_dt_elem_id:'
10786: || l_dy_wk_dt_elem_id
10781: );
10782: hr_utility.TRACE ( ' l_dy_wk_ovt_elem_id:'
10783: || l_dy_wk_ovt_elem_id
10784: );
10785: hr_utility.TRACE ( ' l_dy_wk_dt_elem_id:'
10786: || l_dy_wk_dt_elem_id
10787: );
10788: hr_utility.TRACE ( ' l_ovt_for_day:'
10789: || l_ovt_for_day
10784: );
10785: hr_utility.TRACE ( ' l_dy_wk_dt_elem_id:'
10786: || l_dy_wk_dt_elem_id
10787: );
10788: hr_utility.TRACE ( ' l_ovt_for_day:'
10789: || l_ovt_for_day
10790: );
10791: hr_utility.TRACE ( ' l_dt_for_day:'
10792: || l_dt_for_day
10787: );
10788: hr_utility.TRACE ( ' l_ovt_for_day:'
10789: || l_ovt_for_day
10790: );
10791: hr_utility.TRACE ( ' l_dt_for_day:'
10792: || l_dt_for_day
10793: );
10794: END IF;
10795:
10796: FOR i IN 1 .. g_weekly_earn_category.COUNT
10797: LOOP
10798: IF g_debug
10799: THEN
10800: hr_utility.set_location (l_proc, 825);
10801: hr_utility.TRACE
10802: ( 'daily_element_type_id:'
10803: || daily_element_type_id
10804: );
10797: LOOP
10798: IF g_debug
10799: THEN
10800: hr_utility.set_location (l_proc, 825);
10801: hr_utility.TRACE
10802: ( 'daily_element_type_id:'
10803: || daily_element_type_id
10804: );
10805: hr_utility.TRACE
10801: hr_utility.TRACE
10802: ( 'daily_element_type_id:'
10803: || daily_element_type_id
10804: );
10805: hr_utility.TRACE
10806: ( 'g_weekly_earn_category(i).element_type_id:'
10807: || g_weekly_earn_category (i).element_type_id
10808: );
10809: hr_utility.TRACE
10805: hr_utility.TRACE
10806: ( 'g_weekly_earn_category(i).element_type_id:'
10807: || g_weekly_earn_category (i).element_type_id
10808: );
10809: hr_utility.TRACE
10810: ( 'g_weekly_earn_category(i).earning_category:'
10811: || g_weekly_earn_category (i).earning_category
10812: );
10813: hr_utility.TRACE
10809: hr_utility.TRACE
10810: ( 'g_weekly_earn_category(i).earning_category:'
10811: || g_weekly_earn_category (i).earning_category
10812: );
10813: hr_utility.TRACE
10814: ( 'weekly_element_type_id:'
10815: || weekly_element_type_id
10816: );
10817: hr_utility.TRACE ( 'use_daily_REG:'
10813: hr_utility.TRACE
10814: ( 'weekly_element_type_id:'
10815: || weekly_element_type_id
10816: );
10817: hr_utility.TRACE ( 'use_daily_REG:'
10818: || use_daily_reg
10819: );
10820: hr_utility.TRACE ( 'use_daily_OT:'
10821: || use_daily_ot
10816: );
10817: hr_utility.TRACE ( 'use_daily_REG:'
10818: || use_daily_reg
10819: );
10820: hr_utility.TRACE ( 'use_daily_OT:'
10821: || use_daily_ot
10822: );
10823: hr_utility.TRACE ( 'use_daily_DT:'
10824: || use_daily_dt
10819: );
10820: hr_utility.TRACE ( 'use_daily_OT:'
10821: || use_daily_ot
10822: );
10823: hr_utility.TRACE ( 'use_daily_DT:'
10824: || use_daily_dt
10825: );
10826: hr_utility.TRACE ( 'use_weekly_REG:'
10827: || use_weekly_reg
10822: );
10823: hr_utility.TRACE ( 'use_daily_DT:'
10824: || use_daily_dt
10825: );
10826: hr_utility.TRACE ( 'use_weekly_REG:'
10827: || use_weekly_reg
10828: );
10829: hr_utility.TRACE ( 'use_weekly_OT:'
10830: || use_weekly_ot
10825: );
10826: hr_utility.TRACE ( 'use_weekly_REG:'
10827: || use_weekly_reg
10828: );
10829: hr_utility.TRACE ( 'use_weekly_OT:'
10830: || use_weekly_ot
10831: );
10832: hr_utility.TRACE ( 'use_weekly_DT:'
10833: || use_weekly_dt
10828: );
10829: hr_utility.TRACE ( 'use_weekly_OT:'
10830: || use_weekly_ot
10831: );
10832: hr_utility.TRACE ( 'use_weekly_DT:'
10833: || use_weekly_dt
10834: );
10835: END IF;
10836:
10844: AND use_daily_reg = 'Y'
10845: THEN
10846: IF g_debug
10847: THEN
10848: hr_utility.set_location (l_proc, 830);
10849: END IF;
10850:
10851: weekly_element_type_id := l_dy_wk_reg_elem_id;
10852: EXIT;
10857: AND use_daily_ot = 'Y'
10858: THEN
10859: IF g_debug
10860: THEN
10861: hr_utility.set_location (l_proc, 835);
10862: END IF;
10863:
10864: weekly_element_type_id := l_dy_wk_ovt_elem_id;
10865: EXIT;
10870: AND use_daily_dt = 'Y'
10871: THEN
10872: IF g_debug
10873: THEN
10874: hr_utility.set_location (l_proc, 840);
10875: END IF;
10876:
10877: weekly_element_type_id := l_dy_wk_dt_elem_id;
10878: EXIT;
10879: END IF;
10880:
10881: IF g_debug
10882: THEN
10883: hr_utility.set_location (l_proc, 845);
10884: END IF;
10885: END LOOP;
10886:
10887: IF g_debug
10885: END LOOP;
10886:
10887: IF g_debug
10888: THEN
10889: hr_utility.set_location (l_proc, 846);
10890: hr_utility.TRACE ( 'weekly_element_type_id:'
10891: || weekly_element_type_id
10892: );
10893: END IF;
10886:
10887: IF g_debug
10888: THEN
10889: hr_utility.set_location (l_proc, 846);
10890: hr_utility.TRACE ( 'weekly_element_type_id:'
10891: || weekly_element_type_id
10892: );
10893: END IF;
10894:
10895: IF weekly_element_type_id = l_dy_wk_ovt_elem_id
10896: THEN
10897: IF g_debug
10898: THEN
10899: hr_utility.set_location (l_proc, 850);
10900: END IF;
10901:
10902: hours_for_points :=
10903: hours_for_points + l_ovt_for_day;
10904: ELSIF weekly_element_type_id = l_dy_wk_dt_elem_id
10905: THEN
10906: IF g_debug
10907: THEN
10908: hr_utility.set_location (l_proc, 855);
10909: END IF;
10910:
10911: hours_for_points :=
10912: hours_for_points + l_dt_for_day;
10913: END IF;
10914:
10915: IF g_debug
10916: THEN
10917: hr_utility.set_location (l_proc, 860);
10918: END IF;
10919:
10920: SELECT NVL (points_assigned, 0)
10921: INTO l_points_assigned
10925: AND aei.effective_end_date;
10926:
10927: IF g_debug
10928: THEN
10929: hr_utility.TRACE ( 'l_points_assigned :'
10930: || l_points_assigned
10931: );
10932: hr_utility.TRACE ( ' weekly_element_type_id:'
10933: || weekly_element_type_id
10928: THEN
10929: hr_utility.TRACE ( 'l_points_assigned :'
10930: || l_points_assigned
10931: );
10932: hr_utility.TRACE ( ' weekly_element_type_id:'
10933: || weekly_element_type_id
10934: );
10935: END IF;
10936:
10938: hours_for_points * l_points_assigned;
10939:
10940: IF g_debug
10941: THEN
10942: hr_utility.TRACE ( 'segment_points :'
10943: || segment_points
10944: );
10945: END IF;
10946:
10951: hours_for_points;
10952:
10953: IF g_debug
10954: THEN
10955: hr_utility.set_location (l_proc, 865);
10956: END IF;
10957:
10958: FOR i IN 1 .. g_dy_wk_combo_explosion.COUNT
10959: LOOP
10958: FOR i IN 1 .. g_dy_wk_combo_explosion.COUNT
10959: LOOP
10960: IF g_debug
10961: THEN
10962: hr_utility.set_location (l_proc, 870);
10963: hr_utility.TRACE
10964: ( 'combo_element_type_id:'
10965: || g_dy_wk_combo_explosion (i).element_type_id
10966: );
10959: LOOP
10960: IF g_debug
10961: THEN
10962: hr_utility.set_location (l_proc, 870);
10963: hr_utility.TRACE
10964: ( 'combo_element_type_id:'
10965: || g_dy_wk_combo_explosion (i).element_type_id
10966: );
10967: hr_utility.TRACE
10963: hr_utility.TRACE
10964: ( 'combo_element_type_id:'
10965: || g_dy_wk_combo_explosion (i).element_type_id
10966: );
10967: hr_utility.TRACE
10968: ( 'hours_to_pay in plsql table:'
10969: || g_dy_wk_combo_explosion (i).hours_to_pay
10970: );
10971: END IF;
10972: END LOOP;
10973:
10974: IF g_debug
10975: THEN
10976: hr_utility.set_location (l_proc, 875);
10977: hr_utility.TRACE ('hours_left :' || hours_left);
10978: END IF;
10979: END IF; /*End hrs_already_paid = FALSE */
10980: END IF;
10973:
10974: IF g_debug
10975: THEN
10976: hr_utility.set_location (l_proc, 875);
10977: hr_utility.TRACE ('hours_left :' || hours_left);
10978: END IF;
10979: END IF; /*End hrs_already_paid = FALSE */
10980: END IF;
10981:
10980: END IF;
10981:
10982: IF g_debug
10983: THEN
10984: hr_utility.set_location (l_proc, 880);
10985: END IF;
10986:
10987: l_weekly_reg_hrs :=
10988: l_weekly_reg_hrs + hours_for_points;
11001: total_combo_points + segment_points;
11002:
11003: IF g_debug
11004: THEN
11005: hr_utility.TRACE ( 'total_combo_points :'
11006: || total_combo_points
11007: );
11008: END IF;
11009: END LOOP;
11009: END LOOP;
11010:
11011: IF g_debug
11012: THEN
11013: hr_utility.set_location (l_proc, 885);
11014: END IF;
11015:
11016: CLOSE weekly_earning_rules;
11017:
11018: FOR i IN 1 .. g_dy_wk_combo_explosion.COUNT
11019: LOOP
11020: IF g_debug
11021: THEN
11022: hr_utility.set_location (l_proc, 890);
11023: hr_utility.TRACE ('i:' || i);
11024: hr_utility.TRACE
11025: ( 'combo_element_type_id:'
11026: || g_dy_wk_combo_explosion (i).element_type_id
11019: LOOP
11020: IF g_debug
11021: THEN
11022: hr_utility.set_location (l_proc, 890);
11023: hr_utility.TRACE ('i:' || i);
11024: hr_utility.TRACE
11025: ( 'combo_element_type_id:'
11026: || g_dy_wk_combo_explosion (i).element_type_id
11027: );
11020: IF g_debug
11021: THEN
11022: hr_utility.set_location (l_proc, 890);
11023: hr_utility.TRACE ('i:' || i);
11024: hr_utility.TRACE
11025: ( 'combo_element_type_id:'
11026: || g_dy_wk_combo_explosion (i).element_type_id
11027: );
11028: hr_utility.TRACE
11024: hr_utility.TRACE
11025: ( 'combo_element_type_id:'
11026: || g_dy_wk_combo_explosion (i).element_type_id
11027: );
11028: hr_utility.TRACE
11029: ( 'hours_to_pay in plsql table:'
11030: || g_dy_wk_combo_explosion (i).hours_to_pay
11031: );
11032: END IF;
11037: END LOOP;
11038:
11039: IF g_debug
11040: THEN
11041: hr_utility.set_location (l_proc, 895);
11042: END IF;
11043:
11044: l_dy_wk_combo_index := g_dy_wk_combo_explosion.COUNT;
11045:
11044: l_dy_wk_combo_index := g_dy_wk_combo_explosion.COUNT;
11045:
11046: IF g_debug
11047: THEN
11048: hr_utility.TRACE ( 'g_dy_wk_combo_explosion.COUNT:'
11049: || g_dy_wk_combo_explosion.COUNT
11050: );
11051: hr_utility.TRACE ( 'l_total_combo_hrs:'
11052: || l_total_combo_hrs
11047: THEN
11048: hr_utility.TRACE ( 'g_dy_wk_combo_explosion.COUNT:'
11049: || g_dy_wk_combo_explosion.COUNT
11050: );
11051: hr_utility.TRACE ( 'l_total_combo_hrs:'
11052: || l_total_combo_hrs
11053: );
11054: hr_utility.TRACE ( 'l_dy_wk_combo_index:'
11055: || l_dy_wk_combo_index
11050: );
11051: hr_utility.TRACE ( 'l_total_combo_hrs:'
11052: || l_total_combo_hrs
11053: );
11054: hr_utility.TRACE ( 'l_dy_wk_combo_index:'
11055: || l_dy_wk_combo_index
11056: );
11057: END IF;
11058:
11063: FOR i IN 1 .. g_daily_explosion.COUNT
11064: LOOP
11065: IF g_debug
11066: THEN
11067: hr_utility.set_location (l_proc, 900);
11068: hr_utility.TRACE
11069: ( 'daily_element_type_id:'
11070: || g_daily_explosion (i).element_type_id
11071: );
11064: LOOP
11065: IF g_debug
11066: THEN
11067: hr_utility.set_location (l_proc, 900);
11068: hr_utility.TRACE
11069: ( 'daily_element_type_id:'
11070: || g_daily_explosion (i).element_type_id
11071: );
11072: hr_utility.TRACE ( 'hours_to_pay in plsql table:'
11068: hr_utility.TRACE
11069: ( 'daily_element_type_id:'
11070: || g_daily_explosion (i).element_type_id
11071: );
11072: hr_utility.TRACE ( 'hours_to_pay in plsql table:'
11073: || g_daily_explosion (i).hours_to_pay
11074: );
11075: hr_utility.TRACE
11076: ( 'earning_category:'
11071: );
11072: hr_utility.TRACE ( 'hours_to_pay in plsql table:'
11073: || g_daily_explosion (i).hours_to_pay
11074: );
11075: hr_utility.TRACE
11076: ( 'earning_category:'
11077: || g_daily_explosion (i).earning_category
11078: );
11079: END IF;
11085: + g_daily_explosion (i).hours_to_pay;
11086:
11087: IF g_debug
11088: THEN
11089: hr_utility.TRACE ( 'l_combo_elem_id:'
11090: || l_combo_elem_id
11091: );
11092: hr_utility.TRACE ( 'l_total_daily_hrs:'
11093: || l_total_daily_hrs
11088: THEN
11089: hr_utility.TRACE ( 'l_combo_elem_id:'
11090: || l_combo_elem_id
11091: );
11092: hr_utility.TRACE ( 'l_total_daily_hrs:'
11093: || l_total_daily_hrs
11094: );
11095: hr_utility.TRACE ( 'l_total_combo_hrs:'
11096: || l_total_combo_hrs
11091: );
11092: hr_utility.TRACE ( 'l_total_daily_hrs:'
11093: || l_total_daily_hrs
11094: );
11095: hr_utility.TRACE ( 'l_total_combo_hrs:'
11096: || l_total_combo_hrs
11097: );
11098: END IF;
11099:
11100: IF l_total_daily_hrs > l_total_combo_hrs
11101: THEN
11102: IF g_debug
11103: THEN
11104: hr_utility.set_location (l_proc, 910);
11105: END IF;
11106:
11107: FOR j IN 1 .. g_weekly_earn_category.COUNT
11108: LOOP
11107: FOR j IN 1 .. g_weekly_earn_category.COUNT
11108: LOOP
11109: IF g_debug
11110: THEN
11111: hr_utility.set_location (l_proc, 911);
11112: hr_utility.TRACE
11113: ( 'g_weekly_earn_category(j).element_type_id:'
11114: || g_weekly_earn_category (j).element_type_id
11115: );
11108: LOOP
11109: IF g_debug
11110: THEN
11111: hr_utility.set_location (l_proc, 911);
11112: hr_utility.TRACE
11113: ( 'g_weekly_earn_category(j).element_type_id:'
11114: || g_weekly_earn_category (j).element_type_id
11115: );
11116: hr_utility.TRACE
11112: hr_utility.TRACE
11113: ( 'g_weekly_earn_category(j).element_type_id:'
11114: || g_weekly_earn_category (j).element_type_id
11115: );
11116: hr_utility.TRACE
11117: ( 'g_daily_explosion (i).element_type_id:'
11118: || g_daily_explosion (i).element_type_id
11119: );
11120: hr_utility.TRACE
11116: hr_utility.TRACE
11117: ( 'g_daily_explosion (i).element_type_id:'
11118: || g_daily_explosion (i).element_type_id
11119: );
11120: hr_utility.TRACE
11121: ( 'g_weekly_earn_category(j).earning_category:'
11122: || g_weekly_earn_category (j).earning_category
11123: );
11124: hr_utility.TRACE ( 'use_daily_OT:'
11120: hr_utility.TRACE
11121: ( 'g_weekly_earn_category(j).earning_category:'
11122: || g_weekly_earn_category (j).earning_category
11123: );
11124: hr_utility.TRACE ( 'use_daily_OT:'
11125: || use_daily_ot
11126: );
11127: hr_utility.TRACE ( 'use_daily_DT:'
11128: || use_daily_dt
11123: );
11124: hr_utility.TRACE ( 'use_daily_OT:'
11125: || use_daily_ot
11126: );
11127: hr_utility.TRACE ( 'use_daily_DT:'
11128: || use_daily_dt
11129: );
11130: END IF;
11131:
11140: AND use_daily_ot = 'N'
11141: THEN
11142: IF g_debug
11143: THEN
11144: hr_utility.set_location (l_proc, 912);
11145: END IF;
11146:
11147: l_combo_elem_id :=
11148: g_weekly_earn_category (j).element_type_id;
11154: AND use_daily_dt = 'N'
11155: THEN
11156: IF g_debug
11157: THEN
11158: hr_utility.set_location (l_proc, 913);
11159: END IF;
11160:
11161: l_combo_elem_id :=
11162: g_weekly_earn_category (j).element_type_id;
11165: END IF;
11166:
11167: IF g_debug
11168: THEN
11169: hr_utility.set_location (l_proc, 914);
11170: END IF;
11171: END LOOP;
11172:
11173: IF g_debug
11171: END LOOP;
11172:
11173: IF g_debug
11174: THEN
11175: hr_utility.set_location (l_proc, 915);
11176: hr_utility.TRACE ( 'l_combo_elem_id:'
11177: || l_combo_elem_id
11178: );
11179: END IF;
11172:
11173: IF g_debug
11174: THEN
11175: hr_utility.set_location (l_proc, 915);
11176: hr_utility.TRACE ( 'l_combo_elem_id:'
11177: || l_combo_elem_id
11178: );
11179: END IF;
11180:
11190: FOR i IN 1 .. g_dy_wk_combo_explosion.COUNT
11191: LOOP
11192: IF g_debug
11193: THEN
11194: hr_utility.set_location (l_proc, 916);
11195: hr_utility.TRACE
11196: ( 'combo_element_type_id:'
11197: || g_dy_wk_combo_explosion (i).element_type_id
11198: );
11191: LOOP
11192: IF g_debug
11193: THEN
11194: hr_utility.set_location (l_proc, 916);
11195: hr_utility.TRACE
11196: ( 'combo_element_type_id:'
11197: || g_dy_wk_combo_explosion (i).element_type_id
11198: );
11199: hr_utility.TRACE
11195: hr_utility.TRACE
11196: ( 'combo_element_type_id:'
11197: || g_dy_wk_combo_explosion (i).element_type_id
11198: );
11199: hr_utility.TRACE
11200: ( 'hours_to_pay in plsql table:'
11201: || g_dy_wk_combo_explosion (i).hours_to_pay
11202: );
11203: END IF;
11204: END LOOP;
11205:
11206: IF g_debug
11207: THEN
11208: hr_utility.set_location (l_proc, 920);
11209: END IF;
11210:
11211: SELECT NVL (points_assigned, 0)
11212: INTO l_points_assigned
11220: * l_points_assigned;
11221:
11222: IF g_debug
11223: THEN
11224: hr_utility.TRACE ( 'segment_points :'
11225: || segment_points
11226: );
11227: END IF;
11228:
11230: total_combo_points + segment_points;
11231:
11232: IF g_debug
11233: THEN
11234: hr_utility.TRACE ( 'total_combo_points :'
11235: || total_combo_points
11236: );
11237: END IF;
11238: END IF;
11238: END IF;
11239:
11240: IF g_debug
11241: THEN
11242: hr_utility.set_location (l_proc, 925);
11243: END IF;
11244: END LOOP;
11245:
11246: IF g_debug
11244: END LOOP;
11245:
11246: IF g_debug
11247: THEN
11248: hr_utility.set_location (l_proc, 930);
11249: END IF;
11250: END IF;
11251: END IF;
11252:
11254: ----------------------END Combination Points Calculation------------------------
11255: --
11256: IF g_debug
11257: THEN
11258: hr_utility.set_location (l_proc, 935);
11259: hr_utility.TRACE
11260: ( 'fnd_profile.VALUE (''HXT_CA_LABOR_RULE''):'
11261: || fnd_profile.VALUE ('HXT_CA_LABOR_RULE')
11262: );
11255: --
11256: IF g_debug
11257: THEN
11258: hr_utility.set_location (l_proc, 935);
11259: hr_utility.TRACE
11260: ( 'fnd_profile.VALUE (''HXT_CA_LABOR_RULE''):'
11261: || fnd_profile.VALUE ('HXT_CA_LABOR_RULE')
11262: );
11263: END IF;
11274: IF (NVL (fnd_profile.VALUE ('HXT_CA_LABOR_RULE'), 'N') = 'Y')
11275: THEN
11276: IF g_debug
11277: THEN
11278: hr_utility.set_location (l_proc, 936);
11279: END IF;
11280:
11281: l_greatest_points :=
11282: GREATEST (total_daily_points,
11285: );
11286:
11287: IF g_debug
11288: THEN
11289: hr_utility.TRACE ( 'l_greatest_points:'
11290: || l_greatest_points
11291: );
11292: END IF;
11293:
11294: IF l_greatest_points = total_combo_points
11295: THEN
11296: IF g_debug
11297: THEN
11298: hr_utility.set_location (l_proc, 940);
11299: END IF;
11300:
11301: g_explosion_to_use := 'COMBO';
11302: ELSIF l_greatest_points = total_weekly_points
11302: ELSIF l_greatest_points = total_weekly_points
11303: THEN
11304: IF g_debug
11305: THEN
11306: hr_utility.set_location (l_proc, 945);
11307: END IF;
11308:
11309: g_explosion_to_use := 'WEEKLY';
11310: ELSIF l_greatest_points = total_daily_points
11310: ELSIF l_greatest_points = total_daily_points
11311: THEN
11312: IF g_debug
11313: THEN
11314: hr_utility.set_location (l_proc, 950);
11315: END IF;
11316:
11317: g_explosion_to_use := 'DAILY';
11318: END IF;
11321: -- Weekly takes precedence over Daily.
11322: ELSE
11323: IF g_debug
11324: THEN
11325: hr_utility.set_location (l_proc, 960);
11326: END IF;
11327:
11328: IF total_weekly_points > total_daily_points
11329: THEN
11328: IF total_weekly_points > total_daily_points
11329: THEN
11330: IF g_debug
11331: THEN
11332: hr_utility.set_location (l_proc, 970);
11333: END IF;
11334:
11335: g_explosion_to_use := 'WEEKLY';
11336: ELSIF total_daily_points > total_weekly_points
11336: ELSIF total_daily_points > total_weekly_points
11337: THEN
11338: IF g_debug
11339: THEN
11340: hr_utility.set_location (l_proc, 980);
11341: END IF;
11342:
11343: g_explosion_to_use := 'DAILY';
11344: ELSIF total_daily_points = total_weekly_points
11344: ELSIF total_daily_points = total_weekly_points
11345: THEN
11346: IF g_debug
11347: THEN
11348: hr_utility.set_location (l_proc, 990);
11349: END IF;
11350:
11351: g_explosion_to_use := 'WEEKLY';
11352: END IF;
11353: END IF;
11354:
11355: IF g_debug
11356: THEN
11357: hr_utility.set_location (l_proc, 991);
11358: END IF;
11359: END IF; -- IF special_day = FALSE
11360:
11361: IF g_debug
11359: END IF; -- IF special_day = FALSE
11360:
11361: IF g_debug
11362: THEN
11363: hr_utility.set_location (l_proc, 992);
11364: END IF;
11365:
11366: IF g_explosion_to_use = 'SPC'
11367: THEN
11366: IF g_explosion_to_use = 'SPC'
11367: THEN
11368: IF g_debug
11369: THEN
11370: hr_utility.set_location (l_proc, 993);
11371: END IF;
11372:
11373: FOR i IN g_special_explosion.FIRST .. g_special_explosion.LAST
11374: LOOP
11373: FOR i IN g_special_explosion.FIRST .. g_special_explosion.LAST
11374: LOOP
11375: IF g_debug
11376: THEN
11377: hr_utility.TRACE ('i:' || i);
11378: hr_utility.TRACE
11379: ( 'g_special_explosion(i).element_type_id:'
11380: || g_special_explosion (i).element_type_id
11381: );
11374: LOOP
11375: IF g_debug
11376: THEN
11377: hr_utility.TRACE ('i:' || i);
11378: hr_utility.TRACE
11379: ( 'g_special_explosion(i).element_type_id:'
11380: || g_special_explosion (i).element_type_id
11381: );
11382: END IF;
11383: END LOOP;
11384:
11385: IF g_debug
11386: THEN
11387: hr_utility.set_location (l_proc, 994);
11388: END IF;
11389:
11390: g_count := g_count + 1;
11391:
11390: g_count := g_count + 1;
11391:
11392: IF g_debug
11393: THEN
11394: hr_utility.TRACE ('g_count:' || g_count);
11395: END IF;
11396:
11397: p_error_code := 0;
11398: p_rule_to_pay := 'SPC';
11402: g_special_explosion (g_count).element_type_id;
11403:
11404: IF g_debug
11405: THEN
11406: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
11407: || p_hours_to_pay_this_rule
11408: );
11409: hr_utility.TRACE ( 'p_element_type_id :'
11410: || p_element_type_id
11405: THEN
11406: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
11407: || p_hours_to_pay_this_rule
11408: );
11409: hr_utility.TRACE ( 'p_element_type_id :'
11410: || p_element_type_id
11411: );
11412: END IF;
11413:
11414: IF g_count = g_special_explosion.COUNT
11415: THEN
11416: IF g_debug
11417: THEN
11418: hr_utility.set_location (l_proc, 995);
11419: END IF;
11420:
11421: hours_left_to_pay := 0;
11422: g_explosion_to_use := NULL;
11424: special_day := FALSE;
11425:
11426: IF g_debug
11427: THEN
11428: hr_utility.TRACE ( 'hours_left_to_pay :'
11429: || hours_left_to_pay
11430: );
11431: hr_utility.TRACE ( 'g_explosion_to_use:'
11432: || g_explosion_to_use
11427: THEN
11428: hr_utility.TRACE ( 'hours_left_to_pay :'
11429: || hours_left_to_pay
11430: );
11431: hr_utility.TRACE ( 'g_explosion_to_use:'
11432: || g_explosion_to_use
11433: );
11434: hr_utility.TRACE ('g_count :' || g_count);
11435: END IF;
11430: );
11431: hr_utility.TRACE ( 'g_explosion_to_use:'
11432: || g_explosion_to_use
11433: );
11434: hr_utility.TRACE ('g_count :' || g_count);
11435: END IF;
11436: END IF;
11437:
11438: IF g_debug
11436: END IF;
11437:
11438: IF g_debug
11439: THEN
11440: hr_utility.set_location (l_proc, 996);
11441: END IF;
11442:
11443: RETURN;
11444: ELSIF g_explosion_to_use = 'COMBO'
11444: ELSIF g_explosion_to_use = 'COMBO'
11445: THEN
11446: IF g_debug
11447: THEN
11448: hr_utility.set_location (l_proc, 997);
11449: END IF;
11450:
11451: FOR i IN
11452: g_dy_wk_combo_explosion.FIRST .. g_dy_wk_combo_explosion.LAST
11452: g_dy_wk_combo_explosion.FIRST .. g_dy_wk_combo_explosion.LAST
11453: LOOP
11454: IF g_debug
11455: THEN
11456: hr_utility.TRACE ('i:' || i);
11457: hr_utility.TRACE
11458: ( 'g_dy_wk_combo_explosion(i).element_type_id:'
11459: || g_dy_wk_combo_explosion (i).element_type_id
11460: );
11453: LOOP
11454: IF g_debug
11455: THEN
11456: hr_utility.TRACE ('i:' || i);
11457: hr_utility.TRACE
11458: ( 'g_dy_wk_combo_explosion(i).element_type_id:'
11459: || g_dy_wk_combo_explosion (i).element_type_id
11460: );
11461: END IF;
11462: END LOOP;
11463:
11464: IF g_debug
11465: THEN
11466: hr_utility.set_location (l_proc, 998);
11467: END IF;
11468:
11469: g_count := g_count + 1;
11470:
11469: g_count := g_count + 1;
11470:
11471: IF g_debug
11472: THEN
11473: hr_utility.TRACE ('g_count:' || g_count);
11474: END IF;
11475:
11476: p_error_code := 0;
11477: p_rule_to_pay := 'DAY';
11481: g_dy_wk_combo_explosion (g_count).element_type_id;
11482:
11483: IF g_debug
11484: THEN
11485: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
11486: || p_hours_to_pay_this_rule
11487: );
11488: hr_utility.TRACE ( 'p_element_type_id :'
11489: || p_element_type_id
11484: THEN
11485: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
11486: || p_hours_to_pay_this_rule
11487: );
11488: hr_utility.TRACE ( 'p_element_type_id :'
11489: || p_element_type_id
11490: );
11491: END IF;
11492:
11493: IF g_count = g_dy_wk_combo_explosion.COUNT
11494: THEN
11495: IF g_debug
11496: THEN
11497: hr_utility.set_location (l_proc, 1000);
11498: END IF;
11499:
11500: hours_left_to_pay := 0;
11501: g_explosion_to_use := NULL;
11502: g_count := 0;
11503:
11504: IF g_debug
11505: THEN
11506: hr_utility.TRACE ( 'hours_left_to_pay :'
11507: || hours_left_to_pay
11508: );
11509: hr_utility.TRACE ( 'g_explosion_to_use:'
11510: || g_explosion_to_use
11505: THEN
11506: hr_utility.TRACE ( 'hours_left_to_pay :'
11507: || hours_left_to_pay
11508: );
11509: hr_utility.TRACE ( 'g_explosion_to_use:'
11510: || g_explosion_to_use
11511: );
11512: hr_utility.TRACE ('g_count :' || g_count);
11513: END IF;
11508: );
11509: hr_utility.TRACE ( 'g_explosion_to_use:'
11510: || g_explosion_to_use
11511: );
11512: hr_utility.TRACE ('g_count :' || g_count);
11513: END IF;
11514: END IF;
11515:
11516: IF g_debug
11514: END IF;
11515:
11516: IF g_debug
11517: THEN
11518: hr_utility.set_location (l_proc, 1010);
11519: END IF;
11520:
11521: RETURN;
11522: ELSIF g_explosion_to_use = 'DAILY'
11522: ELSIF g_explosion_to_use = 'DAILY'
11523: THEN
11524: IF g_debug
11525: THEN
11526: hr_utility.set_location (l_proc, 1015);
11527: END IF;
11528:
11529: FOR i IN g_daily_explosion.FIRST .. g_daily_explosion.LAST
11530: LOOP
11529: FOR i IN g_daily_explosion.FIRST .. g_daily_explosion.LAST
11530: LOOP
11531: IF g_debug
11532: THEN
11533: hr_utility.TRACE ('i:' || i);
11534: hr_utility.TRACE
11535: ( 'g_daily_explosion(i).element_type_id:'
11536: || g_daily_explosion (i).element_type_id
11537: );
11530: LOOP
11531: IF g_debug
11532: THEN
11533: hr_utility.TRACE ('i:' || i);
11534: hr_utility.TRACE
11535: ( 'g_daily_explosion(i).element_type_id:'
11536: || g_daily_explosion (i).element_type_id
11537: );
11538: END IF;
11539: END LOOP;
11540:
11541: IF g_debug
11542: THEN
11543: hr_utility.set_location (l_proc, 1020);
11544: END IF;
11545:
11546: g_count := g_count + 1;
11547:
11546: g_count := g_count + 1;
11547:
11548: IF g_debug
11549: THEN
11550: hr_utility.TRACE ('g_count:' || g_count);
11551: END IF;
11552:
11553: p_error_code := 0;
11554: p_rule_to_pay := 'DAY';
11558: g_daily_explosion (g_count).element_type_id;
11559:
11560: IF g_debug
11561: THEN
11562: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
11563: || p_hours_to_pay_this_rule
11564: );
11565: hr_utility.TRACE ( 'p_element_type_id :'
11566: || p_element_type_id
11561: THEN
11562: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
11563: || p_hours_to_pay_this_rule
11564: );
11565: hr_utility.TRACE ( 'p_element_type_id :'
11566: || p_element_type_id
11567: );
11568: END IF;
11569:
11570: IF g_count = g_daily_explosion.COUNT
11571: THEN
11572: IF g_debug
11573: THEN
11574: hr_utility.set_location (l_proc, 1025);
11575: END IF;
11576:
11577: hours_left_to_pay := 0;
11578: g_explosion_to_use := NULL;
11579: g_count := 0;
11580:
11581: IF g_debug
11582: THEN
11583: hr_utility.TRACE ( 'hours_left_to_pay :'
11584: || hours_left_to_pay
11585: );
11586: hr_utility.TRACE ( 'g_explosion_to_use:'
11587: || g_explosion_to_use
11582: THEN
11583: hr_utility.TRACE ( 'hours_left_to_pay :'
11584: || hours_left_to_pay
11585: );
11586: hr_utility.TRACE ( 'g_explosion_to_use:'
11587: || g_explosion_to_use
11588: );
11589: hr_utility.TRACE ('g_count :' || g_count);
11590: END IF;
11585: );
11586: hr_utility.TRACE ( 'g_explosion_to_use:'
11587: || g_explosion_to_use
11588: );
11589: hr_utility.TRACE ('g_count :' || g_count);
11590: END IF;
11591: END IF;
11592:
11593: IF g_debug
11591: END IF;
11592:
11593: IF g_debug
11594: THEN
11595: hr_utility.set_location (l_proc, 1030);
11596: END IF;
11597:
11598: RETURN;
11599: ELSIF g_explosion_to_use = 'WEEKLY'
11599: ELSIF g_explosion_to_use = 'WEEKLY'
11600: THEN
11601: IF g_debug
11602: THEN
11603: hr_utility.set_location (l_proc, 1035);
11604: END IF;
11605:
11606: FOR i IN g_weekly_explosion.FIRST .. g_weekly_explosion.LAST
11607: LOOP
11606: FOR i IN g_weekly_explosion.FIRST .. g_weekly_explosion.LAST
11607: LOOP
11608: IF g_debug
11609: THEN
11610: hr_utility.TRACE ('i:' || i);
11611: hr_utility.TRACE
11612: ( 'g_weekly_explosion(i).element_type_id:'
11613: || g_weekly_explosion (i).element_type_id
11614: );
11607: LOOP
11608: IF g_debug
11609: THEN
11610: hr_utility.TRACE ('i:' || i);
11611: hr_utility.TRACE
11612: ( 'g_weekly_explosion(i).element_type_id:'
11613: || g_weekly_explosion (i).element_type_id
11614: );
11615: END IF;
11616: END LOOP;
11617:
11618: IF g_debug
11619: THEN
11620: hr_utility.set_location (l_proc, 1040);
11621: END IF;
11622:
11623: g_count := g_count + 1;
11624:
11623: g_count := g_count + 1;
11624:
11625: IF g_debug
11626: THEN
11627: hr_utility.TRACE ('g_count:' || g_count);
11628: END IF;
11629:
11630: p_error_code := 0;
11631: p_rule_to_pay := 'WKL';
11635: g_weekly_explosion (g_count).element_type_id;
11636:
11637: IF g_debug
11638: THEN
11639: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
11640: || p_hours_to_pay_this_rule
11641: );
11642: hr_utility.TRACE ( 'p_element_type_id :'
11643: || p_element_type_id
11638: THEN
11639: hr_utility.TRACE ( 'p_hours_to_pay_this_rule:'
11640: || p_hours_to_pay_this_rule
11641: );
11642: hr_utility.TRACE ( 'p_element_type_id :'
11643: || p_element_type_id
11644: );
11645: END IF;
11646:
11647: IF g_count = g_weekly_explosion.COUNT
11648: THEN
11649: IF g_debug
11650: THEN
11651: hr_utility.set_location (l_proc, 1045);
11652: END IF;
11653:
11654: hours_left_to_pay := 0;
11655: g_explosion_to_use := NULL;
11656: g_count := 0;
11657:
11658: IF g_debug
11659: THEN
11660: hr_utility.TRACE ( 'hours_left_to_pay :'
11661: || hours_left_to_pay
11662: );
11663: hr_utility.TRACE ( 'g_explosion_to_use:'
11664: || g_explosion_to_use
11659: THEN
11660: hr_utility.TRACE ( 'hours_left_to_pay :'
11661: || hours_left_to_pay
11662: );
11663: hr_utility.TRACE ( 'g_explosion_to_use:'
11664: || g_explosion_to_use
11665: );
11666: hr_utility.TRACE ('g_count :' || g_count);
11667: END IF;
11662: );
11663: hr_utility.TRACE ( 'g_explosion_to_use:'
11664: || g_explosion_to_use
11665: );
11666: hr_utility.TRACE ('g_count :' || g_count);
11667: END IF;
11668: END IF;
11669:
11670: IF g_debug
11668: END IF;
11669:
11670: IF g_debug
11671: THEN
11672: hr_utility.set_location (l_proc, 1050);
11673: END IF;
11674:
11675: RETURN;
11676: END IF;
11676: END IF;
11677:
11678: IF g_debug
11679: THEN
11680: hr_utility.set_location (l_proc, 1055);
11681: END IF;
11682: END IF; --g_explosion_to_use is not null
11683:
11684: IF g_debug
11682: END IF; --g_explosion_to_use is not null
11683:
11684: IF g_debug
11685: THEN
11686: hr_utility.set_location (l_proc, 1060);
11687: END IF;
11688: END;
11689:
11690: --------------------------------------------------------------------------------
11701: -- 'fetch next' set to true if a cap has been met and a new rule is needed
11702: BEGIN
11703: IF g_debug
11704: THEN
11705: hr_utility.set_location ('Reset_rules', 1);
11706: END IF;
11707:
11708: p_fetch_next_day := FALSE;
11709: p_fetch_next_week := FALSE;
11709: p_fetch_next_week := FALSE;
11710:
11711: IF g_debug
11712: THEN
11713: hr_utility.TRACE ('g_egt_id :' || g_egt_id);
11714: hr_utility.TRACE ( 'element_type_id_to_pay :'
11715: || element_type_id_to_pay
11716: );
11717: hr_utility.TRACE ( 'special_and_weekly_base :'
11710:
11711: IF g_debug
11712: THEN
11713: hr_utility.TRACE ('g_egt_id :' || g_egt_id);
11714: hr_utility.TRACE ( 'element_type_id_to_pay :'
11715: || element_type_id_to_pay
11716: );
11717: hr_utility.TRACE ( 'special_and_weekly_base :'
11718: || special_and_weekly_base
11713: hr_utility.TRACE ('g_egt_id :' || g_egt_id);
11714: hr_utility.TRACE ( 'element_type_id_to_pay :'
11715: || element_type_id_to_pay
11716: );
11717: hr_utility.TRACE ( 'special_and_weekly_base :'
11718: || special_and_weekly_base
11719: );
11720: hr_utility.TRACE ( 'g_date_worked :'
11721: || TO_CHAR (g_date_worked, 'dd/mon/yy')
11716: );
11717: hr_utility.TRACE ( 'special_and_weekly_base :'
11718: || special_and_weekly_base
11719: );
11720: hr_utility.TRACE ( 'g_date_worked :'
11721: || TO_CHAR (g_date_worked, 'dd/mon/yy')
11722: );
11723: hr_utility.TRACE ('p_rule_used :' || p_rule_used);
11724: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
11719: );
11720: hr_utility.TRACE ( 'g_date_worked :'
11721: || TO_CHAR (g_date_worked, 'dd/mon/yy')
11722: );
11723: hr_utility.TRACE ('p_rule_used :' || p_rule_used);
11724: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
11725: || hours_to_pay_this_rule
11726: );
11727: hr_utility.TRACE ( 'p_hours_paid_daily_rule :'
11720: hr_utility.TRACE ( 'g_date_worked :'
11721: || TO_CHAR (g_date_worked, 'dd/mon/yy')
11722: );
11723: hr_utility.TRACE ('p_rule_used :' || p_rule_used);
11724: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
11725: || hours_to_pay_this_rule
11726: );
11727: hr_utility.TRACE ( 'p_hours_paid_daily_rule :'
11728: || p_hours_paid_daily_rule
11723: hr_utility.TRACE ('p_rule_used :' || p_rule_used);
11724: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
11725: || hours_to_pay_this_rule
11726: );
11727: hr_utility.TRACE ( 'p_hours_paid_daily_rule :'
11728: || p_hours_paid_daily_rule
11729: );
11730: hr_utility.TRACE ( 'p_hours_paid_weekly_rule:'
11731: || p_hours_paid_weekly_rule
11726: );
11727: hr_utility.TRACE ( 'p_hours_paid_daily_rule :'
11728: || p_hours_paid_daily_rule
11729: );
11730: hr_utility.TRACE ( 'p_hours_paid_weekly_rule:'
11731: || p_hours_paid_weekly_rule
11732: );
11733: hr_utility.TRACE ('daily_rule_cap :' || daily_rule_cap);
11734: hr_utility.TRACE ('weekly_rule_cap :' || weekly_rule_cap);
11729: );
11730: hr_utility.TRACE ( 'p_hours_paid_weekly_rule:'
11731: || p_hours_paid_weekly_rule
11732: );
11733: hr_utility.TRACE ('daily_rule_cap :' || daily_rule_cap);
11734: hr_utility.TRACE ('weekly_rule_cap :' || weekly_rule_cap);
11735: END IF;
11736:
11737: IF g_egt_id IS NULL
11730: hr_utility.TRACE ( 'p_hours_paid_weekly_rule:'
11731: || p_hours_paid_weekly_rule
11732: );
11733: hr_utility.TRACE ('daily_rule_cap :' || daily_rule_cap);
11734: hr_utility.TRACE ('weekly_rule_cap :' || weekly_rule_cap);
11735: END IF;
11736:
11737: IF g_egt_id IS NULL
11738: OR p_rule_used = 'WKL'
11749: --the 'Loop Counter Exceeded' error does not occur and the next row of the
11750: --weekly_earn_rule_cur is fetched
11751: IF g_debug
11752: THEN
11753: hr_utility.set_location ('reset_rules', 2);
11754: END IF;
11755:
11756: IF p_rule_used = 'WKL' AND hours_to_pay_this_rule = 0
11757: THEN
11756: IF p_rule_used = 'WKL' AND hours_to_pay_this_rule = 0
11757: THEN
11758: IF g_debug
11759: THEN
11760: hr_utility.set_location ('reset_rules', 3);
11761: END IF;
11762:
11763: p_fetch_next_week := TRUE;
11764: first_weekly_cap_reached := TRUE;
11770: p_hours_paid_weekly_rule + hours_to_pay_this_rule;
11771:
11772: IF g_debug
11773: THEN
11774: hr_utility.TRACE ( 'p_hours_paid_daily_rule :'
11775: || p_hours_paid_daily_rule
11776: );
11777: hr_utility.TRACE ( 'p_hours_paid_weekly_rule:'
11778: || p_hours_paid_weekly_rule
11773: THEN
11774: hr_utility.TRACE ( 'p_hours_paid_daily_rule :'
11775: || p_hours_paid_daily_rule
11776: );
11777: hr_utility.TRACE ( 'p_hours_paid_weekly_rule:'
11778: || p_hours_paid_weekly_rule
11779: );
11780: END IF;
11781: ELSIF p_rule_used = 'DAY' OR p_rule_used = 'SPC'
11782: THEN -- SPR C355
11783: -- OT daily hours not counted for weekly cap
11784: IF g_debug
11785: THEN
11786: hr_utility.set_location ('reset_rules', 4);
11787: END IF;
11788:
11789: p_hours_paid_daily_rule :=
11790: p_hours_paid_daily_rule + hours_to_pay_this_rule;
11790: p_hours_paid_daily_rule + hours_to_pay_this_rule;
11791:
11792: IF g_debug
11793: THEN
11794: hr_utility.TRACE ( 'p_hours_paid_daily_rule :'
11795: || p_hours_paid_daily_rule
11796: );
11797: END IF;
11798: END IF;
11806: THEN
11807: -- do not reset daily hours if counting toward special cap
11808: IF g_debug
11809: THEN
11810: hr_utility.set_location ('reset_rules', 5);
11811: END IF;
11812:
11813: p_fetch_next_day := TRUE;
11814: END IF;
11823: -- FAZ-MHANDA commented on 26-oct-02
11824: -- IF (p_hours_paid_weekly_rule - p_hours_paid_daily_rule) > weekly_rule_cap THEN
11825: IF g_debug
11826: THEN
11827: hr_utility.set_location ('reset_rules', 6);
11828: END IF;
11829:
11830: p_fetch_next_week := TRUE;
11831: first_weekly_cap_reached := TRUE;
11832: ELSIF p_hours_paid_weekly_rule < weekly_rule_cap
11833: THEN
11834: IF g_debug
11835: THEN
11836: hr_utility.set_location ('reset_rules', 7);
11837: END IF;
11838:
11839: first_weekly_cap_reached := FALSE;
11840: END IF;
11840: END IF;
11841:
11842: IF g_debug
11843: THEN
11844: hr_utility.set_location ('reset_rules', 8);
11845: END IF;
11846: END reset_rules;
11847:
11848:
11877: END pick_elements_to_be_adjusted;
11878:
11879: ----------------------------Gen Special Main Section ---------------------------
11880: BEGIN -- Gen Special
11881: g_debug := hr_utility.debug_enabled;
11882: hxt_util.DEBUG ('Top of Gen_Special.'); -- debug only --HXT115
11883: hxt_util.DEBUG ('person id ' || TO_CHAR (g_person_id));
11884:
11885: -- debug only --HXT115
11884:
11885: -- debug only --HXT115
11886: IF g_debug
11887: THEN
11888: hr_utility.TRACE ('--------------Gen Special-----------------');
11889: hr_utility.set_location ('hxt_time_detail.gen_special', 1);
11890: hr_utility.TRACE ( 'p_time_in :'
11891: || TO_CHAR (p_time_in, 'DD-MON-YYYY HH24:MI:SS')
11892: );
11885: -- debug only --HXT115
11886: IF g_debug
11887: THEN
11888: hr_utility.TRACE ('--------------Gen Special-----------------');
11889: hr_utility.set_location ('hxt_time_detail.gen_special', 1);
11890: hr_utility.TRACE ( 'p_time_in :'
11891: || TO_CHAR (p_time_in, 'DD-MON-YYYY HH24:MI:SS')
11892: );
11893: hr_utility.TRACE ( 'p_time_out :'
11886: IF g_debug
11887: THEN
11888: hr_utility.TRACE ('--------------Gen Special-----------------');
11889: hr_utility.set_location ('hxt_time_detail.gen_special', 1);
11890: hr_utility.TRACE ( 'p_time_in :'
11891: || TO_CHAR (p_time_in, 'DD-MON-YYYY HH24:MI:SS')
11892: );
11893: hr_utility.TRACE ( 'p_time_out :'
11894: || TO_CHAR (p_time_out, 'DD_MON-YYYY HH24:MI:SS')
11889: hr_utility.set_location ('hxt_time_detail.gen_special', 1);
11890: hr_utility.TRACE ( 'p_time_in :'
11891: || TO_CHAR (p_time_in, 'DD-MON-YYYY HH24:MI:SS')
11892: );
11893: hr_utility.TRACE ( 'p_time_out :'
11894: || TO_CHAR (p_time_out, 'DD_MON-YYYY HH24:MI:SS')
11895: );
11896: hr_utility.TRACE ('person id :' || TO_CHAR (g_person_id));
11897: END IF;
11892: );
11893: hr_utility.TRACE ( 'p_time_out :'
11894: || TO_CHAR (p_time_out, 'DD_MON-YYYY HH24:MI:SS')
11895: );
11896: hr_utility.TRACE ('person id :' || TO_CHAR (g_person_id));
11897: END IF;
11898:
11899: -- Bug 8679560
11900: -- Commented out the explicit NULLING out of the tables
11902: IF g_special_explosion.COUNT > 0
11903: THEN
11904: IF g_debug
11905: THEN
11906: hr_utility.TRACE ('Deleted g_special_explosion PL/SQL table');
11907: END IF;
11908:
11909: g_special_explosion.DELETE;
11910: END IF;
11912: IF g_dy_wk_combo_explosion.COUNT > 0
11913: THEN
11914: IF g_debug
11915: THEN
11916: hr_utility.TRACE ('Deleted combo PL/SQL table');
11917: END IF;
11918:
11919: g_dy_wk_combo_explosion.DELETE;
11920: END IF;
11922: IF g_daily_explosion.COUNT > 0
11923: THEN
11924: IF g_debug
11925: THEN
11926: hr_utility.TRACE ('Deleted daily PL/SQL table');
11927: END IF;
11928:
11929: g_daily_explosion.DELETE;
11930: END IF;
11932: IF g_weekly_explosion.COUNT > 0
11933: THEN
11934: IF g_debug
11935: THEN
11936: hr_utility.TRACE ('Deleted weekly PL/SQL table');
11937: END IF;
11938:
11939: g_weekly_explosion.DELETE;
11940: END IF;
11942: IF g_daily_earn_category.COUNT > 0
11943: THEN
11944: IF g_debug
11945: THEN
11946: hr_utility.TRACE ('Deleted g_daily_earn_category PL/SQL table');
11947: END IF;
11948:
11949: g_daily_earn_category.DELETE;
11950: END IF;
11952: IF g_weekly_earn_category.COUNT > 0
11953: THEN
11954: IF g_debug
11955: THEN
11956: hr_utility.TRACE ('Deleted g_weekly_earn_category PL/SQL table');
11957: END IF;
11958:
11959: g_weekly_earn_category.DELETE;
11960: END IF;
11965: -- Then pay hours using holiday rules.
11966: -- Determine the Earning Category - Validated earlier
11967: IF g_debug
11968: THEN
11969: hr_utility.TRACE ('g_element_type_id :' || g_element_type_id);
11970: END IF;
11971:
11972: IF g_element_type_id IS NULL
11973: THEN
11980: END IF;
11981:
11982: IF g_debug
11983: THEN
11984: hr_utility.TRACE ( 'summary_earning_category :'
11985: || summary_earning_category
11986: );
11987: hr_utility.set_location ('hxt_time_detail.gen_special', 2);
11988: END IF;
11983: THEN
11984: hr_utility.TRACE ( 'summary_earning_category :'
11985: || summary_earning_category
11986: );
11987: hr_utility.set_location ('hxt_time_detail.gen_special', 2);
11988: END IF;
11989:
11990: IF summary_earning_category IS NULL
11991: THEN --- regular hours worked
12021: END IF;
12022:
12023: IF g_debug
12024: THEN
12025: hr_utility.TRACE ('rule_type_to_pay :' || rule_type_to_pay);
12026: END IF;
12027:
12028: OPEN check_spc_dy_eg;
12029:
12033: CLOSE check_spc_dy_eg;
12034:
12035: IF g_debug
12036: THEN
12037: hr_utility.TRACE ('g_SPC_DY_EG:' || g_spc_dy_eg);
12038: END IF;
12039:
12040: IF rule_type_to_pay = 'ABS'
12041: THEN
12040: IF rule_type_to_pay = 'ABS'
12041: THEN
12042: IF g_debug
12043: THEN
12044: hr_utility.set_location ('hxt_time_detail.gen_special', 3);
12045: hr_utility.TRACE
12046: ('-----------Entering rule_type_to_pay = ABS------------');
12047: END IF;
12048:
12041: THEN
12042: IF g_debug
12043: THEN
12044: hr_utility.set_location ('hxt_time_detail.gen_special', 3);
12045: hr_utility.TRACE
12046: ('-----------Entering rule_type_to_pay = ABS------------');
12047: END IF;
12048:
12049: -- Pay absence hours with earning element from Summary (parent) record.
12048:
12049: -- Pay absence hours with earning element from Summary (parent) record.
12050: IF g_debug
12051: THEN
12052: hr_utility.TRACE ('g_sdf_id:' || g_sdf_id);
12053: hr_utility.TRACE ('g_osp_id:' || g_osp_id);
12054: END IF;
12055:
12056: -- Bug 10123886
12049: -- Pay absence hours with earning element from Summary (parent) record.
12050: IF g_debug
12051: THEN
12052: hr_utility.TRACE ('g_sdf_id:' || g_sdf_id);
12053: hr_utility.TRACE ('g_osp_id:' || g_osp_id);
12054: END IF;
12055:
12056: -- Bug 10123886
12057: -- Added this additional call with SDP passed in for special cases in
12128: END IF;
12129:
12130: IF g_debug
12131: THEN
12132: hr_utility.set_location ('hxt_time_detail.gen_special', 4);
12133: END IF;
12134:
12135: IF ERROR_CODE <> 0
12136: THEN
12144: );
12145:
12146: IF g_debug
12147: THEN
12148: hr_utility.TRACE ( 'Loc D. Return code is :'
12149: || TO_CHAR (l_error_return)
12150: );
12151: END IF;
12152:
12154: END IF;
12155:
12156: IF g_debug
12157: THEN
12158: hr_utility.set_location ('hxt_time_detail.gen_special', 4.2);
12159: hr_utility.TRACE ( 'date_worked :'
12160: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12161: );
12162: hr_utility.TRACE ('g_call_adjust_abs :' || g_call_adjust_abs);
12155:
12156: IF g_debug
12157: THEN
12158: hr_utility.set_location ('hxt_time_detail.gen_special', 4.2);
12159: hr_utility.TRACE ( 'date_worked :'
12160: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12161: );
12162: hr_utility.TRACE ('g_call_adjust_abs :' || g_call_adjust_abs);
12163: hr_utility.TRACE ('g_ep_id:' || g_ep_id);
12158: hr_utility.set_location ('hxt_time_detail.gen_special', 4.2);
12159: hr_utility.TRACE ( 'date_worked :'
12160: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12161: );
12162: hr_utility.TRACE ('g_call_adjust_abs :' || g_call_adjust_abs);
12163: hr_utility.TRACE ('g_ep_id:' || g_ep_id);
12164: hr_utility.TRACE ('g_element_type_id:' || g_element_type_id);
12165: END IF;
12166:
12159: hr_utility.TRACE ( 'date_worked :'
12160: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12161: );
12162: hr_utility.TRACE ('g_call_adjust_abs :' || g_call_adjust_abs);
12163: hr_utility.TRACE ('g_ep_id:' || g_ep_id);
12164: hr_utility.TRACE ('g_element_type_id:' || g_element_type_id);
12165: END IF;
12166:
12167: IF g_call_adjust_abs = 'Y'
12160: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12161: );
12162: hr_utility.TRACE ('g_call_adjust_abs :' || g_call_adjust_abs);
12163: hr_utility.TRACE ('g_ep_id:' || g_ep_id);
12164: hr_utility.TRACE ('g_element_type_id:' || g_element_type_id);
12165: END IF;
12166:
12167: IF g_call_adjust_abs = 'Y'
12168: THEN
12167: IF g_call_adjust_abs = 'Y'
12168: THEN
12169: IF g_debug
12170: THEN
12171: hr_utility.set_location ('hxt_time_detail.gen_special', 4.3);
12172: END IF;
12173:
12174: -- begin 688072
12175: IF g_ep_type IN ('WEEKLY', 'SPECIAL')
12176: THEN
12177: -- Bug 2795054
12178: IF g_debug
12179: THEN
12180: hr_utility.set_location ('hxt_time_detail.gen_special',
12181: 4.4);
12182: END IF;
12183:
12184: -- Bug 2795054
12195: CLOSE check_abs_elem;
12196:
12197: IF g_debug
12198: THEN
12199: hr_utility.TRACE ('l_abs_in_eg:' || l_abs_in_eg);
12200: END IF;
12201:
12202: IF (l_abs_in_eg IS NOT NULL)
12203: THEN
12202: IF (l_abs_in_eg IS NOT NULL)
12203: THEN
12204: IF g_debug
12205: THEN
12206: hr_utility.set_location ('hxt_time_detail.gen_special',
12207: 4.5
12208: );
12209: END IF;
12210:
12212: adjust_for_absence (g_tim_id, g_ep_id, g_date_worked);
12213:
12214: IF g_debug
12215: THEN
12216: hr_utility.set_location ('hxt_time_detail.gen_special',
12217: 5
12218: );
12219: hr_utility.TRACE ('error_code :' || ERROR_CODE);
12220: END IF;
12215: THEN
12216: hr_utility.set_location ('hxt_time_detail.gen_special',
12217: 5
12218: );
12219: hr_utility.TRACE ('error_code :' || ERROR_CODE);
12220: END IF;
12221:
12222: --SIR491 Begin
12223: IF ERROR_CODE = 1
12223: IF ERROR_CODE = 1
12224: THEN
12225: IF g_debug
12226: THEN
12227: hr_utility.set_location
12228: ('hxt_time_detail.gen_special',
12229: 5.1
12230: );
12231: END IF;
12242: ELSIF ERROR_CODE = 2
12243: THEN
12244: IF g_debug
12245: THEN
12246: hr_utility.set_location
12247: ('hxt_time_detail.gen_special',
12248: 5.2
12249: );
12250: END IF;
12263: ELSIF ERROR_CODE = 3
12264: THEN
12265: IF g_debug
12266: THEN
12267: hr_utility.set_location
12268: ('hxt_time_detail.gen_special',
12269: 5.3
12270: );
12271: END IF;
12282: END IF;
12283:
12284: IF g_debug
12285: THEN
12286: hr_utility.TRACE ('l_error_return :' || l_error_return);
12287: END IF;
12288:
12289: IF ERROR_CODE > l_error_return
12290: THEN
12289: IF ERROR_CODE > l_error_return
12290: THEN
12291: IF g_debug
12292: THEN
12293: hr_utility.set_location
12294: ('hxt_time_detail.gen_special',
12295: 6
12296: );
12297: END IF;
12299: l_error_return := ERROR_CODE;
12300:
12301: IF g_debug
12302: THEN
12303: hr_utility.TRACE ( 'Loc E. Return code is :'
12304: || TO_CHAR (l_error_return)
12305: );
12306: END IF;
12307: END IF;
12308:
12309: --SIR491 END
12310: IF g_debug
12311: THEN
12312: hr_utility.set_location ('hxt_time_detail.gen_special',
12313: 6.1
12314: );
12315: END IF;
12316: END IF;
12316: END IF;
12317:
12318: IF g_debug
12319: THEN
12320: hr_utility.set_location ('hxt_time_detail.gen_special',
12321: 6.2);
12322: END IF;
12323: END IF;
12324:
12323: END IF;
12324:
12325: IF g_debug
12326: THEN
12327: hr_utility.set_location ('hxt_time_detail.gen_special', 6.3);
12328: END IF;
12329: -- end 688072
12330: END IF;
12331: ELSE -- rule_type_to_pay <> ABS
12330: END IF;
12331: ELSE -- rule_type_to_pay <> ABS
12332: IF g_debug
12333: THEN
12334: hr_utility.set_location ('hxt_time_detail.gen_special', 7);
12335: hr_utility.TRACE
12336: ('------------rule_type_to_pay <> ABS------------');
12337: END IF;
12338:
12331: ELSE -- rule_type_to_pay <> ABS
12332: IF g_debug
12333: THEN
12334: hr_utility.set_location ('hxt_time_detail.gen_special', 7);
12335: hr_utility.TRACE
12336: ('------------rule_type_to_pay <> ABS------------');
12337: END IF;
12338:
12339: -- Loop through the earning rules for the earning policy
12343: contig_hours_worked (g_date_worked, g_egt_id, g_tim_id);
12344:
12345: IF g_debug
12346: THEN
12347: hr_utility.TRACE ( 'previous_detail_hours_day :'
12348: || previous_detail_hours_day
12349: );
12350: END IF;
12351:
12353:
12354: --from daily view
12355: IF g_debug
12356: THEN
12357: hr_utility.TRACE ('hours_paid_daily_rule:'
12358: || hours_paid_daily_rule
12359: );
12360: END IF;
12361:
12365: hours_left_to_pay := p_hours_worked;
12366:
12367: IF g_debug
12368: THEN
12369: hr_utility.TRACE ('hours_left_to_pay:' || hours_left_to_pay);
12370: END IF;
12371:
12372: IF ERROR_CODE > l_error_return
12373: THEN
12372: IF ERROR_CODE > l_error_return
12373: THEN
12374: IF g_debug
12375: THEN
12376: hr_utility.set_location ('hxt_time_detail.gen_special', 10);
12377: END IF;
12378:
12379: l_error_return := ERROR_CODE;
12380: hxt_util.DEBUG ( 'Loc F. Return code is '
12382: ); -- debug only
12383:
12384: IF g_debug
12385: THEN
12386: hr_utility.TRACE ( 'Loc F. Return code is :'
12387: || TO_CHAR (l_error_return)
12388: );
12389: END IF;
12390: END IF;
12400: -- rules.
12401: -- Weekly set to 999 if none found.
12402: IF g_debug
12403: THEN
12404: hr_utility.set_location ('hxt_time_detail.gen_special', 11);
12405: END IF;
12406:
12407: seven_day_cal_rule := FALSE;
12408: five_day_cal_rule := FALSE;
12415: consecutive_days_limit;
12416:
12417: IF g_debug
12418: THEN
12419: hr_utility.TRACE ('special_daily_cap :' || special_daily_cap);
12420: hr_utility.TRACE ( 'special_earning_type :'
12421: || special_earning_type
12422: );
12423: hr_utility.TRACE ( 'consecutive_days_limit :'
12416:
12417: IF g_debug
12418: THEN
12419: hr_utility.TRACE ('special_daily_cap :' || special_daily_cap);
12420: hr_utility.TRACE ( 'special_earning_type :'
12421: || special_earning_type
12422: );
12423: hr_utility.TRACE ( 'consecutive_days_limit :'
12424: || consecutive_days_limit
12419: hr_utility.TRACE ('special_daily_cap :' || special_daily_cap);
12420: hr_utility.TRACE ( 'special_earning_type :'
12421: || special_earning_type
12422: );
12423: hr_utility.TRACE ( 'consecutive_days_limit :'
12424: || consecutive_days_limit
12425: );
12426: END IF;
12427:
12428: IF daily_earn_rules_cur%FOUND
12429: THEN
12430: IF g_debug
12431: THEN
12432: hr_utility.set_location ('hxt_time_detail.gen_special', 12);
12433: END IF;
12434:
12435: -- Now that we know there is at least one day rule, determine how many
12436: -- consecutive days worked. Use the rule with the highest day number
12438: CLOSE daily_earn_rules_cur;
12439:
12440: IF g_debug
12441: THEN
12442: hr_utility.TRACE ('g_SPC_DY_EG:' || g_spc_dy_eg);
12443: END IF;
12444:
12445: IF g_spc_dy_eg IS NOT NULL
12446: THEN
12448: consecutivedaysworked_for_spc (g_date_worked);
12449:
12450: IF g_debug
12451: THEN
12452: hr_utility.TRACE ( 'date_worked :'
12453: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12454: );
12455: hr_utility.TRACE ( 'consec_days_worked:'
12456: || TO_CHAR (consec_days_worked)
12451: THEN
12452: hr_utility.TRACE ( 'date_worked :'
12453: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12454: );
12455: hr_utility.TRACE ( 'consec_days_worked:'
12456: || TO_CHAR (consec_days_worked)
12457: );
12458: END IF;
12459: ELSE
12460: consec_days_worked := getconsecutivedaysworked (g_date_worked);
12461:
12462: IF g_debug
12463: THEN
12464: hr_utility.TRACE ( 'date_worked:'
12465: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12466: );
12467: hr_utility.TRACE ( 'consec_days_worked:'
12468: || TO_CHAR (consec_days_worked)
12463: THEN
12464: hr_utility.TRACE ( 'date_worked:'
12465: || TO_CHAR (g_date_worked, 'DD/MON/YY')
12466: );
12467: hr_utility.TRACE ( 'consec_days_worked:'
12468: || TO_CHAR (consec_days_worked)
12469: );
12470: END IF;
12471: END IF;
12485: ); -- debug only
12486:
12487: IF g_debug
12488: THEN
12489: hr_utility.TRACE ( 'special_daily_cap :'
12490: || TO_CHAR (special_daily_cap)
12491: );
12492: hr_utility.TRACE ( 'special_earning_type :'
12493: || TO_CHAR (special_earning_type)
12488: THEN
12489: hr_utility.TRACE ( 'special_daily_cap :'
12490: || TO_CHAR (special_daily_cap)
12491: );
12492: hr_utility.TRACE ( 'special_earning_type :'
12493: || TO_CHAR (special_earning_type)
12494: );
12495: hr_utility.TRACE ( 'consecutive_days_limit:'
12496: || TO_CHAR (consecutive_days_limit)
12491: );
12492: hr_utility.TRACE ( 'special_earning_type :'
12493: || TO_CHAR (special_earning_type)
12494: );
12495: hr_utility.TRACE ( 'consecutive_days_limit:'
12496: || TO_CHAR (consecutive_days_limit)
12497: );
12498: END IF;
12499:
12500: IF spc_earn_rules_cur%FOUND
12501: THEN
12502: IF g_debug
12503: THEN
12504: hr_utility.set_location ('hxt_time_detail.gen_special', 13);
12505: END IF;
12506:
12507: FETCH spc_earn_rules_cur
12508: INTO special_daily_cap2, special_earning_type2,
12511: IF consecutive_days_limit <> consecutive_days_limit2
12512: THEN
12513: IF g_debug
12514: THEN
12515: hr_utility.set_location ('hxt_time_detail.gen_special',
12516: 14
12517: );
12518: END IF;
12519:
12524: IF consec_days_worked >= consecutive_days_limit
12525: THEN
12526: IF g_debug
12527: THEN
12528: hr_utility.set_location ('hxt_time_detail.gen_special',
12529: 15
12530: );
12531: END IF;
12532:
12533: consecutive_days_reached := TRUE;
12534: ELSE
12535: IF g_debug
12536: THEN
12537: hr_utility.set_location ('hxt_time_detail.gen_special',
12538: 16
12539: );
12540: END IF;
12541:
12545: IF consecutive_days_limit = 7
12546: THEN
12547: IF g_debug
12548: THEN
12549: hr_utility.set_location ('hxt_time_detail.gen_special',
12550: 17
12551: );
12552: END IF;
12553:
12555: ELSIF consecutive_days_limit = 5
12556: THEN
12557: IF g_debug
12558: THEN
12559: hr_utility.set_location ('hxt_time_detail.gen_special',
12560: 18
12561: );
12562: END IF;
12563:
12573: ); -- debug only
12574:
12575: IF g_debug
12576: THEN
12577: hr_utility.TRACE ( 'special_daily_cap2 :'
12578: || TO_CHAR (special_daily_cap2)
12579: );
12580: hr_utility.TRACE ( 'special_earning_type2 :'
12581: || TO_CHAR (special_earning_type2)
12576: THEN
12577: hr_utility.TRACE ( 'special_daily_cap2 :'
12578: || TO_CHAR (special_daily_cap2)
12579: );
12580: hr_utility.TRACE ( 'special_earning_type2 :'
12581: || TO_CHAR (special_earning_type2)
12582: );
12583: hr_utility.TRACE ( 'consecutive_days_limit2 :'
12584: || TO_CHAR (consecutive_days_limit2)
12579: );
12580: hr_utility.TRACE ( 'special_earning_type2 :'
12581: || TO_CHAR (special_earning_type2)
12582: );
12583: hr_utility.TRACE ( 'consecutive_days_limit2 :'
12584: || TO_CHAR (consecutive_days_limit2)
12585: );
12586: END IF;
12587: ELSE -- spc_earn_rules_cur NOT FOUND
12586: END IF;
12587: ELSE -- spc_earn_rules_cur NOT FOUND
12588: IF g_debug
12589: THEN
12590: hr_utility.set_location ('hxt_time_detail.gen_special', 19);
12591: END IF;
12592:
12593: special_daily_cap := 99;
12594: special_earning_type := NULL;
12597: END IF;
12598: ELSE -- daily_earn_rules_cur NOT FOUND (NO SPECIAL (DAYS) RULE)
12599: IF g_debug
12600: THEN
12601: hr_utility.set_location ('hxt_time_detail.gen_special', 20);
12602: END IF;
12603:
12604: CLOSE daily_earn_rules_cur;
12605: END IF;
12616: first_daily_rule_cap := daily_rule_cap;
12617:
12618: IF g_debug
12619: THEN
12620: hr_utility.TRACE ('first_daily_rule_cap:' || first_daily_rule_cap);
12621: hr_utility.TRACE ('g_EP_TYPE :' || g_ep_type);
12622: END IF;
12623:
12624: IF (daily_earn_rules_cur%NOTFOUND AND (g_ep_type = 'WEEKLY'))
12617:
12618: IF g_debug
12619: THEN
12620: hr_utility.TRACE ('first_daily_rule_cap:' || first_daily_rule_cap);
12621: hr_utility.TRACE ('g_EP_TYPE :' || g_ep_type);
12622: END IF;
12623:
12624: IF (daily_earn_rules_cur%NOTFOUND AND (g_ep_type = 'WEEKLY'))
12625: THEN
12624: IF (daily_earn_rules_cur%NOTFOUND AND (g_ep_type = 'WEEKLY'))
12625: THEN
12626: IF g_debug
12627: THEN
12628: hr_utility.set_location ('hxt_time_detail.gen_special', 21);
12629: hr_utility.TRACE
12630: ('daily_earn_rules_cur NOTFOUND and EP_TYPE = WEEKLY');
12631: END IF;
12632:
12625: THEN
12626: IF g_debug
12627: THEN
12628: hr_utility.set_location ('hxt_time_detail.gen_special', 21);
12629: hr_utility.TRACE
12630: ('daily_earn_rules_cur NOTFOUND and EP_TYPE = WEEKLY');
12631: END IF;
12632:
12633: daily_rule_cap := 24;
12637: IF (daily_earn_rules_cur%NOTFOUND AND (g_ep_type <> 'WEEKLY'))
12638: THEN
12639: IF g_debug
12640: THEN
12641: hr_utility.set_location ('hxt_time_detail.gen_special', 22);
12642: hr_utility.TRACE
12643: ('daily_earn_rules_cur NOTFOUND and EP_TYPE<>WEEKLY');
12644: END IF;
12645:
12638: THEN
12639: IF g_debug
12640: THEN
12641: hr_utility.set_location ('hxt_time_detail.gen_special', 22);
12642: hr_utility.TRACE
12643: ('daily_earn_rules_cur NOTFOUND and EP_TYPE<>WEEKLY');
12644: END IF;
12645:
12646: fnd_message.set_name ('HXT', 'HXT_39307_DAILY_BASE_REC_NF');
12661: );
12662:
12663: IF g_debug
12664: THEN
12665: hr_utility.TRACE ( 'Loc G. Return code is:'
12666: || TO_CHAR (l_error_return)
12667: );
12668: END IF;
12669: END IF;
12672: special_and_weekly_base := daily_earning_type;
12673:
12674: IF g_debug
12675: THEN
12676: hr_utility.TRACE ( 'special_and_weekly_base :'
12677: || special_and_weekly_base
12678: );
12679: END IF;
12680:
12683: IF rule_type_to_pay <> 'DAY'
12684: THEN -- for now only HOL
12685: IF g_debug
12686: THEN
12687: hr_utility.set_location ('hxt_time_detail.gen_special', 23);
12688: END IF;
12689:
12690: CLOSE daily_earn_rules_cur; -- opened with parameter DAY
12691:
12698: IF daily_earn_rules_cur%NOTFOUND
12699: THEN
12700: IF g_debug
12701: THEN
12702: hr_utility.set_location ('hxt_time_detail.gen_special', 24);
12703: END IF;
12704:
12705: end_of_day_rules := TRUE;
12706: END IF;
12707: END IF;
12708:
12709: IF g_debug
12710: THEN
12711: hr_utility.TRACE ('g_ep_id :' || g_ep_id);
12712: END IF;
12713:
12714: OPEN weekly_earn_rules_cur (g_ep_id);
12715:
12714: OPEN weekly_earn_rules_cur (g_ep_id);
12715:
12716: IF g_debug
12717: THEN
12718: hr_utility.TRACE
12719: ('---------OPEN weekly_earn_rules_cur-----------');
12720: END IF;
12721:
12722: FETCH weekly_earn_rules_cur
12723: INTO weekly_rule_cap, weekly_earning_type;
12724:
12725: IF g_debug
12726: THEN
12727: hr_utility.TRACE
12728: ('---------FETCHED weekly_earn_rules_cur----------');
12729: hr_utility.TRACE ('weekly_rule_cap :' || weekly_rule_cap);
12730: hr_utility.TRACE ('weekly_earning_type :' || weekly_earning_type);
12731: END IF;
12725: IF g_debug
12726: THEN
12727: hr_utility.TRACE
12728: ('---------FETCHED weekly_earn_rules_cur----------');
12729: hr_utility.TRACE ('weekly_rule_cap :' || weekly_rule_cap);
12730: hr_utility.TRACE ('weekly_earning_type :' || weekly_earning_type);
12731: END IF;
12732:
12733: IF weekly_earn_rules_cur%NOTFOUND
12726: THEN
12727: hr_utility.TRACE
12728: ('---------FETCHED weekly_earn_rules_cur----------');
12729: hr_utility.TRACE ('weekly_rule_cap :' || weekly_rule_cap);
12730: hr_utility.TRACE ('weekly_earning_type :' || weekly_earning_type);
12731: END IF;
12732:
12733: IF weekly_earn_rules_cur%NOTFOUND
12734: THEN
12733: IF weekly_earn_rules_cur%NOTFOUND
12734: THEN
12735: IF g_debug
12736: THEN
12737: hr_utility.set_location ('hxt_time_detail.gen_special', 25);
12738: END IF;
12739:
12740: IF g_ep_type = 'WEEKLY'
12741: THEN
12740: IF g_ep_type = 'WEEKLY'
12741: THEN
12742: IF g_debug
12743: THEN
12744: hr_utility.set_location ('hxt_time_detail.gen_special', 26);
12745: END IF;
12746:
12747: fnd_message.set_name ('HXT', 'HXT_39311_WKLY_ERN_RULES_NF');
12748: ERROR_CODE :=
12757: IF ERROR_CODE > l_error_return
12758: THEN
12759: IF g_debug
12760: THEN
12761: hr_utility.set_location ('hxt_time_detail.gen_special',
12762: 27
12763: );
12764: END IF;
12765:
12770: END IF; --SIR014
12771: ELSE
12772: IF g_debug
12773: THEN
12774: hr_utility.set_location ('hxt_time_detail.gen_special', 28);
12775: END IF;
12776:
12777: weekly_rule_cap := 999;
12778: hours_paid_weekly_rule := 0;
12807: -- override elements ).
12808:
12809: IF g_debug
12810: THEN
12811: hr_utility.trace('get_weekly_total = '||get_weekly_total);
12812: hr_utility.trace('get_weekly_total_prev_days '||get_weekly_total_prev_days);
12813: hr_utility.trace('previous_detail_hours_day '||previous_detail_hours_day);
12814: hr_utility.trace('p_time_in '||p_time_in);
12815: hr_utility.trace('p_time_out '||p_time_out);
12808:
12809: IF g_debug
12810: THEN
12811: hr_utility.trace('get_weekly_total = '||get_weekly_total);
12812: hr_utility.trace('get_weekly_total_prev_days '||get_weekly_total_prev_days);
12813: hr_utility.trace('previous_detail_hours_day '||previous_detail_hours_day);
12814: hr_utility.trace('p_time_in '||p_time_in);
12815: hr_utility.trace('p_time_out '||p_time_out);
12816: END IF;
12809: IF g_debug
12810: THEN
12811: hr_utility.trace('get_weekly_total = '||get_weekly_total);
12812: hr_utility.trace('get_weekly_total_prev_days '||get_weekly_total_prev_days);
12813: hr_utility.trace('previous_detail_hours_day '||previous_detail_hours_day);
12814: hr_utility.trace('p_time_in '||p_time_in);
12815: hr_utility.trace('p_time_out '||p_time_out);
12816: END IF;
12817:
12810: THEN
12811: hr_utility.trace('get_weekly_total = '||get_weekly_total);
12812: hr_utility.trace('get_weekly_total_prev_days '||get_weekly_total_prev_days);
12813: hr_utility.trace('previous_detail_hours_day '||previous_detail_hours_day);
12814: hr_utility.trace('p_time_in '||p_time_in);
12815: hr_utility.trace('p_time_out '||p_time_out);
12816: END IF;
12817:
12818: IF ( g_sdp_id IS NOT NULL
12811: hr_utility.trace('get_weekly_total = '||get_weekly_total);
12812: hr_utility.trace('get_weekly_total_prev_days '||get_weekly_total_prev_days);
12813: hr_utility.trace('previous_detail_hours_day '||previous_detail_hours_day);
12814: hr_utility.trace('p_time_in '||p_time_in);
12815: hr_utility.trace('p_time_out '||p_time_out);
12816: END IF;
12817:
12818: IF ( g_sdp_id IS NOT NULL
12819: AND p_time_in IS NOT NULL
12833:
12834: -- hours_paid_weekly_rule := get_weekly_total_to_date('REG');
12835: IF g_debug
12836: THEN
12837: hr_utility.TRACE ( 'hours_paid_weekly_rule :'
12838: || hours_paid_weekly_rule
12839: );
12840: END IF;
12841:
12843: IF hours_paid_weekly_rule >= weekly_rule_cap
12844: THEN
12845: IF g_debug
12846: THEN
12847: hr_utility.set_location ('hxt_time_detail.gen_special', 29);
12848: END IF;
12849:
12850: first_weekly_cap_reached := TRUE;
12851: END IF;
12855: l_time_out := p_time_out;
12856:
12857: IF g_debug
12858: THEN
12859: hr_utility.TRACE ('l_time_in :' || TO_CHAR (l_time_in, 'HH24:MI'));
12860: hr_utility.TRACE ('l_time_out:' || TO_CHAR (l_time_out, 'HH24:MI')
12861: );
12862: END IF;
12863:
12856:
12857: IF g_debug
12858: THEN
12859: hr_utility.TRACE ('l_time_in :' || TO_CHAR (l_time_in, 'HH24:MI'));
12860: hr_utility.TRACE ('l_time_out:' || TO_CHAR (l_time_out, 'HH24:MI')
12861: );
12862: END IF;
12863:
12864: --SIR494 We must allow the loop to process at least once or we will not be able
12872: -- bug 2956224 fix.
12873: LOOP
12874: IF g_debug
12875: THEN
12876: hr_utility.set_location ('hxt_time_detail.gen_special', 30);
12877: END IF;
12878:
12879: IF g_ep_type = 'WEEKLY' AND rule_type_to_pay <> 'HOL'
12880: THEN
12879: IF g_ep_type = 'WEEKLY' AND rule_type_to_pay <> 'HOL'
12880: THEN
12881: IF g_debug
12882: THEN
12883: hr_utility.set_location ('hxt_time_detail.gen_special', 31);
12884: END IF;
12885:
12886: select_weekly_hours (rule_to_pay,
12887: hours_to_pay_this_rule,
12889: );
12890:
12891: IF g_debug
12892: THEN
12893: hr_utility.set_location ('hxt_time_detail.gen_special',
12894: 31.5
12895: );
12896: END IF;
12897:
12898: IF ERROR_CODE > l_error_return
12899: THEN
12900: IF g_debug
12901: THEN
12902: hr_utility.set_location ('hxt_time_detail.gen_special',
12903: 32
12904: );
12905: END IF;
12906:
12913: AND rule_type_to_pay = 'HOL'
12914: THEN
12915: IF g_debug
12916: THEN
12917: hr_utility.set_location ('hxt_time_detail.gen_special',
12918: 32.1
12919: );
12920: END IF;
12921:
12925: );
12926:
12927: IF g_debug
12928: THEN
12929: hr_utility.trace(' Rule to pay : '||rule_to_pay);
12930: hr_utility.trace(' hours_to_pay_this_rule : '||hours_to_pay_this_rule);
12931: hr_utility.trace(' element_type_id_to_pay : '||element_type_id_to_pay);
12932: END IF;
12933:
12926:
12927: IF g_debug
12928: THEN
12929: hr_utility.trace(' Rule to pay : '||rule_to_pay);
12930: hr_utility.trace(' hours_to_pay_this_rule : '||hours_to_pay_this_rule);
12931: hr_utility.trace(' element_type_id_to_pay : '||element_type_id_to_pay);
12932: END IF;
12933:
12934: IF ERROR_CODE > l_error_return
12927: IF g_debug
12928: THEN
12929: hr_utility.trace(' Rule to pay : '||rule_to_pay);
12930: hr_utility.trace(' hours_to_pay_this_rule : '||hours_to_pay_this_rule);
12931: hr_utility.trace(' element_type_id_to_pay : '||element_type_id_to_pay);
12932: END IF;
12933:
12934: IF ERROR_CODE > l_error_return
12935: THEN
12934: IF ERROR_CODE > l_error_return
12935: THEN
12936: IF g_debug
12937: THEN
12938: hr_utility.set_location ('hxt_time_detail.gen_special',
12939: 32.5
12940: );
12941: END IF;
12942:
12949: -- Bug 13082996
12950: -- Added a couple of debug messages.
12951: IF g_debug
12952: THEN
12953: hr_utility.set_location ('hxt_time_detail.gen_special', 33);
12954: hr_utility.trace('g_hours '||g_hours);
12955: hr_utility.trace('g_date_worked '||g_date_worked);
12956: hr_utility.trace('g_time_in '||g_time_in);
12957: hr_utility.trace('g_time_out '||g_time_out);
12950: -- Added a couple of debug messages.
12951: IF g_debug
12952: THEN
12953: hr_utility.set_location ('hxt_time_detail.gen_special', 33);
12954: hr_utility.trace('g_hours '||g_hours);
12955: hr_utility.trace('g_date_worked '||g_date_worked);
12956: hr_utility.trace('g_time_in '||g_time_in);
12957: hr_utility.trace('g_time_out '||g_time_out);
12958: END IF;
12951: IF g_debug
12952: THEN
12953: hr_utility.set_location ('hxt_time_detail.gen_special', 33);
12954: hr_utility.trace('g_hours '||g_hours);
12955: hr_utility.trace('g_date_worked '||g_date_worked);
12956: hr_utility.trace('g_time_in '||g_time_in);
12957: hr_utility.trace('g_time_out '||g_time_out);
12958: END IF;
12959:
12952: THEN
12953: hr_utility.set_location ('hxt_time_detail.gen_special', 33);
12954: hr_utility.trace('g_hours '||g_hours);
12955: hr_utility.trace('g_date_worked '||g_date_worked);
12956: hr_utility.trace('g_time_in '||g_time_in);
12957: hr_utility.trace('g_time_out '||g_time_out);
12958: END IF;
12959:
12960: --MHANDA Determine whether the rules to be applied use the
12953: hr_utility.set_location ('hxt_time_detail.gen_special', 33);
12954: hr_utility.trace('g_hours '||g_hours);
12955: hr_utility.trace('g_date_worked '||g_date_worked);
12956: hr_utility.trace('g_time_in '||g_time_in);
12957: hr_utility.trace('g_time_out '||g_time_out);
12958: END IF;
12959:
12960: --MHANDA Determine whether the rules to be applied use the
12961: --points counter.
12977: END IF;
12978:
12979: IF g_debug
12980: THEN
12981: hr_utility.TRACE ( 'use_points_assigned? :'
12982: || l_use_points_assigned
12983: );
12984: END IF;
12985:
12986: IF l_use_points_assigned = 'N' OR l_use_points_assigned IS NULL
12987: THEN
12988: IF g_debug
12989: THEN
12990: hr_utility.set_location ('hxt_time_detail.gen_special',
12991: 33.1
12992: );
12993: END IF;
12994:
12999: );
13000:
13001: IF g_debug
13002: THEN
13003: hr_utility.trace('rule_to_pay '||rule_to_pay);
13004: hr_utility.trace('hours_to_pay_this_rule '||hours_to_pay_this_rule);
13005: hr_utility.trace('element_type_id_to_pay '||element_type_id_to_pay);
13006: END IF;
13007:
13000:
13001: IF g_debug
13002: THEN
13003: hr_utility.trace('rule_to_pay '||rule_to_pay);
13004: hr_utility.trace('hours_to_pay_this_rule '||hours_to_pay_this_rule);
13005: hr_utility.trace('element_type_id_to_pay '||element_type_id_to_pay);
13006: END IF;
13007:
13008: ELSIF l_use_points_assigned = 'Y'
13001: IF g_debug
13002: THEN
13003: hr_utility.trace('rule_to_pay '||rule_to_pay);
13004: hr_utility.trace('hours_to_pay_this_rule '||hours_to_pay_this_rule);
13005: hr_utility.trace('element_type_id_to_pay '||element_type_id_to_pay);
13006: END IF;
13007:
13008: ELSIF l_use_points_assigned = 'Y'
13009: THEN
13008: ELSIF l_use_points_assigned = 'Y'
13009: THEN
13010: IF g_debug
13011: THEN
13012: hr_utility.set_location ('hxt_time_detail.gen_special',
13013: 33.2
13014: );
13015: END IF;
13016:
13021: );
13022:
13023: IF g_debug
13024: THEN
13025: hr_utility.set_location ('hxt_time_detail.gen_special',
13026: 33.3
13027: );
13028: END IF;
13029: END IF;
13031: IF ERROR_CODE > l_error_return
13032: THEN
13033: IF g_debug
13034: THEN
13035: hr_utility.set_location ('hxt_time_detail.gen_special',
13036: 34
13037: );
13038: END IF;
13039:
13045: END IF;
13046:
13047: IF g_debug
13048: THEN
13049: hr_utility.TRACE ('g_hours :' || g_hours);
13050: END IF;
13051:
13052: IF l_use_points_assigned = 'N' OR l_use_points_assigned IS NULL
13053: THEN
13054: IF g_hours >= 0
13055: THEN
13056: IF g_debug
13057: THEN
13058: hr_utility.set_location ('hxt_time_detail.gen_special',
13059: 35
13060: );
13061: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
13062: || hours_to_pay_this_rule
13057: THEN
13058: hr_utility.set_location ('hxt_time_detail.gen_special',
13059: 35
13060: );
13061: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
13062: || hours_to_pay_this_rule
13063: );
13064: END IF;
13065:
13067: GREATEST (hours_to_pay_this_rule, 0);
13068:
13069: IF g_debug
13070: THEN
13071: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
13072: || hours_to_pay_this_rule
13073: );
13074: END IF;
13075: -- can be negative if a rule was
13077: END IF;
13078:
13079: IF g_debug
13080: THEN
13081: hr_utility.TRACE ('error_code :' || ERROR_CODE);
13082: END IF;
13083:
13084: IF ( (hours_to_pay_this_rule > 0 AND ERROR_CODE = 0)
13085: OR (b_first_time = TRUE)
13086: )
13087: THEN
13088: IF g_debug
13089: THEN
13090: hr_utility.set_location ('hxt_time_detail.gen_special', 36);
13091: hr_utility.TRACE ( 'l_time_in :'
13092: || TO_CHAR (l_time_in, 'HH24:MI')
13093: );
13094: hr_utility.TRACE ( 'l_time_out:'
13087: THEN
13088: IF g_debug
13089: THEN
13090: hr_utility.set_location ('hxt_time_detail.gen_special', 36);
13091: hr_utility.TRACE ( 'l_time_in :'
13092: || TO_CHAR (l_time_in, 'HH24:MI')
13093: );
13094: hr_utility.TRACE ( 'l_time_out:'
13095: || TO_CHAR (l_time_out, 'HH24:MI')
13090: hr_utility.set_location ('hxt_time_detail.gen_special', 36);
13091: hr_utility.TRACE ( 'l_time_in :'
13092: || TO_CHAR (l_time_in, 'HH24:MI')
13093: );
13094: hr_utility.TRACE ( 'l_time_out:'
13095: || TO_CHAR (l_time_out, 'HH24:MI')
13096: );
13097: END IF;
13098:
13102: ROUND (l_time_in + (hours_to_pay_this_rule / 24), 'MI');
13103:
13104: IF g_debug
13105: THEN
13106: hr_utility.TRACE ( 'l_time_in :'
13107: || TO_CHAR (l_time_in, 'HH24:MI')
13108: );
13109: hr_utility.TRACE ( 'l_time_out:'
13110: || TO_CHAR (l_time_out, 'HH24:MI')
13105: THEN
13106: hr_utility.TRACE ( 'l_time_in :'
13107: || TO_CHAR (l_time_in, 'HH24:MI')
13108: );
13109: hr_utility.TRACE ( 'l_time_out:'
13110: || TO_CHAR (l_time_out, 'HH24:MI')
13111: );
13112: hr_utility.TRACE ('********RM BEFORE CALL TO PAY**********');
13113: hr_utility.TRACE ( 'hours_to_pay_this_rule IS : *** : '
13108: );
13109: hr_utility.TRACE ( 'l_time_out:'
13110: || TO_CHAR (l_time_out, 'HH24:MI')
13111: );
13112: hr_utility.TRACE ('********RM BEFORE CALL TO PAY**********');
13113: hr_utility.TRACE ( 'hours_to_pay_this_rule IS : *** : '
13114: || TO_CHAR (hours_to_pay_this_rule)
13115: );
13116: hr_utility.TRACE ( 'l_time_in IS : *** : '
13109: hr_utility.TRACE ( 'l_time_out:'
13110: || TO_CHAR (l_time_out, 'HH24:MI')
13111: );
13112: hr_utility.TRACE ('********RM BEFORE CALL TO PAY**********');
13113: hr_utility.TRACE ( 'hours_to_pay_this_rule IS : *** : '
13114: || TO_CHAR (hours_to_pay_this_rule)
13115: );
13116: hr_utility.TRACE ( 'l_time_in IS : *** : '
13117: || TO_CHAR (l_time_in,
13112: hr_utility.TRACE ('********RM BEFORE CALL TO PAY**********');
13113: hr_utility.TRACE ( 'hours_to_pay_this_rule IS : *** : '
13114: || TO_CHAR (hours_to_pay_this_rule)
13115: );
13116: hr_utility.TRACE ( 'l_time_in IS : *** : '
13117: || TO_CHAR (l_time_in,
13118: 'DD-MON-YYYY HH24:MI:SS'
13119: )
13120: );
13117: || TO_CHAR (l_time_in,
13118: 'DD-MON-YYYY HH24:MI:SS'
13119: )
13120: );
13121: hr_utility.TRACE ( 'l_time_out IS : *** : '
13122: || TO_CHAR (l_time_out,
13123: 'DD-MON-YYYY HH24:MI:SS'
13124: )
13125: );
13122: || TO_CHAR (l_time_out,
13123: 'DD-MON-YYYY HH24:MI:SS'
13124: )
13125: );
13126: hr_utility.TRACE ( 'element_type_id_to_pay IS : *** : '
13127: || TO_CHAR (element_type_id_to_pay)
13128: );
13129: hr_utility.TRACE ( 'g_date_worked IS : *** : '
13130: || TO_CHAR (g_date_worked, 'DD-MON-YYYY')
13125: );
13126: hr_utility.TRACE ( 'element_type_id_to_pay IS : *** : '
13127: || TO_CHAR (element_type_id_to_pay)
13128: );
13129: hr_utility.TRACE ( 'g_date_worked IS : *** : '
13130: || TO_CHAR (g_date_worked, 'DD-MON-YYYY')
13131: );
13132: END IF;
13133:
13184: IF ERROR_CODE <> 0
13185: THEN
13186: IF g_debug
13187: THEN
13188: hr_utility.set_location ('hxt_time_detail.gen_special',
13189: 37
13190: );
13191: END IF;
13192:
13193: IF ERROR_CODE > l_error_return
13194: THEN
13195: IF g_debug
13196: THEN
13197: hr_utility.set_location
13198: ('hxt_time_detail.gen_special',
13199: 38
13200: );
13201: END IF;
13211: END IF;
13212:
13213: IF g_debug
13214: THEN
13215: hr_utility.set_location ('hxt_time_detail.gen_special', 39);
13216: hr_utility.TRACE ( 'hours_left_to_pay :'
13217: || TO_CHAR (hours_left_to_pay)
13218: );
13219: END IF;
13212:
13213: IF g_debug
13214: THEN
13215: hr_utility.set_location ('hxt_time_detail.gen_special', 39);
13216: hr_utility.TRACE ( 'hours_left_to_pay :'
13217: || TO_CHAR (hours_left_to_pay)
13218: );
13219: END IF;
13220:
13223: );
13224:
13225: IF g_debug
13226: THEN
13227: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
13228: || TO_CHAR (hours_to_pay_this_rule)
13229: );
13230: hr_utility.TRACE ( 'l_use_points_assigned :'
13231: || l_use_points_assigned
13226: THEN
13227: hr_utility.TRACE ( 'hours_to_pay_this_rule :'
13228: || TO_CHAR (hours_to_pay_this_rule)
13229: );
13230: hr_utility.TRACE ( 'l_use_points_assigned :'
13231: || l_use_points_assigned
13232: );
13233: END IF;
13234:
13237: IF l_use_points_assigned = 'N' OR l_use_points_assigned IS NULL
13238: THEN
13239: IF g_debug
13240: THEN
13241: hr_utility.set_location ('hxt_time_detail.gen_special',
13242: 39.5
13243: );
13244: END IF;
13245:
13248: END IF;
13249:
13250: IF g_debug
13251: THEN
13252: hr_utility.set_location ('hxt_time_detail.gen_special', 40);
13253: hr_utility.TRACE ( 'hours_left_to_pay :'
13254: || TO_CHAR (hours_left_to_pay)
13255: );
13256: END IF;
13249:
13250: IF g_debug
13251: THEN
13252: hr_utility.set_location ('hxt_time_detail.gen_special', 40);
13253: hr_utility.TRACE ( 'hours_left_to_pay :'
13254: || TO_CHAR (hours_left_to_pay)
13255: );
13256: END IF;
13257:
13267: IF hours_left_to_pay >= 0 AND ERROR_CODE = 0
13268: THEN
13269: IF g_debug
13270: THEN
13271: hr_utility.set_location ('hxt_time_detail.gen_special',
13272: 41
13273: );
13274: END IF;
13275:
13287: AND g_ep_type = 'SPECIAL'
13288: THEN
13289: IF g_debug
13290: THEN
13291: hr_utility.set_location
13292: ('hxt_time_detail.gen_special',
13293: 41.5
13294: );
13295: END IF;
13300: IF fetch_next_day = TRUE
13301: THEN
13302: IF g_debug
13303: THEN
13304: hr_utility.set_location
13305: ('hxt_time_detail.gen_special',
13306: 42
13307: );
13308: END IF;
13311: INTO daily_rule_cap, daily_earning_type, dummy_days;
13312:
13313: IF g_debug
13314: THEN
13315: hr_utility.TRACE ( 'daily_rule_cap :'
13316: || daily_rule_cap
13317: );
13318: hr_utility.TRACE ( 'daily_earning_type :'
13319: || daily_earning_type
13314: THEN
13315: hr_utility.TRACE ( 'daily_rule_cap :'
13316: || daily_rule_cap
13317: );
13318: hr_utility.TRACE ( 'daily_earning_type :'
13319: || daily_earning_type
13320: );
13321: hr_utility.TRACE ('dummy_days :' || dummy_days);
13322: END IF;
13317: );
13318: hr_utility.TRACE ( 'daily_earning_type :'
13319: || daily_earning_type
13320: );
13321: hr_utility.TRACE ('dummy_days :' || dummy_days);
13322: END IF;
13323:
13324: IF daily_earn_rules_cur%NOTFOUND
13325: THEN
13324: IF daily_earn_rules_cur%NOTFOUND
13325: THEN
13326: IF g_debug
13327: THEN
13328: hr_utility.set_location
13329: ('hxt_time_detail.gen_special',
13330: 43
13331: );
13332: END IF;
13338: IF fetch_next_week = TRUE
13339: THEN
13340: IF g_debug
13341: THEN
13342: hr_utility.set_location
13343: ('hxt_time_detail.gen_special',
13344: 44
13345: );
13346: END IF;
13348: current_weekly_earning := weekly_earning_type;
13349:
13350: IF g_debug
13351: THEN
13352: hr_utility.TRACE ( 'current_weekly_earning :'
13353: || current_weekly_earning
13354: );
13355: END IF;
13356:
13358: INTO weekly_rule_cap, weekly_earning_type;
13359:
13360: IF g_debug
13361: THEN
13362: hr_utility.TRACE ( 'weekly_rule_cap :'
13363: || weekly_rule_cap
13364: );
13365: hr_utility.TRACE ( 'weekly_earning_type :'
13366: || weekly_earning_type
13361: THEN
13362: hr_utility.TRACE ( 'weekly_rule_cap :'
13363: || weekly_rule_cap
13364: );
13365: hr_utility.TRACE ( 'weekly_earning_type :'
13366: || weekly_earning_type
13367: );
13368: END IF;
13369:
13376: get_wkly_total_for_doubletime;
13377:
13378: IF g_debug
13379: THEN
13380: hr_utility.TRACE ( 'hours_paid_for_dtime_elig :'
13381: || hours_paid_for_dtime_elig
13382: );
13383: END IF;
13384:
13398: -- is eligible for doubletime i.e., when second weekly cap is
13399: -- reached,when earning policy type is WEEKLY.
13400: /* IF g_EP_TYPE = 'WEEKLY' THEN
13401: hours_paid_weekly_rule := get_wkly_total_for_doubletime;
13402: hr_utility.trace('hours_paid_weekly_rule :'||hours_paid_weekly_rule);
13403: END IF;
13404: */
13405: IF weekly_earn_rules_cur%NOTFOUND
13406: THEN
13405: IF weekly_earn_rules_cur%NOTFOUND
13406: THEN
13407: IF g_debug
13408: THEN
13409: hr_utility.set_location
13410: ('hxt_time_detail.gen_special',
13411: 45
13412: );
13413: END IF;
13418: ELSIF hours_left_to_pay < 0
13419: THEN
13420: IF g_debug
13421: THEN
13422: hr_utility.set_location ('hxt_time_detail.gen_special',
13423: 46
13424: );
13425: END IF;
13426:
13427: IF g_hours >= 0
13428: THEN
13429: IF g_debug
13430: THEN
13431: hr_utility.set_location
13432: ('hxt_time_detail.gen_special',
13433: 47
13434: );
13435: END IF;
13449: IF ERROR_CODE > l_error_return
13450: THEN
13451: IF g_debug
13452: THEN
13453: hr_utility.set_location
13454: ('hxt_time_detail.gen_special',
13455: 48
13456: );
13457: END IF;
13463: END IF; --SIR014
13464: ELSE
13465: IF g_debug
13466: THEN
13467: hr_utility.set_location
13468: ('hxt_time_detail.gen_special',
13469: 49
13470: );
13471: END IF;
13474: END IF;
13475:
13476: IF g_debug
13477: THEN
13478: hr_utility.set_location ('hxt_time_detail.gen_special',
13479: 50
13480: );
13481: END IF;
13482: END IF; --hours_left_to_pay > 0 and error_code = 0
13487: IF loop_counter > 50
13488: THEN
13489: IF g_debug
13490: THEN
13491: hr_utility.set_location ('hxt_time_detail.gen_special', 52);
13492: END IF;
13493:
13494: fnd_message.set_name ('HXT', 'HXT_39305_LOOP_LIMIT_EXC');
13495: ERROR_CODE :=
13504: IF ERROR_CODE > l_error_return
13505: THEN
13506: IF g_debug
13507: THEN
13508: hr_utility.set_location ('hxt_time_detail.gen_special',
13509: 53
13510: );
13511: END IF;
13512:
13519: END IF;
13520:
13521: IF g_debug
13522: THEN
13523: hr_utility.set_location ('hxt_time_detail.gen_special', 54);
13524: END IF;
13525: END LOOP; -- While hours_left_to_pay <> 0 AND error_code = 0
13526:
13527: CLOSE daily_earn_rules_cur;
13533: AND ERROR_CODE = 0
13534: THEN
13535: IF g_debug
13536: THEN
13537: hr_utility.set_location ('hxt_time_detail.gen_special', 54.5);
13538: END IF;
13539:
13540: l_day_total := get_daily_total;
13541:
13540: l_day_total := get_daily_total;
13541:
13542: IF g_debug
13543: THEN
13544: hr_utility.TRACE ('l_day_total :' || l_day_total);
13545: END IF;
13546:
13547: IF l_day_total > 12
13548: THEN
13547: IF l_day_total > 12
13548: THEN
13549: IF g_debug
13550: THEN
13551: hr_utility.set_location ('hxt_time_detail.gen_special', 55);
13552: END IF;
13553:
13554: ERROR_CODE := adjust_for_double_time (l_day_total);
13555:
13556: IF ERROR_CODE = 0
13557: THEN
13558: IF g_debug
13559: THEN
13560: hr_utility.set_location ('hxt_time_detail.gen_special',
13561: 56
13562: );
13563: END IF;
13564:
13566: ELSIF ERROR_CODE = 1
13567: THEN
13568: IF g_debug
13569: THEN
13570: hr_utility.set_location ('hxt_time_detail.gen_special',
13571: 57
13572: );
13573: END IF;
13574:
13584: ELSIF ERROR_CODE = 2
13585: THEN
13586: IF g_debug
13587: THEN
13588: hr_utility.set_location ('hxt_time_detail.gen_special',
13589: 58
13590: );
13591: END IF;
13592:
13602: ELSIF ERROR_CODE = 3
13603: THEN
13604: IF g_debug
13605: THEN
13606: hr_utility.set_location ('hxt_time_detail.gen_special',
13607: 59
13608: );
13609: END IF;
13610:
13620: ELSIF ERROR_CODE = 4
13621: THEN
13622: IF g_debug
13623: THEN
13624: hr_utility.set_location ('hxt_time_detail.gen_special',
13625: 60
13626: );
13627: END IF;
13628:
13638: ELSIF ERROR_CODE = 5
13639: THEN
13640: IF g_debug
13641: THEN
13642: hr_utility.set_location ('hxt_time_detail.gen_special',
13643: 61
13644: );
13645: END IF;
13646:
13658: IF ERROR_CODE > l_error_return
13659: THEN
13660: IF g_debug
13661: THEN
13662: hr_utility.set_location ('hxt_time_detail.gen_special',
13663: 62
13664: );
13665: END IF;
13666:
13671: END IF;
13672:
13673: IF g_debug
13674: THEN
13675: hr_utility.set_location ('hxt_time_detail.gen_special', 63);
13676: END IF;
13677: END IF;
13678:
13679: IF g_debug
13677: END IF;
13678:
13679: IF g_debug
13680: THEN
13681: hr_utility.set_location ('hxt_time_detail.gen_special', 64);
13682: END IF;
13683: END IF;
13684:
13685: IF g_debug
13683: END IF;
13684:
13685: IF g_debug
13686: THEN
13687: hr_utility.TRACE
13688: ('-----------Leaving rule_type_to_pay = ABS------------');
13689: END IF;
13690: END IF; -- rule_type_to_pay = 'ABS'
13691:
13740: IF ERROR_CODE > l_error_return
13741: THEN
13742: IF g_debug
13743: THEN
13744: hr_utility.set_location ('hxt_time_detail.gen_special', 65);
13745: END IF;
13746:
13747: l_error_return := ERROR_CODE;
13748: hxt_util.DEBUG ('Loc F. Return code is ' || TO_CHAR (l_error_return));
13749:
13750: -- debug only
13751: IF g_debug
13752: THEN
13753: hr_utility.TRACE ( 'Loc F. Return code is :'
13754: || TO_CHAR (l_error_return)
13755: );
13756: END IF;
13757: END IF;
13894: LOCATION VARCHAR2 (120) := g_location || ':DDTL';
13895: BEGIN
13896: IF g_debug
13897: THEN
13898: hr_utility.set_location ('hxt_time_detail.delete_zero_hour_details',
13899: 10
13900: );
13901: END IF;
13902:
13911: FOR zero_rec IN zero_hrs_cur (a_tim_id, a_date_worked,g_det_session_date)
13912: LOOP -- through detail rows and delete zero hour rows
13913: IF g_debug
13914: THEN
13915: hr_utility.set_location
13916: ('hxt_time_detail.delete_zero_hour_details',
13917: 20
13918: );
13919: END IF;
13937: -- through flat amount day prem records and delete duplicates
13938: -- for a day. Flat amount Day Premium should be paid only once a day.
13939: IF g_debug
13940: THEN
13941: hr_utility.set_location
13942: ('hxt_time_detail.delete_zero_hour_details',
13943: 30
13944: );
13945: END IF;
13956: END LOOP;
13957:
13958: IF g_debug
13959: THEN
13960: hr_utility.set_location ('hxt_time_detail.delete_zero_hour_details',
13961: 40
13962: );
13963: END IF;
13964:
14050: BEGIN
14051: IF g_debug
14052: THEN
14053: l_proc := 'hxt_time_detail.combine_contig_chunks';
14054: hr_utility.set_location (l_proc, 10);
14055: hr_utility.TRACE ('g_id:' || g_id);
14056: END IF;
14057:
14058:
14051: IF g_debug
14052: THEN
14053: l_proc := 'hxt_time_detail.combine_contig_chunks';
14054: hr_utility.set_location (l_proc, 10);
14055: hr_utility.TRACE ('g_id:' || g_id);
14056: END IF;
14057:
14058:
14059: -- Bug 7359347
14070: -- then combine them into one.
14071: LOOP
14072: IF g_debug
14073: THEN
14074: hr_utility.set_location (l_proc, 20);
14075: hr_utility.TRACE ( 'elem_rec.element_type_id :'
14076: || elem_rec.element_type_id
14077: );
14078: END IF;
14071: LOOP
14072: IF g_debug
14073: THEN
14074: hr_utility.set_location (l_proc, 20);
14075: hr_utility.TRACE ( 'elem_rec.element_type_id :'
14076: || elem_rec.element_type_id
14077: );
14078: END IF;
14079:
14080: IF c_distinct_elements%NOTFOUND
14081: THEN
14082: IF g_debug
14083: THEN
14084: hr_utility.set_location (l_proc, 25);
14085: END IF;
14086:
14087: EXIT;
14088: END IF;
14094: ln_rate_multiple, lv_prev_wage_code;
14095:
14096: IF g_debug
14097: THEN
14098: hr_utility.TRACE ('row_id :' || row_id);
14099: hr_utility.TRACE ( 'start_time :'
14100: || TO_CHAR (start_time,
14101: 'DD-MON-YYYY HH24:MI:SS')
14102: );
14095:
14096: IF g_debug
14097: THEN
14098: hr_utility.TRACE ('row_id :' || row_id);
14099: hr_utility.TRACE ( 'start_time :'
14100: || TO_CHAR (start_time,
14101: 'DD-MON-YYYY HH24:MI:SS')
14102: );
14103: hr_utility.TRACE ( 'end_time :'
14099: hr_utility.TRACE ( 'start_time :'
14100: || TO_CHAR (start_time,
14101: 'DD-MON-YYYY HH24:MI:SS')
14102: );
14103: hr_utility.TRACE ( 'end_time :'
14104: || TO_CHAR (end_time, 'DD-MON-YYYY HH24:MI:SS')
14105: );
14106: hr_utility.TRACE ('hours :' || hours);
14107: hr_utility.TRACE ('ln_amount :' || ln_amount);
14102: );
14103: hr_utility.TRACE ( 'end_time :'
14104: || TO_CHAR (end_time, 'DD-MON-YYYY HH24:MI:SS')
14105: );
14106: hr_utility.TRACE ('hours :' || hours);
14107: hr_utility.TRACE ('ln_amount :' || ln_amount);
14108: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14109: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14110: hr_utility.TRACE ('lv_prev_wage_code :' || lv_prev_wage_code);
14103: hr_utility.TRACE ( 'end_time :'
14104: || TO_CHAR (end_time, 'DD-MON-YYYY HH24:MI:SS')
14105: );
14106: hr_utility.TRACE ('hours :' || hours);
14107: hr_utility.TRACE ('ln_amount :' || ln_amount);
14108: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14109: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14110: hr_utility.TRACE ('lv_prev_wage_code :' || lv_prev_wage_code);
14111: END IF;
14104: || TO_CHAR (end_time, 'DD-MON-YYYY HH24:MI:SS')
14105: );
14106: hr_utility.TRACE ('hours :' || hours);
14107: hr_utility.TRACE ('ln_amount :' || ln_amount);
14108: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14109: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14110: hr_utility.TRACE ('lv_prev_wage_code :' || lv_prev_wage_code);
14111: END IF;
14112:
14105: );
14106: hr_utility.TRACE ('hours :' || hours);
14107: hr_utility.TRACE ('ln_amount :' || ln_amount);
14108: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14109: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14110: hr_utility.TRACE ('lv_prev_wage_code :' || lv_prev_wage_code);
14111: END IF;
14112:
14113: IF c_detail_chunks%FOUND
14106: hr_utility.TRACE ('hours :' || hours);
14107: hr_utility.TRACE ('ln_amount :' || ln_amount);
14108: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14109: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14110: hr_utility.TRACE ('lv_prev_wage_code :' || lv_prev_wage_code);
14111: END IF;
14112:
14113: IF c_detail_chunks%FOUND
14114: THEN
14113: IF c_detail_chunks%FOUND
14114: THEN
14115: IF g_debug
14116: THEN
14117: hr_utility.set_location (l_proc, 30);
14118: END IF;
14119:
14120: ln_row_id := row_id;
14121: ln_start_time := start_time;
14123: ln_hours := hours;
14124:
14125: IF g_debug
14126: THEN
14127: hr_utility.TRACE ('ln_row_id :' || ln_row_id);
14128: hr_utility.TRACE ( 'ln_start_time :'
14129: || TO_CHAR (ln_start_time,
14130: 'DD-MON-YYYY HH24:MI:SS'
14131: )
14124:
14125: IF g_debug
14126: THEN
14127: hr_utility.TRACE ('ln_row_id :' || ln_row_id);
14128: hr_utility.TRACE ( 'ln_start_time :'
14129: || TO_CHAR (ln_start_time,
14130: 'DD-MON-YYYY HH24:MI:SS'
14131: )
14132: );
14129: || TO_CHAR (ln_start_time,
14130: 'DD-MON-YYYY HH24:MI:SS'
14131: )
14132: );
14133: hr_utility.TRACE ( 'ln_end_time :'
14134: || TO_CHAR (ln_end_time,
14135: 'DD-MON-YYYY HH24:MI:SS'
14136: )
14137: );
14134: || TO_CHAR (ln_end_time,
14135: 'DD-MON-YYYY HH24:MI:SS'
14136: )
14137: );
14138: hr_utility.TRACE ('ln_hours :' || ln_hours);
14139: END IF;
14140: END IF;
14141:
14142: LOOP
14141:
14142: LOOP
14143: IF g_debug
14144: THEN
14145: hr_utility.set_location (l_proc, 35);
14146: END IF;
14147:
14148: FETCH c_detail_chunks
14149: INTO row_id1, start_time1, end_time1, hours1, ln_amount1,
14150: ln_hourly_rate1, ln_rate_multiple1, lv_prev_wage_code1;
14151:
14152: IF g_debug
14153: THEN
14154: hr_utility.TRACE ('row_id1 :' || row_id1);
14155: hr_utility.TRACE ( 'start_time1 :'
14156: || TO_CHAR (start_time1,
14157: 'DD-MON-YYYY HH24:MI:SS'
14158: )
14151:
14152: IF g_debug
14153: THEN
14154: hr_utility.TRACE ('row_id1 :' || row_id1);
14155: hr_utility.TRACE ( 'start_time1 :'
14156: || TO_CHAR (start_time1,
14157: 'DD-MON-YYYY HH24:MI:SS'
14158: )
14159: );
14156: || TO_CHAR (start_time1,
14157: 'DD-MON-YYYY HH24:MI:SS'
14158: )
14159: );
14160: hr_utility.TRACE ( 'end_time1 :'
14161: || TO_CHAR (end_time1,
14162: 'DD-MON-YYYY HH24:MI:SS'
14163: )
14164: );
14161: || TO_CHAR (end_time1,
14162: 'DD-MON-YYYY HH24:MI:SS'
14163: )
14164: );
14165: hr_utility.TRACE ('hours1 :' || hours1);
14166: hr_utility.TRACE ('ln_amount1 :' || ln_amount1);
14167: hr_utility.TRACE ('ln_hourly_rate1 :' || ln_hourly_rate1);
14168: hr_utility.TRACE ('ln_rate_multiple1 :' || ln_rate_multiple1);
14169: hr_utility.TRACE ('lv_prev_wage_code1 :' || lv_prev_wage_code1);
14162: 'DD-MON-YYYY HH24:MI:SS'
14163: )
14164: );
14165: hr_utility.TRACE ('hours1 :' || hours1);
14166: hr_utility.TRACE ('ln_amount1 :' || ln_amount1);
14167: hr_utility.TRACE ('ln_hourly_rate1 :' || ln_hourly_rate1);
14168: hr_utility.TRACE ('ln_rate_multiple1 :' || ln_rate_multiple1);
14169: hr_utility.TRACE ('lv_prev_wage_code1 :' || lv_prev_wage_code1);
14170: END IF;
14163: )
14164: );
14165: hr_utility.TRACE ('hours1 :' || hours1);
14166: hr_utility.TRACE ('ln_amount1 :' || ln_amount1);
14167: hr_utility.TRACE ('ln_hourly_rate1 :' || ln_hourly_rate1);
14168: hr_utility.TRACE ('ln_rate_multiple1 :' || ln_rate_multiple1);
14169: hr_utility.TRACE ('lv_prev_wage_code1 :' || lv_prev_wage_code1);
14170: END IF;
14171:
14164: );
14165: hr_utility.TRACE ('hours1 :' || hours1);
14166: hr_utility.TRACE ('ln_amount1 :' || ln_amount1);
14167: hr_utility.TRACE ('ln_hourly_rate1 :' || ln_hourly_rate1);
14168: hr_utility.TRACE ('ln_rate_multiple1 :' || ln_rate_multiple1);
14169: hr_utility.TRACE ('lv_prev_wage_code1 :' || lv_prev_wage_code1);
14170: END IF;
14171:
14172: IF c_detail_chunks%NOTFOUND
14165: hr_utility.TRACE ('hours1 :' || hours1);
14166: hr_utility.TRACE ('ln_amount1 :' || ln_amount1);
14167: hr_utility.TRACE ('ln_hourly_rate1 :' || ln_hourly_rate1);
14168: hr_utility.TRACE ('ln_rate_multiple1 :' || ln_rate_multiple1);
14169: hr_utility.TRACE ('lv_prev_wage_code1 :' || lv_prev_wage_code1);
14170: END IF;
14171:
14172: IF c_detail_chunks%NOTFOUND
14173: THEN
14172: IF c_detail_chunks%NOTFOUND
14173: THEN
14174: IF g_debug
14175: THEN
14176: hr_utility.set_location (l_proc, 40);
14177: END IF;
14178:
14179: CLOSE c_detail_chunks;
14180:
14182: END IF;
14183:
14184: IF g_debug
14185: THEN
14186: hr_utility.TRACE ( 'ln_end_time :'
14187: || TO_CHAR (ln_end_time,
14188: 'DD-MON-YYYY HH24:MI:SS'
14189: )
14190: );
14187: || TO_CHAR (ln_end_time,
14188: 'DD-MON-YYYY HH24:MI:SS'
14189: )
14190: );
14191: hr_utility.TRACE ( 'start_time1 :'
14192: || TO_CHAR (start_time1,
14193: 'DD-MON-YYYY HH24:MI:SS'
14194: )
14195: );
14192: || TO_CHAR (start_time1,
14193: 'DD-MON-YYYY HH24:MI:SS'
14194: )
14195: );
14196: hr_utility.TRACE ('ln_hours :' || ln_hours);
14197: hr_utility.TRACE ('hours1 :' || hours1);
14198: hr_utility.TRACE ('ln_amount :' || ln_amount);
14199: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14200: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14193: 'DD-MON-YYYY HH24:MI:SS'
14194: )
14195: );
14196: hr_utility.TRACE ('ln_hours :' || ln_hours);
14197: hr_utility.TRACE ('hours1 :' || hours1);
14198: hr_utility.TRACE ('ln_amount :' || ln_amount);
14199: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14200: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14201: hr_utility.TRACE ('lv_prev_wage_code:' || lv_prev_wage_code);
14194: )
14195: );
14196: hr_utility.TRACE ('ln_hours :' || ln_hours);
14197: hr_utility.TRACE ('hours1 :' || hours1);
14198: hr_utility.TRACE ('ln_amount :' || ln_amount);
14199: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14200: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14201: hr_utility.TRACE ('lv_prev_wage_code:' || lv_prev_wage_code);
14202: END IF;
14195: );
14196: hr_utility.TRACE ('ln_hours :' || ln_hours);
14197: hr_utility.TRACE ('hours1 :' || hours1);
14198: hr_utility.TRACE ('ln_amount :' || ln_amount);
14199: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14200: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14201: hr_utility.TRACE ('lv_prev_wage_code:' || lv_prev_wage_code);
14202: END IF;
14203:
14196: hr_utility.TRACE ('ln_hours :' || ln_hours);
14197: hr_utility.TRACE ('hours1 :' || hours1);
14198: hr_utility.TRACE ('ln_amount :' || ln_amount);
14199: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14200: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14201: hr_utility.TRACE ('lv_prev_wage_code:' || lv_prev_wage_code);
14202: END IF;
14203:
14204: IF ln_end_time IS NULL
14197: hr_utility.TRACE ('hours1 :' || hours1);
14198: hr_utility.TRACE ('ln_amount :' || ln_amount);
14199: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14200: hr_utility.TRACE ('ln_rate_multiple :' || ln_rate_multiple);
14201: hr_utility.TRACE ('lv_prev_wage_code:' || lv_prev_wage_code);
14202: END IF;
14203:
14204: IF ln_end_time IS NULL
14205: THEN
14206: -- implies that Time entered in HOURS and not IN/OUT time.
14207: -- Combine the hours rows for the element.
14208: IF g_debug
14209: THEN
14210: hr_utility.set_location (l_proc, 45);
14211: END IF;
14212:
14213: -- Check if amount, hourly rate, rate multiple or prev wage code is
14214: -- the same for the segment chunks. If so then combine the chunks
14221: -1)
14222: THEN
14223: IF g_debug
14224: THEN
14225: hr_utility.set_location (l_proc, 50);
14226: END IF;
14227:
14228: ln_hours := ln_hours + hours1;
14229:
14228: ln_hours := ln_hours + hours1;
14229:
14230: IF g_debug
14231: THEN
14232: hr_utility.TRACE ('ln_hours :' || ln_hours);
14233: hr_utility.TRACE ('row_id1 :' || row_id1);
14234: END IF;
14235:
14236: -- Bug 7359347
14229:
14230: IF g_debug
14231: THEN
14232: hr_utility.TRACE ('ln_hours :' || ln_hours);
14233: hr_utility.TRACE ('row_id1 :' || row_id1);
14234: END IF;
14235:
14236: -- Bug 7359347
14237: -- changing view to table.
14253: END IF;
14254:
14255: IF g_debug
14256: THEN
14257: hr_utility.set_location (l_proc, 55);
14258: END IF;
14259: ELSIF ln_end_time = start_time1
14260: THEN
14261: IF g_debug
14259: ELSIF ln_end_time = start_time1
14260: THEN
14261: IF g_debug
14262: THEN
14263: hr_utility.set_location (l_proc, 60);
14264: END IF;
14265:
14266: -- Check if amount, hourly rate, rate multiple or prev wage code is
14267: -- the same for the segment chunks. If so then combine the chunks
14274: -1)
14275: THEN
14276: IF g_debug
14277: THEN
14278: hr_utility.set_location (l_proc, 65);
14279: END IF;
14280:
14281: ln_end_time := end_time1;
14282:
14281: ln_end_time := end_time1;
14282:
14283: IF g_debug
14284: THEN
14285: hr_utility.TRACE ( 'ln_end_time :'
14286: || TO_CHAR (ln_end_time,
14287: 'DD-MON-YYYY HH24:MI:SS'
14288: )
14289: );
14286: || TO_CHAR (ln_end_time,
14287: 'DD-MON-YYYY HH24:MI:SS'
14288: )
14289: );
14290: hr_utility.TRACE ('row_id1 :' || row_id1);
14291: END IF;
14292:
14293: -- Bug 7359347
14294: -- Changing view to table.
14300: WHERE ROWID = row_id1;
14301:
14302: IF g_debug
14303: THEN
14304: hr_utility.set_location (l_proc, 70);
14305: END IF;
14306:
14307: IF ln_amount1 IS NOT NULL
14308: THEN
14307: IF ln_amount1 IS NOT NULL
14308: THEN
14309: IF g_debug
14310: THEN
14311: hr_utility.set_location (l_proc, 75);
14312: END IF;
14313:
14314: ln_hours_worked := 0;
14315:
14314: ln_hours_worked := 0;
14315:
14316: IF g_debug
14317: THEN
14318: hr_utility.TRACE ( 'ln_hours_worked :'
14319: || ln_hours_worked
14320: );
14321: END IF;
14322: ELSE
14321: END IF;
14322: ELSE
14323: IF g_debug
14324: THEN
14325: hr_utility.set_location (l_proc, 80);
14326: END IF;
14327:
14328: ln_hours_worked := ((ln_end_time - ln_start_time) * 24);
14329:
14328: ln_hours_worked := ((ln_end_time - ln_start_time) * 24);
14329:
14330: IF g_debug
14331: THEN
14332: hr_utility.TRACE ( 'ln_hours_worked :'
14333: || ln_hours_worked
14334: );
14335: END IF;
14336: END IF;
14336: END IF;
14337:
14338: IF g_debug
14339: THEN
14340: hr_utility.TRACE ('ln_row_id :' || ln_row_id);
14341: END IF;
14342:
14343: -- Bug 7359347
14344: -- Changing view to table.
14355:
14356: ELSE
14357: IF g_debug
14358: THEN
14359: hr_utility.set_location (l_proc, 85);
14360: END IF;
14361:
14362: ln_start_time := start_time1;
14363: ln_end_time := end_time1;
14369: lv_prev_wage_code := lv_prev_wage_code1;
14370:
14371: IF g_debug
14372: THEN
14373: hr_utility.TRACE ('ln_row_id :' || ln_row_id);
14374: hr_utility.TRACE ( 'ln_start_time :'
14375: || TO_CHAR (ln_start_time,
14376: 'DD-MON-YYYY HH24:MI:SS'
14377: )
14370:
14371: IF g_debug
14372: THEN
14373: hr_utility.TRACE ('ln_row_id :' || ln_row_id);
14374: hr_utility.TRACE ( 'ln_start_time :'
14375: || TO_CHAR (ln_start_time,
14376: 'DD-MON-YYYY HH24:MI:SS'
14377: )
14378: );
14375: || TO_CHAR (ln_start_time,
14376: 'DD-MON-YYYY HH24:MI:SS'
14377: )
14378: );
14379: hr_utility.TRACE ( 'ln_end_time :'
14380: || TO_CHAR (ln_end_time,
14381: 'DD-MON-YYYY HH24:MI:SS'
14382: )
14383: );
14380: || TO_CHAR (ln_end_time,
14381: 'DD-MON-YYYY HH24:MI:SS'
14382: )
14383: );
14384: hr_utility.TRACE ('ln_hours :' || ln_hours);
14385: hr_utility.TRACE ('ln_amount :' || ln_amount);
14386: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14387: hr_utility.TRACE ('ln_rate_multiple :'
14388: || ln_rate_multiple
14381: 'DD-MON-YYYY HH24:MI:SS'
14382: )
14383: );
14384: hr_utility.TRACE ('ln_hours :' || ln_hours);
14385: hr_utility.TRACE ('ln_amount :' || ln_amount);
14386: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14387: hr_utility.TRACE ('ln_rate_multiple :'
14388: || ln_rate_multiple
14389: );
14382: )
14383: );
14384: hr_utility.TRACE ('ln_hours :' || ln_hours);
14385: hr_utility.TRACE ('ln_amount :' || ln_amount);
14386: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14387: hr_utility.TRACE ('ln_rate_multiple :'
14388: || ln_rate_multiple
14389: );
14390: hr_utility.TRACE ( 'lv_prev_wage_code:'
14383: );
14384: hr_utility.TRACE ('ln_hours :' || ln_hours);
14385: hr_utility.TRACE ('ln_amount :' || ln_amount);
14386: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14387: hr_utility.TRACE ('ln_rate_multiple :'
14388: || ln_rate_multiple
14389: );
14390: hr_utility.TRACE ( 'lv_prev_wage_code:'
14391: || lv_prev_wage_code
14386: hr_utility.TRACE ('ln_hourly_rate :' || ln_hourly_rate);
14387: hr_utility.TRACE ('ln_rate_multiple :'
14388: || ln_rate_multiple
14389: );
14390: hr_utility.TRACE ( 'lv_prev_wage_code:'
14391: || lv_prev_wage_code
14392: );
14393: END IF;
14394: END IF;
14394: END IF;
14395:
14396: IF g_debug
14397: THEN
14398: hr_utility.set_location (l_proc, 90);
14399: END IF;
14400: END IF;
14401:
14402: IF g_debug
14400: END IF;
14401:
14402: IF g_debug
14403: THEN
14404: hr_utility.set_location (l_proc, 95);
14405: END IF;
14406: END LOOP;
14407:
14408: IF g_debug
14406: END LOOP;
14407:
14408: IF g_debug
14409: THEN
14410: hr_utility.set_location (l_proc, 100);
14411: END IF;
14412: END LOOP;
14413:
14414: IF g_debug
14412: END LOOP;
14413:
14414: IF g_debug
14415: THEN
14416: hr_utility.set_location (l_proc, 110);
14417: END IF;
14418:
14419: RETURN 0;
14420: EXCEPTION
14421: WHEN NO_DATA_FOUND
14422: THEN
14423: IF g_debug
14424: THEN
14425: hr_utility.set_location (l_proc, 120);
14426: END IF;
14427:
14428: RETURN 0;
14429: WHEN OTHERS
14429: WHEN OTHERS
14430: THEN
14431: IF g_debug
14432: THEN
14433: hr_utility.set_location (l_proc, 130);
14434: END IF;
14435:
14436: fnd_message.set_name ('HXT', 'HXT_XXXXX_COMBINE_HRS_ERR');
14437: l_error_code :=
14562: BEGIN
14563: IF g_debug
14564: THEN
14565: l_proc := 'hxt_time_detail.pay';
14566: hr_utility.set_location (l_proc, 10);
14567: hr_utility.TRACE ( 'a_time_in :'
14568: || TO_CHAR (a_time_in, 'DD-MON-YYYY HH24:MI:SS')
14569: );
14570: hr_utility.TRACE ( 'a_time_out:'
14563: IF g_debug
14564: THEN
14565: l_proc := 'hxt_time_detail.pay';
14566: hr_utility.set_location (l_proc, 10);
14567: hr_utility.TRACE ( 'a_time_in :'
14568: || TO_CHAR (a_time_in, 'DD-MON-YYYY HH24:MI:SS')
14569: );
14570: hr_utility.TRACE ( 'a_time_out:'
14571: || TO_CHAR (a_time_out, 'DD-MON-YYYY HH24:MI:SS')
14566: hr_utility.set_location (l_proc, 10);
14567: hr_utility.TRACE ( 'a_time_in :'
14568: || TO_CHAR (a_time_in, 'DD-MON-YYYY HH24:MI:SS')
14569: );
14570: hr_utility.TRACE ( 'a_time_out:'
14571: || TO_CHAR (a_time_out, 'DD-MON-YYYY HH24:MI:SS')
14572: );
14573: hr_utility.TRACE ('g_sdf_id :' || g_sdf_id);
14574: END IF;
14569: );
14570: hr_utility.TRACE ( 'a_time_out:'
14571: || TO_CHAR (a_time_out, 'DD-MON-YYYY HH24:MI:SS')
14572: );
14573: hr_utility.TRACE ('g_sdf_id :' || g_sdf_id);
14574: END IF;
14575:
14576: IF a_hours_to_pay = 0 and (a_amount is null or a_amount = 0) /* Bug: 5744162 */
14577: THEN
14589: IF g_id <> a_id
14590: THEN
14591: IF g_debug
14592: THEN
14593: hr_utility.set_location (l_proc, 20);
14594: END IF;
14595:
14596: -- We have backed up to a previous day to apply overtime due
14597: -- to an absence at the end of the week so we need to get the
14602: -- Get policies assigned to person
14603: BEGIN
14604: IF g_debug
14605: THEN
14606: hr_utility.set_location (l_proc, 30);
14607: END IF;
14608:
14609: hxt_util.get_policies (a_earn_policy_id,
14610: a_assignment_id,
14626: );
14627:
14628: IF g_debug
14629: THEN
14630: hr_utility.set_location (l_proc, 40);
14631: hr_utility.TRACE ('l_sdp_id:' || l_sdp_id);
14632: hr_utility.TRACE ('l_pep_id:' || l_pep_id);
14633: END IF;
14634:
14627:
14628: IF g_debug
14629: THEN
14630: hr_utility.set_location (l_proc, 40);
14631: hr_utility.TRACE ('l_sdp_id:' || l_sdp_id);
14632: hr_utility.TRACE ('l_pep_id:' || l_pep_id);
14633: END IF;
14634:
14635: -- Check if error encountered
14628: IF g_debug
14629: THEN
14630: hr_utility.set_location (l_proc, 40);
14631: hr_utility.TRACE ('l_sdp_id:' || l_sdp_id);
14632: hr_utility.TRACE ('l_pep_id:' || l_pep_id);
14633: END IF;
14634:
14635: -- Check if error encountered
14636: IF l_error <> 0
14636: IF l_error <> 0
14637: THEN
14638: IF g_debug
14639: THEN
14640: hr_utility.set_location (l_proc, 50);
14641: END IF;
14642:
14643: RAISE error_in_policies;
14644: END IF;
14644: END IF;
14645:
14646: IF g_debug
14647: THEN
14648: hr_utility.set_location (l_proc, 60);
14649: END IF;
14650: END;
14651:
14652: IF g_debug
14650: END;
14651:
14652: IF g_debug
14653: THEN
14654: hr_utility.set_location (l_proc, 70);
14655: END IF;
14656:
14657: -- Check if person assigned work or rotation plan
14658: BEGIN
14659: IF (l_work_plan IS NOT NULL) OR (l_rotation_plan IS NOT NULL)
14660: THEN
14661: IF g_debug
14662: THEN
14663: hr_utility.set_location (l_proc, 80);
14664: END IF;
14665:
14666: -- Get premiums for shift
14667: hxt_util.get_shift_info (a_date_worked,
14678: );
14679:
14680: IF g_debug
14681: THEN
14682: hr_utility.set_location (l_proc, 90);
14683: hr_utility.TRACE ('l_sdf_id :' || l_sdf_id);
14684: hr_utility.TRACE ('l_osp_id :' || l_osp_id);
14685: END IF;
14686:
14679:
14680: IF g_debug
14681: THEN
14682: hr_utility.set_location (l_proc, 90);
14683: hr_utility.TRACE ('l_sdf_id :' || l_sdf_id);
14684: hr_utility.TRACE ('l_osp_id :' || l_osp_id);
14685: END IF;
14686:
14687: -- Check if error encountered
14680: IF g_debug
14681: THEN
14682: hr_utility.set_location (l_proc, 90);
14683: hr_utility.TRACE ('l_sdf_id :' || l_sdf_id);
14684: hr_utility.TRACE ('l_osp_id :' || l_osp_id);
14685: END IF;
14686:
14687: -- Check if error encountered
14688: IF l_error <> 0
14688: IF l_error <> 0
14689: THEN
14690: IF g_debug
14691: THEN
14692: hr_utility.set_location (l_proc, 100);
14693: END IF;
14694:
14695: RAISE error_in_shift_info;
14696: END IF;
14700: IF l_sdf_id IS NULL
14701: THEN
14702: IF g_debug
14703: THEN
14704: hr_utility.set_location (l_proc, 105);
14705: END IF;
14706:
14707: l_sdf_id := a_sdf_id;
14708:
14707: l_sdf_id := a_sdf_id;
14708:
14709: IF g_debug
14710: THEN
14711: hr_utility.TRACE ('l_sdf_id :' || l_sdf_id);
14712: END IF;
14713: END IF;
14714:
14715: IF g_debug
14713: END IF;
14714:
14715: IF g_debug
14716: THEN
14717: hr_utility.set_location (l_proc, 110);
14718: END IF;
14719: END IF; -- person assigned work or rotation plan
14720:
14721: IF g_debug
14719: END IF; -- person assigned work or rotation plan
14720:
14721: IF g_debug
14722: THEN
14723: hr_utility.set_location (l_proc, 120);
14724: END IF;
14725: END;
14726:
14727: -- Get holiday earning, day before/after, etc
14727: -- Get holiday earning, day before/after, etc
14728: BEGIN
14729: IF g_debug
14730: THEN
14731: hr_utility.set_location (l_proc, 130);
14732: END IF;
14733:
14734: hxt_util.check_for_holiday (a_date_worked,
14735: l_hcl_id,
14739: );
14740:
14741: IF g_debug
14742: THEN
14743: hr_utility.set_location (l_proc, 135);
14744: END IF;
14745:
14746: -- Check if holiday
14747: IF l_retcode = 1
14747: IF l_retcode = 1
14748: THEN
14749: IF g_debug
14750: THEN
14751: hr_utility.set_location (l_proc, 140);
14752: END IF;
14753:
14754: -- Set holiday code
14755: l_hol_yn := 'Y';
14756: END IF; -- holiday or not
14757:
14758: IF g_debug
14759: THEN
14760: hr_utility.set_location (l_proc, 145);
14761: END IF;
14762: EXCEPTION
14763: -- Check for error
14764: WHEN OTHERS
14764: WHEN OTHERS
14765: THEN
14766: IF g_debug
14767: THEN
14768: hr_utility.set_location (l_proc, 150);
14769: END IF;
14770:
14771: l_errmsg := SQLCODE;
14772: RAISE error_in_check_hol;
14773: END;
14774:
14775: IF g_debug
14776: THEN
14777: hr_utility.set_location (l_proc, 155);
14778: END IF;
14779:
14780: OPEN csr_test_for_osp (a_assignment_id, a_date_worked);
14781:
14793: END IF;
14794:
14795: IF g_debug
14796: THEN
14797: hr_utility.trace('About to pay ');
14798: hr_utility.trace('a_sdf_id '||a_sdf_id);
14799: hr_utility.trace('l_pep_id '||l_pep_id);
14800: END IF;
14801:
14794:
14795: IF g_debug
14796: THEN
14797: hr_utility.trace('About to pay ');
14798: hr_utility.trace('a_sdf_id '||a_sdf_id);
14799: hr_utility.trace('l_pep_id '||l_pep_id);
14800: END IF;
14801:
14802:
14795: IF g_debug
14796: THEN
14797: hr_utility.trace('About to pay ');
14798: hr_utility.trace('a_sdf_id '||a_sdf_id);
14799: hr_utility.trace('l_pep_id '||l_pep_id);
14800: END IF;
14801:
14802:
14803:
14855: );
14856:
14857: IF g_debug
14858: THEN
14859: hr_utility.set_location (l_proc, 160);
14860: END IF;
14861: ELSE
14862: IF g_debug
14863: THEN
14860: END IF;
14861: ELSE
14862: IF g_debug
14863: THEN
14864: hr_utility.set_location (l_proc, 165);
14865: hr_utility.TRACE ('a_sdf_id :' || a_sdf_id);
14866: END IF;
14867:
14868: OPEN csr_test_for_osp (a_assignment_id, a_date_worked);
14861: ELSE
14862: IF g_debug
14863: THEN
14864: hr_utility.set_location (l_proc, 165);
14865: hr_utility.TRACE ('a_sdf_id :' || a_sdf_id);
14866: END IF;
14867:
14868: OPEN csr_test_for_osp (a_assignment_id, a_date_worked);
14869:
14881: END IF;
14882:
14883: IF g_debug
14884: THEN
14885: hr_utility.trace('About to pay ');
14886: hr_utility.trace('a_sdf_id '||a_sdf_id);
14887: hr_utility.trace('l_pep_id '||l_pep_id);
14888: END IF;
14889:
14882:
14883: IF g_debug
14884: THEN
14885: hr_utility.trace('About to pay ');
14886: hr_utility.trace('a_sdf_id '||a_sdf_id);
14887: hr_utility.trace('l_pep_id '||l_pep_id);
14888: END IF;
14889:
14890: RETURN hxt_time_pay.pay (g_ep_id,
14883: IF g_debug
14884: THEN
14885: hr_utility.trace('About to pay ');
14886: hr_utility.trace('a_sdf_id '||a_sdf_id);
14887: hr_utility.trace('l_pep_id '||l_pep_id);
14888: END IF;
14889:
14890: RETURN hxt_time_pay.pay (g_ep_id,
14891: g_ep_type,
14941: );
14942:
14943: IF g_debug
14944: THEN
14945: hr_utility.set_location (l_proc, 170);
14946: END IF;
14947: END IF;
14948:
14949: IF g_debug
14947: END IF;
14948:
14949: IF g_debug
14950: THEN
14951: hr_utility.set_location (l_proc, 175);
14952: END IF;
14953: EXCEPTION
14954: --Begin OVEREARN
14955: WHEN error_in_gen_pol
14955: WHEN error_in_gen_pol
14956: THEN
14957: IF g_debug
14958: THEN
14959: hr_utility.set_location (l_proc, 180);
14960: END IF;
14961:
14962: fnd_message.set_name ('HXT', 'HXT_39440_GEN_EP_ERR');
14963: RETURN call_hxthxc_gen_error ('HXT',
14972: WHEN error_in_policies
14973: THEN
14974: IF g_debug
14975: THEN
14976: hr_utility.set_location (l_proc, 185);
14977: END IF;
14978:
14979: fnd_message.set_name ('HXT', 'HXT_39171_ERN_POL_OP_VIOL');
14980: RETURN call_hxthxc_gen_error ('HXT',
14988: WHEN error_in_shift_info
14989: THEN
14990: IF g_debug
14991: THEN
14992: hr_utility.set_location (l_proc, 190);
14993: END IF;
14994:
14995: fnd_message.set_name ('HXT', 'HXT_39172_SHF_PREMS_OP_VIOL');
14996: RETURN call_hxthxc_gen_error ('HXT',
15004: WHEN error_in_check_hol
15005: THEN
15006: IF g_debug
15007: THEN
15008: hr_utility.set_location (l_proc, 195);
15009: END IF;
15010:
15011: fnd_message.set_name ('HXT', 'HXT_39173_HOL_OP_VIOL');
15012: RETURN call_hxthxc_gen_error ('HXT',
15020: WHEN OTHERS
15021: THEN
15022: IF g_debug
15023: THEN
15024: hr_utility.set_location (l_proc, 200);
15025: END IF;
15026:
15027: fnd_message.set_name ('HXT', 'HXT_39269_ORACLE_ERROR');
15028: RETURN call_hxthxc_gen_error ('HXT',
15159: l_worked_hours := l_worked_hours + rec_work_hrs.hours;
15160:
15161: END IF;
15162: END LOOP process_hrs;
15163: hr_utility.trace('Hol : l_daily_total for '||g_date_worked);
15164: hr_utility.trace('Hol : l_worked hours '||l_worked_hours);
15165:
15166: IF NVL(fnd_profile.value('HXT_HOLIDAY_EXPLOSION'),'EX') <> 'EX'
15167: THEN
15160:
15161: END IF;
15162: END LOOP process_hrs;
15163: hr_utility.trace('Hol : l_daily_total for '||g_date_worked);
15164: hr_utility.trace('Hol : l_worked hours '||l_worked_hours);
15165:
15166: IF NVL(fnd_profile.value('HXT_HOLIDAY_EXPLOSION'),'EX') <> 'EX'
15167: THEN
15168: OPEN daily_hol_total(g_det_session_date);
15169: FETCH daily_hol_total INTO l_daily_hol_total;
15170: CLOSE daily_hol_total;
15171:
15172: l_worked_hours := l_worked_hours - l_daily_hol_total;
15173: hr_utility.trace('Hol : l_dailyhol_total '||l_daily_hol_total);
15174: hr_utility.trace('Hol : l_daily_total now '||l_worked_hours);
15175: END IF;
15176:
15177:
15170: CLOSE daily_hol_total;
15171:
15172: l_worked_hours := l_worked_hours - l_daily_hol_total;
15173: hr_utility.trace('Hol : l_dailyhol_total '||l_daily_hol_total);
15174: hr_utility.trace('Hol : l_daily_total now '||l_worked_hours);
15175: END IF;
15176:
15177:
15178:
15352: BEGIN
15353: IF g_debug
15354: THEN
15355: l_proc := 'hxt_time_detail.Overtime_Hoursoverride';
15356: hr_utility.set_location (l_proc, 10);
15357: END IF;
15358:
15359: -- Bug 7359347
15360: -- Setting session date
15367:
15368: <
15369: IF g_debug
15370: THEN
15371: hr_utility.set_location (l_proc, 20);
15372: END IF;
15373:
15374: FOR rec_work_hrs IN csr_override_hrs (p_date_worked, p_tim_id,g_det_session_date)
15375: LOOP
15374: FOR rec_work_hrs IN csr_override_hrs (p_date_worked, p_tim_id,g_det_session_date)
15375: LOOP
15376: IF g_debug
15377: THEN
15378: hr_utility.set_location (l_proc, 30);
15379: hr_utility.TRACE ( 'rec_work_hrs.hxt_earning_category:'
15380: || rec_work_hrs.hxt_earning_category
15381: );
15382: hr_utility.TRACE ('rec_work_hrs.hours:' || rec_work_hrs.hours);
15375: LOOP
15376: IF g_debug
15377: THEN
15378: hr_utility.set_location (l_proc, 30);
15379: hr_utility.TRACE ( 'rec_work_hrs.hxt_earning_category:'
15380: || rec_work_hrs.hxt_earning_category
15381: );
15382: hr_utility.TRACE ('rec_work_hrs.hours:' || rec_work_hrs.hours);
15383: hr_utility.TRACE ( 'rec_work_hrs.element_type_id:'
15378: hr_utility.set_location (l_proc, 30);
15379: hr_utility.TRACE ( 'rec_work_hrs.hxt_earning_category:'
15380: || rec_work_hrs.hxt_earning_category
15381: );
15382: hr_utility.TRACE ('rec_work_hrs.hours:' || rec_work_hrs.hours);
15383: hr_utility.TRACE ( 'rec_work_hrs.element_type_id:'
15384: || rec_work_hrs.element_type_id
15385: );
15386: END IF;
15379: hr_utility.TRACE ( 'rec_work_hrs.hxt_earning_category:'
15380: || rec_work_hrs.hxt_earning_category
15381: );
15382: hr_utility.TRACE ('rec_work_hrs.hours:' || rec_work_hrs.hours);
15383: hr_utility.TRACE ( 'rec_work_hrs.element_type_id:'
15384: || rec_work_hrs.element_type_id
15385: );
15386: END IF;
15387:
15388: IF rec_work_hrs.hxt_earning_category = 'OVT'
15389: THEN
15390: IF g_debug
15391: THEN
15392: hr_utility.set_location (l_proc, 40);
15393: END IF;
15394:
15395: l_worked_hours := l_worked_hours + rec_work_hrs.hours;
15396: l_element_type_id := rec_work_hrs.element_type_id;
15396: l_element_type_id := rec_work_hrs.element_type_id;
15397:
15398: IF g_debug
15399: THEN
15400: hr_utility.TRACE ('l_worked_hours:' || l_worked_hours);
15401: hr_utility.TRACE ('l_element_type_id:' || l_element_type_id);
15402: END IF;
15403: END IF;
15404:
15397:
15398: IF g_debug
15399: THEN
15400: hr_utility.TRACE ('l_worked_hours:' || l_worked_hours);
15401: hr_utility.TRACE ('l_element_type_id:' || l_element_type_id);
15402: END IF;
15403: END IF;
15404:
15405: IF g_debug
15403: END IF;
15404:
15405: IF g_debug
15406: THEN
15407: hr_utility.set_location (l_proc, 50);
15408: END IF;
15409: END LOOP process_hrs;
15410:
15411: IF g_debug
15409: END LOOP process_hrs;
15410:
15411: IF g_debug
15412: THEN
15413: hr_utility.set_location (l_proc, 60);
15414: END IF;
15415:
15416: -- RETURN NVL (l_worked_hours, 0);
15417: p_override_hrs := l_worked_hours;
15418: p_override_element := l_element_type_id;
15419:
15420: IF g_debug
15421: THEN
15422: hr_utility.TRACE ('p_override_hrs:' || p_override_hrs);
15423: hr_utility.TRACE ('p_override_element:' || p_override_element);
15424: END IF;
15425: END overtime_hoursoverride;
15426: --
15419:
15420: IF g_debug
15421: THEN
15422: hr_utility.TRACE ('p_override_hrs:' || p_override_hrs);
15423: hr_utility.TRACE ('p_override_element:' || p_override_element);
15424: END IF;
15425: END overtime_hoursoverride;
15426: --
15427: -------------------------------------------------------------------------------