From 7fb041e3b9cdc030374f8a0f7dcfa202cb858a6c Mon Sep 17 00:00:00 2001 From: Edsel Date: Thu, 23 Apr 2015 18:50:33 +0530 Subject: [PATCH] CIVI-28 Bug fixes --- CRM/Contribute/BAO/Contribution.php | 20 ++++++++++++++------ CRM/Contribute/BAO/Premium.php | 6 +++++- CRM/Price/BAO/PriceFieldValue.php | 6 +++++- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 21aab16aa9..bc669565fe 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -1194,7 +1194,12 @@ 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)"; + if (!empty($financialTypes)) { + $additionalWhere = " + AND b.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") + AND i.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; + } $query = " SELECT count(*) as count, sum(total_amount) as amount, @@ -1207,8 +1212,7 @@ WHERE civicrm_contribution.contact_id = civicrm_contact.id AND b.is_test = 0 AND b.receive_date >= $startDate AND b.receive_date < $endDate - AND b.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") - AND i.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") + $additionalWhere GROUP BY currency "; $dao = CRM_Core_DAO::executeQuery($query, CRM_Core_DAO::$_nullArray); @@ -1900,14 +1904,18 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ return 0; } CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes); - + $additionalWhere = " AND contribution.financial_type_id IN (0)"; + if (!empty($financialTypes)) { + $additionalWhere = " + AND contribution.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") + AND i.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; + } $contactContributionsSQL = " SELECT contribution.id AS id FROM civicrm_contribution contribution LEFT JOIN civicrm_line_item i ON i.contribution_id = contribution.id AND i.entity_table = 'civicrm_contribution' WHERE contribution.is_test = 0 AND contribution.contact_id = {$contactId} - AND contribution.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") - AND i.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") "; + $additionalWhere "; $contactSoftCreditContributionsSQL = " SELECT contribution.id diff --git a/CRM/Contribute/BAO/Premium.php b/CRM/Contribute/BAO/Premium.php index 061619db31..e0bd78673b 100644 --- a/CRM/Contribute/BAO/Premium.php +++ b/CRM/Contribute/BAO/Premium.php @@ -113,6 +113,10 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { $dao->entity_id = $pageID; $dao->premiums_active = 1; CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, 'add'); + $addWhere = "financial_type_id IN (0)"; + if (!empty($financialTypes)) { + $addWhere = "financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; + } if ($dao->find(TRUE)) { $premiumID = $dao->id; @@ -121,7 +125,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { $dao = new CRM_Contribute_DAO_PremiumsProduct(); $dao->premiums_id = $premiumID; - $dao->whereAdd('financial_type_id IN (' . implode(',' , array_keys($financialTypes)) . ')'); + $dao->whereAdd($addWhere); $dao->orderBy('weight'); $dao->find(); diff --git a/CRM/Price/BAO/PriceFieldValue.php b/CRM/Price/BAO/PriceFieldValue.php index c24d033d2a..7588efb218 100644 --- a/CRM/Price/BAO/PriceFieldValue.php +++ b/CRM/Price/BAO/PriceFieldValue.php @@ -156,9 +156,13 @@ class CRM_Price_BAO_PriceFieldValue extends CRM_Price_DAO_PriceFieldValue { */ public static function getValues($fieldId, &$values, $orderBy = 'weight', $isActive = FALSE) { CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes); + $addWhere = "financial_type_id IN (0)"; + if (!empty($financialTypes)) { + $addWhere = "financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; + } $fieldValueDAO = new CRM_Price_DAO_PriceFieldValue(); $fieldValueDAO->price_field_id = $fieldId; - $fieldValueDAO->whereAdd('financial_type_id IN (' . implode(',' , array_keys($financialTypes)) . ')'); + $fieldValueDAO->whereAdd($addWhere); $fieldValueDAO->orderBy($orderBy, 'label'); if ($isActive) { $fieldValueDAO->is_active = 1; -- 2.25.1