X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContact%2FBAO%2FQuery.php;h=5247434ab824ea3793a0b7e5ac44c2168b814b4d;hb=2027a5085d14bf284bda113e4b340c48ff59a981;hp=28086b6b2502130b20d0f26b8a09999e3a121e13;hpb=063b55b82d20ca9c58d98f612b4e2e16266ff9a2;p=civicrm-core.git diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index 28086b6b25..5247434ab8 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -5109,49 +5109,7 @@ civicrm_relationship.start_date > {$today} $summary['total']['currencyCount'] = count($summary['total']['median']); - if (!empty($summary['total']['amount'])) { - $summary['total']['amount'] = implode(', ', $summary['total']['amount']); - $summary['total']['avg'] = implode(', ', $summary['total']['avg']); - $summary['total']['mode'] = implode(', ', $summary['total']['mode']); - $summary['total']['median'] = implode(', ', $summary['total']['median']); - } - else { - $summary['total']['amount'] = $summary['total']['avg'] = $summary['total']['median'] = 0; - } - - $query = " - SELECT COUNT( conts.total_amount ) as cancel_count, - SUM( conts.total_amount ) as cancel_amount, - AVG( conts.total_amount ) as cancel_avg, - conts.currency as currency - FROM ( - SELECT civicrm_contribution.total_amount, civicrm_contribution.currency - $from - $where AND civicrm_contribution.cancel_date IS NOT NULL - GROUP BY civicrm_contribution.id - ) as conts - GROUP BY currency"; - - $dao = CRM_Core_DAO::executeQuery($query); - - if ($dao->N <= 1) { - if ($dao->fetch()) { - $summary['cancel']['count'] = $dao->cancel_count; - $summary['cancel']['amount'] = CRM_Utils_Money::format($dao->cancel_amount, $dao->currency); - $summary['cancel']['avg'] = CRM_Utils_Money::format($dao->cancel_avg, $dao->currency); - } - } - else { - $summary['cancel']['count'] = 0; - $summary['cancel']['amount'] = $summary['cancel']['avg'] = array(); - while ($dao->fetch()) { - $summary['cancel']['count'] += $dao->cancel_count; - $summary['cancel']['amount'][] = CRM_Utils_Money::format($dao->cancel_amount, $dao->currency); - $summary['cancel']['avg'][] = CRM_Utils_Money::format($dao->cancel_avg, $dao->currency); - } - $summary['cancel']['amount'] = implode(', ', $summary['cancel']['amount']); - $summary['cancel']['avg'] = implode(', ', $summary['cancel']['avg']); - } + $this->addBasicCancelStatsToSummary($summary, $where, $from); return $summary; } @@ -6576,7 +6534,8 @@ AND displayRelType.is_active = 1 * @return array */ protected function addBasicStatsToSummary(&$summary, $where, $from) { - $summary['total']['count'] = $summary['total']['amount'] = $summary['total']['avg'] = "n/a"; + $summary['total']['count'] = 0; + $summary['total']['amount'] = $summary['total']['avg'] = []; $query = " SELECT COUNT( conts.total_amount ) as total_count, @@ -6594,13 +6553,18 @@ AND displayRelType.is_active = 1 $dao = CRM_Core_DAO::executeQuery($query); - $summary['total']['count'] = 0; - $summary['total']['amount'] = $summary['total']['avg'] = []; while ($dao->fetch()) { $summary['total']['count'] += $dao->total_count; $summary['total']['amount'][] = CRM_Utils_Money::format($dao->total_amount, $dao->currency); $summary['total']['avg'][] = CRM_Utils_Money::format($dao->total_avg, $dao->currency); } + if (!empty($summary['total']['amount'])) { + $summary['total']['amount'] = implode(', ', $summary['total']['amount']); + $summary['total']['avg'] = implode(', ', $summary['total']['avg']); + } + else { + $summary['total']['amount'] = $summary['total']['avg'] = $summary['total']['median'] = 0; + } return $summary; } @@ -6635,7 +6599,8 @@ AND displayRelType.is_active = 1 ) as conts GROUP BY currency"; - $summary['total']['mode'] = CRM_Contribute_BAO_Contribution::computeStats('mode', $modeSQL); + $mode = CRM_Contribute_BAO_Contribution::computeStats('mode', $modeSQL); + $summary['total']['mode'] = implode(', ', (array) $mode); } /** @@ -6653,7 +6618,8 @@ AND displayRelType.is_active = 1 */ protected function addMedianToStats(&$summary, $where, $from) { $medianSQL = "{$from} {$where} AND civicrm_contribution.contribution_status_id = 1 "; - $summary['total']['median'] = CRM_Contribute_BAO_Contribution::computeStats('median', $medianSQL, 'civicrm_contribution'); + $median = CRM_Contribute_BAO_Contribution::computeStats('median', $medianSQL, 'civicrm_contribution'); + $summary['total']['median'] = implode(', ', (array) $median); } /** @@ -6694,4 +6660,47 @@ AND displayRelType.is_active = 1 } } + /** + * Add basic stats about cancelled contributions to the summary. + * + * @param array $summary + * @param string $where + * @param string $from + */ + protected function addBasicCancelStatsToSummary(&$summary, $where, $from) { + $query = " + SELECT COUNT( conts.total_amount ) as cancel_count, + SUM( conts.total_amount ) as cancel_amount, + AVG( conts.total_amount ) as cancel_avg, + conts.currency as currency + FROM ( + SELECT civicrm_contribution.total_amount, civicrm_contribution.currency + $from + $where AND civicrm_contribution.cancel_date IS NOT NULL + GROUP BY civicrm_contribution.id + ) as conts + GROUP BY currency"; + + $dao = CRM_Core_DAO::executeQuery($query); + + if ($dao->N <= 1) { + if ($dao->fetch()) { + $summary['cancel']['count'] = $dao->cancel_count; + $summary['cancel']['amount'] = CRM_Utils_Money::format($dao->cancel_amount, $dao->currency); + $summary['cancel']['avg'] = CRM_Utils_Money::format($dao->cancel_avg, $dao->currency); + } + } + else { + $summary['cancel']['count'] = 0; + $summary['cancel']['amount'] = $summary['cancel']['avg'] = []; + while ($dao->fetch()) { + $summary['cancel']['count'] += $dao->cancel_count; + $summary['cancel']['amount'][] = CRM_Utils_Money::format($dao->cancel_amount, $dao->currency); + $summary['cancel']['avg'][] = CRM_Utils_Money::format($dao->cancel_avg, $dao->currency); + } + $summary['cancel']['amount'] = implode(', ', $summary['cancel']['amount']); + $summary['cancel']['avg'] = implode(', ', $summary['cancel']['avg']); + } + } + }