TimeTrex API Manual

CalculatePolicy
in package

Table of Contents

$holiday_policy  : mixed
$user_date_total  : mixed
$user_date_total_insert_id  : mixed
$absence_policy  : mixed
$accrual_policy  : mixed
$accrual_time_exclusivity_map  : mixed
$break_time_policy  : mixed
$contributing_pay_code_policy  : mixed
$contributing_pay_code_policy_ids  : array<string|int, mixed>
$contributing_pay_codes_by_policy_id  : mixed
$contributing_shift_policy  : mixed
$contributing_shift_policy_ids  : array<string|int, mixed>
$currency_rates  : mixed
$dates  : mixed
$delete_system_total_time_already_run  : mixed
$exception  : mixed
$exception_policy  : mixed
$flags  : mixed
$holiday  : mixed
$holiday_after_days  : float|int
$holiday_before_days  : int
$holiday_policy_used_pay_code_ids  : mixed
$is_eligible_holiday_description  : mixed
$meal_time_policy  : mixed
$new_system_user_date_total_id  : mixed
$new_user_date_total_ids  : mixed
$original_time_zone  : mixed
$over_time_policy  : mixed
$over_time_recurse_map  : mixed
$over_time_trigger_time_exclusivity_map  : mixed
$pay_codes  : mixed
$pay_formula_average_days  : int
$pay_formula_calculate_average_hourly_rates  : mixed
$pay_formula_policy  : mixed
$pay_period_obj  : mixed
$pay_period_schedule_obj  : mixed
$pay_period_schedules  : mixed
$pay_periods  : mixed
$policy_group_holiday_policy_ids  : mixed
$premium_time_policy  : mixed
$prev_user_date_total_end_time_stamp  : mixed
$prev_user_date_total_start_time_stamp  : mixed
$profiler_start_time  : mixed
$punch  : mixed
$regular_time_exclusivity_map  : mixed
$regular_time_policy  : mixed
$schedule  : mixed
$schedule_break_time_policy_ids  : array<string|int, mixed>
$schedule_meal_time_policy_ids  : array<string|int, mixed>
$schedule_policy_break_time_policy  : mixed
$schedule_policy_max_start_stop_window  : mixed
$schedule_policy_meal_time_policy  : mixed
$schedule_policy_rs  : mixed
$schedule_regular_time_policy_ids  : array<string|int, mixed>
$schedule_undertime_absence_policy_ids  : array<string|int, mixed>
$start_week_day_id  : mixed
$undertime_absence_policy  : mixed
$user_obj  : mixed
$user_wages  : mixed
__construct()  : mixed
Determine pay period based on the date that is being calculated.
addCalculatedDate()  : bool
addPendingCalculationDate()  : bool
BreakTimePolicySortByTriggerTimeAsc()  : int
calculate()  : bool
Allow calculating up to one week at a time, as we always recalculate the remaining week anyways.
calculateAbsenceTimePolicy()  : bool
calculateAccrualPolicy()  : bool
calculateAverageHourlyRates()  : bool
This must be done after all other policies are calculated so any average calculations can include wages from all other pay codes/policies (ie: premium time wages).
calculateBreakTimePolicy()  : bool
calculateExceptionPolicy()  : bool
calculateHolidayPolicy()  : bool
calculateMealTimePolicy()  : bool
calculateOverTimePolicy()  : bool
calculateOverTimePolicyForTriggerTime()  : bool
Overtime policies need to be nested... Since they are basically like saying: Any time after Xhrs/day goes to this OT policy. If some time is filtered out, it simply applies to the next OT policy.
calculatePremiumTimePolicy()  : bool
calculateRegularTimeExclusivity()  : bool
calculateRegularTimePolicy()  : bool
calculateScheduleAbsence()  : bool
Calculates schedule absence time (exclusive to holiday absence time, or manually entered time on the timesheet)
calculateSystemTotalTime()  : bool
calculateUnderTimeAbsencePolicy()  : bool
calculateUserDateTotalStartAndEndTimeStamps()  : array<string|int, mixed>
compactMealAndBreakUserDateTotalObjects()  : array<string|int, mixed>
Since handling auto-deduct meal policies (negative total time) is virtually impossible to handle by itself when it comes to overtime/premium policies that adjust the total time themselves, this function will roll the meal/break policy time into the source record before being calculated for Reg/OT/Prem.
compactUserDateTotalDataBasedOnOverride()  : mixed
Compacts UDT records based on override, so calcualteSystemTotalTime() is correct even when new UDT records are added (override=1) and some are modified directly.
compactUserDateTotalDataBasedOnTimeStamps()  : mixed
Compacts UDT records that are next to each out to reduce the number of records required to be stored in the database.
deleteSystemTotalTime()  : bool
filterBreakTimePolicy()  : array<string|int, mixed>
filterCurrencyRate()  : object
filterHoliday()  : array<string|int, mixed>
filterMealTimePolicy()  : array<string|int, mixed>
filterOverTimePolicy()  : array<string|int, mixed>
filterPremiumTimePolicy()  : array<string|int, mixed>
filterPunchDataByDateAndTypeAndStatus()  : array<string|int, mixed>
filterRegularTimePolicy()  : array<string|int, mixed>
filterScheduleDataByDateAndDirection()  : array<string|int, mixed>
filterScheduleDataByShiftStartAndEnd()  : array<string|int, mixed>
Filter scheduled shifts based on worked shift times.
filterScheduleDataByStatus()  : array<string|int, mixed>
filterSchedulePolicyByDate()  : array<string|int, mixed>
Filter schedule policies to only those that affect a specific shift.
filterUnderTimeAbsencePolicy()  : array<string|int, mixed>
filterUserDateTotalDataByContributingShiftPolicy()  : array<string|int, mixed>
filterUserDateTotalDataByObjectTypeIDs()  : array<string|int, mixed>
filterUserDateTotalDataByPayCodeIDs()  : array<string|int, mixed>
filterUserDateTotalDataByPunchTypeIDs()  : array<string|int, mixed>
filterUserWage()  : array<string|int, mixed>|object
filterWeeklyOverTimePolicy()  : array<string|int, mixed>
Get list of all weekly overtime policies so they can be included when calculating weekly time.
getAccrualPolicy()  : bool
getAverageHourlyRate()  : bool|float|int
getBaseHourlyRate()  : bool|float|int
getBreakTimePolicy()  : bool
Get all overtime policies that could possibly apply, including from schedule policies.
getCalculatedDateRange()  : array<string|int, mixed>|bool
getContributingPayCodePolicy()  : bool
getContributingShiftPolicy()  : bool
getCurrencyRateData()  : bool
getDailyHourlyRate()  : bool|float|int
getDateRangeFromDateArray()  : mixed
Return dates that we have not already obtained data for.
getDatesToObtainDataFor()  : array<string|int, mixed>
getDayArrayUserDateTotalData()  : array<string|int, mixed>
getExceptionData()  : bool
getExceptionPolicy()  : bool
getFirstPendingDate()  : bool|mixed
getFlag()  : bool|mixed
getHolidayData()  : bool
getHolidayPolicy()  : bool
getHolidayTime()  : float|int|string
getHourlyRate()  : int
getHourlyRateWithBurden()  : int
getLastPendingDate()  : bool|mixed
getMealTimePolicy()  : bool
Get all meal policies that could possibly apply, including from schedule policies.
getNextPendingDate()  : bool|mixed
getOverTimePeriodDates()  : array<string|int, mixed>
getOverTimePolicy()  : bool
Get all overtime policies that could possibly apply, including from schedule policies.
getOverTimeTriggerArray()  : array<string|int, mixed>|bool
getOverTimeTriggerTimeAdjustAmount()  : int
getPayCode()  : bool
Need to get all pay codes referenced by policies and all pay codes used by contributing shift policies too.
getPayFormulaPolicy()  : bool
Need to get all pay formula policies referenced by policies and all pay codes too.
getPayFormulaPolicyObjectByPayFormulaIdOrPayCodeId()  : bool
getPayFormulaPolicyObjectByPolicyObject()  : bool|PayFormulaPolicyFactory
getPayPeriodObject()  : bool
getPayPeriodScheduleObject()  : bool
getPremiumTimePolicy()  : bool
getPreviousDayByUserTotalData()  : bool|mixed
getPunchData()  : bool
getRegularTimePolicy()  : bool
Get all regulartime policies that could possibly apply, including from schedule policies.
getRequiredData()  : bool
Gathers all required data to perform the calculations.
getScheduleData()  : bool
getScheduleDates()  : array<string|int, mixed>
getSchedulePolicy()  : bool
Get all possible schedule policies.
getShiftData()  : bool|array<string|int, mixed>
Returns shift data according to the pay period schedule criteria for use in determining which day punches belong to.
getShiftStartAndEndUserDateTotal()  : array<string|int, mixed>|bool
getSumScheduledDays()  : int
getSumScheduleTime()  : int
getSumUserDateTotalData()  : int
getUnderTimeAbsenceTimePolicy()  : bool
Get all absence policies that could possibly apply, including from schedule policies.
getUserDateTotalActiveAfter()  : array<string|int, mixed>|bool
getUserDateTotalData()  : bool
Grabs all user_date total data from DB for each date specified.
getUserObject()  : null
getUserWageData()  : bool
getWeeklyOverTimePolicyIDs()  : array<string|int, mixed>
getWeeklyOverTimePolicyPayCodes()  : array<string|int, mixed>
getWeeklyOverTimePolicyTypeIds()  : array<string|int, mixed>
insertUserDateTotal()  : bool
isConflictingUserDateTotal()  : bool
isEligibleForHoliday()  : bool
isOverriddenUserDateTotalObject()  : bool
Find existing UDT records that have override=TRUE and other fields matching, so we don't try to insert new UDT records.
isPastDateCalculationRequired()  : bool
Check if past date calculation is required.
isPayFormulaAccruing()  : bool
isPayFormulaPolicyAveraging()  : bool
isScheduleData()  : bool
isSecondBiWeeklyOverTimeWeek()  : bool
isUserDateTotalData()  : bool
processTriggerTimeArray()  : array<string|int, mixed>
reCalculateForJobQueue()  : false|mixed
RegularTimePolicySortByCalculationOrderAsc()  : int
removeRedundantUserDateTotalObjects()  : bool
Remove UserDateTotalObjects that cancel each other out, such as a +1800 total time and -1800 total time for the same pay_code_id.
revertTimeZone()  : bool
Save()  : bool
Keep saving all data in a separate function so we can do in-memory calculations if necessary.
setFlag()  : bool
setPayPeriodFromDate()  : bool
setTimeZone()  : bool
setUserObject()  : bool
sortPolicyByPayCodeDependancy()  : mixed
sortScheduleByDateASC()  : int
sortScheduleByDateDESC()  : int
sortUserDateTotalData()  : bool
sortUserDateTotalDataByDateAndObjectTypeAndStartTimeStampAndID()  : int
This is primarily used for compacting UDT records only.
sortUserDateTotalDataByDateAndStartTimeStampAndObjectTypeAndID()  : int
sortUserDateTotalDataByTimeStampAndAndObjectTypeAndID()  : int
testOverriddenUserDateTotalObject()  : bool
UserWageSortByEffectiveDateDesc()  : int
_calculate()  : bool|mixed

Properties

$contributing_pay_code_policy_ids

private array<string|int, mixed> $contributing_pay_code_policy_ids

$contributing_pay_codes_by_policy_id

private mixed $contributing_pay_codes_by_policy_id = \null

$contributing_shift_policy_ids

private array<string|int, mixed> $contributing_shift_policy_ids

$dates

private mixed $dates = ['data' => [], 'pending_calculation' => [], 'calculated' => []]

$delete_system_total_time_already_run

private mixed $delete_system_total_time_already_run = \false

$flags

private mixed $flags = [ 'meal' => \true, 'undertime_absence' => \true, 'break' => \true, 'holiday' => \true, 'schedule_absence' => \true, 'absence' => \true, 'regular' => \true, 'overtime' => \true, 'premium' => \true, 'accrual' => \true, 'exception' => \true, //Exception options 'exception_premature' => \false, //Calculates premature exceptions 'exception_future' => \true, //Calculates exceptions in the future. //Calculate policies for future dates. 'future_dates' => \true, //Calculates dates in the future. 'past_dates' => \false, ]

$over_time_trigger_time_exclusivity_map

private mixed $over_time_trigger_time_exclusivity_map = \null

$pay_formula_calculate_average_hourly_rates

private mixed $pay_formula_calculate_average_hourly_rates = \false

$prev_user_date_total_end_time_stamp

private mixed $prev_user_date_total_end_time_stamp = \null

$prev_user_date_total_start_time_stamp

private mixed $prev_user_date_total_start_time_stamp = \null

$schedule_break_time_policy_ids

private array<string|int, mixed> $schedule_break_time_policy_ids

$schedule_meal_time_policy_ids

private array<string|int, mixed> $schedule_meal_time_policy_ids

$schedule_policy_max_start_stop_window

private mixed $schedule_policy_max_start_stop_window = 0

$schedule_regular_time_policy_ids

private array<string|int, mixed> $schedule_regular_time_policy_ids

$schedule_undertime_absence_policy_ids

private array<string|int, mixed> $schedule_undertime_absence_policy_ids

Methods

__construct()

Determine pay period based on the date that is being calculated.

public __construct([UserFactory $user_obj = null ]) : mixed

CalculatePolicy constructor.

Parameters
$user_obj : UserFactory = null
Return values
mixed

addCalculatedDate()

public addCalculatedDate(int $date_stamp) : bool
Parameters
$date_stamp : int

EPOCH

Return values
bool

addPendingCalculationDate()

public addPendingCalculationDate(array<string|int, mixed>|int $start_date[, int $end_date = null ]) : bool
Parameters
$start_date : array<string|int, mixed>|int

EPOCH

$end_date : int = null

EPOCH

Return values
bool

BreakTimePolicySortByTriggerTimeAsc()

public BreakTimePolicySortByTriggerTimeAsc( $a,  $b) : int
Parameters
$a :
$b :
Return values
int

calculate()

Allow calculating up to one week at a time, as we always recalculate the remaining week anyways.

public calculate([bool $date_stamp = false ]) : bool

Allow no date_stamp to be passed so we just start from the first pending date instead.

Parameters
$date_stamp : bool = false
Return values
bool

calculateAbsenceTimePolicy()

public calculateAbsenceTimePolicy(int $date_stamp) : bool
Parameters
$date_stamp : int

EPOCH

Return values
bool

calculateAverageHourlyRates()

This must be done after all other policies are calculated so any average calculations can include wages from all other pay codes/policies (ie: premium time wages).

public calculateAverageHourlyRates(int $user_date_total_records) : bool
Parameters
$user_date_total_records : int

EPOCH

Return values
bool

calculateBreakTimePolicy()

public calculateBreakTimePolicy(int $date_stamp[, mixed $force_proportional_distribution = null ]) : bool
Parameters
$date_stamp : int

EPOCH

$force_proportional_distribution : mixed = null
Return values
bool

calculateExceptionPolicy()

public calculateExceptionPolicy(int $date_stamp) : bool
Parameters
$date_stamp : int

EPOCH

Tags
noinspection

PhpUndefinedVariableInspection

Return values
bool

calculateHolidayPolicy()

public calculateHolidayPolicy(int $date_stamp) : bool
Parameters
$date_stamp : int

EPOCH

Return values
bool

calculateMealTimePolicy()

public calculateMealTimePolicy(int $date_stamp[, mixed $force_proportional_distribution = null ]) : bool
Parameters
$date_stamp : int

EPOCH

$force_proportional_distribution : mixed = null
Return values
bool

calculateOverTimePolicy()

public calculateOverTimePolicy(int $date_stamp,  $trigger_time_arr[, null $maximum_daily_total_time = null ]) : bool
Parameters
$date_stamp : int

EPOCH

$trigger_time_arr :
$maximum_daily_total_time : null = null
Return values
bool

calculateOverTimePolicyForTriggerTime()

Overtime policies need to be nested... Since they are basically like saying: Any time after Xhrs/day goes to this OT policy. If some time is filtered out, it simply applies to the next OT policy.

public calculateOverTimePolicyForTriggerTime(int $date_stamp,  $current_trigger_time_arr[, bool $prev_policy_data = false ]) : bool

So the first OT policy should have almost all time applied to it, then the next policy simply moves time from the prior OT policy into itself, rinse and repeat...

Parameters
$date_stamp : int

EPOCH

$current_trigger_time_arr :
$prev_policy_data : bool = false
Return values
bool

calculatePremiumTimePolicy()

public calculatePremiumTimePolicy(int $date_stamp[, null $maximum_daily_total_time = null ]) : bool
Parameters
$date_stamp : int

EPOCH

$maximum_daily_total_time : null = null
Return values
bool

calculateRegularTimeExclusivity()

public calculateRegularTimeExclusivity() : bool
Return values
bool

calculateRegularTimePolicy()

public calculateRegularTimePolicy(int $date_stamp[, null $maximum_daily_total_time = null ]) : bool
Parameters
$date_stamp : int

EPOCH

$maximum_daily_total_time : null = null
Return values
bool

calculateScheduleAbsence()

Calculates schedule absence time (exclusive to holiday absence time, or manually entered time on the timesheet)

public calculateScheduleAbsence(int $date_stamp) : bool
Parameters
$date_stamp : int

EPOCH

Return values
bool

calculateSystemTotalTime()

public calculateSystemTotalTime(int $date_stamp,  $tmp_system_total_time) : bool
Parameters
$date_stamp : int

EPOCH

$tmp_system_total_time :
Return values
bool

calculateUnderTimeAbsencePolicy()

public calculateUnderTimeAbsencePolicy(int $date_stamp) : bool
Parameters
$date_stamp : int

EPOCH

Return values
bool

calculateUserDateTotalStartAndEndTimeStamps()

public calculateUserDateTotalStartAndEndTimeStamps(object $udt_obj) : array<string|int, mixed>
Parameters
$udt_obj : object
Return values
array<string|int, mixed>

compactMealAndBreakUserDateTotalObjects()

Since handling auto-deduct meal policies (negative total time) is virtually impossible to handle by itself when it comes to overtime/premium policies that adjust the total time themselves, this function will roll the meal/break policy time into the source record before being calculated for Reg/OT/Prem.

public compactMealAndBreakUserDateTotalObjects(int|array<string|int, int> $user_date_total_rows) : array<string|int, mixed>

This way Reg/OT/Prem. calculation functions don't need to worry about negative total times at all.

Parameters
$user_date_total_rows : int|array<string|int, int>

EPOCH

Return values
array<string|int, mixed>

compactUserDateTotalDataBasedOnOverride()

Compacts UDT records based on override, so calcualteSystemTotalTime() is correct even when new UDT records are added (override=1) and some are modified directly.

public compactUserDateTotalDataBasedOnOverride( $udtlf) : mixed
Parameters
$udtlf :
Return values
mixed

compactUserDateTotalDataBasedOnTimeStamps()

Compacts UDT records that are next to each out to reduce the number of records required to be stored in the database.

public compactUserDateTotalDataBasedOnTimeStamps() : mixed
Return values
mixed

deleteSystemTotalTime()

public deleteSystemTotalTime(int $date_stamp) : bool
Parameters
$date_stamp : int

EPOCH

Return values
bool

filterBreakTimePolicy()

public filterBreakTimePolicy(int $date_stamp[, null $daily_total_time = null ][, int $type_id = null ][, bool $always_return_at_least_one = false ]) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

$daily_total_time : null = null
$type_id : int = null

ID

$always_return_at_least_one : bool = false
Return values
array<string|int, mixed>

filterCurrencyRate()

public filterCurrencyRate(int $date_stamp) : object
Parameters
$date_stamp : int

EPOCH

Return values
object

filterHoliday()

public filterHoliday(int $date_stamp[, null $holiday_policy_obj = null ][, null $assigned_to_policy_group = null ]) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

$holiday_policy_obj : null = null
$assigned_to_policy_group : null = null
Return values
array<string|int, mixed>

filterMealTimePolicy()

public filterMealTimePolicy(int $date_stamp[, null $daily_total_time = null ][, int $type_id = null ][, bool $always_return_at_least_one = false ]) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

$daily_total_time : null = null
$type_id : int = null

ID

$always_return_at_least_one : bool = false
Return values
array<string|int, mixed>

filterOverTimePolicy()

public filterOverTimePolicy(int $date_stamp) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

Return values
array<string|int, mixed>

filterPremiumTimePolicy()

public filterPremiumTimePolicy(int $date_stamp) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

Return values
array<string|int, mixed>

filterPunchDataByDateAndTypeAndStatus()

public filterPunchDataByDateAndTypeAndStatus(int $date_stamp[, int $type_ids = null ][, int $status_ids = null ]) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

$type_ids : int = null

ID

$status_ids : int = null

ID

Return values
array<string|int, mixed>

filterRegularTimePolicy()

public filterRegularTimePolicy(int $date_stamp) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

Return values
array<string|int, mixed>

filterScheduleDataByDateAndDirection()

public filterScheduleDataByDateAndDirection([int $pivot_date = null ][, int $status_ids = null ][, null $direction = null ][, int $limit = null ]) : array<string|int, mixed>
Parameters
$pivot_date : int = null

EPOCH

$status_ids : int = null

ID

$direction : null = null
$limit : int = null

Limit the number of records returned

Return values
array<string|int, mixed>

filterScheduleDataByShiftStartAndEnd()

Filter scheduled shifts based on worked shift times.

public filterScheduleDataByShiftStartAndEnd( $start_time,  $end_time[, bool $schedule_status_id = false ]) : array<string|int, mixed>
Parameters
$start_time :
$end_time :
$schedule_status_id : bool = false
Return values
array<string|int, mixed>

filterScheduleDataByStatus()

public filterScheduleDataByStatus(int $start_date, int $end_date[, int $status_ids = null ]) : array<string|int, mixed>
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

$status_ids : int = null

ID

Return values
array<string|int, mixed>

filterSchedulePolicyByDate()

Filter schedule policies to only those that affect a specific shift.

public filterSchedulePolicyByDate(int $date_stamp[, bool $force_all_scheduled_shifts = false ]) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

$force_all_scheduled_shifts : bool = false
Return values
array<string|int, mixed>

filterUnderTimeAbsencePolicy()

public filterUnderTimeAbsencePolicy(int $date_stamp) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

Return values
array<string|int, mixed>

filterUserDateTotalDataByContributingShiftPolicy()

public filterUserDateTotalDataByContributingShiftPolicy(int|array<string|int, int> $start_date, int $end_date, ContributingShiftPolicyFactory $contributing_shift_policy_obj[, int|array<string|int, int> $object_type_ids = null ][, array<string|int, mixed> $additional_pay_code_ids = [] ][, array<string|int, mixed> $additional_src_object_ids = [] ]) : array<string|int, mixed>
Parameters
$start_date : int|array<string|int, int>

EPOCH

$end_date : int

EPOCH

$contributing_shift_policy_obj : ContributingShiftPolicyFactory
$object_type_ids : int|array<string|int, int> = null

ID

$additional_pay_code_ids : array<string|int, mixed> = []
$additional_src_object_ids : array<string|int, mixed> = []
Return values
array<string|int, mixed>

filterUserDateTotalDataByObjectTypeIDs()

public filterUserDateTotalDataByObjectTypeIDs(int $start_date, int $end_date[, int|array<string|int, int> $object_type_ids = null ]) : array<string|int, mixed>
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

$object_type_ids : int|array<string|int, int> = null

ID

Return values
array<string|int, mixed>

filterUserDateTotalDataByPayCodeIDs()

public filterUserDateTotalDataByPayCodeIDs(int $start_date, int $end_date[, string $pay_code_ids = null ][, mixed $object_type_ids = null ]) : array<string|int, mixed>
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

$pay_code_ids : string = null

UUID

$object_type_ids : mixed = null
Return values
array<string|int, mixed>

filterUserDateTotalDataByPunchTypeIDs()

public filterUserDateTotalDataByPunchTypeIDs(int $start_date, int $end_date[, int|array<string|int, int> $punch_type_ids = null ]) : array<string|int, mixed>
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

$punch_type_ids : int|array<string|int, int> = null

ID

Return values
array<string|int, mixed>

filterUserWage()

public filterUserWage(string $wage_group_id, int $date_stamp) : array<string|int, mixed>|object
Parameters
$wage_group_id : string

UUID

$date_stamp : int

EPOCH

Return values
array<string|int, mixed>|object

filterWeeklyOverTimePolicy()

Get list of all weekly overtime policies so they can be included when calculating weekly time.

public filterWeeklyOverTimePolicy() : array<string|int, mixed>
Return values
array<string|int, mixed>

getAverageHourlyRate()

public getAverageHourlyRate(int $date_stamp, ContributingShiftPolicyFactory $hour_contributing_shift_policy_obj, int $hour_object_type_ids, ContributingShiftPolicyFactory $wage_contributing_shift_policy_obj[, mixed $destination_object_type_id = 30 ]) : bool|float|int
Parameters
$date_stamp : int

EPOCH

$hour_contributing_shift_policy_obj : ContributingShiftPolicyFactory
$hour_object_type_ids : int
$wage_contributing_shift_policy_obj : ContributingShiftPolicyFactory
$destination_object_type_id : mixed = 30
Return values
bool|float|int

getBaseHourlyRate()

public getBaseHourlyRate(string $pay_formula_policy_id, string $pay_code_id, int $date_stamp[, bool $contributing_pay_code_hourly_rate = false ][, object $contributing_shift_policy_obj = null ][, int $object_type_ids = null ][, mixed $destination_object_type_id = null ]) : bool|float|int
Parameters
$pay_formula_policy_id : string

UUID

$pay_code_id : string

UUID

$date_stamp : int

EPOCH

$contributing_pay_code_hourly_rate : bool = false
$contributing_shift_policy_obj : object = null
$object_type_ids : int = null

ID

$destination_object_type_id : mixed = null
Return values
bool|float|int

getBreakTimePolicy()

Get all overtime policies that could possibly apply, including from schedule policies.

public getBreakTimePolicy() : bool
Return values
bool

getCalculatedDateRange()

public getCalculatedDateRange() : array<string|int, mixed>|bool
Return values
array<string|int, mixed>|bool

getContributingPayCodePolicy()

public getContributingPayCodePolicy() : bool
Return values
bool

getContributingShiftPolicy()

public getContributingShiftPolicy() : bool
Return values
bool

getCurrencyRateData()

public getCurrencyRateData(int $start_date, int $end_date) : bool
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

Return values
bool

getDailyHourlyRate()

public getDailyHourlyRate(int $date_stamp, ContributingShiftPolicyFactory $hour_contributing_shift_policy_obj, int $hour_object_type_ids, ContributingShiftPolicyFactory $wage_contributing_shift_policy_obj, mixed $pay_formula_policy_obj, mixed $pay_code_id) : bool|float|int
Parameters
$date_stamp : int

EPOCH

$hour_contributing_shift_policy_obj : ContributingShiftPolicyFactory
$hour_object_type_ids : int
$wage_contributing_shift_policy_obj : ContributingShiftPolicyFactory
$pay_formula_policy_obj : mixed
$pay_code_id : mixed
Return values
bool|float|int

getDateRangeFromDateArray()

Return dates that we have not already obtained data for.

public getDateRangeFromDateArray(int|array<string|int, int> $date_arr) : mixed
Parameters
$date_arr : int|array<string|int, int>

EPOCH

Return values
mixed

getDatesToObtainDataFor()

public getDatesToObtainDataFor(int $start_date_stamp, int $end_date_stamp) : array<string|int, mixed>
Parameters
$start_date_stamp : int

EPOCH

$end_date_stamp : int

EPOCH

Return values
array<string|int, mixed>

getDayArrayUserDateTotalData()

public getDayArrayUserDateTotalData(int|array<string|int, int> $user_date_total_arr) : array<string|int, mixed>
Parameters
$user_date_total_arr : int|array<string|int, int>

EPOCH

Return values
array<string|int, mixed>

getExceptionData()

public getExceptionData([int $start_date = null ][, int $end_date = null ]) : bool
Parameters
$start_date : int = null

EPOCH

$end_date : int = null

EPOCH

Return values
bool

getFirstPendingDate()

public getFirstPendingDate() : bool|mixed
Return values
bool|mixed

getFlag()

public getFlag( $key) : bool|mixed
Parameters
$key :
Return values
bool|mixed

getHolidayData()

public getHolidayData(int $start_date, int $end_date[, bool $enable_recalculate_holiday = true ]) : bool
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

$enable_recalculate_holiday : bool = true
Return values
bool

getHolidayPolicy()

public getHolidayPolicy( $date_stamp) : bool
Parameters
$date_stamp :
Return values
bool

getHolidayTime()

public getHolidayTime(int $date_stamp, object $holiday_policy_obj) : float|int|string
Parameters
$date_stamp : int

EPOCH

$holiday_policy_obj : object
Return values
float|int|string

getHourlyRate()

public getHourlyRate(string $pay_formula_policy_id, string $pay_code_id, int $date_stamp,  $base_hourly_rate[, mixed $udtf = null ]) : int
Parameters
$pay_formula_policy_id : string

UUID

$pay_code_id : string

UUID

$date_stamp : int

EPOCH

$base_hourly_rate :
$udtf : mixed = null
Return values
int

getHourlyRateWithBurden()

public getHourlyRateWithBurden(string $pay_formula_policy_id, string $pay_code_id, int $date_stamp, int $base_hourly_rate) : int
Parameters
$pay_formula_policy_id : string

UUID

$pay_code_id : string

UUID

$date_stamp : int

EPOCH

$base_hourly_rate : int
Return values
int

getLastPendingDate()

public getLastPendingDate() : bool|mixed
Return values
bool|mixed

getMealTimePolicy()

Get all meal policies that could possibly apply, including from schedule policies.

public getMealTimePolicy() : bool
Return values
bool

getNextPendingDate()

public getNextPendingDate() : bool|mixed
Return values
bool|mixed

getOverTimePeriodDates()

public getOverTimePeriodDates(int $date_stamp,  $weeks, int $first_pay_period_start_date, int $start_week_day_id) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

$weeks :
$first_pay_period_start_date : int

EPOCH

$start_week_day_id : int
Return values
array<string|int, mixed>

getOverTimePolicy()

Get all overtime policies that could possibly apply, including from schedule policies.

public getOverTimePolicy() : bool
Return values
bool

getOverTimeTriggerArray()

public getOverTimeTriggerArray(int $date_stamp) : array<string|int, mixed>|bool
Parameters
$date_stamp : int

EPOCH

Return values
array<string|int, mixed>|bool

getOverTimeTriggerTimeAdjustAmount()

public getOverTimeTriggerTimeAdjustAmount(int $start_date, int $end_date, object $otp_obj) : int
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

$otp_obj : object
Return values
int

getPayCode()

Need to get all pay codes referenced by policies and all pay codes used by contributing shift policies too.

public getPayCode() : bool

So we may as well just get them all.

Return values
bool

getPayFormulaPolicy()

Need to get all pay formula policies referenced by policies and all pay codes too.

public getPayFormulaPolicy(mixed $date_stamp) : bool

So we may as well just get them all.

Parameters
$date_stamp : mixed
Return values
bool

getPayFormulaPolicyObjectByPayFormulaIdOrPayCodeId()

public getPayFormulaPolicyObjectByPayFormulaIdOrPayCodeId(string $pay_formula_policy_id, string $pay_code_id) : bool
Parameters
$pay_formula_policy_id : string

UUID

$pay_code_id : string

UUID

Return values
bool

getPayPeriodObject()

public getPayPeriodObject(string $id) : bool
Parameters
$id : string

UUID

Return values
bool

getPayPeriodScheduleObject()

public getPayPeriodScheduleObject(string $id) : bool
Parameters
$id : string

UUID

Return values
bool

getPreviousDayByUserTotalData()

public getPreviousDayByUserTotalData(int|array<string|int, int> $user_date_total_arr, int $date_stamp) : bool|mixed
Parameters
$user_date_total_arr : int|array<string|int, int>

EPOCH

$date_stamp : int

EPOCH

Return values
bool|mixed

getPunchData()

public getPunchData(int $start_date, int $end_date) : bool
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

Return values
bool

getRegularTimePolicy()

Get all regulartime policies that could possibly apply, including from schedule policies.

public getRegularTimePolicy() : bool
Return values
bool

getRequiredData()

Gathers all required data to perform the calculations.

public getRequiredData(int $start_date_stamp, int $end_date_stamp[, bool $enable_recalculate_holiday = true ]) : bool
Parameters
$start_date_stamp : int

EPOCH

$end_date_stamp : int

EPOCH

$enable_recalculate_holiday : bool = true
Return values
bool

getScheduleData()

public getScheduleData([int $start_date = null ][, int $end_date = null ][, int|array<string|int, mixed> $status_ids = null ][, int $limit = null ][, array<string|int, mixed> $order = null ]) : bool
Parameters
$start_date : int = null

EPOCH

$end_date : int = null

EPOCH

$status_ids : int|array<string|int, mixed> = null

ID

$limit : int = null

Limit the number of records returned

$order : array<string|int, mixed> = null

Sort order passed to SQL in format of array( $column => 'asc', 'name' => 'desc', ... ). ie: array( 'id' => 'asc', 'name' => 'desc', ... )

Return values
bool

getScheduleDates()

public getScheduleDates( $schedule_arr) : array<string|int, mixed>
Parameters
$schedule_arr :
Return values
array<string|int, mixed>

getSchedulePolicy()

Get all possible schedule policies.

public getSchedulePolicy() : bool
Return values
bool

getShiftData()

Returns shift data according to the pay period schedule criteria for use in determining which day punches belong to.

public getShiftData(int|array<string|int, int> $user_date_total_arr[, int $epoch = null ][, null $filter = null ][, null $maximum_shift_time = null ][, null $new_shift_trigger_time = null ]) : bool|array<string|int, mixed>
Parameters
$user_date_total_arr : int|array<string|int, int>

EPOCH

$epoch : int = null

EPOCH

$filter : null = null
$maximum_shift_time : null = null
$new_shift_trigger_time : null = null
Return values
bool|array<string|int, mixed>

getShiftStartAndEndUserDateTotal()

public getShiftStartAndEndUserDateTotal(int $start_date, int $end_date) : array<string|int, mixed>|bool
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

Return values
array<string|int, mixed>|bool

getSumScheduledDays()

public getSumScheduledDays( $schedule_arr) : int
Parameters
$schedule_arr :
Return values
int

getSumScheduleTime()

public getSumScheduleTime( $schedule_arr) : int
Parameters
$schedule_arr :
Return values
int

getSumUserDateTotalData()

public getSumUserDateTotalData(int|array<string|int, int> $user_date_total_arr) : int
Parameters
$user_date_total_arr : int|array<string|int, int>

EPOCH

Return values
int

getUnderTimeAbsenceTimePolicy()

Get all absence policies that could possibly apply, including from schedule policies.

public getUnderTimeAbsenceTimePolicy() : bool
Return values
bool

getUserDateTotalActiveAfter()

public getUserDateTotalActiveAfter(int $start_date, int $end_date, mixed $active_after) : array<string|int, mixed>|bool
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

$active_after : mixed
Return values
array<string|int, mixed>|bool

getUserDateTotalData()

Grabs all user_date total data from DB for each date specified.

public getUserDateTotalData([int $start_date = null ][, int $end_date = null ]) : bool
Parameters
$start_date : int = null

EPOCH

$end_date : int = null

EPOCH

Return values
bool

getUserWageData()

public getUserWageData(int $start_date, int $end_date) : bool
Parameters
$start_date : int

EPOCH

$end_date : int

EPOCH

Return values
bool

getWeeklyOverTimePolicyIDs()

public getWeeklyOverTimePolicyIDs() : array<string|int, mixed>
Return values
array<string|int, mixed>

getWeeklyOverTimePolicyPayCodes()

public getWeeklyOverTimePolicyPayCodes() : array<string|int, mixed>
Return values
array<string|int, mixed>

getWeeklyOverTimePolicyTypeIds()

public getWeeklyOverTimePolicyTypeIds() : array<string|int, mixed>
Return values
array<string|int, mixed>

isConflictingUserDateTotal()

public isConflictingUserDateTotal(int $date_stamp, int|array<string|int, int> $object_type_id[, string $pay_code_id = null ][, null $src_object_id = null ][, string $branch_id = null ][, string $department_id = null ][, string $job_id = null ][, string $job_item_id = null ][, bool $override = null ][, array<string|int, mixed> $include_pay_code_id = null ]) : bool
Parameters
$date_stamp : int

EPOCH

$object_type_id : int|array<string|int, int>
$pay_code_id : string = null

UUID

$src_object_id : null = null
$branch_id : string = null

UUID

$department_id : string = null

UUID

$job_id : string = null

UUID

$job_item_id : string = null

UUID

$override : bool = null
$include_pay_code_id : array<string|int, mixed> = null

UUID

Return values
bool

isEligibleForHoliday()

public isEligibleForHoliday(int $date_stamp, HolidayPolicyFactory $holiday_policy_obj[, bool $ignore_after_eligibility = false ]) : bool
Parameters
$date_stamp : int

EPOCH

$holiday_policy_obj : HolidayPolicyFactory
$ignore_after_eligibility : bool = false
Tags
noinspection

PhpUnreachableStatementInspection

Return values
bool

isOverriddenUserDateTotalObject()

Find existing UDT records that have override=TRUE and other fields matching, so we don't try to insert new UDT records.

public isOverriddenUserDateTotalObject(object $udt_obj[, bool $check_src_object_id = false ]) : bool
Parameters
$udt_obj : object
$check_src_object_id : bool = false

More strict checks against src_object_ids as well. Typically only used for absence records so the same pay code can be used with different absence policies.

Return values
bool

isPastDateCalculationRequired()

Check if past date calculation is required.

public isPastDateCalculationRequired() : bool

This is based on PayFormulas that use average calculations.

Return values
bool

isPayFormulaPolicyAveraging()

public isPayFormulaPolicyAveraging(string $pay_formula_policy_id, string $pay_code_id) : bool
Parameters
$pay_formula_policy_id : string

UUID

$pay_code_id : string

UUID

Return values
bool

isSecondBiWeeklyOverTimeWeek()

public isSecondBiWeeklyOverTimeWeek(int $date_stamp, int $first_pay_period_start_date, int $start_week_day_id) : bool
Parameters
$date_stamp : int

EPOCH

$first_pay_period_start_date : int

EPOCH

$start_week_day_id : int
Return values
bool

processTriggerTimeArray()

public processTriggerTimeArray(int $date_stamp,  $trigger_time_arr) : array<string|int, mixed>
Parameters
$date_stamp : int

EPOCH

$trigger_time_arr :
Return values
array<string|int, mixed>

reCalculateForJobQueue()

public static reCalculateForJobQueue( $user_id, string|array<string|int, mixed> $flags, int|array<string|int, mixed> $start_date[, int|null $end_date = null ]) : false|mixed
Parameters
$user_id :
$flags : string|array<string|int, mixed>
$start_date : int|array<string|int, mixed>

This can be an array of dates.

$end_date : int|null = null
Tags
throws
ReflectionException
Return values
false|mixed

RegularTimePolicySortByCalculationOrderAsc()

public RegularTimePolicySortByCalculationOrderAsc( $a,  $b) : int
Parameters
$a :
$b :
Return values
int

removeRedundantUserDateTotalObjects()

Remove UserDateTotalObjects that cancel each other out, such as a +1800 total time and -1800 total time for the same pay_code_id.

public removeRedundantUserDateTotalObjects() : bool

This is required for some premium policies with auto-deduct lunches and such.

Return values
bool

Save()

Keep saving all data in a separate function so we can do in-memory calculations if necessary.

public Save() : bool
Return values
bool

setFlag()

public setFlag( $key[, bool $value = true ]) : bool
Parameters
$key :
$value : bool = true
Return values
bool

setPayPeriodFromDate()

public setPayPeriodFromDate(int $date_stamp) : bool
Parameters
$date_stamp : int

EPOCH

Return values
bool

sortPolicyByPayCodeDependancy()

public sortPolicyByPayCodeDependancy( $policy_arr) : mixed
Parameters
$policy_arr :
Return values
mixed

sortScheduleByDateASC()

public sortScheduleByDateASC( $a,  $b) : int
Parameters
$a :
$b :
Return values
int

sortScheduleByDateDESC()

public sortScheduleByDateDESC( $a,  $b) : int
Parameters
$a :
$b :
Return values
int

sortUserDateTotalData()

public sortUserDateTotalData( &$udtlf[, string $sort_function_name = 'sortUserDateTotalDataByDateAndStartTimeStampAndObjectTypeAndID' ]) : bool
Parameters
$udtlf :
$sort_function_name : string = 'sortUserDateTotalDataByDateAndStartTimeStampAndObjectTypeAndID'
Return values
bool

sortUserDateTotalDataByDateAndObjectTypeAndStartTimeStampAndID()

This is primarily used for compacting UDT records only.

public sortUserDateTotalDataByDateAndObjectTypeAndStartTimeStampAndID( $a,  $b) : int
Parameters
$a :
$b :
Return values
int

sortUserDateTotalDataByDateAndStartTimeStampAndObjectTypeAndID()

public sortUserDateTotalDataByDateAndStartTimeStampAndObjectTypeAndID( $a,  $b) : int
Parameters
$a :
$b :
Return values
int

sortUserDateTotalDataByTimeStampAndAndObjectTypeAndID()

public sortUserDateTotalDataByTimeStampAndAndObjectTypeAndID( $a,  $b) : int
Parameters
$a :
$b :
Return values
int

testOverriddenUserDateTotalObject()

public testOverriddenUserDateTotalObject(object $udt_obj, object $tmp_udt_obj[, bool $check_src_object_id = false ]) : bool
Parameters
$udt_obj : object
$tmp_udt_obj : object
$check_src_object_id : bool = false
Return values
bool

UserWageSortByEffectiveDateDesc()

public UserWageSortByEffectiveDateDesc( $a,  $b) : int
Parameters
$a :
$b :
Return values
int

_calculate()

private _calculate(int $date_stamp) : bool|mixed
Parameters
$date_stamp : int

EPOCH

Return values
bool|mixed

Search results