2018]; } public static function getGrantBudget($params) { $fiscalYear = $params['fiscal_year']; if (empty($fiscalYear)) { $fiscalYear = date('Y'); } $grantBudget = []; $paidStatusID = 4; // TODO fix hardcoded values $qParams = [ 1 => [$fiscalYear, 'String'], 2 => ['2018-01-01', 'String'], 3 => ['2018-12-31', 'String'], 4 => [$paidStatusID, 'Integer'], ]; $where = ''; if (!empty($params['financial_type_id'])) { $where = 'WHERE cft.id = %5'; $qParams[5] = [$params['financial_type_id'], 'Integer']; } $grantBudgetTableName = CRM_Grant_DAO_GrantBudget::getTableName(); $sql = "SELECT gs.id, cft.name, IFNULL(cgb.budget, 0) AS budget, SUM(IFNULL(cg.amount_granted, 0)) as total_amount_granted FROM civicrm_financial_type cft INNER JOIN " . GRANT_SCHOLARSHIP_CUSTOM_TABLE_NAME . " gs ON gs.entity_id = cft.id AND gs." . GRANT_SCHOLARSHIP_CUSTOM_FIELD . " = 1 LEFT JOIN " . $grantBudgetTableName . " cgb ON cgb.financial_type_id = cft.id AND cgb.fiscal_year = %1 LEFT JOIN civicrm_grant cg ON cg.financial_type_id = cft.id AND cg.status_id IN (%4) AND cg.decision_date >= %2 AND cg.decision_date <= %3 $where GROUP BY cft.id ORDER BY cft.name"; $result = CRM_Core_DAO::executeQuery($sql, $qParams); while ($result->fetch()) { $grantBudget[$result->id] = [ 'name' => $result->name, 'budget' => $result->budget, 'total_amount_granted' => $result->total_amount_granted, 'balance_amount' => ($result->budget - $result->total_amount_granted), ]; } return $grantBudget; } }