Академический Документы
Профессиональный Документы
Культура Документы
Absence Management:
Oracle provides seeded functionality which can capture leave related
information and provide extensibility so you can make changes as per your
requirement. Absence management is provided in self service (OA framework
pages) as well as from core HR (Oracle forms)
Accrual Plan:
Oracle Provides Accrual plan Functionality for calculating leaves balance
calculation and Balance Carry Over calculations
The following points should be taken into consideration for calculation Balances
1.
Opening Balance : Some of the Organization Provides Yearly opening balance to employee. We
need to store these opening balances in an Element
2.
Leave Adjustment: There are cases in which adjustments are made because of redundancies in
calculation of leave balance. In such cases we need to store these adjustments
in an element and make the use of the same.
3.
Leave Encashment:
Organizations provide policy for encashment of leave when Leave balance
exceeds a given amount. In order to capture these details, we need to have an
element for the same
Days Day
Pay Value Money
Future 1 Character
Future 2 Character
Absence
6) We are done with the Setup, now create vacation leave for an
employee and test the same
Navigation: HRMS Super User People Enter & Maintain Search for Any
Employee Others Absence
Leave Adjustment: There are cases in which adjustments are made because of redundancies in
calculation of leave balance. In such cases we need to store these adjustments
in an element and make the use of the same.
3.
Leave Encashment:
Organizations provide policy for encashment of leave when Leave balance
exceeds a given amount. In order to capture these details, we need to have an
element for the same
How to Setup Leave Accruals
8) When one creates an accrual plan, system automatically generate below said
elements and their corresponding links too (Create Links Manually if not created
Automatically)
Vacation Leave Plan
Vacation Leave Plan Carried Over
9)
l_err_msgVARCHAR2(500):=NULL;
l_person_idNUMBER:=NULL;
l_hire_dateDATE:=NULL;
l_nationalityVARCHAR2(250):=NULL;
l_contract_typeVARCHAR2(250):=NULL;
l_yearly_accrualNUMBER:=NULL;
l_per_day_accrualNUMBER:=NULL;
l_accrual_start_dateDATE:=NULL;
l_calc_start_dateDATE:=NULL;
l_accrual_total_daysNUMBER:=NULL;
l_net_accrualNUMBER:=0;
BEGIN
BEGIN
SELECTper.person_id,
NVL(
hr_general.decode_lookup('NATIONALITY',per.nationality),
'XX'
)
nationality,
pps.date_starthire_date,
ppg.segment6contract_type
INTOl_person_id,
l_nationality,
l_hire_date,
l_contract_type
FROMper_all_people_fper,
per_all_assignments_fpaaf,
per_periods_of_servicepps,
pay_people_groupsppg
WHEREper.person_id=paaf.person_id
ANDper.person_type_idIN(1126,1127)
ANDpaaf.assignment_type='E'
ANDpaaf.assignment_status_type_idIN(1,2)
ANDpaaf.primary_flag='Y'
ANDpaaf.business_group_id=p_business_group_id
ANDpaaf.period_of_service_id=pps.period_of_service_id
ANDp_calculation_dateBETWEENper.effective_start_date
ANDper.effective_end_date
ANDp_calculation_dateBETWEENpaaf.effective_start_date
ANDpaaf.effective_end_date
ANDpaaf.assignment_id=p_assignment_id
ANDpaaf.people_group_id=ppg.people_group_id;
EXCEPTION
WHENOTHERS
THEN
l_err_msg:=SQLERRM;
debug_script_p('ExceptionEmployeeDetails:'||l_err_msg);
END;
IFl_contract_typeISNOTNULL
THEN
SELECThruserdt.get_table_value(p_business_group_id,
'LeaveAccruals',
'VacationLeave',
l_contract_type,
p_calculation_date)
INTOl_yearly_accrual
FROMDUAL;
ENDIF;
l_per_day_accrual:=ROUND((l_yearly_accrual/360),3);
l_accrual_start_date:=
TO_DATE('01JAN'||TO_CHAR(p_calculation_date,'YYYY'),
'DDMONYYYY');
IFl_accrual_start_date>l_hire_date
THEN
l_calc_start_date:=l_accrual_start_date;
ELSE
l_calc_start_date:=l_hire_date;
ENDIF;
l_accrual_total_days:=p_calculation_datel_accrual_start_date;
l_net_accrual:=ROUND(l_accrual_total_days*l_per_day_accrual,0);
p_contract_start_date:=l_hire_date;
p_contract_end_date:=TO_DATE('31DEC4312','DDMONYYYY');
RETURNl_net_accrual;
EXCEPTION
WHENOTHERS
THEN
RETURN0;
END;
/
: BIJOY JOSEPH
: CALCULATE ACCRUAL PLAN
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
FOR
FOR
FOR
FOR
FOR
CALCULATION_DATE
IS '02-JAN-0001' (DATE)
SYSDATE
IS '01-jan-0001'(DATE)
SUS_DATE
IS '01-jan-0001'(DATE)
SESSION_DATE
IS '01-jan-0001'(DATE)
YEAR_START
IS '01-jan-0001'(DATE)
/* INPUT SECTION */
INPUTS ARE CALCULATION_DATE (DATE)
ACCRUAL_DAYS=0
L_CONTRACT_SD ='0001/01/01 00:00:00'(DATE)
L_CONTRACT_ED ='0001/01/01 00:00:00'(DATE)
ACCRUAL_DAYS =
AQS_GET_LEAVE_ACCRUALS(CALCULATION_DATE,L_CONTRACT_SD,L_CONTRACT_
ED)
EFFECTIVE_START_DATE = GREATEST(EMP_HIRE_DATE, L_CONTRACT_SD)
IF (EMP_TERM_DATE WAS DEFAULTED ) THEN
(
EFFECTIVE_END_DATE = L_CONTRACT_ED
)
ELSE
(
EFFECTIVE_END_DATE = EMP_TERM_DATE
)
EFFECTIVE_END_DATE = LEAST(EFFECTIVE_END_DATE,L_CONTRACT_ED)
ACCRUAL_END_DATE = CALCULATION_DATE
TOTAL_ACCRUED_PTO = ROUND(ACCRUAL_DAYS,0
)
RETURN TOTAL_ACCRUED_PTO,
EFFECTIVE_START_DATE,
EFFECTIVE_END_DATE,
ACCRUAL_END_DATE
5. Attach the Accrual Formula to the corresponding PLAN and test
various scenarios