Debug::text('Punch Out: ' . TTDate::getDate('DATE+TIME', $recurring_schedule_shift_end_time), __FILE__, __LINE__, __METHOD__, 10); $pf_out = new PunchFactory(); $pf_out->setUser($user_id); $pf_out->setType(10); //Normal $pf_out->setStatus(20); //Out $pf_out->setTimeStamp($recurring_schedule_shift_end_time, TRUE); $pf_out->setPunchControlID($pf_in->findPunchControlID()); //Use the In punch object to find the punch_control_id. $pf_out->setActualTimeStamp($pf_out->getTimeStamp()); $pf_out->setOriginalTimeStamp($pf_out->getTimeStamp()); if ($pf_out->isValid()) { Debug::text('Punch Out: Valid!', __FILE__, __LINE__, __METHOD__, 10); $pf_out->setEnableCalcTotalTime(TRUE); $pf_out->setEnableCalcSystemTotalTime(TRUE); $pf_out->setEnableCalcUserDateTotal(TRUE); $pf_out->setEnableCalcException(TRUE); $pf_out->Save(FALSE); } else { Debug::text('Punch Out: InValid!', __FILE__, __LINE__, __METHOD__, 10); } if ($pf_in->isValid() == TRUE or $pf_out->isValid() == TRUE) { Debug::text('Punch In and Out succeeded, saving punch control!', __FILE__, __LINE__, __METHOD__, 10); $pcf = new PunchControlFactory(); $pcf->setId($pf_in->getPunchControlID()); if ($pf_in->isValid() == TRUE) { $pcf->setPunchObject($pf_in); } elseif ($pf_out->isValid() == TRUE) { $pcf->setPunchObject($pf_out); }