* the "Unscheuled Absence" exception. * * Run this once a day. AFTER AddUserDate */ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'global.inc.php'; require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'CLI.inc.php'; //Debug::setVerbosity(5); $execution_time = time(); //Calculate exceptions just for today and yesterday, because some shifts may start late in the day and need to be handled first thing in the morning. //Make sure we also go one day in the future too, since the servers can be PST and if its 11:00PM, it will stop at midnight for that day, so //shifts that would have already started in a different timezone (say EST) will not receive exceptions until we have moved into the next day for PST (3hrs late) $start_date = TTDate::getBeginDayEpoch(TTDate::getMiddleDayEpoch($execution_time) - 86400); $end_date = TTDate::getEndDayEpoch(TTDate::getMiddleDayEpoch($execution_time) + 86400); $udlf = new UserDateListFactory(); //Use optimized query to speed this process up significantly. $udlf->getMidDayExceptionsByStartDateAndEndDateAndPayPeriodStatus($start_date, $end_date, array(10, 12, 15, 30)); Debug::text(' calcQuickExceptions: Start Date: ' . TTDate::getDate('DATE+TIME', $start_date) . ' End Date: ' . TTDate::getDate('DATE+TIME', $end_date) . ' User Date Rows: ' . $udlf->getRecordCount(), __FILE__, __LINE__, __METHOD__, 5); if ($udlf->getRecordCount() > 0) { $i = 0; foreach ($udlf as $ud_obj) { $user_obj_prefs = $ud_obj->getUserObject()->getUserPreferenceObject(); if (is_object($user_obj_prefs)) { $user_obj_prefs->setTimeZonePreferences(); } else { //Use system timezone. TTDate::setTimeZone(); } Debug::text('(' . $i . '). User: '******' Date: ' . TTDate::getDate('DATE+TIME', $ud_obj->getDateStamp()) . ' User Date ID: ' . $ud_obj->getId(), __FILE__, __LINE__, __METHOD__, 5); //Calculate pre-mature exceptions, so pre-mature Missing Out Punch exceptions arn't made active until they are ready. //Don't calculate future exceptions though. ExceptionPolicyFactory::calcExceptions($ud_obj->getId(), TRUE, FALSE);