From fb260b73c25733c5d506b287e1623fe818ecea59 Mon Sep 17 00:00:00 2001 From: Edsel Date: Mon, 1 Jun 2015 17:17:32 +0530 Subject: [PATCH] ICM-8 Handled case when not even one FT is permissioned --- CRM/Contribute/BAO/Contribution.php | 10 ++++------ CRM/Report/Form.php | 13 ++++++++++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 18d3d91b54..c4eed28a11 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -1194,11 +1194,11 @@ WHERE civicrm_contribution.contact_id = civicrm_contact.id $startDate = "$year$monthDay"; $endDate = "$nextYear$monthDay"; CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes); - $additionalWhere = " AND b.financial_type_id IN (0)"; + $additionalWhere = " AND b.financial_type_id IN (0)"; + $liWhere = " AND i.financial_type_id IN (0)"; if (!empty($financialTypes)) { - $additionalWhere = " - AND b.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") - AND i.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; + $additionalWhere = " AND b.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; + $liWhere = " AND i.financial_type_id NOT IN (" . implode(',' , array_keys($financialTypes)) . ")"; } $query = " SELECT count(*) as count, @@ -1206,13 +1206,11 @@ WHERE civicrm_contribution.contact_id = civicrm_contact.id avg(total_amount) as average, currency FROM civicrm_contribution b - LEFT JOIN civicrm_line_item i ON i.contribution_id = b.id AND i.entity_table = 'civicrm_contribution' WHERE b.contact_id IN ( $contactIDs ) AND b.contribution_status_id = 1 AND b.is_test = 0 AND b.receive_date >= $startDate AND b.receive_date < $endDate - $additionalWhere GROUP BY currency "; $dao = CRM_Core_DAO::executeQuery($query, CRM_Core_DAO::$_nullArray); diff --git a/CRM/Report/Form.php b/CRM/Report/Form.php index ba40a83b65..d69569dbce 100644 --- a/CRM/Report/Form.php +++ b/CRM/Report/Form.php @@ -4496,12 +4496,19 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a public function getPermissionedFTQuery(&$query, $alias = NULL) { CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes); + if (empty($financialTypes)) { + $contFTs = "0"; + $liFTs = implode(',' , array_keys(CRM_Contribute_Pseudoconstant::financialType())); + } + else { + $contFTs = $liFTs = implode(',' , array_keys($financialTypes)); + } if ($alias) { $temp = $query->_aliases['civicrm_line_item']; $query->_aliases['civicrm_line_item'] = $alias; } if (empty($query->_where)) { - $query->_where = "WHERE "; + $query->_where = "WHERE {$query->_aliases['civicrm_contribution']}.id IS NOT NULL "; } CRM_Core_DAO::executeQuery("DROP TEMPORARY TABLE IF EXISTS civicrm_contribution_temp"); @@ -4509,9 +4516,9 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a LEFT JOIN civicrm_line_item {$query->_aliases['civicrm_line_item']} ON {$query->_aliases['civicrm_contribution']}.id = {$query->_aliases['civicrm_line_item']}.contribution_id AND {$query->_aliases['civicrm_line_item']}.entity_table = 'civicrm_contribution' - AND {$query->_aliases['civicrm_line_item']}.financial_type_id NOT IN (" . implode(',' , array_keys($financialTypes)) . ") + AND {$query->_aliases['civicrm_line_item']}.financial_type_id NOT IN (" . $liFTs . ") {$query->_where} - AND {$query->_aliases['civicrm_contribution']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") + AND {$query->_aliases['civicrm_contribution']}.financial_type_id IN (" . $contFTs . ") AND {$query->_aliases['civicrm_line_item']}.id IS NULL GROUP BY {$query->_aliases['civicrm_contribution']}.id"; $query->_from .= " -- 2.25.1