58 lines
1.9 KiB
PHP
58 lines
1.9 KiB
PHP
<?php
|
|
|
|
class CRM_Grant_BAO_GrantBudget extends CRM_Grant_DAO_GrantBudget {
|
|
|
|
public static function getFiscalyear() {
|
|
return [2018 => 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] = [
|
|
'id' => $result->id,
|
|
'name' => $result->name,
|
|
'budget' => CRM_Utils_Money::format($result->budget),
|
|
'total_amount_granted' => CRM_Utils_Money::format($result->total_amount_granted),
|
|
'balance_amount' => CRM_Utils_Money::format(($result->budget - $result->total_amount_granted)),
|
|
];
|
|
}
|
|
return $grantBudget;
|
|
}
|
|
|
|
}
|