0% found this document useful (0 votes)
54 views12 pages

Formulas

The document contains code for calculating overtime pay and business trip allowances. It includes formulas for retrieving employee grade and salary data, calculating daily pay rates, and determining overtime and trip allowance amounts based on the number of days, employee grade, and trip type (inside/outside kingdom, Europe). The values are then returned for payroll processing.

Uploaded by

NLamber
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views12 pages

Formulas

The document contains code for calculating overtime pay and business trip allowances. It includes formulas for retrieving employee grade and salary data, calculating daily pay rates, and determining overtime and trip allowance amounts based on the number of days, employee grade, and trip type (inside/outside kingdom, Europe). The values are then returned for payroll processing.

Uploaded by

NLamber
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 12

METADATA|PositionHierarchy|SourceSystemOwner|SourceSystemId|EffectiveStartDate|

EffectiveEndDate|ParentPositionId(SourceSystemId)|PositionId(SourceSystemId)
MERGE|PositionHierarchy|Vision|1|2015/01/01|4712/12/31|PM_MGR_ACCESS|PM_ACCESS
MERGE|PositionHierarchy|Vision|2|2015/01/01|4712/12/31|PM_MGR_ACCESS|SNR_PM_ACCESS
MERGE|PositionHierarchy|Vision|3|2015/01/01|4712/12/31|PM_MGR_SALES|PM_SALES
MERGE|PositionHierarchy|Vision|4|2015/01/01|4712/12/31|PM_MGR_SALES|SNR_PM_SALES
MERGE|PositionHierarchy|Vision|5|2015/01/01|4712/12/31|PM_DIR|PM_MGR_ACCESS
MERGE|PositionHierarchy|Vision|6|2015/01/01|4712/12/31|PM_DIR|PM_MGR_SALES
MERGE|PositionHierarchy|Vision|7|2015/01/01|4712/12/31|VP|PM_DIR
MERGE|PositionHierarchy|Vision|8|2015/01/01|4712/12/31|EVP|VP

METADATA|PositionHierarchy|EffectiveStartDate|EffectiveEndDate|
ParentBusinessUnitName|ParentPositionCode|BusinessUnitName|PositionCode
MERGE|PositionHierarchy|1951/01/01|4712/12/31|MMRT BU|48|MMRT BU|40

/*
HCM Team
*/
DEFAULT FOR NUMBER_OF_HOURS IS 0
DEFAULT FOR OVERTIME_NUMBER_OF_HOURS_ASG_ENTRY_VALUE IS 0
DEFAULT FOR PAY_EARN_PERIOD_START IS '0001/01/01 00:00:00' (DATE)
DEFAULT FOR PAY_EARN_PERIOD_END IS '4712/12/31 00:00:00' (DATE)
DEFAULT FOR TYPE IS ' '
DEFAULT FOR pay_value is 0
DEFAULT FOR BASIC_SALARY_AMOUNT_ASG_ENTRY_VALUE is 0
DEFAULT FOR HOUSING_ALLOWANCE_AMOUNT_ASG_ENTRY_VALUE is 0
DEFAULT FOR TRANSPORTATION_ALLOWANCE_AMOUNT_ASG_ENTRY_VALUE is 0

INPUTS ARE NUMBER_OF_HOURS(NUMBER)

l_actual_start_date = PAY_EARN_PERIOD_START
l_actual_end_date = PAY_EARN_PERIOD_END
NUMBER_OF_HOURS = OVERTIME_NUMBER_OF_HOURS_ASG_ENTRY_VALUE

DAILY_SALARY = ((((BASIC_SALARY_AMOUNT_ASG_ENTRY_VALUE / 12) +


HOUSING_ALLOWANCE_AMOUNT_ASG_ENTRY_VALUE +
TRANSPORTATION_ALLOWANCE_AMOUNT_ASG_ENTRY_VALUE) /30)/8)
DAILY_SALARY2 = (((BASIC_SALARY_AMOUNT_ASG_ENTRY_VALUE/12)/30)/8)
/* tot 14,393
BS 9,914.4
*/

OVERTIME =(DAILY_SALARY/4) * NUMBER_OF_HOURS


OVERTIME2 = ((DAILY_SALARY2/4) * 0.5) * NUMBER_OF_HOURS

OT= OVERTIME + OVERTIME2

pay_value = OT

RETURN pay_value
/*
HCM Team

Over time MMRT

Overtime Calculation
04-05-2021
*/
DEFAULT FOR NUMBER_OF_HOURS IS 0
DEFAULT FOR MMRT_OVER_TIME_AMOUNT_ASG_ENTRY_VALUE IS 0
DEFAULT FOR PAY_EARN_PERIOD_START IS '0001/01/01 00:00:00' (DATE)
DEFAULT FOR PAY_EARN_PERIOD_END IS '4712/12/31 00:00:00' (DATE)
DEFAULT FOR OVERTIME_TYPE IS ' '
INPUTS ARE NUMBER_OF_HOURS(NUMBER),OVERTIME_TYPE
DEFAULT FOR pay_value is 0

DEFAULT FOR BASIC_SALARY_AMOUNT_ASG_ENTRY_VALUE is 0


l_pay = 0
L_G_AMOUNT = '0'
MINUTE_SALARY = 0

L_HR_Payment_ID = ASG_HR_ASG_ID
l_eff_date = PAY_EARN_PERIOD_END
CALL_FORMULA
('XXX_HR_GET_GRADE_RATE_VALUE'
,L_HR_Payment_ID > 'hr_id'
,l_eff_date > 'eff_date'
,'GRADE_RATE_VALUE' > 'mode'
,'XXX_HR_Mobile_GRADE_RATE' > 'grade_rate'
,L_G_AMOUNT < 'X_OUTPUT_TEXT' DEFAULT '0'
)L_GRADE_AMOUNT = to_number(L_G_AMOUNT)
L_AMOUMT_MOBILE =(L_GRADE_AMOUNT)

l_actual_start_date = PAY_EARN_PERIOD_START
l_actual_end_date = PAY_EARN_PERIOD_END
NUMBER_OF_HOURS = MMRT_OVER_TIME_AMOUNT_ASG_ENTRY_VALUE
BASIC_SALARY = (BASIC_SALARY_AMOUNT_ASG_ENTRY_VALUE / 12)
HOUSING_AMOUNT = BASIC_SALARY * 0.25
TRANSP_AMOUNT = BASIC_SALARY * 0.10
DAILY_SALARY = (((BASIC_SALARY ) + HOUSING_AMOUNT + TRANSP_AMOUNT + L_AMOUMT_MOBILE
) /30)/8
DAILY_SALARY2 = ((BASIC_SALARY /30)/8)

OVERTIME = DAILY_SALARY * 1 * NUMBER_OF_HOURS

OVERTIME2 = DAILY_SALARY2 * 0.5 * NUMBER_OF_HOURS

OVERTIME3 = OVERTIME +OVERTIME2

pay_value = OVERTIME3

RETURN pay_value

/*
HCM Team

Overtime Calculation
04-05-2021
*/
DEFAULT FOR NUMBER_OF_HOURS IS 0
DEFAULT FOR OVER_TIME_COMPENSATION_NUMBER_OF_HOURS_ASG_ENTRY_VALUE IS 0
DEFAULT FOR PAY_EARN_PERIOD_START IS '0001/01/01 00:00:00' (DATE)
DEFAULT FOR PAY_EARN_PERIOD_END IS '4712/12/31 00:00:00' (DATE)
DEFAULT FOR TYPE IS ' '

DEFAULT FOR pay_value is 0

default for BASIC_SALARY_AMOUNT_ASG_ENTRY_VALUE is 0


INPUTS ARE NUMBER_OF_HOURS(NUMBER) ,HR_ID (NUMBER), EFF_DATE(DATE)
/*
L_HR_REL_ID = HR_ID
L_EFF_DATE = EFF_DATE
*/
l_pay = 0
L_G_AMOUNT = '0'

L_Basic_salary2= 0

L_HR_Payment_ID = ASG_HR_ASG_ID
l_eff_date = PAY_EARN_PERIOD_END
CALL_FORMULA
('XXX_HR_GET_GRADE_RATE_VALUE'
,L_HR_Payment_ID > 'hr_id'
,l_eff_date > 'eff_date'
,'GRADE_RATE_VALUE' > 'mode'
,'XXX_HR_Mobile_GRADE_RATE' > 'grade_rate'
,L_G_AMOUNT < 'X_OUTPUT_TEXT' DEFAULT '0'
)L_GRADE_AMOUNT = to_number(L_G_AMOUNT)
L_AMOUMT_MOBILE =(L_GRADE_AMOUNT)

CALL_FORMULA
('XXX_HR_BASIC_SALARY_INFO'
,L_HR_Payment_ID > 'ASG_ID'
,l_eff_date > 'P_DATE'
,L_Basic_salary2 < 'X_OUTPUT_NUMBER' DEFAULT 0
)

l_actual_start_date = PAY_EARN_PERIOD_START
l_actual_end_date = PAY_EARN_PERIOD_END
NUMBER_OF_HOURS = OVER_TIME_COMPENSATION_NUMBER_OF_HOURS_ASG_ENTRY_VALUE
BASIC_SALARY = L_Basic_salary2
HOUSING_AMOUNT = BASIC_SALARY * 0.25
TRANSP_AMOUNT = BASIC_SALARY * 0.10

DAILY_SALARY = (((BASIC_SALARY ) + HOUSING_AMOUNT + TRANSP_AMOUNT +


L_AMOUMT_MOBILE ) /30)/8
DAILY_SALARY2 = ((BASIC_SALARY /30)/8)

OVERTIME = DAILY_SALARY * 1 * NUMBER_OF_HOURS

OVERTIME2 = DAILY_SALARY2 * 0.5 * NUMBER_OF_HOURS

OVERTIME3 = OVERTIME +OVERTIME2

pay_value = OVERTIME3

RETURN pay_value
DEFAULT FOR X IS ' '
DEFAULT FOR BUSINESS_TRIP_MMRT_AMOUNT_ASG_ENTRY_VALUE is 0
DEFAULT FOR Amount is 0
DEFAULT FOR mesg is ' '
DEFAULT FOR ENTRY_LEVEL IS 'AP'
DEFAULT FOR PAYROLL_PERIOD_TYPE IS ' '
DEFAULT FOR PAY_EARN_PERIOD_START is '0001/01/01 00:00:00' (date)
DEFAULT FOR PAY_EARN_PERIOD_END is '4712/12/31 00:00:00' (date)
DEFAULT FOR Days_Of_Trip is 0
DEFAULT FOR pay_value is 0
DEFAULT FOR TRIP_TYPE IS ' '

/* Inputs */
INPUTS ARE Amount (number),Days_Of_Trip,TRIP_TYPE

l_PER_ASG_GRADE_NAME = ' '


CALL_FORMULA
('MMRT_PAYROLL_HR',
l_PER_ASG_GRADE_NAME > 'PER_ASG_GRADE_NAME',
X < 'GRADE_NAME' DEFAULT ' '
)

IF((
X = 'SA 6'
OR X = 'SA 7'
OR X = 'SA 8'
OR X = 'SA 9'
OR X = 'SA 10'
OR X = 'SA 11'
OR X = 'SA 12'
OR X = 'SA 13')
AND TRIP_TYPE ='Inside KSA') then
(
Amount = 700 * Days_Of_Trip
)

ELSE IF

((
X = 'SA 6'
OR X = 'SA 7'
OR X = 'SA 8'
OR X = 'SA 9'
OR X = 'SA 10'
OR X = 'SA 11'
OR X = 'SA 12'
OR X = 'SA 13')
AND TRIP_TYPE ='Out Side KSA') then
(
Amount = 1000 * Days_Of_Trip
)
ELSE IF
((
X = 'SA 6'
OR X = 'SA 7'
OR X = 'SA 8'
OR X = 'SA 9'
OR X = 'SA 10'
OR X = 'SA 11'
OR X = 'SA 12'
OR X = 'SA 13'
)
AND TRIP_TYPE ='Europe') then
(
Amount = 1500 * Days_Of_Trip
)

ELSE IF
((
X = 'SA 14'
OR X = 'SA 15'
OR X = 'SA 16'
OR X = 'SA 17'
)
AND TRIP_TYPE ='Inside KSA') then
(
Amount = 1000 * Days_Of_Trip
)

ELSE IF
((
X = 'SA
14'
OR X = 'SA
15'
OR X = 'SA
16'
OR X = 'SA
17'
)
AND TRIP_TYPE ='Out Side KSA') then
(
Amount = 1400 * Days_Of_Trip
)

ELSE IF
((
X = 'SA 14'
OR X = 'SA 15'
OR X = 'SA 16'
OR X = 'SA 17') AND TRIP_TYPE ='Europe') then
(
Amount = 2000 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 18'
OR X = 'SA 19'
OR X = 'SA 20'
OR X = 'SA 21') AND TRIP_TYPE ='Inside KSA') then
(
Amount = 1500 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 18'
OR X = 'SA 19'
OR X = 'SA 20'
OR X = 'SA 21') AND TRIP_TYPE ='Out Side KSA') then
(
Amount = 1800 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 18'
OR X = 'SA 19'
OR X = 'SA 20'
OR X = 'SA 21') AND TRIP_TYPE ='Europe') then
(
Amount = 2200 * Days_Of_Trip
)

pay_value= Amount
RETURN pay_value

/*
HCM Team

Overtime Calculation
04-05-2021
*/
DEFAULT FOR NUMBER_OF_HOURS IS 0
DEFAULT FOR MMRT_N_OVERTIME_NUMBER_OF_HOURS_ASG_ENTRY_VALUE IS 0
DEFAULT FOR PAY_EARN_PERIOD_START IS '0001/01/01 00:00:00' (DATE)
DEFAULT FOR PAY_EARN_PERIOD_END IS '4712/12/31 00:00:00' (DATE)
DEFAULT FOR TYPE IS ' '
DEFAULT FOR pay_value is 0
DEFAULT FOR BASIC_SALARY_AMOUNT_ASG_ENTRY_VALUE is 0

INPUTS ARE NUMBER_OF_HOURS(NUMBER) ,HR_ID (NUMBER), EFF_DATE(DATE)


/*
L_HR_REL_ID = HR_ID
L_EFF_DATE = EFF_DATE
*/
l_pay = 0
L_G_AMOUNT = '0'

L_Basic_salary2= 0

L_HR_Payment_ID = ASG_HR_ASG_ID
l_eff_date = PAY_EARN_PERIOD_END
CALL_FORMULA
('XXX_HR_GET_GRADE_RATE_VALUE'
,L_HR_Payment_ID > 'hr_id'
,l_eff_date > 'eff_date'
,'GRADE_RATE_VALUE' > 'mode'
,'XXX_HR_Mobile_GRADE_RATE' > 'grade_rate'
,L_G_AMOUNT < 'X_OUTPUT_TEXT' DEFAULT '0'
)L_GRADE_AMOUNT = to_number(L_G_AMOUNT)
L_AMOUMT_MOBILE =(L_GRADE_AMOUNT)

CALL_FORMULA
('XXX_HR_BASIC_SALARY_INFO'
,L_HR_Payment_ID > 'ASG_ID'
,l_eff_date > 'P_DATE'
,L_Basic_salary2 < 'X_OUTPUT_NUMBER' DEFAULT 0
)

l_actual_start_date = PAY_EARN_PERIOD_START
l_actual_end_date = PAY_EARN_PERIOD_END
NUMBER_OF_HOURS = MMRT_N_OVERTIME_NUMBER_OF_HOURS_ASG_ENTRY_VALUE
BASIC_SALARY = L_Basic_salary2
HOUSING_AMOUNT = BASIC_SALARY * 0.25
TRANSP_AMOUNT = BASIC_SALARY * 0.10

DAILY_SALARY = (((BASIC_SALARY ) + HOUSING_AMOUNT + TRANSP_AMOUNT +


L_AMOUMT_MOBILE ) /30)/8
DAILY_SALARY2 = ((BASIC_SALARY /30)/8)

OVERTIME = DAILY_SALARY * 1 * NUMBER_OF_HOURS

OVERTIME2 = DAILY_SALARY2 * 0.5 * NUMBER_OF_HOURS

OVERTIME3 = OVERTIME +OVERTIME2

pay_value = OVERTIME3

RETURN pay_value
DEFAULT FOR X IS ' '
DEFAULT FOR BUSINESS_TRIP_MMRT_AMOUNT_ASG_ENTRY_VALUE is 0
DEFAULT FOR Amount is 0
DEFAULT FOR mesg is ' '
DEFAULT FOR ENTRY_LEVEL IS 'AP'
DEFAULT FOR PAYROLL_PERIOD_TYPE IS ' '
DEFAULT FOR PAY_EARN_PERIOD_START is '0001/01/01 00:00:00' (date)
DEFAULT FOR PAY_EARN_PERIOD_END is '4712/12/31 00:00:00' (date)
DEFAULT FOR Days_Of_Trip is 0
DEFAULT FOR pay_value is 0
DEFAULT FOR TRIP_TYPE IS ' '

/* Inputs */
INPUTS ARE Amount (number),Days_Of_Trip,TRIP_TYPE

l_PER_ASG_GRADE_NAME = ' '


CALL_FORMULA
('MMRT_PAYROLL_HR',
l_PER_ASG_GRADE_NAME > 'PER_ASG_GRADE_NAME',
X < 'GRADE_NAME' DEFAULT ' '
)

IF((
X = 'SA 6'
OR X = 'SA 7'
OR X = 'SA 8'
OR X = 'SA 9'
OR X = 'SA 10'
OR X = 'SA 11'
OR X = 'SA 12'
OR X = 'SA 13')
AND TRIP_TYPE ='Inside KSA') then
(
Amount = 700 * Days_Of_Trip
)

ELSE IF

((
X = 'SA 6'
OR X = 'SA 7'
OR X = 'SA 8'
OR X = 'SA 9'
OR X = 'SA 10'
OR X = 'SA 11'
OR X = 'SA 12'
OR X = 'SA 13')
AND TRIP_TYPE ='Out Side KSA') then
(
Amount = 1000 * Days_Of_Trip
)
ELSE IF
((
X = 'SA 6'
OR X = 'SA 7'
OR X = 'SA 8'
OR X = 'SA 9'
OR X = 'SA 10'
OR X = 'SA 11'
OR X = 'SA 12'
OR X = 'SA 13'
)
AND TRIP_TYPE ='Europe') then
(
Amount = 1500 * Days_Of_Trip
)

ELSE IF
((
X = 'SA 14'
OR X = 'SA 15'
OR X = 'SA 16'
OR X = 'SA 17'
)
AND TRIP_TYPE ='Inside KSA') then
(
Amount = 1000 * Days_Of_Trip
)

ELSE IF
((
X = 'SA
14'
OR X = 'SA
15'
OR X = 'SA
16'
OR X = 'SA
17'
)
AND TRIP_TYPE ='Out Side KSA') then
(
Amount = 1400 * Days_Of_Trip
)

ELSE IF
((
X = 'SA 14'
OR X = 'SA 15'
OR X = 'SA 16'
OR X = 'SA 17') AND TRIP_TYPE ='Europe') then
(
Amount = 2000 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 18'
OR X = 'SA 19'
OR X = 'SA 20') AND TRIP_TYPE ='Inside KSA') then
(
Amount = 1500 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 18'
OR X = 'SA 19'
OR X = 'SA 20') AND TRIP_TYPE ='Out Side KSA') then
(
Amount = 1800 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 18'
OR X = 'SA 19'
OR X = 'SA 20') AND TRIP_TYPE ='Europe') then
(
Amount = 2200 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 21'
OR X = 'SA 22'
OR X = 'SA 23'
OR X = 'SA 24') AND TRIP_TYPE ='Inside KSA') then
(
Amount = 1800 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 21'
OR X = 'SA 22'
OR X = 'SA 23'
OR X = 'SA 24') AND TRIP_TYPE ='Out Side KSA') then
(
Amount = 2100 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 21'
OR X = 'SA 22'
OR X = 'SA 23'
OR X = 'SA 24') AND TRIP_TYPE ='Europe') then
(
Amount = 2500 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 25') AND TRIP_TYPE ='Inside KSA') then
(
Amount = 2100 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 25') AND TRIP_TYPE ='Out Side KSA') then
(
Amount = 2500 * Days_Of_Trip
)

ELSE IF
( (
X = 'SA 25') AND TRIP_TYPE ='Europe') then
(
Amount = 3000 * Days_Of_Trip
)

pay_value= Amount
RETURN pay_value

You might also like