Restore accountOptionValues pseudoConstant CRM-12464
authorColeman Watts <coleman@civicrm.org>
Thu, 30 May 2013 23:02:16 +0000 (16:02 -0700)
committerColeman Watts <coleman@civicrm.org>
Thu, 30 May 2013 23:02:16 +0000 (16:02 -0700)
----------------------------------------
* CRM-12464: Add PseudoConstants to Schema Metadata
  http://issues.civicrm.org/jira/browse/CRM-12464

13 files changed:
CRM/Admin/Form/OptionValue.php
CRM/Admin/Form/Options.php
CRM/Admin/Form/PaymentProcessor.php
CRM/Contribute/BAO/Contribution.php
CRM/Core/BAO/FinancialTrxn.php
CRM/Core/PseudoConstant.php
CRM/Event/BAO/Participant.php
CRM/Financial/BAO/FinancialAccount.php
CRM/Financial/BAO/FinancialType.php
CRM/Financial/BAO/PaymentProcessor.php
CRM/Upgrade/Incremental/php/FourThree.php
tests/phpunit/CRM/Financial/BAO/FinancialTypeAccountTest.php
tests/phpunit/api/v3/ContributionTest.php

index 5aab18f425822b28a661068317dc3724c4f73329..9cd7e54a4f1acef4391ec7c2ea470ed818970304 100644 (file)
@@ -162,7 +162,7 @@ class CRM_Admin_Form_OptionValue extends CRM_Admin_Form {
 
     // CRM-11516
     if ($this->_gName == 'payment_instrument') {
-      $accountType = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_FinancialAccount', 'financial_account_type_id', array('condition' => " AND v.name = 'Asset' "));
+      $accountType = CRM_Core_PseudoConstant::accountOptionValues('financial_account_type', NULL, " AND v.name = 'Asset' ");
       $financialAccount = CRM_Contribute_PseudoConstant::financialAccount(NULL, key($accountType));
       
       $this->add('select', 'financial_account_id', ts('Financial Account'), 
@@ -272,7 +272,7 @@ class CRM_Admin_Form_OptionValue extends CRM_Admin_Form {
       $optionValue = CRM_Core_BAO_OptionValue::add($params, $ids);
       // CRM-11516
       if (CRM_Utils_Array::value('financial_account_id', $params)) {
-        $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Asset Account is' ")));
+        $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' "));
         $params = array(
           'entity_table' => 'civicrm_option_value',
           'entity_id' => $optionValue->id,
index 9924d0cca0daa1e18bae5aceafa8c8d935177337..32ae6c12f8865e0757c7ab5f9d2350a19e9c2ff5 100644 (file)
@@ -190,7 +190,7 @@ class CRM_Admin_Form_Options extends CRM_Admin_Form {
     }
     // CRM-11516
     if ($this->_gName == 'payment_instrument') {
-      $accountType = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_FinancialAccount', 'financial_account_type_id', array('condition' => " AND v.name = 'Asset' "));
+      $accountType = CRM_Core_PseudoConstant::accountOptionValues('financial_account_type', NULL, " AND v.name = 'Asset' ");
       $financialAccount = CRM_Contribute_PseudoConstant::financialAccount(NULL, key($accountType));
       
       $this->add('select', 'financial_account_id', ts('Financial Account'), 
@@ -405,7 +405,7 @@ class CRM_Admin_Form_Options extends CRM_Admin_Form {
       
       // CRM-11516
       if (CRM_Utils_Array::value('financial_account_id', $params)) {
-        $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Asset Account is' ")));
+        $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' "));
         $params = array(
           'entity_table' => 'civicrm_option_value',
           'entity_id' => $optionValue->id,
index 7a24c53f20c43ea8219c5714980a31eb34c4cc18..bc34146d0e4cd0573aa80ed227e85356fb346946 100644 (file)
@@ -189,7 +189,7 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
     );
 
     // Financial Account of account type asset CRM-11515
-    $accountType = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_FinancialAccount', 'financial_account_type_id', array('condition' => " AND v.name = 'Asset' "));
+    $accountType = CRM_Core_PseudoConstant::accountOptionValues('financial_account_type', NULL, " AND v.name = 'Asset' ");
     $financialAccount = CRM_Contribute_PseudoConstant::financialAccount(NULL, key($accountType));
     if ($fcount = count($financialAccount)) {
       $this->assign('financialAccount', $fcount);
@@ -380,7 +380,7 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
     
     //CRM-11515
     
-    $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Asset Account is' ")));
+    $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' "));
     $params = array(
       'entity_table' => 'civicrm_payment_processor',
       'entity_id' => $dao->id,
index aa589ef12e7e641c864ddac9090da490764a3faa..d788ffb75f404131e7ada6b559f7861a781b008c 100644 (file)
@@ -2505,7 +2505,7 @@ WHERE  contribution_id = %1 ";
       !(CRM_Utils_Array::value('contribution_status_id', $params) == array_search('Pending', $contributionStatuses) && !$params['contribution']->is_pay_later)) {
       $skipRecords = TRUE;
       if (CRM_Utils_Array::value('contribution_status_id', $params) == array_search('Pending', $contributionStatuses)) {
-        $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Accounts Receivable Account is' ")));
+        $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Accounts Receivable Account is' "));
         $params['to_financial_account_id'] = CRM_Contribute_PseudoConstant::financialAccountType($params['financial_type_id'], $relationTypeId);
       }
       elseif (CRM_Utils_Array::value('payment_processor', $params)) {
@@ -2597,7 +2597,7 @@ WHERE  contribution_id = %1 ";
         //if financial type is changed
         if (CRM_Utils_Array::value('financial_type_id', $params) &&
           $params['contribution']->financial_type_id != $params['prevContribution']->financial_type_id) {
-          $incomeTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Income Account is' ")));
+          $incomeTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Income Account is' "));
           $oldFinancialAccount = CRM_Contribute_PseudoConstant::financialAccountType($params['prevContribution']->financial_type_id, $incomeTypeId);
           $newFinancialAccount = CRM_Contribute_PseudoConstant::financialAccountType($params['financial_type_id'], $incomeTypeId);
           if ($oldFinancialAccount != $newFinancialAccount) {
@@ -2689,7 +2689,7 @@ WHERE  contribution_id = %1 ";
           $params['trxnParams']['to_financial_account_id'] = NULL;
           $params['trxnParams']['total_amount'] = - $params['total_amount'];
         }
-        $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Accounts Receivable Account is' ")));
+        $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Accounts Receivable Account is' ")); 
         $params['trxnParams']['from_financial_account_id'] = CRM_Contribute_PseudoConstant::financialAccountType(
           $financialTypeID, $relationTypeId);
       }
@@ -2699,7 +2699,7 @@ WHERE  contribution_id = %1 ";
       if ($params['prevContribution']->payment_instrument_id != null
         && $params['prevContribution']->contribution_status_id == array_search('Pending', $contributionStatus)
         && $params['contribution']->contribution_status_id == array_search('Pending', $contributionStatus)) {
-        $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Accounts Receivable Account is' ")));
+        $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Accounts Receivable Account is' "));
         $params['trxnParams']['from_financial_account_id'] = CRM_Contribute_PseudoConstant::financialAccountType($params['financial_type_id'], $relationTypeId);
       }
       elseif ($params['prevContribution']->payment_instrument_id != null) {
index 90827d7d33dc3af5eb2c0b9bc1a472ea5134f0ab..95a675df667c3d8ec978141dc9b58abcebdcacb5 100644 (file)
@@ -286,7 +286,7 @@ WHERE ceft.entity_id = %1";
     if (CRM_Utils_Array::value('cost', $params)) {
       $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
       $financialAccountType = CRM_Contribute_PseudoConstant::financialAccountType($params['financial_type_id']);
-      $accountRelationship = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND label IN ('Premiums Inventory Account is', 'Cost of Sales Account is')"));
+      $accountRelationship = CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND label IN ('Premiums Inventory Account is', 'Cost of Sales Account is')");
       $toFinancialAccount = CRM_Utils_Array::value('isDeleted', $params) ? 'Premiums Inventory Account is' : 'Cost of Sales Account is';
       $fromFinancialAccount = CRM_Utils_Array::value('isDeleted', $params) ? 'Cost of Sales Account is': 'Premiums Inventory Account is';
       $accountRelationship = array_flip($accountRelationship);
@@ -329,7 +329,7 @@ WHERE ceft.entity_id = %1";
    */
 
   static function recordFees($params) {
-    $expenseTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Expense Account is' ")));
+    $expenseTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Expense Account is' "));
     $domainId = CRM_Core_Config::domainID();
     $amount = 0;
     if (CRM_Utils_Array::value('prevContribution', $params)) {
index c4fcf73097875671a5607c25b8904f16c3d015e1..3607893c0201b3929a1888851aae7d8b965eb8b8 100644 (file)
@@ -195,6 +195,13 @@ class CRM_Core_PseudoConstant {
    */
   private static $extensions;
 
+  /**
+   * Financial Account Type
+   * @var array
+   * @static
+   */
+  private static $accountOptionValues;
+
   /**
    * Low-level option getter, rarely accessed directly.
    * NOTE: Rather than calling this function directly use CRM_*_BAO_*::buildOptions()
@@ -207,7 +214,7 @@ class CRM_Core_PseudoConstant {
    *                            if true, the results are reversed
    * - grouping   boolean if true, return the value in 'grouping' column (currently unsupported for tables other than option_value)
    * - localize   boolean if true, localize the results before returning
-   * - condition  string|array add condition(s) to the sql query
+   * - condition  string|array add condition(s) to the sql query - will be concatenated using 'AND'
    * - keyColumn  string the column to use for 'id'
    * - labelColumn string the column to use for 'label'
    * - orderColumn string the column to use for sorting, defaults to 'weight' column if one exists, else defaults to labelColumn
@@ -273,7 +280,7 @@ class CRM_Core_PseudoConstant {
           $flip,
           $params['grouping'],
           $params['localize'],
-          $params['condition'],
+          $params['condition'] ? ' AND ' . implode(' AND ', (array) $params['condition']) : NULL,
           $params['labelColumn'] ? $params['labelColumn'] : 'label',
           $params['onlyActive'],
           $params['fresh'],
@@ -1646,6 +1653,31 @@ WHERE  id = %1
     return self::$extensions;
   }
 
+  /**
+   * Get all options values
+   *
+   * The static array option values is returned
+   *
+   * @access public
+   * @static
+   *
+   * @param boolean $optionGroupName - get All  Option Group values- default is to get only active ones.
+   *
+   * @return array - array reference of all Option Group Name
+   *
+   */
+  public static function accountOptionValues($optionGroupName, $id = null, $condition = null) {
+    $cacheKey = $optionGroupName . '_' . $condition;
+    if (empty(self::$accountOptionValues[$cacheKey])) {
+      self::$accountOptionValues[$cacheKey] = CRM_Core_OptionGroup::values($optionGroupName, false, false, false, $condition);
+    }
+    if ($id) {
+      return CRM_Utils_Array::value($id, self::$accountOptionValues[$cacheKey]);
+    }
+
+    return self::$accountOptionValues[$cacheKey];
+  }
+
   /**
    * Fetch the list of active extensions of type 'module'
    *
index a0c77f3b80a7de04bec9afca1c0c339487f53036..134e56e3e8cbb1c19286ea5a7c39601a11eca18f 100644 (file)
@@ -1745,7 +1745,7 @@ WHERE cpf.price_set_id = %1 AND cpfv.label LIKE %2";
       $params = array(1 => array($priceSetId, 'Integer'),
         2 => array($feeLevel, 'String'));
       $mainAmount = CRM_Core_DAO::singleValueQuery($query, $params);
-      $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Discounts Account is' ")));
+      $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Discounts Account is' "));
       $contributionParams['trxnParams']['from_financial_account_id'] = CRM_Contribute_PseudoConstant::financialAccountType(
         $contributionParams['contribution']->financial_type_id, $relationTypeId);
       if (CRM_Utils_Array::value('from_financial_account_id', $contributionParams['trxnParams'])) {
index dec66f2ee9b2396ca86e009fca1526519eccf6e6..9c53bf618edb396ba74ea74326f507d9cdd7b7d3 100644 (file)
@@ -159,7 +159,7 @@ class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAcco
    * @static
    */
   static function getAccountingCode($financialTypeId) {
-    $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Income Account is' ")));
+    $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Income Account is' "));
     $query = "SELECT cfa.accounting_code
 FROM civicrm_financial_type cft
 LEFT JOIN civicrm_entity_financial_account cefa ON cefa.entity_id = cft.id AND cefa.entity_table = 'civicrm_financial_type'
index f90af7732d00d1254252e0fbcf056cd618d5e244..197474f4d6163517e03a04a243a26cf15afc3f59 100644 (file)
@@ -171,7 +171,7 @@ class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType {
     // Financial Type
     $financialType = CRM_Contribute_PseudoConstant::financialType();
     $revenueFinancialType = array();
-    $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Income Account is' ")));
+    $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Income Account is' "));
     CRM_Core_PseudoConstant::populate( 
       $revenueFinancialType,
       'CRM_Financial_DAO_EntityFinancialAccount',
index 2e3da2a8af4dda31d9d55a7263ecc7679b1a81a2..e536683819ad78b4c8bb40251688306c51fe9ddd 100644 (file)
@@ -69,7 +69,7 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces
     // CRM-11826, add entry in civicrm_entity_financial_account
     // if financial_account_id is not NULL
     if (CRM_Utils_Array::value('financial_account_id', $params)) {
-      $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Asset Account is' ")));
+      $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' "));
       $values = array(
         'entity_table' => 'civicrm_payment_processor',
         'entity_id' => $processor->id,
index fef9495b363722042f8a3c3ae86b08d52ea28ba7..de3a5d37a4fb0ca8b22af0765dec4a410bae9210 100644 (file)
@@ -390,7 +390,7 @@ AND       ceft.entity_table = 'civicrm_contribution'
       3 => array($cancelledStatus, 'Integer')
     );
 
-    $accountType = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_FinancialAccount', 'financial_account_type_id', array('condition' => " AND v.name = 'Asset' ")));
+    $accountType = key(CRM_Core_PseudoConstant::accountOptionValues('financial_account_type', NULL, " AND v.name = 'Asset' "));
     $query = "
 SELECT id
 FROM   civicrm_financial_account
index 3ade5e6b3e559d73ecb8a1389dc86aacd13514a1..975ac1f849a7ccadffd301a879fb4031a1fce7c7 100755 (executable)
@@ -58,7 +58,7 @@ class CRM_Financial_BAO_FinancialTypeAccountTest extends CiviUnitTestCase {
     $financialAccount = CRM_Financial_BAO_FinancialAccount::add($params, $ids);
     $params['name'] = 'test_financialType1';
     $financialType = CRM_Financial_BAO_FinancialType::add($params, $ids);
-    $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Income Account is' ")));
+    $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Income Account is' "));
     $financialParams = array(
       'entity_table' => 'civicrm_financial_type',
       'entity_id' => $financialType->id,
@@ -93,7 +93,7 @@ class CRM_Financial_BAO_FinancialTypeAccountTest extends CiviUnitTestCase {
     $financialAccount = CRM_Financial_BAO_FinancialAccount::add($params, $ids);
     $params['name'] = 'test_financialType2';
     $financialType = CRM_Financial_BAO_FinancialType::add($params, $ids);
-    $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Expense Account is' ")));
+    $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Expense Account is' "));
     $financialParams = array(
       'entity_table' => 'civicrm_financial_type',
       'entity_id' => $financialType->id,
@@ -121,7 +121,7 @@ class CRM_Financial_BAO_FinancialTypeAccountTest extends CiviUnitTestCase {
     $financialAccount = CRM_Financial_BAO_FinancialAccount::add($params, $ids);
     $params['name'] = 'test_financialType3';
     $financialType = CRM_Financial_BAO_FinancialType::add($params, $ids);
-    $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Asset Account is' ")));
+    $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' "));
     $financialParams = array(
       'entity_table' => 'civicrm_financial_type',
       'entity_id' => $financialType->id,
@@ -182,7 +182,7 @@ class CRM_Financial_BAO_FinancialTypeAccountTest extends CiviUnitTestCase {
       'value' => $paymentInstrumentValue,
     );
     $optionValue = CRM_Core_BAO_OptionValue::retrieve($optionParams, $defaults);
-    $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Asset Account is' ")));
+    $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' "));
     $financialParams = array(
       'entity_table' => 'civicrm_option_value',
       'entity_id' => $optionValue->id,
@@ -195,4 +195,4 @@ class CRM_Financial_BAO_FinancialTypeAccountTest extends CiviUnitTestCase {
 
     $this->assertEquals( $financialAccountId, $financialAccount->id, 'Verify Payment Instrument');
   }
-}
+}
\ No newline at end of file
index a2a69e789e9e2f4c55beac1ae674c9a8119ff46d..3ab0882576cd68976920040ec7997da454c9aba6 100644 (file)
@@ -1525,7 +1525,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
      'id' => $trxn['financial_trxn_id'],
    );
    if ($context == 'payLater') {
-     $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Accounts Receivable Account is' ")));
+     $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Accounts Receivable Account is' "));
      $compareParams = array(
        'status_id' => 1,
        'from_financial_account_id' => CRM_Contribute_PseudoConstant::financialAccountType($contribution['financial_type_id'], $relationTypeId),
@@ -1589,7 +1589,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
      'version' => 3,
 );
    $optionValue = civicrm_api('option_value', 'create', $optionParams);
-   $relationTypeId = key(CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship', array('condition' => " AND v.name LIKE 'Asset Account is' ")));
+   $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' "));
    $financialParams = array(
      'entity_table' => 'civicrm_option_value',
      'entity_id' => $optionValue['id'],