本文整理汇总了PHP中UserListFactory::getByIDAndCompanyID方法的典型用法代码示例。如果您正苦于以下问题:PHP UserListFactory::getByIDAndCompanyID方法的具体用法?PHP UserListFactory::getByIDAndCompanyID怎么用?PHP UserListFactory::getByIDAndCompanyID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UserListFactory
的用法示例。
在下文中一共展示了UserListFactory::getByIDAndCompanyID方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addAccrualPolicyTime
function addAccrualPolicyTime($epoch = NULL, $offset = 79200, $daily_total_time = NULL)
{
//22hr offset
if ($epoch == '') {
$epoch = TTDate::getTime();
}
Debug::Text('Accrual Policy ID: ' . $this->getId() . ' Current EPOCH: ' . TTDate::getDate('DATE+TIME', $epoch), __FILE__, __LINE__, __METHOD__, 10);
$pglf = new PolicyGroupListFactory();
$pglf->StartTransaction();
$pglf->getSearchByCompanyIdAndArrayCriteria($this->getCompany(), array('accrual_policy_id' => array($this->getId())));
if ($pglf->getRecordCount() > 0) {
Debug::Text('Found Policy Group...', __FILE__, __LINE__, __METHOD__, 10);
foreach ($pglf as $pg_obj) {
//Get all users assigned to this policy group.
$policy_group_users = $pg_obj->getUser();
if (is_array($policy_group_users) and count($policy_group_users) > 0) {
Debug::Text('Found Policy Group Users: ' . count($policy_group_users), __FILE__, __LINE__, __METHOD__, 10);
foreach ($policy_group_users as $user_id) {
Debug::Text('Policy Group User ID: ' . $user_id, __FILE__, __LINE__, __METHOD__, 10);
//Get User Object
$ulf = new UserListFactory();
$ulf->getByIDAndCompanyID($user_id, $this->getCompany());
if ($ulf->getRecordCount() == 1) {
$u_obj = $ulf->getCurrent();
Debug::Text('User: ' . $u_obj->getFullName() . ' Status: ' . $u_obj->getStatus(), __FILE__, __LINE__, __METHOD__, 10);
//Make sure only active employees accrue time. Will this negative affect
//Employees who may be on leave?
if ($u_obj->getStatus() == 10 and ($this->getMinimumEmployedDays() == 0 or TTDate::getDays($epoch - $u_obj->getHireDate()) >= $this->getMinimumEmployedDays())) {
Debug::Text(' User is active and has been employed long enough.', __FILE__, __LINE__, __METHOD__, 10);
$annual_pay_periods = 0;
$in_apply_frequency_window = FALSE;
$accrual_balance = 0;
$accrual_amount = 0;
if ($this->getType() == 30) {
Debug::Text(' Accrual policy is hour based, real-time window.', __FILE__, __LINE__, __METHOD__, 10);
//Hour based, apply frequency is real-time.
$in_apply_frequency_window = TRUE;
} else {
if ($this->getApplyFrequency() == 10) {
//Because of pay period frequencies, and users being assigned to different
//pay period schedules we need to get the last pay period of each user individually.
//This will return the pay period that just ended in the offset time.
$pplf = new PayPeriodListFactory();
$pplf->getByUserIdAndEndDate($user_id, $epoch - $offset);
if ($pplf->getRecordCount() > 0) {
foreach ($pplf as $pp_obj) {
Debug::Text(' Pay Period End Date: ' . TTDate::getDate('DATE+TIME', $pp_obj->getEndDate()), __FILE__, __LINE__, __METHOD__, 10);
if ($this->inApplyFrequencyWindow($epoch, $offset, $pp_obj->getEndDate()) == TRUE) {
$in_apply_frequency_window = TRUE;
$annual_pay_periods = $pp_obj->getPayPeriodScheduleObject()->getAnnualPayPeriods();
break;
} else {
Debug::Text(' User not in Apply Frequency Window: ', __FILE__, __LINE__, __METHOD__, 10);
}
}
} else {
Debug::Text(' No Pay Period Found.', __FILE__, __LINE__, __METHOD__, 10);
}
} elseif ($this->inApplyFrequencyWindow($epoch, $offset) == TRUE) {
Debug::Text(' User IS in NON-PayPeriod Apply Frequency Window.', __FILE__, __LINE__, __METHOD__, 10);
$in_apply_frequency_window = TRUE;
} else {
Debug::Text(' User is not in Apply Frequency Window.', __FILE__, __LINE__, __METHOD__, 10);
$in_apply_frequency_window = FALSE;
}
}
if ($in_apply_frequency_window == TRUE) {
$milestone_obj = $this->getActiveMilestoneObject($u_obj, $epoch);
if (isset($milestone_obj) and is_object($milestone_obj)) {
Debug::Text(' Found Matching Milestone, Accrual Rate: (ID: ' . $milestone_obj->getId() . ') ' . $milestone_obj->getAccrualRate() . '/year', __FILE__, __LINE__, __METHOD__, 10);
$accrual_balance = $this->getCurrentAccrualBalance($user_id, $this->getId());
if ($accrual_balance < $milestone_obj->getMaximumTime()) {
$accrual_amount = $this->calcAccrualAmount($milestone_obj, 0, $annual_pay_periods);
if ($accrual_amount > 0) {
$new_accrual_balance = bcadd($accrual_balance, $accrual_amount);
//If Maximum time is set to 0, make that unlimited.
if ($milestone_obj->getMaximumTime() > 0 and $new_accrual_balance > $milestone_obj->getMaximumTime()) {
$accrual_amount = bcsub($milestone_obj->getMaximumTime(), $accrual_balance, 0);
}
Debug::Text(' Min/Max Adjusted Accrual Amount: ' . $accrual_amount . ' Limits: Min: ' . $milestone_obj->getMinimumTime() . ' Max: ' . $milestone_obj->getMaximumTime(), __FILE__, __LINE__, __METHOD__, 10);
//Check to make sure there isn't an identical entry already made.
$alf = new AccrualListFactory();
$alf->getByCompanyIdAndUserIdAndAccrualPolicyIDAndTimeStampAndAmount($u_obj->getCompany(), $user_id, $this->getId(), TTDate::getMiddleDayEpoch($epoch), $accrual_amount);
if ($alf->getRecordCount() == 0) {
//Round to nearest 1min
$af = new AccrualFactory();
$af->setUser($user_id);
$af->setType(75);
//Accrual Policy
$af->setAccrualPolicyID($this->getId());
$af->setAmount($accrual_amount);
$af->setTimeStamp(TTDate::getMiddleDayEpoch($epoch));
$af->setEnableCalcBalance(TRUE);
if ($af->isValid()) {
$af->Save();
}
} else {
Debug::Text(' Found duplicate accrual entry, skipping...', __FILE__, __LINE__, __METHOD__, 10);
}
unset($accrual_amount, $accrual_balance, $new_accrual_balance);
//.........这里部分代码省略.........