}
}
}
+ $this->_selectClauses = $select;
$this->_select = 'SELECT ' . implode(', ', $select) . ' ';
}
ON fitem.entity_id = {$this->_aliases['civicrm_line_item']}.id AND fitem.entity_table = 'civicrm_line_item' ";
if ($this->isTableSelected('civicrm_batch')) {
$this->_from .= "LEFT JOIN civicrm_entity_batch ent_batch
- ON {$this->_aliases['civicrm_financial_trxn']}.id = ent_batch.entity_id AND ent_batch.entity_table = 'civicrm_financial_trxn'
+ ON {$this->_aliases['civicrm_financial_trxn']}.id = ent_batch.entity_id AND ent_batch.entity_table = 'civicrm_financial_trxn'
LEFT JOIN civicrm_batch batch
ON ent_batch.batch_id = batch.id";
}
}
public function groupBy() {
- $this->_groupBy = " GROUP BY {$this->_aliases['civicrm_entity_financial_trxn']}.id, {$this->_aliases['civicrm_line_item']}.id ";
+ $groupFromSelect = '';
+ $groupBy = array(
+ "{$this->_aliases['civicrm_entity_financial_trxn']}.id",
+ "{$this->_aliases['civicrm_line_item']}.id"
+ );
+ $groupFromSelect = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy);
+ $this->_groupBy = " GROUP BY " . implode(', ', $groupBy) . " {$groupFromSelect}";
}
/**
public function statistics(&$rows) {
$statistics = parent::statistics($rows);
$tempTableName = CRM_Core_DAO::createTempTableName('civicrm_contribution');
- $select = "SELECT {$this->_aliases['civicrm_contribution']}.id, {$this->_aliases['civicrm_entity_financial_trxn']}.id as trxnID, {$this->_aliases['civicrm_contribution']}.currency,
- CASE
- WHEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.entity_id IS NOT NULL
- THEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.amount
- ELSE {$this->_aliases['civicrm_entity_financial_trxn']}.amount
- END as amount
-";
+
+ $this->_selectClauses = array(
+ "{$this->_aliases['civicrm_contribution']}.id",
+ "{$this->_aliases['civicrm_entity_financial_trxn']}.id as trxnID",
+ "{$this->_aliases['civicrm_contribution']}.currency",
+ "CASE
+ WHEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.entity_id IS NOT NULL
+ THEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.amount
+ ELSE {$this->_aliases['civicrm_entity_financial_trxn']}.amount
+ END as amount",
+ );
+ $select = "SELECT " . implode(', ', $this->_selectClauses);
+
+ $this->groupBy();
$tempQuery = "CREATE TEMPORARY TABLE {$tempTableName} CHARACTER SET utf8 COLLATE utf8_unicode_ci AS
{$select} {$this->_from} {$this->_where} {$this->_groupBy} ";