0% found this document useful (0 votes)
194 views5 pages

SSN Deduction

This formula calculates social security deduction amounts for eligible assignments. It takes into account factors like the employee's hire and termination dates, salary, unpaid leave days, maximum insurable salary, age, and certain custom fields to determine the employee and company contribution amounts. It returns these values along with a message detailing the calculation values and flags.

Uploaded by

Marwan S
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)
194 views5 pages

SSN Deduction

This formula calculates social security deduction amounts for eligible assignments. It takes into account factors like the employee's hire and termination dates, salary, unpaid leave days, maximum insurable salary, age, and certain custom fields to determine the employee and company contribution amounts. It returns these values along with a message detailing the calculation values and flags.

Uploaded by

Marwan S
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/ 5

/******************************************************************************

*
* Formula Name: AMC_CL_JO_SOCIAL_SECURITY
*
* Description: Formula will calculate and retrun the social security deduction
amount for each eligable assignment.
*
*
* Change History
* -------------*
* Who
Date
Description
* ---------- ---------------------------------------------------------* T.Fayez
10-MAY-2008
Create.
* M.Fawzi
22-3-2010
Update
*****************************************************************************/
/**** Database Items ****/
ALIAS AMC_SOC_SEC_COMP AS COMP_SHARE
ALIAS AMC_SOC_SEC_EMP AS EMP_SHARE

ALIAS GROUP_KF_SOCIAL_SECURITY_EXCEPTION AS SOCIAL_SECURITY_EXCEPTION


ALIAS PER_DATE_OF_BIRTH AS birth_date
DEFAULT FOR birth_date IS '0001/01/01 00:00:00'(Date)
ALIAS EMP_LEAVING_REASON AS leave_reason
DEFAULT FOR leave_reason IS 'X'
DEFAULT FOR PAY_PROC_PERIOD_START_DATE
IS '1900/01/01
(DATE)
DEFAULT FOR PAY_PROC_PERIOD_END_DATE
IS '4712/12/31
(DATE)
DEFAULT FOR HOUSING_ALLOWANCE
IS 0
DEFAULT FOR EMP_HIRE_DATE
IS '1900/01/01
(DATE)
DEFAULT FOR EMP_TERM_DATE
IS '4712/12/31
(DATE)
DEFAULT FOR ASG_SALARY
IS 0
DEFAULT FOR PER_EMP_NUMBER
IS ' '
DEFAULT FOR ASG_GROUP
IS ' '
DEFAULT FOR PER_PERSON_TYPE
IS ' '
DEFAULT FOR ASG_JOB
IS ' '
/*DEFAULT FOR GROUP_KF_EXCLUDE_FROM_SOCIAL_SECURITY
IS 'N'*/
DEFAULT FOR AMC_SOC_SEC_MAX_INS_SAL
IS 0
/**** Balances ****/
DEFAULT FOR SOCIAL_SECURITY_BEGINING_ASG_YTD
IS 0
DEFAULT FOR AMC_TRANSPORTATION_ALLOWANCE_ASG_RUN
IS 0
DEFAULT FOR AMC_HOUSING_ALLOWANCE_ASG_RUN
IS 0
DEFAULT FOR SOCIAL_SECURITY_EXCEPTION IS 'X'
/**** Input Value ****/
DEFAULT FOR Override_Amount
DEFAULT FOR Beginig_Amount
DEFAULT FOR END_USER_COLUMN_NAME_MIR
defAult for PEOPLE_High_Risk_Jobs is 'No'

IS 0
IS 0
IS ' '

00:00:00'
00:00:00'
00:00:00'
00:00:00'

/**** ALIAS *****/


ALIAS PAY_PROC_PERIOD_START_DATE
ALIAS PAY_PROC_PERIOD_END_DATE

AS P_Start_Date
AS P_End_Date

ALIAS EMP_HIRE_DATE
ALIAS EMP_TERM_DATE
ALIAS ASG_SALARY

AS E_Hire_Date
AS E_Term_Date
AS Salary

ALIAS SOCIAL_SECURITY_BEGINING_ASG_YTD
ALIAS AMC_HOUSING_ALLOWANCE_ASG_RUN
ALIAS AMC_TRANSPORTATION_ALLOWANCE_ASG_RUN
nce
/*ALIAS GROUP_KF_EXCLUDE_FROM_SOCIAL_SECURITY
ALIAS AMC_SOC_SEC_MAX_INS_SAL

AS SS_VALUE
AS Housing_Allowance_Bal
AS Transportation_Allowa
AS EXCLUDE*/
AS MAX_INS_SAL

INPUTS ARE
Override_Amount,
HOUSING_ALLOWANCE,
Beginig_Amount
Used_Start_Date = P_Start_Date
Used_End_Date = P_End_Date
flag = 10
END_USER_COLUMN_NAME_MIR = PEOPLE_High_Risk_Jobs
/* -----------------------------------------------*/
IF SOCIAL_SECURITY_EXCEPTION = 'OTHER_JOB' THEN
( Messg1 = 'Social Security: Excluded because of working for other company'
RETURN Messg1, flag
)
/* -----------------------------------------------*/
Used_value

= 0

Days_in_Period
Worked_Days
term_emp
COMPANY_SS

=
=
=
=

0
0
0
0

Messg1 = ELEMENT_NAME +' '


Messg1 = Messg1 + ASG_GROUP
/******************************************************************************/
/* End Dates Validation */
/**** for the end dates ****/
Used_End_Date = P_End_Date
IF Emp_Term_Date WAS NOT DEFAULTED THEN
(
IF Emp_Term_Date >= P_Start_Date AND Emp_Term_Date <= P_End_Date THEN
(
Used_End_Date = Emp_Term_Date
)
)
/**** for the start dates ****/
Used_Start_Date = P_Start_Date
IF EMP_HIRE_DATE WAS NOT DEFAULTED THEN
(
IF EMP_HIRE_DATE >= P_Start_Date AND EMP_HIRE_DATE <=P_End_Date THEN

(
Used_Start_Date = EMP_HIRE_DATE
)
)
L_UNPAID_LEAVES = GET_ABS_DAYS(P_Start_Date,P_End_Date,'Unpaid Leave')
Days_in_Period = Days_Between(P_End_Date,P_Start_Date) +1
Worked_Days = Days_Between(Used_End_Date,Used_Start_Date) + 1 - L_UNPAID_LEAVE
S
/*******************************************************************************
*******/
FUEL = 0.1 * Salary
IF FUEL < 40 THEN
(
FUEL = 40
)
IF FUEL > 60 THEN
(
FUEL = 60
)
/*******************************************************************************
**/
L_SS_SAL = LEAST(Salary + Fuel + Housing_Allowance_Bal + Transportation_Allowa
nce, MAX_INS_SAL)
/*******************************************************************************
**/
/***************************************************
IF SS_VALUE WAS DEFAULTED THEN
(
IF Beginig_Amount WAS NOT DEFAULTED THEN
(
l_ss_sal = Beginig_Amount
)
)
***************************************************/
If SS_VALUE = 0 then
( flag = 20
If (EMP_HIRE_DATE >= P_Start_Date AND EMP_HIRE_DATE <= P_End_Date )
OR (TO_CHAR(P_Start_Date,'MON') = 'JAN')
OR (SS_VALUE = 0 ) THEN
(
IF Override_Amount WAS NOT DEFAULTED THEN
(
flag = 30
Pay_Value = Override_Amount
COMPANY_SS = Override_Amount * (10/EMP_SHARE)
)
ELSE
( V_Begining_Amount = l_SS_SAL * (EMP_SHARE/100)
Pay_Value
= l_SS_SAL * (EMP_SHARE/100)
COMPANY_SS
= l_SS_SAL * (COMP_SHARE/100)
flag = 40
)
)

)
ELSE
(
Pay_Value
= SS_VALUE
COMPANY_SS
= SS_VALUE * (COMP_SHARE / EMP_SHARE)
V_Begining_Amount = 0
flag = 50
)
age = round(months_between (p_start_date, birth_date) / 12, 2)
IF (Worked_Days < 16
(
V_Begining_Amount =
Pay_Value
=
COMPANY_SS
=
flag = 16
)

and upper(leave_reason) not like '%DEATH%') THEN


0
0
0

IF (age > 60 and SOCIAL_SECURITY_EXCEPTION <> 'ABOVE_60') then


(
V_Begining_Amount = 0
Pay_Value
= 0
COMPANY_SS
= 0
flag = 60
)
IF (age > 60 and SOCIAL_SECURITY_EXCEPTION <> 'Include although age is above 60
years')then
(
V_Begining_Amount = 0
Pay_Value
= 0
COMPANY_SS
= 0
flag = 60
)
IF (age > 60 and SOCIAL_SECURITY_EXCEPTION = 'Include although age is above 60 y
ears')then
(
Pay_Value
= SS_VALUE
COMPANY_SS
= SS_VALUE * (COMP_SHARE / EMP_SHARE)
V_Begining_Amount = 0
flag = 100
)
IF (age > 60 and SOCIAL_SECURITY_EXCEPTION = 'ABOVE_60')then
(
Pay_Value
= SS_VALUE
COMPANY_SS
= SS_VALUE * (COMP_SHARE / EMP_SHARE)
V_Begining_Amount = 0
flag = 110
)
If (END_USER_COLUMN_NAME_MIR = 'Yes') then
(
Pay_Value
= l_SS_SAL * ((EMP_SHARE)/100)
COMPANY_SS
= l_SS_SAL * ((COMP_SHARE+1)/100)
V_Begining_Amount = 0

flag = 120
)
messg1 = 'Social Security: Insuarance Salary: ' + to_char(l_SS_SAL) +
' Flag: ' + to_char(flag) +
' Age: ' + to_char(age) +
' Leave Reason: ' + leave_reason +
' Override Amount: ' + to_char(Override_Amount)+
' Exception Reason: '+ SOCIAL_SECURITY_EXCEPTION+
'SS_VALUE:'+to_text(SS_VALUE)+';END_USER_COLUMN_NAME_MIR:'+END_USER_COLUMN_NAME_
MIR+';PEOPLE_High_Risk_Jobs:'+PEOPLE_High_Risk_Jobs
RETURN Pay_Value, V_Begining_Amount , Messg1, COMPANY_SS

You might also like