protected $_groupByDateFreq = array(
'MONTH' => 'Month',
'YEARWEEK' => 'Week',
+ 'DATE' => 'Day',
'QUARTER' => 'Quarter',
'YEAR' => 'Year',
'FISCALYEAR' => 'Fiscal Year',
);
+ /**
+ * This report has been optimised for group filtering.
+ *
+ * CRM-19170
+ *
+ * @var bool
+ */
+ protected $groupFilterNotOptimised = FALSE;
+
/**
* Class constructor.
*/
'avg' => ts('Contribution Avg'),
),
),
+ 'non_deductible_amount' => array(
+ 'title' => ts('Non-deductible Amount'),
+ ),
),
'grouping' => 'contri-fields',
'filters' => array(
'type' => CRM_Utils_Type::T_INT,
),
'currency' => array(
- 'title' => 'Currency',
+ 'title' => ts('Currency'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'options' => CRM_Core_OptionGroup::values('currencies_enabled'),
'default' => NULL,
'total_amount' => array(
'title' => ts('Contribution Amount'),
),
+ 'non_deductible_amount' => array(
+ 'title' => ts('Non-deductible Amount'),
+ ),
'total_sum' => array(
'title' => ts('Contribution Aggregate'),
'type' => CRM_Report_Form::OP_INT,
'title' => ts('Soft Credit Amount'),
),
'soft_credit_type_id' => array(
- 'title' => 'Soft Credit Type',
+ 'title' => ts('Soft Credit Type'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'options' => CRM_Core_OptionGroup::values('soft_credit_type'),
'default' => NULL,
// If we have a campaign, build out the relevant elements
if ($campaignEnabled && !empty($this->activeCampaigns)) {
$this->_columns['civicrm_contribution']['fields']['campaign_id'] = array(
- 'title' => 'Campaign',
+ 'title' => ts('Campaign'),
'default' => 'false',
);
$this->_columns['civicrm_contribution']['filters']['campaign_id'] = array(
$select[] = "DATE_SUB({$field['dbAlias']}, INTERVAL WEEKDAY({$field['dbAlias']}) DAY) AS {$tableName}_{$fieldName}_start";
$select[] = "YEARWEEK({$field['dbAlias']}) AS {$tableName}_{$fieldName}_subtotal";
$select[] = "WEEKOFYEAR({$field['dbAlias']}) AS {$tableName}_{$fieldName}_interval";
- $field['title'] = 'Week';
+ $field['title'] = ts('Week Beginning');
break;
case 'YEAR':
$select[] = "MAKEDATE(YEAR({$field['dbAlias']}), 1) AS {$tableName}_{$fieldName}_start";
$select[] = "YEAR({$field['dbAlias']}) AS {$tableName}_{$fieldName}_subtotal";
$select[] = "YEAR({$field['dbAlias']}) AS {$tableName}_{$fieldName}_interval";
- $field['title'] = 'Year';
+ $field['title'] = ts('Year Beginning');
break;
case 'FISCALYEAR':
$select[] = "DATE_ADD(MAKEDATE({$fiscal}, 1), INTERVAL ({$fy{'M'}})-1 MONTH) AS {$tableName}_{$fieldName}_start";
$select[] = "{$fiscal} AS {$tableName}_{$fieldName}_subtotal";
$select[] = "{$fiscal} AS {$tableName}_{$fieldName}_interval";
- $field['title'] = 'Fiscal Year';
+ $field['title'] = ts('Fiscal Year Beginning');
break;
case 'MONTH':
$select[] = "DATE_SUB({$field['dbAlias']}, INTERVAL (DAYOFMONTH({$field['dbAlias']})-1) DAY) as {$tableName}_{$fieldName}_start";
$select[] = "MONTH({$field['dbAlias']}) AS {$tableName}_{$fieldName}_subtotal";
$select[] = "MONTHNAME({$field['dbAlias']}) AS {$tableName}_{$fieldName}_interval";
- $field['title'] = 'Month';
+ $field['title'] = ts('Month Beginning');
+ break;
+
+ case 'DATE':
+ $select[] = "DATE({$field['dbAlias']}) as {$tableName}_{$fieldName}_start";
+ $field['title'] = ts('Date');
break;
case 'QUARTER':
break;
}
if (!empty($this->_params['group_bys_freq'][$fieldName])) {
- $this->_interval = $field['title'];
- $this->_columnHeaders["{$tableName}_{$fieldName}_start"]['title'] = $field['title'] . ' Beginning';
+ $this->_interval = $this->_params['group_bys_freq'][$fieldName];
+ $this->_columnHeaders["{$tableName}_{$fieldName}_start"]['title'] = $field['title'];
$this->_columnHeaders["{$tableName}_{$fieldName}_start"]['type'] = $field['type'];
$this->_columnHeaders["{$tableName}_{$fieldName}_start"]['group_by'] = $this->_params['group_bys_freq'][$fieldName];
* Set from clause.
*
* @param string $entity
+ *
+ * @todo fix function signature to match parent. Remove hacky passing of $entity
+ * to acheive unclear results.
*/
public function from($entity = NULL) {
$softCreditJoinType = "LEFT";
$softCreditJoin .= " AND {$this->_aliases['civicrm_contribution_soft']}.id = (SELECT MIN(id) FROM civicrm_contribution_soft cs WHERE cs.contribution_id = {$this->_aliases['civicrm_contribution']}.id) ";
}
- $this->_from = "
- FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom}
+ $this->setFromBase('civicrm_contact');
+
+ $this->_from .= "
INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']}
ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id AND
{$this->_aliases['civicrm_contribution']}.is_test = 0
ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND
{$this->_aliases['civicrm_phone']}.is_primary = 1)";
- if ($this->_addressField) {
- $this->_from .= "
- LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']}
- ON {$this->_aliases['civicrm_contact']}.id =
- {$this->_aliases['civicrm_address']}.contact_id AND
- {$this->_aliases['civicrm_address']}.is_primary = 1\n";
- }
+ $this->addAddressFromClause();
if (!empty($this->_params['batch_id_value'])) {
$this->_from .= "
LEFT JOIN civicrm_entity_financial_trxn eft
ON {$this->_aliases['civicrm_batch']}.entity_id = eft.financial_trxn_id AND
{$this->_aliases['civicrm_batch']}.entity_table = 'civicrm_financial_trxn'\n";
}
- $this->getPermissionedFTQuery($this);
}
/**
}
$this->_groupBy .= $this->_rollup;
// append select with ANY_VALUE() keyword
- $this->appendSelect($this->_selectClauses, $groupBy);
+ $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($this->_selectClauses, $groupBy);
}
/**