Home      Ask a Question      My Stuff      Help   
  
Accrue Based on Hours Worked (Sick Accrual)
A few places are starting to have a Sick accrual law that requires employers to have employees accrue 1 hour of Sick for every 30 hours worked. The employees can accrue up to 40 hours in a year.


DISCLAIMER: Keep in mind that we have this written for a single policy, and the scripting may need to be adjusted for your specific region. Along with that, we are not lawyers and this scripting has been done to our interpretation of the policy; providing this scripting does not make us accountable nor does it guarantee using this script will put your client in compliance with the law.


IMPORTANT: For this accrual you will need "3 BUCKETS", one for the Sick, one to see how much they have already accrued in the year, and one to track the Hours. In our scripting the buckets a referred to as "Hours", "Accrued Hours", and "Sick"; you will want to place these Three names in the bottom left of the AccrueUp processing rule.



//// AccrueUpScript Top Box ////

//Used to accrue each hour worked. (* If any hours on the time card work towards your regions accrual this script will need an adjustment.)

if(istimes){
accrueup("Hours",hours);
}



//// AccrueUpScript Bottom Box ////

//Threshold of hours worked
$WorkedHours = 30;
//How many hours can be accrued in a year
$AccruedHours = 40;
//How many days after the start date until the employees can use the hours
$DaysAfterStart = 90;
//How many hours are accrued after crossing the $WorkedHours threshold
$ConvertedHours = 1;
//How many hours max the employee can have of Sick
$MaxSick = 40;


//This scripting is what actually accrues the Sick time. Once the $WorkedHours threshold is crossed, it removes those hours and if under the $AccruedHours limit will accrue up the $ConvertedHours to a maximum of the $MaxSick.

if(reportingdate.date >= "2017-01-01"){
if(getbalance("Hours") >= $WorkedHours){
accruedown("Hours",$WorkedHours);
if(getbalance("Accrued Hours") < $AccruedHours){
accrueup("Sick", $ConvertedHours, $MaxSick, employee.startdate + $DaysAfterStart);
accrueup("Accrued Hours", $ConvertedHours, $AccruedHours, "", dateserial(reportingdate.year,12,31));
}
}
}


//// AccrueDownScript ////

//If the category is "Sick", will use the hours in the "Sick" bucket down to 0; will unpay anything past that.

if(reportingdate.date >= "2017-01-01" and category = "Sick"){
$shortfall = accruedown(category, hours, 0);
unpay($shortfall);
}



////End of scripting


With all three sections of scripting filled out you should be all set to accrue and use Sick.
ID
1380
Category
>Support
  Accruals
Date Created
11/21/2014 10:39:26 AM
Date Updated
7/28/2017 2:01:59 PM
Back to Search Results