From 9d86dc6ab532df317919a7b9ac9f82ed9e9f2b68 Mon Sep 17 00:00:00 2001 From: Edsel Date: Mon, 11 May 2015 17:04:24 +0530 Subject: [PATCH] ICM-13 Modified LYBUNT report to use temp table instead of modifiication to query --- CRM/Report/Form/Contribute/Lybunt.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/CRM/Report/Form/Contribute/Lybunt.php b/CRM/Report/Form/Contribute/Lybunt.php index d58c83aaf8..5271ca19aa 100644 --- a/CRM/Report/Form/Contribute/Lybunt.php +++ b/CRM/Report/Form/Contribute/Lybunt.php @@ -309,10 +309,7 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form { FROM civicrm_contribution {$this->_aliases['civicrm_contribution']} INNER JOIN civicrm_contact {$this->_aliases['civicrm_contact']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id - {$this->_aclFrom} - LEFT JOIN civicrm_line_item {$this->_aliases['civicrm_line_item']} - ON {$this->_aliases['civicrm_contribution']}.id = {$this->_aliases['civicrm_line_item']}.contribution_id AND - {$this->_aliases['civicrm_line_item']}.entity_table = 'civicrm_contribution'"; + {$this->_aclFrom}"; if ($this->isTableSelected('civicrm_email')) { $this->_from .= " @@ -387,8 +384,15 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form { $this->_where .= " AND {$this->_aclWhere} "; } CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes); - $this->_where .= " AND {$this->_aliases['civicrm_contribution']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; - $this->_where .= " AND {$this->_aliases['civicrm_line_item']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; + + $sql = "CREATE TEMPORARY TABLE civicrm_contribution_temp AS SELECT {$this->_aliases['civicrm_contribution']}.id {$this->_from} + LEFT JOIN civicrm_line_item {$this->_aliases['civicrm_line_item']} + ON {$this->_aliases['civicrm_contribution']}.id = {$this->_aliases['civicrm_line_item']}.contribution_id AND + {$this->_aliases['civicrm_line_item']}.entity_table = 'civicrm_contribution' {$this->_where} AND + {$this->_aliases['civicrm_contribution']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") + GROUP BY {$this->_aliases['civicrm_contribution']}.id"; + CRM_Core_DAO::executeQuery($sql); + $this->_from .= " INNER JOIN civicrm_contribution_temp temp ON {$this->_aliases['civicrm_contribution']}.id = temp.id "; } public function groupBy() { -- 2.25.1