ICM-1 Bug fixes
[civicrm-core.git] / CRM / Report / Form.php
index 87d18b55e8dba03a44b418afffdb57ccb13367d2..e971b5f9f76d226f1c91fec75ad3b1453e92fd2a 100644 (file)
@@ -4496,19 +4496,30 @@ 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->_aliases['civicrm_contribution']}.id IS NOT NULL ";
+    }
     CRM_Core_DAO::executeQuery("DROP TEMPORARY TABLE IF EXISTS civicrm_contribution_temp");
     
     $sql = "CREATE TEMPORARY TABLE civicrm_contribution_temp AS SELECT {$query->_aliases['civicrm_contribution']}.id {$query->_from} 
-              INNER JOIN civicrm_line_item   {$query->_aliases['civicrm_line_item']}
+              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 (" . $liFTs . ") 
               {$query->_where} 
-                      AND {$query->_aliases['civicrm_contribution']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")
-                      AND {$query->_aliases['civicrm_line_item']}.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";
     CRM_Core_DAO::executeQuery($sql);
     $query->_from .= "