OK - I'm still building the code so I can test this, but here's what I've got
so far:
Select Case anniv
Case Is < 2
LAccrualRate = 1.54
' Calculate day of last day of hire year
DtEndOfYear = CDate("12/31/" & CStr(Year(hiredate)))
LCountDays = Day(DtEndOfYear) - Day(hiredate)
' Check to see if 180 days elapsed between hiredate and end of hire year
If LCountDays > 180 Then
' if so, was employee hired last year?
If Year(hiredate) < Year(Now) Then
' if so, hours accrued = 80
LHoursRemain = 80
Else
' if not, hours accrued = weeks * 1.54
LWeeksWorked = LCountDays / 7
LHoursRemain = LWeeksWorked * 1.54
End If
Else
' if 180 days not elapsed, hours accrued=0
LHoursRemain = 0
End If
Case 2 To 4
LHoursRemain = 80
LAccrualRate = 1.54
Case 5 To 14
LHoursRemain = 120
LAccrualRate = 2.31
Case Is > 14
LHoursRemain = 160
LAccrualRate = 3.08
End Select
--
Adios,
Clay Harryman
"Clayman" wrote:
> This is killing me. I'm developing a vacation-tracking system, and I need to
> calculate vacation based on anniversary date. Everything over 1 year is easy
> (Select Case). But less than a year it gets tricky.
>
> If they've been here less than six months, they accrue no vacation.
>
> They start accruing at a rate of 1.54 hours per pay period beginning at 180
> days, and can use vacation in advance - so we need to know the amount of
> vacation available through the end of the year.
> (Day(Now)-Day(HireDate)/7*1.54?)
>
> But if their 6-month-anniversary was before January 1, then they accrue at
> the normal rate.
>
> And vacation does not carry over from year to year.
>
> Thanks in advance.
> --
> Adios,
> Clay Harryman
|