public function ParsePostData()
 {
     $blnChanged = false;
     $dttNewDateTime = new QDateTime();
     // Update Date Component
     switch ($this->strCalendarType) {
         case QCalendarType::DateOnly:
         case QCalendarType::DateTime:
         case QCalendarType::DateTimeSeconds:
             $strKey = $this->strControlId . "_intTimestamp";
             if (array_key_exists($strKey, $_POST)) {
                 // If no date was set, set to null and return
                 $intTimestamp = $_POST[$strKey];
                 if (!$intTimestamp) {
                     $this->intTimestamp = null;
                     return;
                 }
                 // Otherwise, set up a new date object, and update dttNewDateTime accordingly
                 $blnChanged = true;
                 $dttSelectedDate = QDateTime::FromTimestamp($_POST[$strKey]);
                 $dttNewDateTime->SetDate($dttSelectedDate->Year, $dttSelectedDate->Month, $dttSelectedDate->Day);
             }
     }
     // Update Time Component
     switch ($this->strCalendarType) {
         case QCalendarType::TimeOnly:
         case QCalendarType::TimeSecondsOnly:
         case QCalendarType::DateTime:
         case QCalendarType::DateTimeSeconds:
             // Hour
             $strKey = $this->strControlId . "_intHour";
             if (array_key_exists($strKey, $_POST)) {
                 $blnChanged = true;
                 $dttNewDateTime->SetTime($_POST[$strKey], $dttNewDateTime->Minute, $dttNewDateTime->Second);
             }
             // Minute
             $strKey = $this->strControlId . "_intMinute";
             if (array_key_exists($strKey, $_POST)) {
                 $blnChanged = true;
                 $dttNewDateTime->SetTime($dttNewDateTime->Hour, $_POST[$strKey], $dttNewDateTime->Second);
             }
             // Second
             $strKey = $this->strControlId . "_intSecond";
             if (array_key_exists($strKey, $_POST)) {
                 $blnChanged = true;
                 $dttNewDateTime->SetTime($dttNewDateTime->Hour, $dttNewDateTime->Minute, $_POST[$strKey]);
             }
     }
     // Update local intTimestamp
     $this->intTimestamp = $dttNewDateTime->Timestamp;
 }
示例#2
0
 public function dtgItems_Bind()
 {
     $intYear = QApplication::PathInfo(0);
     $dttStart = new QDateTime($intYear . '-01-01');
     $dttEnd = new QDateTime($dttStart);
     $dttEnd->Year += 1;
     $dttStart->SetTime(null, null, null);
     $dttEnd->SetTime(null, null, null);
     $objPersonCursor = Person::QueryCursor(QQ::AndCondition(QQ::GreaterOrEqual(QQN::Person()->StewardshipContribution->DateCredited, $dttStart), QQ::LessThan(QQN::Person()->StewardshipContribution->DateCredited, $dttEnd)), QQ::Clause(QQ::Distinct(), QQ::OrderBy(QQN::Person()->LastName, QQN::Person()->FirstName)));
     $strNameArray = array();
     $strNameValueArray = array();
     while ($objPerson = Person::InstantiateCursor($objPersonCursor)) {
         $strToken = strtolower($objPerson->FirstName . '|' . $objPerson->LastName);
         $strToken = str_replace(' ', '', $strToken);
         $strToken = str_replace('.', '', $strToken);
         $strToken = str_replace(',', '', $strToken);
         $strToken = str_replace('-', '', $strToken);
         $strToken = str_replace('_', '', $strToken);
         $strToken = str_replace('/', '', $strToken);
         if (array_key_exists($strToken, $strNameArray)) {
             $strNameValueArray[$strToken] = $objPerson->FirstName . ' ' . $objPerson->LastName;
         }
         $strNameArray[$strToken] = true;
     }
     $this->dtgItems->DataSource = $strNameValueArray;
 }
示例#3
0
 public function __get($strName)
 {
     switch ($strName) {
         case 'DateRange':
             return sprintf('Takes place from %s to %s', $this->dttDateStart->ToString('MMM D'), $this->dttDateEnd->ToString('MMM D'), $this->MeetsOnInfo);
         case 'MeetsOnInfo':
             if (!is_null($this->intMeetingDay) && !is_null($this->intMeetingStartTime) && !is_null($this->intMeetingEndTime)) {
                 $strArray = array(0 => 'Sunday', 1 => 'Monday', 2 => 'Tuesday', 3 => 'Wednesday', 4 => 'Thursday', 5 => 'Friday', 6 => 'Saturday');
                 $dttStart = new QDateTime();
                 $dttEnd = new QDateTime();
                 $dttStart->SetTime(floor($this->intMeetingStartTime / 100), $this->intMeetingStartTime % 100, 0);
                 $dttEnd->SetTime(floor($this->intMeetingEndTime / 100), $this->intMeetingEndTime % 100, 0);
                 return sprintf('%ss, %s to %s', $strArray[$this->intMeetingDay], $dttStart->ToString('h:mmz'), $dttEnd->ToString('h:mmz'));
             } else {
                 return 'TBA';
             }
         default:
             try {
                 return parent::__get($strName);
             } catch (QCallerException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
     }
 }
示例#4
0
文件: datagen.cli.php 项目: alcf/chms
 public static function GenerateStewardship()
 {
     $dttDate = new QDateTime('2004-01-05');
     print 'Generating Stewardship... ';
     $objFundArray = StewardshipFund::QueryArray(QQ::NotEqual(QQN::StewardshipFund()->Id, 1));
     while ($dttDate->IsEarlierThan(QDateTime::Now())) {
         print $strDate = '[' . $dttDate->ToString('YYYY-MMM-DD') . ']';
         $intCheckCount = rand(10, 55);
         $arrStack = array();
         for ($i = 0; $i < floor(($intCheckCount - 1) / 25) + 1; $i++) {
             $arrStack[] = null;
         }
         $objBatch = StewardshipBatch::Create(self::GenerateFromArray(self::$StewardshipUserArray), $arrStack, self::GenerateFromArray(array('Weekend T/O', 'Weekend Giving', 'Tithes and Offerings', 'Tithes & Offerings', null)), $dttDate, $dttDate);
         $intStackCount = $objBatch->CountStewardshipStacks();
         $dttStart = new QDateTime($dttDate);
         $dttStart->SetTime(8, 0, 0);
         $dttEnd = new QDateTime($dttDate);
         $dttEnd->SetTime(16, 0, 0);
         for ($i = 0; $i < $intStackCount; $i++) {
             if ($i == $intStackCount - 1) {
                 if ($intCheckCount % 25 == 0) {
                     $intChecksInStackCount = 25;
                 } else {
                     $intChecksInStackCount = $intCheckCount % 25;
                 }
             } else {
                 $intChecksInStackCount = 25;
             }
             $objStack = StewardshipStack::LoadByStewardshipBatchIdStackNumber($objBatch->Id, $i + 1);
             for ($j = 0; $j < $intChecksInStackCount; $j++) {
                 $objHousehold = self::GenerateFromArray(self::$HouseholdArray);
                 $objHouseholdParticipant = self::GenerateFromArray($objHousehold->GetHouseholdParticipationArray());
                 $mixAmountArray = array();
                 if (rand(0, 50)) {
                     $mixAmountArray[] = array(1, rand(1000, 150000) / 100);
                 } else {
                     $mixAmountArray[] = array(self::GenerateFromArray($objFundArray)->Id, rand(1000, 150000) / 100);
                 }
                 if (!rand(0, 20)) {
                     $mixAmountArray[] = array(self::GenerateFromArray($objFundArray)->Id, rand(1000, 150000) / 100);
                 }
                 $objContribution = StewardshipContribution::Create($objBatch->CreatedByLogin, $objHouseholdParticipant->Person, $objStack, StewardshipContributionType::Check, rand(1000, 9999), $mixAmountArray, self::GenerateDateTime($dttStart, $dttEnd), null, null, null, false);
                 if (rand(0, 5)) {
                     $objContribution->SaveImageFile(__DEVTOOLS_CLI__ . '/datagen_file_assets/check.tif');
                 }
             }
             $objStack->RefreshActualTotalAmount();
         }
         if ($intCheckCount != $objBatch->CountStewardshipContributions()) {
             print "\r\n" . 'MISCOUNT: ' . $objBatch->Id . "\r\n";
         }
         $objBatch->RefreshActualTotalAmount();
         $dttDate->Day += 7;
         print str_repeat(chr(8) . ' ' . chr(8), strlen($strDate));
     }
     print "Done.\r\n";
 }
示例#5
0
 public function dtgItems_Bind()
 {
     $intYear = QApplication::PathInfo(0);
     $dttStart = new QDateTime($intYear . '-01-01');
     $dttEnd = new QDateTime($dttStart);
     $dttEnd->Year += 1;
     $dttStart->SetTime(null, null, null);
     $dttEnd->SetTime(null, null, null);
     $this->dtgItems->DataSource = Person::QueryArray(QQ::AndCondition(QQ::GreaterOrEqual(QQN::Person()->StewardshipContribution->DateCredited, $dttStart), QQ::LessThan(QQN::Person()->StewardshipContribution->DateCredited, $dttEnd), QQ::IsNull(QQN::Person()->PrimaryAddressText), QQ::IsNull(QQN::Person()->StewardshipAddressId)), QQ::Clause(QQ::Distinct(), QQ::OrderBy(QQN::Person()->LastName, QQN::Person()->FirstName)));
 }
示例#6
0
 public function __get($strName)
 {
     switch ($strName) {
         case 'GeneratedDescription':
             if ($this->strLocation || $this->dttDateStart || $this->dttDateEnd) {
                 $strToReturn = ', to be held';
                 if ($this->strLocation) {
                     $strToReturn .= ' at ' . $this->strLocation;
                 }
                 if ($this->dttDateStart && $this->dttDateEnd) {
                     $dttCompare1 = new QDateTime($this->dttDateStart);
                     $dttCompare2 = new QDateTime($this->dttDateEnd);
                     $dttCompare1->SetTime(null, null, null);
                     $dttCompare2->SetTime(null, null, null);
                     if ($dttCompare1->IsEqualTo($dttCompare2)) {
                         $strToReturn .= ' on ' . $this->dttDateStart->ToString('MMMM D YYYY');
                         $strToReturn .= ' from ' . $this->dttDateStart->ToString('h:mm z');
                         $strToReturn .= ' to ' . $this->dttDateEnd->ToString('h:mm z');
                     } else {
                         $strToReturn .= ' from ' . $this->dttDateStart->ToString('MMMM D');
                         $strToReturn .= ' to ' . $this->dttDateEnd->ToString('MMMM D YYYY');
                     }
                 } else {
                     if ($this->dttDateStart) {
                         $strToReturn .= ' on ' . $this->dttDateStart->ToString('MMMM D YYYY');
                         if ($this->dttDateStart->Hour || $this->dttDateStart->Minute) {
                             $strToReturn .= ' @ ' . $this->dttDateStart->ToString('h:mm z');
                         }
                     } else {
                         if ($this->dttDateEnd) {
                             $strToReturn .= ' until ' . $this->dttDateEnd->ToString('MMMM D YYYY');
                             if ($this->dttDateStart->Hour || $this->dttDateEnd->Minute) {
                                 $strToReturn .= ' @ ' . $this->dttDateEnd->ToString('h:mm z');
                             }
                         }
                     }
                 }
                 return $strToReturn;
             } else {
                 return null;
             }
             break;
         default:
             try {
                 return parent::__get($strName);
             } catch (QCallerException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
     }
 }
示例#7
0
 /**
  * Returns an array of 2-item arrays, where each item has the following index:
  * 	0: stewardship_fund_id
  * 	1; total amount YTD
  * for a given month
  * @param QDateTime $dttMonth
  * @return string[][]
  */
 public static function GetReportYtdByFundForMonth(QDateTime $dttMonth)
 {
     $dttMonth->Day = 1;
     $dttMonth->SetTime(null, null, null);
     $dttNextMonth = new QDateTime($dttMonth);
     $dttNextMonth->Month++;
     $dttNextMonth->SetTime(null, null, null);
     $dttMonth->Month = 1;
     $objResult = StewardshipPostAmount::GetDatabase()->Query(sprintf("SELECT stewardship_fund_id, SUM(amount) AS sum_amount FROM stewardship_post_amount, stewardship_post, stewardship_batch WHERE\n\t\t\t\tstewardship_batch_id=stewardship_batch.id AND\n\t\t\t\tstewardship_post_id=stewardship_post.id AND date_credited >= '%s' AND date_credited < '%s' GROUP BY stewardship_fund_id ORDER BY SUM(amount) DESC;", $dttMonth->ToString('YYYY-MM-DD'), $dttNextMonth->ToString('YYYY-MM-DD')));
     $strToReturn = array();
     while ($objRow = $objResult->GetNextRow()) {
         $strToReturn[] = array($objRow->GetColumn('stewardship_fund_id'), $objRow->GetColumn('sum_amount'));
     }
     return $strToReturn;
 }
示例#8
0
 /**
  * Creates a new StewardshipBatch with a given description and Batch Date.  Will use Now() if no date is specified.
  * @param Login $objLogin the login responsible for creating this
  * @param float $fltReportedTotalAmountArray[] optional
  * @param string $strDescription optional
  * @param QDateTime $dttBatchDate optional, or will use Now() if null
  * @param QDateTime $dttDateCredited optional, or will use $dttBatchDate if null
  * @return StewardshipBatch
  */
 public static function Create(Login $objLogin, $fltReportedTotalAmountArray = null, $strDescription = null, QDateTime $dttBatchDate = null, QDateTime $dttDateCredited = null)
 {
     if (!$dttBatchDate) {
         $dttBatchDate = QDateTime::Now();
     } else {
         $dttBatchDate = new QDateTime($dttBatchDate);
     }
     $dttBatchDate->SetTime(null, null, null);
     if (!$dttDateCredited) {
         $dttDateCredited = new QDateTime($dttBatchDate);
     } else {
         $dttDateCredited = new QDateTime($dttDateCredited);
     }
     $dttDateCredited->SetTime(null, null, null);
     $objBatch = new StewardshipBatch();
     $objBatch->CreatedByLogin = $objLogin;
     $objBatch->StewardshipBatchStatusTypeId = StewardshipBatchStatusType::NewBatch;
     $objBatch->DateEntered = $dttBatchDate;
     $objBatch->DateCredited = $dttDateCredited;
     $objCurrentLastLetter = StewardshipBatch::QuerySingle(QQ::Equal(QQN::StewardshipBatch()->DateEntered, $dttBatchDate), QQ::OrderBy(QQN::StewardshipBatch()->BatchLabel, false));
     if ($objCurrentLastLetter) {
         $objBatch->BatchLabel = chr(ord($objCurrentLastLetter->BatchLabel) + 1);
     } else {
         $objBatch->BatchLabel = 'A';
     }
     if ($fltReportedTotalAmountArray) {
         $objBatch->ReportedTotalAmount = null;
         foreach ($fltReportedTotalAmountArray as $fltReportedTotalAmount) {
             $objBatch->ReportedTotalAmount += $fltReportedTotalAmount;
         }
     }
     $objBatch->ActualTotalAmount = 0;
     $objBatch->PostedTotalAmount = 0;
     $objBatch->Description = $strDescription;
     $objBatch->Save();
     // Create Stacks
     if ($fltReportedTotalAmountArray) {
         foreach ($fltReportedTotalAmountArray as $fltReportedTotalAmount) {
             $objBatch->CreateStack($fltReportedTotalAmount);
         }
     }
     return $objBatch;
 }
		public function __get($strName) {
			switch ($strName) {
				// MISC
				case "DateTime":
					if ($this->intTimestamp) {
						$dttToReturn = new QDateTime($this->intTimestamp);
						$dttToReturn->SetTime(null, null, null);
						return $dttToReturn;
					} else {
						return null;
					}
				
				case "CalendarType":
					return $this->strCalendarType;

//				case "MinimumDate": return $this->dttMinimumDate;
//				case "MaximumDate": return $this->dttMaximumDate;
				default:
					try {
						return parent::__get($strName);
					} catch (QCallerException $objExc) {
						$objExc->IncrementOffset();
						throw $objExc;
					}
			}
		}
 public function testSetProperties()
 {
     $obj1 = new QDateTime();
     $obj1->setDate(2002, 3, 15);
     $this->assertTrue($obj1->IsTimeNull(), "Setting only a date after null constructor keeps time null");
     $obj2 = new QDateTime("2002-03-15");
     $obj3 = new QDateTime("2002-03-15 13:15");
     $obj4 = new QDateTime("2002-03-16");
     $this->assertTrue($obj1->IsEqualTo($obj2));
     $this->assertTrue($obj1->IsEqualTo($obj3));
     // dates are the same!
     $this->assertFalse($obj3->IsEqualTo($obj4));
     // dates are different!
     $obj5 = new QDateTime('13:15:02', null, QDateTime::TimeOnlyType);
     $this->assertTrue($obj5->IsDateNull(), "Setting only a date after null constructor keeps time null");
     $obj6 = new QDateTime('2002-03-15 13:15:02');
     $obj1->SetTime($obj5);
     $this->assertFalse($obj1->IsTimeNull(), "Setting a time with object results in a change in null time status");
     $this->assertTrue($obj1->IsEqualTo($obj6), "SetTime correctly combines date only and time only values");
 }