/** * Load an array of Receipt objects * by Company, Contact, Receipt Number, Asset Code, InventoryModelCode, or Status * using the receipt_custom_field_helper table * * @param string $strFromCompany * @param string $strFromContact * @param string $strReceiptNumber * @param string $strAssetCode * @param string $strInventoryModelCode * @param int $intStatus * @param string $strNote * @param string $strDateModified * @param string $strDateModifiedFirst * @param string $strDateModifiedLast * @param string $strOrderBy * @param string $strLimit * @param array $objExpansionMap map of referenced columns to be immediately expanded via early-binding * @return Receipt[] */ public static function LoadArrayBySearchHelper($strFromCompany = null, $strFromContact = null, $strReceiptNumber = null, $strAssetCode = null, $strInventoryModelCode = null, $intStatus = null, $strNote = null, $strDueDate = null, $strReceiptDate = null, $arrCustomFields = null, $strDateModified = null, $strDateModifiedFirst = null, $strDateModifiedLast = null, $blnAttachment = null, $strOrderBy = null, $strLimit = null, $objExpansionMap = null) { Receipt::ArrayQueryHelper($strOrderBy, $strLimit, $strLimitPrefix, $strLimitSuffix, $strExpandSelect, $strExpandFrom, $objExpansionMap, $objDatabase); // Setup QueryExpansion $objQueryExpansion = new QQueryExpansion(); if ($objExpansionMap) { try { Receipt::ExpandQuery('receipt', null, $objExpansionMap, $objQueryExpansion); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } $arrSearchSql = Receipt::GenerateSearchSql($strFromCompany, $strFromContact, $strReceiptNumber, $strAssetCode, $strInventoryModelCode, $intStatus, $strNote, $strDueDate, $strReceiptDate, $arrCustomFields, $strDateModified, $strDateModifiedFirst, $strDateModifiedLast, $blnAttachment); $arrAttachmentSql = Attachment::GenerateSql(EntityQtype::Receipt); $arrCustomFieldSql = CustomField::GenerateHelperSql(EntityQtype::Receipt); $strQuery = sprintf(' SELECT %s DISTINCT `receipt`.`receipt_id` AS `receipt_id`, `receipt`.`transaction_id` AS `transaction_id`, `receipt`.`from_company_id` AS `from_company_id`, `receipt`.`from_contact_id` AS `from_contact_id`, `receipt`.`to_contact_id` AS `to_contact_id`, `receipt`.`to_address_id` AS `to_address_id`, `receipt`.`receipt_number` AS `receipt_number`, `receipt`.`due_date` AS `due_date`, `receipt`.`receipt_date` AS `receipt_date`, `receipt`.`received_flag` AS `received_flag`, `receipt`.`created_by` AS `created_by`, `receipt`.`creation_date` AS `creation_date`, `receipt`.`modified_by` AS `modified_by`, `receipt`.`modified_date` AS `modified_date` %s %s %s FROM `receipt` AS `receipt` %s %s %s %s %s WHERE 1=1 %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s ', $strLimitPrefix, $objQueryExpansion->GetSelectSql(",\n\t\t\t\t\t", ",\n\t\t\t\t\t"), $arrCustomFieldSql['strSelect'], $arrAttachmentSql['strSelect'], $objQueryExpansion->GetFromSql("", "\n\t\t\t\t\t"), $arrCustomFieldSql['strFrom'], $arrAttachmentSql['strFrom'], $arrSearchSql['strAssetCodeFromSql'], $arrSearchSql['strInventoryModelCodeFromSql'], $arrSearchSql['strFromCompanySql'], $arrSearchSql['strFromContactSql'], $arrSearchSql['strReceiptNumberSql'], $arrSearchSql['strAssetCodeSql'], $arrSearchSql['strInventoryModelCodeSql'], $arrSearchSql['strStatusSql'], $arrSearchSql['strNoteSql'], $arrSearchSql['strDueDateSql'], $arrSearchSql['strReceiptDateSql'], $arrSearchSql['strCustomFieldsSql'], $arrSearchSql['strDateModifiedSql'], $arrSearchSql['strAttachmentSql'], $arrSearchSql['strAuthorizationSql'], $arrAttachmentSql['strGroupBy'], $strOrderBy, $strLimitSuffix); //echo($strQuery); exit; $objDbResult = $objDatabase->Query($strQuery); return Receipt::InstantiateDbResult($objDbResult); }
/** * Internally called method to assist with early binding of objects * on load methods. Can only early-bind references that this class owns in the database. * @param string $strParentAlias the alias of the parent (if any) * @param string $strAlias the alias of this object * @param array $objExpansionMap map of referenced columns to be immediately expanded via early-binding * @param QueryExpansion an already instantiated QueryExpansion object (used as a utility object to assist with object expansion) */ public static function ExpandQuery($strParentAlias, $strAlias, $objExpansionMap, QQueryExpansion $objQueryExpansion) { if ($strAlias) { $objQueryExpansion->AddFromItem(sprintf('LEFT JOIN `receipt_custom_field_helper` AS `%s__%s` ON `%s`.`%s` = `%s__%s`.`receipt_id`', $strParentAlias, $strAlias, $strParentAlias, $strAlias, $strParentAlias, $strAlias)); $objQueryExpansion->AddSelectItem(sprintf('`%s__%s`.`receipt_id` AS `%s__%s__receipt_id`', $strParentAlias, $strAlias, $strParentAlias, $strAlias)); $strParentAlias = $strParentAlias . '__' . $strAlias; } if (is_array($objExpansionMap)) { foreach ($objExpansionMap as $strKey => $objValue) { switch ($strKey) { case 'receipt_id': try { Receipt::ExpandQuery($strParentAlias, $strKey, $objValue, $objQueryExpansion); break; } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } default: throw new QCallerException(sprintf('Unknown Object to Expand in %s: %s', $strParentAlias, $strKey)); } } } }