function inApplyFrequencyWindow($pay_period_start_date, $pay_period_end_date, $hire_date = NULL, $termination_date = NULL, $birth_date = NULL)
 {
     if ($this->getApplyFrequency() == FALSE or $this->getApplyFrequency() == 10) {
         //Each pay period
         return TRUE;
     }
     $frequency_criteria = array('month' => $this->getApplyFrequencyMonth(), 'day_of_month' => $this->getApplyFrequencyDayOfMonth(), 'quarter_month' => $this->getApplyFrequencyQuarterMonth());
     $specific_date = FALSE;
     $frequency_id = $this->getApplyFrequency();
     switch ($this->getApplyFrequency()) {
         case 100:
             //Hire Date
             $frequency_criteria['date'] = $hire_date;
             $frequency_id = 100;
             //Specific date
             break;
         case 110:
             //Hire Date anniversary.
             $frequency_criteria['month'] = TTDate::getMonth($hire_date);
             $frequency_criteria['day_of_month'] = TTDate::getDayOfMonth($hire_date);
             $frequency_id = 20;
             //Annually
             break;
         case 120:
             $frequency_criteria['date'] = $termination_date;
             $frequency_id = 100;
             //Specific date
             break;
         case 130:
             //Birth Date anniversary.
             $frequency_criteria['month'] = TTDate::getMonth($birth_date);
             $frequency_criteria['day_of_month'] = TTDate::getDayOfMonth($birth_date);
             $frequency_id = 20;
             //Annually
             break;
     }
     $retval = TTDate::inApplyFrequencyWindow($frequency_id, $pay_period_start_date, $pay_period_end_date, $frequency_criteria);
     Debug::Arr($frequency_criteria, 'Frequency: ' . $this->getApplyFrequency() . ' Retval: ' . (int) $retval, __FILE__, __LINE__, __METHOD__, 10);
     return $retval;
 }
Ejemplo n.º 2
0
 function test_inApplyFrequencyWindow()
 {
     //Annually
     $frequency_criteria = array('month' => 1, 'day_of_month' => 2, 'day_of_week' => 0, 'quarter_month' => 0, 'date' => 0);
     //No range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('01-Jan-2010'), strtotime('01-Jan-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('02-Jan-2010'), strtotime('02-Jan-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('03-Jan-2010'), strtotime('03-Jan-2010'), $frequency_criteria), FALSE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('01-Jan-2010'), strtotime('03-Jan-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('02-Jan-2010 12:00PM'), strtotime('02-Jan-2010 12:00PM'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('02-Jan-2010 12:00AM'), strtotime('02-Jan-2010 11:59PM'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('01-Jan-2010') - 86400 * 7, strtotime('01-Jan-2010'), $frequency_criteria), FALSE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('02-Jan-2010') - 86400 * 7, strtotime('02-Jan-2010'), $frequency_criteria), TRUE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('03-Jan-2010') - 86400 * 7, strtotime('03-Jan-2010'), $frequency_criteria), TRUE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('04-Jan-2010') - 86400 * 7, strtotime('04-Jan-2010'), $frequency_criteria), TRUE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('05-Jan-2010') - 86400 * 7, strtotime('05-Jan-2010'), $frequency_criteria), TRUE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('06-Jan-2010') - 86400 * 7, strtotime('06-Jan-2010'), $frequency_criteria), TRUE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('07-Jan-2010') - 86400 * 7, strtotime('07-Jan-2010'), $frequency_criteria), TRUE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('08-Jan-2010') - 86400 * 7, strtotime('08-Jan-2010'), $frequency_criteria), TRUE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('09-Jan-2010') - 86400 * 7, strtotime('09-Jan-2010'), $frequency_criteria), TRUE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(20, strtotime('10-Jan-2010') - 86400 * 7, strtotime('10-Jan-2010'), $frequency_criteria), FALSE);
     //Range
     //Quarterly
     $frequency_criteria = array('month' => 0, 'day_of_month' => 15, 'day_of_week' => 0, 'quarter_month' => 2, 'date' => 0);
     //No range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Feb-2010'), strtotime('14-Feb-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('15-Feb-2010'), strtotime('15-Feb-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('16-Feb-2010'), strtotime('16-Feb-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-May-2010'), strtotime('14-May-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('15-May-2010'), strtotime('15-May-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('16-May-2010'), strtotime('16-May-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Aug-2010'), strtotime('14-Aug-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('15-Aug-2010'), strtotime('15-Aug-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('16-Aug-2010'), strtotime('16-Aug-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Nov-2010'), strtotime('14-Nov-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('15-Nov-2010'), strtotime('15-Nov-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('16-Nov-2010'), strtotime('16-Nov-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Jan-2010'), strtotime('14-Jan-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Mar-2010'), strtotime('14-Mar-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Apr-2010'), strtotime('14-Apr-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Jun-2010'), strtotime('14-Jun-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Jul-2010'), strtotime('14-Jul-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Sep-2010'), strtotime('14-Sep-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Oct-2010'), strtotime('14-Oct-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('14-Dec-2010'), strtotime('14-Dec-2010'), $frequency_criteria), FALSE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('01-Aug-2010'), strtotime('15-Aug-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('15-Aug-2010'), strtotime('20-Aug-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('16-Aug-2010'), strtotime('20-Aug-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('01-Jul-2010'), strtotime('15-Aug-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('01-Jun-2010'), strtotime('15-Aug-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('01-May-2010'), strtotime('15-Aug-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('01-Apr-2010'), strtotime('15-Aug-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('01-Apr-2009'), strtotime('15-Aug-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('16-Aug-2009'), strtotime('14-Dec-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('19-Aug-2009'), strtotime('14-Nov-2009'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('19-Aug-2009'), strtotime('15-Nov-2009'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(25, strtotime('19-Aug-2009'), strtotime('15-Nov-2010'), $frequency_criteria), TRUE);
     //Monthly
     $frequency_criteria = array('month' => 2, 'day_of_month' => 31, 'day_of_week' => 0, 'quarter_month' => 0, 'date' => 0);
     //No range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('27-Feb-2010'), strtotime('27-Feb-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('28-Feb-2010'), strtotime('28-Feb-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('01-Mar-2010'), strtotime('01-Mar-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('27-Feb-2011'), strtotime('27-Feb-2011'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('28-Feb-2011'), strtotime('28-Feb-2011'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('01-Mar-2011'), strtotime('01-Mar-2011'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('28-Feb-2012'), strtotime('28-Feb-2012'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('29-Feb-2012'), strtotime('29-Feb-2012'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('01-Mar-2012'), strtotime('01-Mar-2012'), $frequency_criteria), FALSE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('28-Feb-2010'), strtotime('05-Mar-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(30, strtotime('22-Feb-2010'), strtotime('28-Feb-2010'), $frequency_criteria), TRUE);
     //Weekly
     $frequency_criteria = array('month' => 0, 'day_of_month' => 0, 'day_of_week' => 2, 'quarter_month' => 0, 'date' => 0);
     //No range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('12-Apr-2010'), strtotime('12-Apr-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('13-Apr-2010'), strtotime('13-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('14-Apr-2010'), strtotime('14-Apr-2010'), $frequency_criteria), FALSE);
     //Range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('07-Apr-2010'), strtotime('12-Apr-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('14-Apr-2010'), strtotime('19-Apr-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('11-Apr-2010'), strtotime('17-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('12-Apr-2010'), strtotime('18-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('13-Apr-2010'), strtotime('19-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('14-Apr-2010'), strtotime('20-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('12-Apr-2010'), strtotime('17-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('13-Apr-2010'), strtotime('17-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('14-Apr-2010'), strtotime('17-Apr-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('11-Apr-2010'), strtotime('18-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('11-Apr-2010'), strtotime('19-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('11-Apr-2010'), strtotime('24-Apr-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(40, strtotime('11-Apr-2010'), strtotime('25-Apr-2010'), $frequency_criteria), TRUE);
     //Specific date
     $frequency_criteria = array('month' => 0, 'day_of_month' => 0, 'day_of_week' => 0, 'quarter_month' => 0, 'date' => strtotime('01-Jan-2010'));
     //No range
     $this->assertEquals(TTDate::inApplyFrequencyWindow(100, strtotime('01-Jan-2010'), strtotime('01-Jan-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(100, strtotime('31-Dec-2009'), strtotime('01-Jan-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(100, strtotime('01-Jan-2010'), strtotime('02-Jan-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(100, strtotime('30-Dec-2009'), strtotime('31-Dec-2009'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(100, strtotime('02-Jan-2010'), strtotime('03-Jan-2010'), $frequency_criteria), FALSE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(100, strtotime('01-Jan-2009'), strtotime('01-Jan-2010'), $frequency_criteria), TRUE);
     $this->assertEquals(TTDate::inApplyFrequencyWindow(100, strtotime('01-Jan-2009'), strtotime('01-Jan-2011'), $frequency_criteria), TRUE);
 }