protected override double CalculateProrata(LeaveProrataEntitle prorataEntitle) { EEmpPersonalInfo empInfo = new EEmpPersonalInfo(); empInfo.EmpID = EmpID; if (!EEmpPersonalInfo.db.select(dbConn, empInfo)) { return(0); } int addYear = Convert.ToInt32(((TimeSpan)(prorataEntitle.From - empInfo.EmpDateOfBirth)).TotalDays / 366); while (empInfo.EmpDateOfBirth.AddYears(addYear) < prorataEntitle.From) { addYear++; } DateTime birthday = empInfo.EmpDateOfBirth.AddYears(addYear); if (birthday >= prorataEntitle.From && birthday <= prorataEntitle.To) { return(prorataEntitle.LeavePlanEntitle.LeavePlanEntitleDays); } return(0); }
protected override double CalculateProrata(LeaveProrataEntitle prorataEntitle) { ELeavePlan leavePlan = new ELeavePlan(); leavePlan.LeavePlanID = prorataEntitle.LeavePlanEntitle.LeavePlanID; if (ELeavePlan.db.select(dbConn, leavePlan)) { if (leavePlan.LeavePlanUsePublicHolidayEntitle) { DBFilter publicHolidayFilter = new DBFilter(); publicHolidayFilter.add(new Match("PublicHolidayDate", ">=", prorataEntitle.From)); publicHolidayFilter.add(new Match("PublicHolidayDate", "<=", prorataEntitle.To)); //ArrayList statutoryHolidayList = EPublicHoliday.db.select(dbConn, publicHolidayFilter); return(EPublicHoliday.db.count(dbConn, publicHolidayFilter)); } else { return(0); } } else { return(0); } }
protected override double CalculateProrata(LeaveProrataEntitle prorataEntitle) { DateTime MonthlyServiceStartDate = prorataEntitle.ServerYearReferenceDate.AddMonths((prorataEntitle.From.Year - prorataEntitle.ServerYearReferenceDate.Year) * 12 + prorataEntitle.From.Month - prorataEntitle.ServerYearReferenceDate.Month); DateTime MonthlyServiceEndDate = prorataEntitle.ServerYearReferenceDate.AddMonths((prorataEntitle.From.Year - prorataEntitle.ServerYearReferenceDate.Year) * 12 + prorataEntitle.From.Month - prorataEntitle.ServerYearReferenceDate.Month + 1); if (MonthlyServiceStartDate > prorataEntitle.To) { MonthlyServiceStartDate = prorataEntitle.ServerYearReferenceDate.AddMonths((prorataEntitle.From.Year - prorataEntitle.ServerYearReferenceDate.Year) * 12 + prorataEntitle.From.Month - prorataEntitle.ServerYearReferenceDate.Month - 1); MonthlyServiceEndDate = prorataEntitle.ServerYearReferenceDate.AddMonths((prorataEntitle.From.Year - prorataEntitle.ServerYearReferenceDate.Year) * 12 + prorataEntitle.From.Month - prorataEntitle.ServerYearReferenceDate.Month); } return(((double)((TimeSpan)prorataEntitle.To.Subtract(prorataEntitle.From)).Days + 1) * prorataEntitle.LeavePlanEntitle.LeavePlanEntitleDays / (((TimeSpan)MonthlyServiceEndDate.Subtract(MonthlyServiceStartDate)).Days)); }
protected override double CalculateProrata(LeaveProrataEntitle prorataEntitle) { ELeavePlan leavePlan = new ELeavePlan(); leavePlan.LeavePlanID = prorataEntitle.LeavePlanEntitle.LeavePlanID; if (ELeavePlan.db.select(dbConn, leavePlan)) { if (leavePlan.LeavePlanUseRestDayEntitle) { if (leavePlan.LeavePlanRestDayEntitlePeriod.Equals("W")) { // Weekly Entitle DayOfWeek entitleDayOfWeek; if (leavePlan.LeavePlanRestDayWeeklyEntitleStartDay.Equals("SUN", StringComparison.CurrentCultureIgnoreCase)) { entitleDayOfWeek = DayOfWeek.Sunday; } else if (leavePlan.LeavePlanRestDayWeeklyEntitleStartDay.Equals("MON", StringComparison.CurrentCultureIgnoreCase)) { entitleDayOfWeek = DayOfWeek.Monday; } else if (leavePlan.LeavePlanRestDayWeeklyEntitleStartDay.Equals("TUE", StringComparison.CurrentCultureIgnoreCase)) { entitleDayOfWeek = DayOfWeek.Tuesday; } else if (leavePlan.LeavePlanRestDayWeeklyEntitleStartDay.Equals("WED", StringComparison.CurrentCultureIgnoreCase)) { entitleDayOfWeek = DayOfWeek.Wednesday; } else if (leavePlan.LeavePlanRestDayWeeklyEntitleStartDay.Equals("THU", StringComparison.CurrentCultureIgnoreCase)) { entitleDayOfWeek = DayOfWeek.Thursday; } else if (leavePlan.LeavePlanRestDayWeeklyEntitleStartDay.Equals("FRI", StringComparison.CurrentCultureIgnoreCase)) { entitleDayOfWeek = DayOfWeek.Friday; } else if (leavePlan.LeavePlanRestDayWeeklyEntitleStartDay.Equals("SAT", StringComparison.CurrentCultureIgnoreCase)) { entitleDayOfWeek = DayOfWeek.Saturday; } else { entitleDayOfWeek = DefaultDateOfJoin.AddDays(-1).DayOfWeek; } DateTime entitleStartDate = prorataEntitle.From; while (entitleStartDate.DayOfWeek != entitleDayOfWeek) { entitleStartDate = entitleStartDate.AddDays(1); } // 22 ~ 28 days = 4 week, 29 ~ 31 days = 5 // +6 day so that 22+6 ~ 28+6 /6 = 4.xx week =4 week int weekCount = (int)((prorataEntitle.To.Subtract(entitleStartDate).TotalDays + 1 + 6) / 7); return(weekCount * leavePlan.LeavePlanRestDayEntitleDays); } else if (leavePlan.LeavePlanRestDayEntitlePeriod.Equals("M")) { // Monthly Entitle if (prorataEntitle.From.AddMonths(1).AddDays(-1) <= prorataEntitle.To) { // whole monthly entitle return(leavePlan.LeavePlanRestDayEntitleDays); } else { // prorata double totalDays = prorataEntitle.To.Subtract(prorataEntitle.From).TotalDays + 1; if (totalDays >= leavePlan.LeavePlanRestDayMonthlyEntitleProrataBase) { return(leavePlan.LeavePlanRestDayEntitleDays); } else { double totalEntitlement = (leavePlan.LeavePlanRestDayEntitleDays * totalDays) / leavePlan.LeavePlanRestDayMonthlyEntitleProrataBase; if (leavePlan.LeavePlanRestDayMonthlyEntitleProrataRoundingRuleID > 0) { EALProrataRoundingRule roundingRule = new EALProrataRoundingRule(); roundingRule.ALProrataRoundingRuleID = leavePlan.LeavePlanRestDayMonthlyEntitleProrataRoundingRuleID; if (EALProrataRoundingRule.db.select(dbConn, roundingRule)) { totalEntitlement = roundingRule.Rounding(dbConn, totalEntitlement); } } return(totalEntitlement); } } } else { return(0); } //DBFilter statutoryHolidayFilter = new DBFilter(); //statutoryHolidayFilter.add(new Match("StatutoryHolidayDate", ">=", prorataEntitle.From)); //statutoryHolidayFilter.add(new Match("StatutoryHolidayDate", "<=", prorataEntitle.To)); //ArrayList statutoryHolidayList = EStatutoryHoliday.db.select(dbConn, statutoryHolidayFilter); } else { return(0); } } else { return(0); } }