From 0c4fe4ccd60abc9f8a8c7a04d607635f4910ca6f Mon Sep 17 00:00:00 2001 From: Civiware Solutions Date: Sat, 11 Aug 2018 22:16:21 +0530 Subject: [PATCH] added page and function --- CRM/Grant/BAO/GrantBudget.php | 49 +++++++++++++++++- CRM/Grant/Page/AnnualBudgets.php | 58 ++++++++++++++++++++++ templates/CRM/Grant/Page/AnnualBudgets.tpl | 3 ++ 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 CRM/Grant/Page/AnnualBudgets.php create mode 100644 templates/CRM/Grant/Page/AnnualBudgets.tpl diff --git a/CRM/Grant/BAO/GrantBudget.php b/CRM/Grant/BAO/GrantBudget.php index 647da81..a641fac 100644 --- a/CRM/Grant/BAO/GrantBudget.php +++ b/CRM/Grant/BAO/GrantBudget.php @@ -3,7 +3,54 @@ class CRM_Grant_BAO_GrantBudget extends CRM_Grant_DAO_GrantBudget { public static function getFiscalyear() { - return [2018=>2018]; + 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] = [ + 'name' => $result->name, + 'budget' => $result->budget, + 'total_amount_granted' => $result->total_amount_granted, + 'balance_amount' => ($result->budget - $result->total_amount_granted), + ]; + } + return $grantBudget; } } diff --git a/CRM/Grant/Page/AnnualBudgets.php b/CRM/Grant/Page/AnnualBudgets.php new file mode 100644 index 0000000..52788bc --- /dev/null +++ b/CRM/Grant/Page/AnnualBudgets.php @@ -0,0 +1,58 @@ +assign('fiscalYear', $fiscalYear); + } + + /** + * Get edit form name. + * + * @return string + * name of this page. + */ + public function editName() { + return ts('Annual Grant Budget'); + } + + /** + * Get user context. + * + * @param null $mode + * + * @return string + * user context. + */ + public function userContext($mode = NULL) { + return 'civicrm/grant/annual/budgets'; + } + +} diff --git a/templates/CRM/Grant/Page/AnnualBudgets.tpl b/templates/CRM/Grant/Page/AnnualBudgets.tpl new file mode 100644 index 0000000..a49c7ff --- /dev/null +++ b/templates/CRM/Grant/Page/AnnualBudgets.tpl @@ -0,0 +1,3 @@ +
+ +