/** * Load an array of objAssetTransactions * @param $blnReturnStrQuery - true/false (return strSqlQuery / return objAssetTransaction[]) * @param $strAssetModel * @param $strAssetCode * @param $strAssetModelCode * @param $strUser * @param $intCheckedOutBy * @param $intReservedBy * @param $strCategory * @param $strManufacturer * @param $strSortByDate * @param $strDateModified * @param $strDateModifiedFirst * @param $strDateModifiedLast * @param $arrTransactionTypes * @param $objExpansionMap * @return strSqlQuery / objAssetTransaction[] */ public function LoadArrayBySearch($blnReturnStrQuery = true, $strAssetModel = null, $strAssetCode = null, $strAssetModelCode = null, $strUser = null, $intCheckedOutBy = null, $intReservedBy = null, $strCategory = null, $strManufacturer = null, $strSortByDate = "ASC", $strDateModified = null, $strDateModifiedFirst = null, $strDateModifiedLast = null, $arrTransactionTypes = null, $objExpansionMap = null) { // Setup QueryExpansion $objQueryExpansion = new QQueryExpansion(); if ($objExpansionMap) { try { AssetTransaction::ExpandQuery('asset_transaction', null, $objExpansionMap, $objQueryExpansion); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } $strTransactionTypes = ""; if ($arrTransactionTypes) { $strTransactionTypes = sprintf("AND `asset_transaction__transaction_id`.`transaction_type_id` IN ('%s') ", implode("', '", $arrTransactionTypes)); } if ($strAssetModel) { $strAssetModel = "AND `asset_transaction__asset_id__asset_model_id`.`short_description` LIKE '%" . $strAssetModel . "%'\n"; } if ($strAssetCode) { $strAssetCode = "AND `asset_transaction__asset_id`.`asset_code` LIKE '%" . $strAssetCode . "%'\n"; } if ($strAssetModelCode) { $strAssetModelCode = "AND `asset_transaction__asset_id__asset_model_id`.`asset_model_code` LIKE '%" . $strAssetModelCode . "%'\n"; } if ($strUser) { $strUser = sprintf("AND (`asset_transaction__transaction_id__created_by`.`user_account_id` = '%s' OR `asset_transaction__transaction_id__modified_by`.`user_account_id` = '%s')\n", $strUser, $strUser); } $strCheckedOutBy = ""; if ($intCheckedOutBy) { $strCheckedOutBy = sprintf("AND `asset_transaction__asset_id`.`checked_out_flag` = true\n"); if ($intCheckedOutBy != 'any') { $strCheckedOutBy .= sprintf("AND `asset_transaction`.`created_by` = '%s'\n", $intCheckedOutBy); } } $strReservedBy = ""; if ($intReservedBy) { $strReservedBy = sprintf("AND `asset_transaction__asset_id`.`reserved_flag` = true\n"); if ($intReservedBy != 'any') { $strReservedBy .= sprintf("AND `asset_transaction`.`created_by` = '%s'\n", $intReservedBy); } } if ($strCategory) { $strCategory = sprintf("AND `asset_transaction__asset_id__asset_model_id`.`category_id` = '%s'\n", $strCategory); } if ($strManufacturer) { $strManufacturer = sprintf("AND `asset_transaction__asset_id__asset_model_id`.`manufacturer_id` = '%s'\n", $strManufacturer); } $arrSearchSql['strDateModifiedSql'] = null; if ($strDateModified) { if ($strDateModified == "before" && $strDateModifiedFirst instanceof QDateTime) { $strDateModifiedFirst = QApplication::$Database[1]->SqlVariable($strDateModifiedFirst->Timestamp, false); $arrSearchSql['strDateModifiedSql'] = sprintf("AND (UNIX_TIMESTAMP(`asset_transaction`.`modified_date`) < %s OR UNIX_TIMESTAMP(`asset_transaction`.`creation_date`) < %s)\n", $strDateModifiedFirst, $strDateModifiedFirst); } elseif ($strDateModified == "after" && $strDateModifiedFirst instanceof QDateTime) { $strDateModifiedFirst = QApplication::$Database[1]->SqlVariable($strDateModifiedFirst->Timestamp, false); $arrSearchSql['strDateModifiedSql'] = sprintf("AND (UNIX_TIMESTAMP(`asset_transaction`.`modified_date`) > %s OR UNIX_TIMESTAMP(`asset_transaction`.`creation_date`) > %s)\n", $strDateModifiedFirst, $strDateModifiedFirst); } elseif ($strDateModified == "between" && $strDateModifiedFirst instanceof QDateTime && $strDateModifiedLast instanceof QDateTime) { $strDateModifiedFirst = QApplication::$Database[1]->SqlVariable($strDateModifiedFirst->Timestamp, false); // Added 86399 (23 hrs., 59 mins., 59 secs) because the After variable needs to include the date given // When only a date is given, conversion to a timestamp assumes 12:00am $strDateModifiedLast = QApplication::$Database[1]->SqlVariable($strDateModifiedLast->Timestamp, false) + 86399; $arrSearchSql['strDateModifiedSql'] = sprintf("AND (UNIX_TIMESTAMP(`asset_transaction`.`modified_date`) > %s AND UNIX_TIMESTAMP(`asset_transaction`.`modified_date`) < %s", $strDateModifiedFirst, $strDateModifiedLast); $arrSearchSql['strDateModifiedSql'] .= sprintf(" OR UNIX_TIMESTAMP(`asset_transaction`.`creation_date`) > %s AND UNIX_TIMESTAMP(`asset_transaction`.`creation_date`) < %s)\n", $strDateModifiedFirst, $strDateModifiedLast); } } $strSortByDate = sprintf("\n `asset_transaction__transaction_id__modified_date` %s,\n `asset_transaction__transaction_id__creation_date` %s,\n\t\t\t", $strSortByDate, $strSortByDate); $arrCustomFieldSql = CustomField::GenerateHelperSql(EntityQtype::Asset); $strQuery = sprintf(' SELECT `asset_transaction`.`asset_transaction_id` AS `asset_transaction_id`, `asset_transaction`.`asset_id` AS `asset_id`, `asset_transaction`.`transaction_id` AS `transaction_id`, `asset_transaction`.`parent_asset_transaction_id` AS `parent_asset_transaction_id`, `asset_transaction`.`source_location_id` AS `source_location_id`, `asset_transaction`.`destination_location_id` AS `destination_location_id`, `asset_transaction`.`new_asset_flag` AS `new_asset_flag`, `asset_transaction`.`new_asset_id` AS `new_asset_id`, `asset_transaction`.`schedule_receipt_flag` AS `schedule_receipt_flag`, `asset_transaction`.`schedule_receipt_due_date` AS `schedule_receipt_due_date`, `asset_transaction`.`created_by` AS `created_by`, `asset_transaction`.`creation_date` AS `creation_date`, `asset_transaction`.`modified_by` AS `modified_by`, `asset_transaction`.`modified_date` AS `modified_date` %s %s FROM `asset_transaction` AS `asset_transaction` %s %s WHERE 1=1 %s %s %s %s %s %s %s %s %s %s ORDER BY %s `transaction_id`, `asset_transaction__asset_id__asset_code` ', $objQueryExpansion->GetSelectSql(",\n\t\t\t\t\t", ",\n\t\t\t\t\t"), $arrCustomFieldSql['strSelect'], $objQueryExpansion->GetFromSql("", "\n\t\t\t\t\t"), str_replace("`asset`.`asset_id`", " `asset_transaction__asset_id`.`asset_id`", $arrCustomFieldSql['strFrom']), $strTransactionTypes, $strAssetModel, $strAssetCode, $strAssetModelCode, $strUser, $strCheckedOutBy, $strReservedBy, $strCategory, $strManufacturer, $arrSearchSql['strDateModifiedSql'], $strSortByDate); if ($blnReturnStrQuery) { return $strQuery; } else { $objDatabase = AssetTransaction::GetDatabase(); $objDbResult = $objDatabase->Query($strQuery); return AssetTransaction::InstantiateDbResult($objDbResult); } }
/** * Gets the historical journal for an object from the log database. * Objects will have VirtualAttributes available to lookup login, date, and action information from the journal object. * @param integer intAssetTransactionId * @return AssetTransaction[] */ public static function GetJournalForId($intAssetTransactionId) { $objDatabase = AssetTransaction::GetDatabase()->JournalingDatabase; $objResult = $objDatabase->Query('SELECT * FROM asset_transaction WHERE asset_transaction_id = ' . $objDatabase->SqlVariable($intAssetTransactionId) . ' ORDER BY __sys_date'); return AssetTransaction::InstantiateDbResult($objResult); }
/** * Static Qcodo Query method to query for an array of AssetTransaction objects. * Uses BuildQueryStatment to perform most of the work. * @param QQCondition $objConditions any conditions on the query, itself * @param QQClause[] $objOptionalClausees additional optional QQClause objects for this query * @param mixed[] $mixParameterArray a array of name-value pairs to perform PrepareStatement with * @return AssetTransaction[] the queried objects as an array */ public static function QueryArray(QQCondition $objConditions, $objOptionalClauses = null, $mixParameterArray = null) { // Get the Query Statement try { $strQuery = AssetTransaction::BuildQueryStatement($objQueryBuilder, $objConditions, $objOptionalClauses, $mixParameterArray, false); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } // Perform the Query and Instantiate the Array Result $objDbResult = $objQueryBuilder->Database->Query($strQuery); return AssetTransaction::InstantiateDbResult($objDbResult, $objQueryBuilder->ExpandAsArrayNodes); }