public function testVirtualAttributeAliases() { $clauses = [QQ::GroupBy(QQN::Project()->ProjectStatusTypeId), QQ::Sum(QQN::Project()->Budget, 'Budget Amount'), QQ::Expand(QQ::Virtual('Balance', QQ::Func('SUM', QQ::Sub(QQN::Project()->Budget, QQN::Project()->Spent))))]; $cond = QQ::Equal(QQN::Project()->ProjectStatusTypeId, ProjectStatusType::Open); $objProject = Project::QuerySingle($cond, $clauses); $amount1 = $objProject->GetVirtualAttribute('Budget Amount'); $this->assertEquals(83000, $amount1); $amount2 = $objProject->GetVirtualAttribute('Balance'); $this->assertEquals(5599.5, $amount2); }
public function __get($strName) { switch ($strName) { case 'Votes': $mixResult = NarroSuggestionVote::QuerySingle(QQ::Equal(QQN::NarroSuggestionVote()->SuggestionId, $this->SuggestionId), array(QQ::Sum(QQN::NarroSuggestionVote()->VoteValue, 'votes'), QQ::GroupBy(QQN::NarroSuggestionVote()->SuggestionId))); if ($mixResult instanceof NarroSuggestionVote) { return $mixResult->GetVirtualAttribute('votes'); } else { return 0; } default: try { return parent::__get($strName); break; } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } }
protected function btnSave_Click($strFormId, $strControlId, $strParameter) { $blnError = false; // Do not allow duplicate Location names if ($this->blnEditMode) { $objLocationDuplicate = Location::QuerySingle(QQ::AndCondition(QQ::Equal(QQN::Location()->ShortDescription, $this->txtShortDescription->Text), QQ::NotEqual(QQN::Location()->LocationId, $this->objLocation->LocationId))); } else { $objLocationDuplicate = Location::QuerySingle(QQ::Equal(QQN::Location()->ShortDescription, $this->txtShortDescription->Text)); } if ($objLocationDuplicate) { $blnError = true; $this->txtShortDescription->Warning = 'This Location Name is already in use. Please try another.'; $this->txtShortDescription->Focus(); } // Check if there is any inventory at this location $objInventoryLocation = InventoryLocation::QuerySingle(QQ::Equal(QQN::InventoryLocation()->LocationId, $this->objLocation->LocationId), QQ::Clause(QQ::Sum(QQN::InventoryLocation()->Quantity, 'QuantityTotal'))); $intInventoryAtLocation = $objInventoryLocation->GetVirtualAttribute('QuantityTotal'); // Don't allow disabling of locations with assets or inventory quantities if ($this->blnEditMode && $this->objLocation->EnabledFlag && !$this->chkEnabled->Checked && (Asset::CountByLocationId($this->objLocation->LocationId) > 0 || $intInventoryAtLocation > 0)) { $blnError = true; $this->chkEnabled->Warning = 'Location must be empty before disabling.'; $this->chkEnabled->Focus(); } if (!$blnError) { try { $this->UpdateLocationFields(); $this->objLocation->Save(); $this->RedirectToListPage(); } catch (QExtendedOptimisticLockingException $objExc) { $this->btnCancel->Warning = sprintf('This location has been updated by another user. You must <a href="location_edit.php?intLocationId=%s">Refresh</a> to edit this location.', $this->objLocation->LocationId); } } }