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;
 | 
						|
  }
 | 
						|
 | 
						|
}
 |