Академический Документы
Профессиональный Документы
Культура Документы
Com
Senior Oracle HCM Techno Functional Consultant
Prevent Timekeeper to enter timesheet in a day which has approved absence in HR.
Create the following package:
CREATE OR REPLACE PACKAGE APPS.XX_OTL_PACKAGE
IS
FUNCTION OTL_CHECK_LEAVE_IN_DAY (p_resource_id NUMBER,P_DATE DATE)RETURN
NUMBER;
FUNCTION OTL_PREV_ABSENCE_DAYS (p_resource_id NUMBER) RETURN number;
END XXNAP_OTL_PACKAGE;
/
RETURN L_COUNT;
END OTL_CHECK_LEAVE_IN_DAY;
FUNCTION OTL_PREV_ABSENCE_DAYS (p_resource_id NUMBER)
RETURN number
IS
l_return_rule_status number := 0;
L_LEAVE_OVERLAB
number := 0;
L_WORKING_HOURS
number := 0;
l_timecard_info hxc_self_service_time_deposit.timecard_info;
l_tbb_array HXC_BLOCK_TABLE_TYPE;
BEGIN
l_timecard_info := hxc_self_service_time_deposit.get_building_blocks;
l_tbb_array
:= hxc_deposit_wrapper_utilities.blocks_to_array(p_blocks =>
l_timecard_info);
IF l_tbb_array.FIRST IS NOT NULL THEN
LOOP
IF l_tbb_array(c).SCOPE = 'DAY' and
l_tbb_array(c).TIME_BUILDING_BLOCK_ID =
l_tbb_array(i).PARENT_BUILDING_BLOCK_ID THEN
L_LEAVE_OVERLAB :=
XXNAP_OTL_PACKAGE.OTL_CHECK_LEAVE_IN_DAY(p_resource_id,FND_DATE.CANONICAL_TO_D
ATE(l_tbb_array(C).START_TIME));
INSERT INTO XX_OTL_DEBUG VALUES
(p_resource_id,FND_DATE.CANONICAL_TO_DATE(l_tbb_array(c).START_TIME),L_LEAVE_O
VERLAB,L_WORKING_HOURS,l_tbb_array(c).TIME_BUILDING_BLOCK_ID,l_tbb_array(i).PA
RENT_BUILDING_BLOCK_ID);
END XXNAP_OTL_PACKAGE;
/
Create formula:
Formula Text:
/******************************************************************
Formula Name: XX_OTL_PREVENT_LEAVE_OVERLAB
Author: Mohamed Salah Kandil
Description :Prevent timesheet for registered leave days in HR
Contexts: None
*****************************************************************
*/
/*
Initialize Variables which can be null
*****************************************************************
*/
Default for db_pre_period_start is ' '
Default for db_pre_period_end is ' '
Default for db_post_period_start is ' '
Default for db_post_period_end is ' '
Default for db_ref_period_start is ' '
Default for db_ref_period_end is ' '
Default for timecard_hrs is 0
/* ******************************************************************
READ IN INPUT VARIABLES
****************************************************************** */
INPUTS ARE resource_id
(number)
,
submission_date (text)
,
db_pre_period_start (text)
,
db_pre_period_end (text)
,
db_post_period_start (text)
,
db_post_period_end (text)
,
db_ref_period_start (text)
,
db_ref_period_end
(text)
,
timecard_hrs
(number)
IF ( OTL_PREV_ABSENCE_DAYS(resource_id) >0 )
THEN
(rule_status = 'E'
message1 = 'OTL_PREV_ABSENCE_DAYS'
return rule_status,message1)
ELSE
(rule_status = 'S'
return rule_status)
Create Error Message > Application Developer > Application > Messages:
Test Case
1. Create an absence for employee
2. Create timesheet for him in the same day and try to save: