Car Allowance Formulla.

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 3

/*

FORMULA NAME :ESC_SECONDNESS_CAR_ALLOWANCE


THIS FORMULA IS USED TO CALCULATES THE CAR ALLOWANCe
CREATED BY:4IAPPS
MODIFIED BY DATE DESCRIPTION OF CHANGES
---------------------------------------------------------*/
ALIAS PAY_PROC_PERIOD_START_DATE AS P_START_DATE
ALIAS PAY_PROC_PERIOD_END_DATE AS P_END_DATE
ALIAS EMP_HIRE_DATE
AS H_DATE
ALIAS EMP_TERM_DATE
AS TERM_DATE
DEFAULT FOR PRORATE_START
IS '1900/01/01 00:00:00' (DATE)
DEFAULT FOR PRORATE_END
IS '4712/12/31 00:00:00' (DATE)
DEFAULT FOR P_START_DATE
IS '1900/01/01 00:00:00' (DATE)
DEFAULT FOR P_END_DATE
IS '4712/12/31 00:00:00' (DATE)
DEFAULT FOR H_DATE
IS '1900/01/01 00:00:00' (DATE)
DEFAULT FOR TERM_DATE
IS '4712/12/31 00:00:00' (DATE)
DEFAULT FOR PRO_START_DATE
IS '1900/01/01 00:00:00' (DATE)
DEFAULT FOR PRO_END_DATE
IS '4712/12/31 00:00:00' (DATE)
INPUTS ARE PAY_VALUE,
AMOUNT,
PRORATE_START (DATE),
PRORATE_END (DATE)
MESG = ' '
IF PRORATE_START WAS DEFAULTED
THEN
L_START_DATE = P_START_DATE
ELSE
L_START_DATE = PRORATE_START
IF PRORATE_END WAS DEFAULTED
THEN
L_END_DATE = P_END_DATE
ELSE
L_END_DATE = PRORATE_END

PRO_START_DATE = GREATEST(P_START_DATE,PRORATE_START,H_DATE)
PRO_END_DATE = LEAST(P_END_DATE,PRORATE_END,TERM_DATE)
L_MONTH_DAYS = DAYS_BETWEEN(P_END_DATE,P_START_DATE) + 1
L_ACTUAL_DAYS = DAYS_BETWEEN(PRO_END_DATE,PRO_START_DATE) + 1
PAYMENT = (AMOUNT / L_MONTH_DAYS)
PAYMENT1 = PAYMENT * L_ACTUAL_DAYS
UNPAID_LEAVE =
ESC_GET_UNPAID_DAYS_PRO(PRO_START_DATE,PRO_END_DATE,P_START_
DATE,P_END_DATE,'Basic Salary','Amount')
IND_SICK_LEAVE =
ESC_GET_IND_SICK_LEAVE_DAYS_PRO(PRO_START_DATE,PRO_END_DATE,
P_START_DATE,P_END_DATE,'Basic Salary','Amount')
MAT_LEAVE =
ESC_GET_MATERNITY_LEAVE_DAYS_PRO(H_DATE,PRO_START_DATE,PRO_E
ND_DATE,P_START_DATE,P_END_DATE,'Basic Salary','Amount')
DEDUCT = (UNPAID_LEAVE + IND_SICK_LEAVE+ MAT_LEAVE)
PAY = (PAYMENT1 - DEDUCT)

MESG = 'PRO_START_DATE' + '


' + TO_CHAR(UNPAID_LEAVE) +
'PRO_END_DATE' + '
' + TO_CHAR(MAT_LEAVE)
/* FIRST HIRE SALARY */
PREVIOUS_PAYROLL_PERIOD = ADD_MONTHS(P_START_DATE,-1)
PREVIOUS_PAY_END_PERIOD = ADD_MONTHS(P_END_DATE,-1)
HIRE_FLAG =
ESC_GET_HIRE_DATE_FLAG(PREVIOUS_PAYROLL_PERIOD,PREVIOUS_PAY_
END_PERIOD)
IF
ESC_GET_BALANCE_VALUE('FIRST_SALARY','_ASG_ITD',PREVIOUS_PAY_EN
D_PERIOD) = 0 AND
HIRE_FLAG = 'Y' AND
TO_CHAR(P_END_DATE,'MMYYYY') <> TO_CHAR(H_DATE,'MMYYYY') THEN
(

ADDITIONAL_DAYS =
DAYS_BETWEEN(LAST_DAY(PREVIOUS_PAYROLL_PERIOD),H_DATE) + 1
PAY = PAY + AMOUNT * ADDITIONAL_DAYS /
TO_NUMBER(TO_CHAR(LAST_DAY(PREVIOUS_PAYROLL_PERIOD),'DD'))
)
RETURN PAY,MESG

You might also like