$summary['total']['amount'] = $summary['total']['avg'] = 0;
}
+ // soft credit summary
+ if (CRM_Contribute_BAO_Query::isSoftCreditOptionEnabled()) {
+ $softCreditWhere = "{$completedWhere} AND civicrm_contribution_soft.id IS NOT NULL";
+ $query = "
+ $select FROM (
+ SELECT civicrm_contribution_soft.amount as total_amount, civicrm_contribution_soft.currency $from $softCreditWhere
+ GROUP BY civicrm_contribution_soft.id
+ ) as conts
+ GROUP BY currency";
+ $dao = CRM_Core_DAO::executeQuery($query);
+ $summary['soft_credit']['count'] = 0;
+ $summary['soft_credit']['amount'] = $summary['soft_credit']['avg'] = array();
+ while ($dao->fetch()) {
+ $summary['soft_credit']['count'] += $dao->total_count;
+ $summary['soft_credit']['amount'][] = CRM_Utils_Money::format($dao->total_amount, $dao->currency);
+ $summary['soft_credit']['avg'][] = CRM_Utils_Money::format($dao->total_avg, $dao->currency);
+ }
+ if (!empty($summary['soft_credit']['amount'])) {
+ $summary['soft_credit']['amount'] = implode(', ', $summary['soft_credit']['amount']);
+ $summary['soft_credit']['avg'] = implode(', ', $summary['soft_credit']['avg']);
+ }
+ else {
+ $summary['soft_credit']['amount'] = $summary['soft_credit']['avg'] = 0;
+ }
+ }
+
// hack $select
//@todo - this could be one query using the IF in mysql - eg
// SELECT sum(total_completed), sum(count_completed), sum(count_cancelled), sum(total_cancelled) FROM (
if (!empty($query->_returnProperties['contribution_soft_credit_name'])) {
$query->_select['contribution_soft_credit_name'] = "civicrm_contact_d.display_name as contribution_soft_credit_name";
$query->_element['contribution_soft_credit_name'] = 1;
+
+ // also include contact id. Will help build hyperlinks
+ $query->_select['contribution_soft_credit_contact_id'] = "civicrm_contact_d.id as contribution_soft_credit_contact_id";
+ $query->_element['contribution_soft_credit_contact_id'] = 1;
+
$query->_tables['civicrm_contribution'] = 1;
$query->_tables['civicrm_contribution_soft'] = 1;
$query->_tables['civicrm_contribution_soft_contact'] = 1;
}
+ if (!empty($query->_returnProperties['contribution_soft_credit_contact_id'])) {
+ $query->_tables['civicrm_contribution'] = 1;
+ $query->_tables['civicrm_contribution_soft'] = 1;
+ }
+
if (!empty($query->_returnProperties['contribution_soft_credit_amount'])) {
$query->_select['contribution_soft_credit_amount'] = "civicrm_contribution_soft.amount as contribution_soft_credit_amount";
$query->_element['contribution_soft_credit_amount'] = 1;
}
static function initializeAnySoftCreditClause(&$query) {
- if (self::initializeAnySoftCreditsVars($query->_params)) {
+ if (self::isSoftCreditOptionEnabled($query->_params)) {
if ($query->_mode & CRM_Contact_BAO_Query::MODE_CONTRIBUTE) {
unset($query->_distinctComponentClause, $query->_groupByComponentClause);
$query->_rowCountClause = " count(civicrm_contribution.id)";
}
}
- static function initializeAnySoftCreditsVars($queryParams = array()) {
+ static function isSoftCreditOptionEnabled($queryParams = array()) {
static $tempTableFilled = FALSE;
if (!empty($queryParams)) {
foreach (array_keys($queryParams) as $id) {
}
if (in_array(self::$_contribOrSoftCredit,
array("only_scredits", "both_related", "both"))) {
- CRM_Core_Error::backtrace( 'backtrace', TRUE );
if (!$tempTableFilled) {
$tempQuery = "
CREATE TEMPORARY TABLE IF NOT EXISTS contribution_search_scredit_combined AS
'contribution_batch' => 1,
'contribution_campaign_id' => 1,
);
- if (self::initializeAnySoftCreditsVars()) {
+ if (self::isSoftCreditOptionEnabled()) {
$properties = array_merge(
$properties, array(
'contribution_soft_credit_name' => 1,
'currency',
'contribution_campaign_id',
'contribution_soft_credit_name',
+ 'contribution_soft_credit_contact_id',
'contribution_soft_credit_amount',
'contribution_soft_credit_type',
);
// type of selector
$this->_action = $action;
- $this->_includeSoftCredits = CRM_Contribute_BAO_Query::initializeAnySoftCreditsVars($this->_queryParams);
+ $this->_includeSoftCredits = CRM_Contribute_BAO_Query::isSoftCreditOptionEnabled($this->_queryParams);
$this->_query = new CRM_Contact_BAO_Query(
$this->_queryParams,
CRM_Contribute_BAO_Query::defaultReturnProperties(
switch ($exportMode) {
case CRM_Export_Form_Select::CONTRIBUTE_EXPORT:
- if (!CRM_Contribute_BAO_Query::initializeAnySoftCreditsVars()) {
+ if (!CRM_Contribute_BAO_Query::isSoftCreditOptionEnabled()) {
// apply group-by only when no soft credit columns are included
$groupBy = 'GROUP BY civicrm_contribution.id';
}
</td>
<td class="crm-contribution-product_name">{$row.product_name}</td>
{if $softCreditColumns}
- <td class="crm-contribution-soft_credit_name">{$row.contribution_soft_credit_name}</td>
+ <td class="crm-contribution-soft_credit_name"><a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=`$row.contribution_soft_credit_contact_id`"}">{$row.contribution_soft_credit_name}</a></td>
<td class="right bold crm-contribution-soft_credit_amount"><span class="nowrap">{$row.contribution_soft_credit_amount|crmMoney:$row.currency}</span></td>
<td class="crm-contribution-soft_credit_type">{$row.contribution_soft_credit_type}</td>
{/if}
<th class="disabled right contriTotalRight"> {ts}Total Cancelled Amount{/ts} - {$contributionSummary.cancel.amount}</th>
{/if}
</tr>
+ {if $contributionSummary.soft_credit.count}
+ <tr>
+ <th class="contriTotalLeft right">{ts}Total Soft Credit Amount{/ts} - {$contributionSummary.soft_credit.amount}</th>
+ <th class="right"> {ts}# Completed Soft Credits{/ts} - {$contributionSummary.soft_credit.count}</th>
+ <th class="right contriTotalRight"> {ts}Avg Soft Credit Amount{/ts} - {$contributionSummary.soft_credit.avg}</th>
+ </tr>
+ {/if}
{/if}
</table>