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 .= "