1198: IF l_period_type = 'Lunar Month' THEN
1199: Average_SI_days:= fnd_number.canonical_to_number(pay_nl_general.get_global_value(p_effective_date,'NL_SI_AVERAGE_DAYS_4WEEKLY'));
1200: END IF;
1201: IF l_asg_start_date > l_period_start_date THEN
1202: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1203: IF l_Asg_End_Date < l_period_end_date THEN
1204: Work_Days := fffunc.days_between(l_asg_end_date, l_asg_start_date) + 1;
1205: ELSE
1206: Work_Days := fffunc.days_between(l_period_end_date, l_asg_start_date) + 1;
1200: END IF;
1201: IF l_asg_start_date > l_period_start_date THEN
1202: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1203: IF l_Asg_End_Date < l_period_end_date THEN
1204: Work_Days := fffunc.days_between(l_asg_end_date, l_asg_start_date) + 1;
1205: ELSE
1206: Work_Days := fffunc.days_between(l_period_end_date, l_asg_start_date) + 1;
1207: END If;
1208: Average_SI_Days := round((Average_SI_Days / Total_Days * Work_Days),2);
1202: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1203: IF l_Asg_End_Date < l_period_end_date THEN
1204: Work_Days := fffunc.days_between(l_asg_end_date, l_asg_start_date) + 1;
1205: ELSE
1206: Work_Days := fffunc.days_between(l_period_end_date, l_asg_start_date) + 1;
1207: END If;
1208: Average_SI_Days := round((Average_SI_Days / Total_Days * Work_Days),2);
1209:
1210: ELSE
1208: Average_SI_Days := round((Average_SI_Days / Total_Days * Work_Days),2);
1209:
1210: ELSE
1211: IF l_asg_end_date < l_period_end_date THEN
1212: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1213: Work_Days := fffunc.days_between(l_asg_end_date, l_period_start_date) + 1;
1214: Average_SI_Days := round((Average_SI_Days / Total_Days * Work_Days),2);
1215: END IF;
1216: END IF;
1209:
1210: ELSE
1211: IF l_asg_end_date < l_period_end_date THEN
1212: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1213: Work_Days := fffunc.days_between(l_asg_end_date, l_period_start_date) + 1;
1214: Average_SI_Days := round((Average_SI_Days / Total_Days * Work_Days),2);
1215: END IF;
1216: END IF;
1217:
1442: /* Added Proration code for Bug 3412227
1443: Pro-rate SI base and threshold if employee started or left during the payroll period */
1444: IF l_Asg_Start_Date > l_period_start_date THEN
1445:
1446: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1447: IF l_Asg_End_Date < l_period_end_date THEN
1448: Work_Days := fffunc.days_between(l_Asg_End_Date, l_Asg_Start_Date) + 1;
1449: ELSE
1450: Work_Days := fffunc.days_between(l_period_end_date, l_Asg_Start_Date) + 1;
1444: IF l_Asg_Start_Date > l_period_start_date THEN
1445:
1446: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1447: IF l_Asg_End_Date < l_period_end_date THEN
1448: Work_Days := fffunc.days_between(l_Asg_End_Date, l_Asg_Start_Date) + 1;
1449: ELSE
1450: Work_Days := fffunc.days_between(l_period_end_date, l_Asg_Start_Date) + 1;
1451: END IF;
1452: Threshold_or_Max_SI := round((Threshold_or_Max_SI / Total_Days * Work_Days),2);
1446: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1447: IF l_Asg_End_Date < l_period_end_date THEN
1448: Work_Days := fffunc.days_between(l_Asg_End_Date, l_Asg_Start_Date) + 1;
1449: ELSE
1450: Work_Days := fffunc.days_between(l_period_end_date, l_Asg_Start_Date) + 1;
1451: END IF;
1452: Threshold_or_Max_SI := round((Threshold_or_Max_SI / Total_Days * Work_Days),2);
1453:
1454: ELSE
1454: ELSE
1455:
1456: IF l_Asg_End_Date < l_period_end_date THEN
1457:
1458: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1459: Work_Days := fffunc.days_between(l_Asg_End_Date, l_period_start_date) + 1;
1460: Threshold_or_Max_SI := round((Threshold_or_Max_SI / Total_Days * Work_Days),2) ;
1461:
1462: END IF;
1455:
1456: IF l_Asg_End_Date < l_period_end_date THEN
1457:
1458: Total_Days := fffunc.days_between(l_period_end_date, l_period_start_date) + 1;
1459: Work_Days := fffunc.days_between(l_Asg_End_Date, l_period_start_date) + 1;
1460: Threshold_or_Max_SI := round((Threshold_or_Max_SI / Total_Days * Work_Days),2) ;
1461:
1462: END IF;
1463: END IF;