568: if not (substr(p_time,1,2) between '00' and '23'
569: and substr(p_time,4,2) between '00' and '59'
570: and substr(p_time,3,1) = ':'
571: and length(p_time) = 5) then
572: fnd_message.set_name('PAY','HR_6004_ALL_FORMAT_HHMM');
573: fnd_message.raise_error;
574: end if;
575: end if;
576:
569: and substr(p_time,4,2) between '00' and '59'
570: and substr(p_time,3,1) = ':'
571: and length(p_time) = 5) then
572: fnd_message.set_name('PAY','HR_6004_ALL_FORMAT_HHMM');
573: fnd_message.raise_error;
574: end if;
575: end if;
576:
577: --
1439: into l_invalid_message_num from dual;
1440:
1441: if l_invalid_message_num = 0
1442: then
1443: l_invalid_message_txt := fnd_message.get_string('PER',l_invalid_message);
1444: else
1445: l_invalid_message_txt := l_invalid_message;
1446: end if;
1447:
1799: ,p_date_start => p_date_start
1800: ,p_date_end => p_date_end)
1801: then
1802:
1803: fnd_message.set_name('PER', 'PER_7715_ABS_TERM_PROJ_DATE');
1804: fnd_message.raise_error;
1805:
1806: end if;
1807:
1800: ,p_date_end => p_date_end)
1801: then
1802:
1803: fnd_message.set_name('PER', 'PER_7715_ABS_TERM_PROJ_DATE');
1804: fnd_message.raise_error;
1805:
1806: end if;
1807:
1808: hr_utility.set_location(' Leaving:'|| l_proc, 20);
1915: open c_absence_within_type_dates;
1916: fetch c_absence_within_type_dates into l_exists;
1917:
1918: if c_absence_within_type_dates%notfound then
1919: fnd_message.set_name('PER', 'HR_6457_ABS_DET_DATES');
1920: fnd_message.raise_error;
1921: end if;
1922:
1923: close c_absence_within_type_dates;
1916: fetch c_absence_within_type_dates into l_exists;
1917:
1918: if c_absence_within_type_dates%notfound then
1919: fnd_message.set_name('PER', 'HR_6457_ABS_DET_DATES');
1920: fnd_message.raise_error;
1921: end if;
1922:
1923: close c_absence_within_type_dates;
1924:
2017: open csr_valid_abs_reason;
2018: fetch csr_valid_abs_reason into l_exists;
2019: if csr_valid_abs_reason%notfound then
2020: --
2021: fnd_message.set_name('PER', 'PER_52749_ABS_REASON_INVALID');
2022: fnd_message.raise_error;
2023: --
2024: end if;
2025: close csr_valid_abs_reason;
2018: fetch csr_valid_abs_reason into l_exists;
2019: if csr_valid_abs_reason%notfound then
2020: --
2021: fnd_message.set_name('PER', 'PER_52749_ABS_REASON_INVALID');
2022: fnd_message.raise_error;
2023: --
2024: end if;
2025: close csr_valid_abs_reason;
2026:
2453: -- Check that the start dates are entered if the end dates are entered.
2454: --
2455: if (p_date_projected_start is null and p_date_projected_end is not null)
2456: or (p_date_start is null and p_date_end is not null) then
2457: fnd_message.set_name('PER','HR_289294_ABS_SD_NOT_ENTERED');
2458: fnd_message.raise_error;
2459: end if;
2460:
2461: hr_utility.set_location(l_proc, 15);
2454: --
2455: if (p_date_projected_start is null and p_date_projected_end is not null)
2456: or (p_date_start is null and p_date_end is not null) then
2457: fnd_message.set_name('PER','HR_289294_ABS_SD_NOT_ENTERED');
2458: fnd_message.raise_error;
2459: end if;
2460:
2461: hr_utility.set_location(l_proc, 15);
2462:
2464: -- Check that the end dates are after the start dates. If they are the same
2465: -- day, check that the end time is after the start time.
2466: --
2467: if p_date_projected_end < p_date_projected_start then
2468: fnd_message.set_name('PER','PAY_7617_EMP_ABS_DATE_AFTER');
2469: fnd_message.raise_error;
2470:
2471: elsif p_date_end < p_date_start then
2472: fnd_message.set_name('PER','PAY_7616_EMP_ABS_DATE_AFTER');
2465: -- day, check that the end time is after the start time.
2466: --
2467: if p_date_projected_end < p_date_projected_start then
2468: fnd_message.set_name('PER','PAY_7617_EMP_ABS_DATE_AFTER');
2469: fnd_message.raise_error;
2470:
2471: elsif p_date_end < p_date_start then
2472: fnd_message.set_name('PER','PAY_7616_EMP_ABS_DATE_AFTER');
2473: fnd_message.raise_error;
2468: fnd_message.set_name('PER','PAY_7617_EMP_ABS_DATE_AFTER');
2469: fnd_message.raise_error;
2470:
2471: elsif p_date_end < p_date_start then
2472: fnd_message.set_name('PER','PAY_7616_EMP_ABS_DATE_AFTER');
2473: fnd_message.raise_error;
2474:
2475: elsif p_date_projected_end = p_date_projected_start
2476: and p_time_projected_end < p_time_projected_start then
2469: fnd_message.raise_error;
2470:
2471: elsif p_date_end < p_date_start then
2472: fnd_message.set_name('PER','PAY_7616_EMP_ABS_DATE_AFTER');
2473: fnd_message.raise_error;
2474:
2475: elsif p_date_projected_end = p_date_projected_start
2476: and p_time_projected_end < p_time_projected_start then
2477: fnd_message.set_name('PER','PER_7619_EMP_ABS_END_TIME');
2473: fnd_message.raise_error;
2474:
2475: elsif p_date_projected_end = p_date_projected_start
2476: and p_time_projected_end < p_time_projected_start then
2477: fnd_message.set_name('PER','PER_7619_EMP_ABS_END_TIME');
2478: fnd_message.raise_error;
2479:
2480: elsif p_date_end = p_date_start
2481: and p_time_end < p_time_start then
2474:
2475: elsif p_date_projected_end = p_date_projected_start
2476: and p_time_projected_end < p_time_projected_start then
2477: fnd_message.set_name('PER','PER_7619_EMP_ABS_END_TIME');
2478: fnd_message.raise_error;
2479:
2480: elsif p_date_end = p_date_start
2481: and p_time_end < p_time_start then
2482: fnd_message.set_name('PER','PER_7618_EMP_ABS_END_TIME');
2478: fnd_message.raise_error;
2479:
2480: elsif p_date_end = p_date_start
2481: and p_time_end < p_time_start then
2482: fnd_message.set_name('PER','PER_7618_EMP_ABS_END_TIME');
2483: fnd_message.raise_error;
2484:
2485: end if;
2486:
2479:
2480: elsif p_date_end = p_date_start
2481: and p_time_end < p_time_start then
2482: fnd_message.set_name('PER','PER_7618_EMP_ABS_END_TIME');
2483: fnd_message.raise_error;
2484:
2485: end if;
2486:
2487: hr_utility.set_location(l_proc, 20);
2497: p_time_end is not null) then
2498: --
2499: -- Times should not have been entered.
2500: --
2501: fnd_message.set_name('PER','HR_289299_ABS_TIME_DISALLOWED');
2502: fnd_message.raise_error;
2503:
2504: else
2505: --
2498: --
2499: -- Times should not have been entered.
2500: --
2501: fnd_message.set_name('PER','HR_289299_ABS_TIME_DISALLOWED');
2502: fnd_message.raise_error;
2503:
2504: else
2505: --
2506: -- The unit of measure is either just hours or both days and hours
2507: -- so check that the times have only been entered when the dates have.
2508: --
2509: if p_time_projected_start is not null
2510: and p_date_projected_start is null then
2511: fnd_message.set_name('PER','HR_289297_ABS_PROJ_START_DATE'); -- Fix 2647747
2512: fnd_message.raise_error;
2513:
2514: elsif p_time_projected_end is not null
2515: and p_date_projected_end is null then
2508: --
2509: if p_time_projected_start is not null
2510: and p_date_projected_start is null then
2511: fnd_message.set_name('PER','HR_289297_ABS_PROJ_START_DATE'); -- Fix 2647747
2512: fnd_message.raise_error;
2513:
2514: elsif p_time_projected_end is not null
2515: and p_date_projected_end is null then
2516: fnd_message.set_name('PER','PER_7621_EMP_ABS_END_TIME');
2512: fnd_message.raise_error;
2513:
2514: elsif p_time_projected_end is not null
2515: and p_date_projected_end is null then
2516: fnd_message.set_name('PER','PER_7621_EMP_ABS_END_TIME');
2517: fnd_message.raise_error;
2518:
2519: elsif p_time_start is not null and p_date_start is null then
2520: fnd_message.set_name('PER','PER_7143_EMP_ABS_START_TIME');
2513:
2514: elsif p_time_projected_end is not null
2515: and p_date_projected_end is null then
2516: fnd_message.set_name('PER','PER_7621_EMP_ABS_END_TIME');
2517: fnd_message.raise_error;
2518:
2519: elsif p_time_start is not null and p_date_start is null then
2520: fnd_message.set_name('PER','PER_7143_EMP_ABS_START_TIME');
2521: fnd_message.raise_error;
2516: fnd_message.set_name('PER','PER_7621_EMP_ABS_END_TIME');
2517: fnd_message.raise_error;
2518:
2519: elsif p_time_start is not null and p_date_start is null then
2520: fnd_message.set_name('PER','PER_7143_EMP_ABS_START_TIME');
2521: fnd_message.raise_error;
2522:
2523: elsif p_time_end is not null and p_date_end is null then
2524: fnd_message.set_name('PER','PER_7620_EMP_ABS_END_TIME');
2517: fnd_message.raise_error;
2518:
2519: elsif p_time_start is not null and p_date_start is null then
2520: fnd_message.set_name('PER','PER_7143_EMP_ABS_START_TIME');
2521: fnd_message.raise_error;
2522:
2523: elsif p_time_end is not null and p_date_end is null then
2524: fnd_message.set_name('PER','PER_7620_EMP_ABS_END_TIME');
2525: fnd_message.raise_error;
2520: fnd_message.set_name('PER','PER_7143_EMP_ABS_START_TIME');
2521: fnd_message.raise_error;
2522:
2523: elsif p_time_end is not null and p_date_end is null then
2524: fnd_message.set_name('PER','PER_7620_EMP_ABS_END_TIME');
2525: fnd_message.raise_error;
2526:
2527: end if;
2528:
2521: fnd_message.raise_error;
2522:
2523: elsif p_time_end is not null and p_date_end is null then
2524: fnd_message.set_name('PER','PER_7620_EMP_ABS_END_TIME');
2525: fnd_message.raise_error;
2526:
2527: end if;
2528:
2529: end if;
2619: -- The UOM is Days so the days duration should be entered, but not
2620: -- the hours duration.
2621: --
2622: if p_absence_days is null then
2623: fnd_message.set_name('PER','HR_51059_ABS_DUR_NOT_ENTERED');
2624: fnd_message.raise_error;
2625:
2626: elsif p_absence_hours is not null then
2627: fnd_message.set_name('PER','HR_289298_ABS_HRS_DISALLOWED');
2620: -- the hours duration.
2621: --
2622: if p_absence_days is null then
2623: fnd_message.set_name('PER','HR_51059_ABS_DUR_NOT_ENTERED');
2624: fnd_message.raise_error;
2625:
2626: elsif p_absence_hours is not null then
2627: fnd_message.set_name('PER','HR_289298_ABS_HRS_DISALLOWED');
2628: fnd_message.raise_error;
2623: fnd_message.set_name('PER','HR_51059_ABS_DUR_NOT_ENTERED');
2624: fnd_message.raise_error;
2625:
2626: elsif p_absence_hours is not null then
2627: fnd_message.set_name('PER','HR_289298_ABS_HRS_DISALLOWED');
2628: fnd_message.raise_error;
2629:
2630: end if;
2631:
2624: fnd_message.raise_error;
2625:
2626: elsif p_absence_hours is not null then
2627: fnd_message.set_name('PER','HR_289298_ABS_HRS_DISALLOWED');
2628: fnd_message.raise_error;
2629:
2630: end if;
2631:
2632: elsif l_hours_or_days = 'H' then
2634: -- The UOM is Hours so the hours duration should be entered, but not
2635: -- the days duration.
2636: --
2637: if p_absence_hours is null then
2638: fnd_message.set_name('PER','HR_51059_ABS_DUR_NOT_ENTERED');
2639: fnd_message.raise_error;
2640:
2641: elsif p_absence_days is not null then
2642: fnd_message.set_name('PER','HR_289300_ABS_DYS_DISALLOWED');
2635: -- the days duration.
2636: --
2637: if p_absence_hours is null then
2638: fnd_message.set_name('PER','HR_51059_ABS_DUR_NOT_ENTERED');
2639: fnd_message.raise_error;
2640:
2641: elsif p_absence_days is not null then
2642: fnd_message.set_name('PER','HR_289300_ABS_DYS_DISALLOWED');
2643: fnd_message.raise_error;
2638: fnd_message.set_name('PER','HR_51059_ABS_DUR_NOT_ENTERED');
2639: fnd_message.raise_error;
2640:
2641: elsif p_absence_days is not null then
2642: fnd_message.set_name('PER','HR_289300_ABS_DYS_DISALLOWED');
2643: fnd_message.raise_error;
2644:
2645: end if;
2646:
2639: fnd_message.raise_error;
2640:
2641: elsif p_absence_days is not null then
2642: fnd_message.set_name('PER','HR_289300_ABS_DYS_DISALLOWED');
2643: fnd_message.raise_error;
2644:
2645: end if;
2646:
2647: else
2648: --
2649: -- No UOM is set so either days or hours can be entered (or both).
2650: --
2651: if p_absence_hours is null and p_absence_days is null then
2652: fnd_message.set_name('PER','HR_51059_ABS_DUR_NOT_ENTERED');
2653: fnd_message.raise_error;
2654: end if;
2655:
2656: end if;
2649: -- No UOM is set so either days or hours can be entered (or both).
2650: --
2651: if p_absence_hours is null and p_absence_days is null then
2652: fnd_message.set_name('PER','HR_51059_ABS_DUR_NOT_ENTERED');
2653: fnd_message.raise_error;
2654: end if;
2655:
2656: end if;
2657:
2669:
2670: if (l_dur_ent_hours > l_dur_calc_hours)
2671: then
2672:
2673: fnd_message.set_name('PER','PER_449852_ABS_HOUR_DUR');
2674: hr_utility.set_message_token('START', p_date_start);
2675: hr_utility.set_message_token('END', p_date_end);
2676: fnd_message.raise_error;
2677:
2672:
2673: fnd_message.set_name('PER','PER_449852_ABS_HOUR_DUR');
2674: hr_utility.set_message_token('START', p_date_start);
2675: hr_utility.set_message_token('END', p_date_end);
2676: fnd_message.raise_error;
2677:
2678: end if;
2679:
2680: -- fix for the bug 8492746 ends here
2684: -- has been entered.
2685: --
2686: if p_absence_days is not null
2687: and (p_date_start is null or p_date_end is null) then
2688: fnd_message.set_name('PER','PER_7714_ABS_CALC_DURATION');
2689: fnd_message.raise_error;
2690: /*
2691: elsif p_absence_hours is not null
2692: and (p_time_start is null or p_time_end is null) then
2685: --
2686: if p_absence_days is not null
2687: and (p_date_start is null or p_date_end is null) then
2688: fnd_message.set_name('PER','PER_7714_ABS_CALC_DURATION');
2689: fnd_message.raise_error;
2690: /*
2691: elsif p_absence_hours is not null
2692: and (p_time_start is null or p_time_end is null) then
2693: fnd_message.set_name('PER','PER_7145_EMP_ABS_UNPAID_HOURS');
2689: fnd_message.raise_error;
2690: /*
2691: elsif p_absence_hours is not null
2692: and (p_time_start is null or p_time_end is null) then
2693: fnd_message.set_name('PER','PER_7145_EMP_ABS_UNPAID_HOURS');
2694: fnd_message.raise_error;
2695: */
2696: end if;
2697:
2690: /*
2691: elsif p_absence_hours is not null
2692: and (p_time_start is null or p_time_end is null) then
2693: fnd_message.set_name('PER','PER_7145_EMP_ABS_UNPAID_HOURS');
2694: fnd_message.raise_error;
2695: */
2696: end if;
2697:
2698: hr_utility.set_location(l_proc, 45);
2714: --
2715: -- Raise the error message. The duration cannot be greater than
2716: -- the system calculated duration.
2717: --
2718: fnd_message.set_name('PER','PER_7622_EMP_ABS_LONG_DURATION');
2719: fnd_message.raise_error;*/
2720:
2721: end if;
2722:
2715: -- Raise the error message. The duration cannot be greater than
2716: -- the system calculated duration.
2717: --
2718: fnd_message.set_name('PER','PER_7622_EMP_ABS_LONG_DURATION');
2719: fnd_message.raise_error;*/
2720:
2721: end if;
2722:
2723: --
2736: --
2737: -- Raise the error message. The duration cannot be greater than
2738: -- the system calculated duration.
2739: --
2740: fnd_message.set_name('PER','PER_7623_EMP_ABS_LONG_DURATION');
2741: fnd_message.raise_error;*/
2742:
2743: end if;
2744:
2737: -- Raise the error message. The duration cannot be greater than
2738: -- the system calculated duration.
2739: --
2740: fnd_message.set_name('PER','PER_7623_EMP_ABS_LONG_DURATION');
2741: fnd_message.raise_error;*/
2742:
2743: end if;
2744:
2745: hr_utility.set_location(l_proc, 50);
2781: close csr_legislation;
2782: --
2783: -- The primary key is invalid therefore we must error
2784: --
2785: fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
2786: fnd_message.raise_error;
2787: end if;
2788: close csr_legislation;
2789:
2782: --
2783: -- The primary key is invalid therefore we must error
2784: --
2785: fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
2786: fnd_message.raise_error;
2787: end if;
2788: close csr_legislation;
2789:
2790: if l_legislation_code = 'AU'
2865: exception
2866:
2867: when others then
2868:
2869: l_message_text := fnd_message.get;
2870: hr_utility.trace('Unable to execute the PTO formula. '||l_message_text);
2871:
2872: end;
2873:
2878: open csr_get_abs_type_name;
2879: fetch csr_get_abs_type_name into p_abs_type_name;
2880: close csr_get_abs_type_name;
2881:
2882: fnd_message.set_name('PER','PER_449875_ABS_NEGBAL');
2883: fnd_message.set_token('ABSTYPE',p_abs_type_name);
2884: fnd_message.raise_error;
2885: else
2886:
2879: fetch csr_get_abs_type_name into p_abs_type_name;
2880: close csr_get_abs_type_name;
2881:
2882: fnd_message.set_name('PER','PER_449875_ABS_NEGBAL');
2883: fnd_message.set_token('ABSTYPE',p_abs_type_name);
2884: fnd_message.raise_error;
2885: else
2886:
2887: p_exceeds_pto_entit_warning := TRUE;
2880: close csr_get_abs_type_name;
2881:
2882: fnd_message.set_name('PER','PER_449875_ABS_NEGBAL');
2883: fnd_message.set_token('ABSTYPE',p_abs_type_name);
2884: fnd_message.raise_error;
2885: else
2886:
2887: p_exceeds_pto_entit_warning := TRUE;
2888: end if;
2924: open csr_get_abs_type_name;
2925: fetch csr_get_abs_type_name into p_abs_type_name;
2926: close csr_get_abs_type_name;
2927:
2928: fnd_message.set_name('PER','PER_449875_ABS_NEGBAL');
2929: fnd_message.set_token('ABSTYPE',p_abs_type_name);
2930: fnd_message.raise_error;
2931: else
2932:
2925: fetch csr_get_abs_type_name into p_abs_type_name;
2926: close csr_get_abs_type_name;
2927:
2928: fnd_message.set_name('PER','PER_449875_ABS_NEGBAL');
2929: fnd_message.set_token('ABSTYPE',p_abs_type_name);
2930: fnd_message.raise_error;
2931: else
2932:
2933: p_exceeds_run_total_warning := TRUE;
2926: close csr_get_abs_type_name;
2927:
2928: fnd_message.set_name('PER','PER_449875_ABS_NEGBAL');
2929: fnd_message.set_token('ABSTYPE',p_abs_type_name);
2930: fnd_message.raise_error;
2931: else
2932:
2933: p_exceeds_run_total_warning := TRUE;
2934: end if;
3077: ,p_date_start => p_date_start
3078: ,p_date_end => p_date_end)
3079: then
3080:
3081: fnd_message.set_name('PER', 'HR_7553_ASS_REP_INVALID');
3082: fnd_message.raise_error;
3083:
3084: end if;
3085:
3078: ,p_date_end => p_date_end)
3079: then
3080:
3081: fnd_message.set_name('PER', 'HR_7553_ASS_REP_INVALID');
3082: fnd_message.raise_error;
3083:
3084: end if;
3085:
3086: end if;
3180: ,p_date_start => p_date_start
3181: ,p_date_end => p_date_end)
3182: then
3183:
3184: fnd_message.set_name('PER', 'HR_7552_ASS_AUTH_INVALID');
3185: fnd_message.raise_error;
3186:
3187: end if;
3188:
3181: ,p_date_end => p_date_end)
3182: then
3183:
3184: fnd_message.set_name('PER', 'HR_7552_ASS_AUTH_INVALID');
3185: fnd_message.raise_error;
3186:
3187: end if;
3188:
3189: end if;
3234: close csr_sec_grp;
3235: --
3236: -- The primary key is invalid therefore we must error
3237: --
3238: fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
3239: fnd_message.raise_error;
3240: --
3241: end if;
3242: close csr_sec_grp;
3235: --
3236: -- The primary key is invalid therefore we must error
3237: --
3238: fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
3239: fnd_message.raise_error;
3240: --
3241: end if;
3242: close csr_sec_grp;
3243: --
3307: --
3308: -- The primary key is invalid therefore we must error
3309: --
3310: close csr_leg_code;
3311: fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
3312: fnd_message.raise_error;
3313: end if;
3314: hr_utility.set_location(l_proc,30);
3315: --
3308: -- The primary key is invalid therefore we must error
3309: --
3310: close csr_leg_code;
3311: fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
3312: fnd_message.raise_error;
3313: end if;
3314: hr_utility.set_location(l_proc,30);
3315: --
3316: -- Set the global variables so the values are
3684: IF NOT per_abs_shd.api_updating
3685: (p_absence_attendance_id => p_rec.absence_attendance_id
3686: ,p_object_version_number => p_rec.object_version_number
3687: ) THEN
3688: fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
3689: fnd_message.set_token('PROCEDURE ', l_proc);
3690: fnd_message.set_token('STEP ', '5');
3691: fnd_message.raise_error;
3692: END IF;
3685: (p_absence_attendance_id => p_rec.absence_attendance_id
3686: ,p_object_version_number => p_rec.object_version_number
3687: ) THEN
3688: fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
3689: fnd_message.set_token('PROCEDURE ', l_proc);
3690: fnd_message.set_token('STEP ', '5');
3691: fnd_message.raise_error;
3692: END IF;
3693: --
3686: ,p_object_version_number => p_rec.object_version_number
3687: ) THEN
3688: fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
3689: fnd_message.set_token('PROCEDURE ', l_proc);
3690: fnd_message.set_token('STEP ', '5');
3691: fnd_message.raise_error;
3692: END IF;
3693: --
3694: hr_utility.set_location(l_proc, 2);
3687: ) THEN
3688: fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
3689: fnd_message.set_token('PROCEDURE ', l_proc);
3690: fnd_message.set_token('STEP ', '5');
3691: fnd_message.raise_error;
3692: END IF;
3693: --
3694: hr_utility.set_location(l_proc, 2);
3695: if nvl(p_rec.absence_attendance_id,hr_api.g_number) <>