CRM-14106 - Regex targeting the first part of if statements
[civicrm-core.git] / CRM / Financial / BAO / FinancialAccount.php
index 5abb6dd07995c93cddd0fc96127bb3830297464e..0be4ddef5de380703347d88cc42eb0bc0ccd8ea7 100644 (file)
@@ -2,7 +2,7 @@
 
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -47,7 +47,7 @@ class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAcco
   function __construct() {
     parent::__construct();
   }
-    
+
   /**
    * Takes a bunch of params that are needed to match certain criteria and
    * retrieves the relevant objects. Typically the valid params are only
@@ -90,9 +90,9 @@ class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAcco
    *
    * @param array $params reference array contains the values submitted by the form
    * @param array $ids    reference array contains the id
-   * 
+   *
    * @access public
-   * @static 
+   * @static
    * @return object
    */
   static function add(&$params, &$ids) {
@@ -101,12 +101,12 @@ class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAcco
     $params['is_tax'] = CRM_Utils_Array::value('is_tax', $params, FALSE);
     $params['is_header_account'] = CRM_Utils_Array::value('is_header_account', $params, FALSE);
     $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE);
-    if (CRM_Utils_Array::value('is_default', $params)) {
+    if (!empty($params['is_default'])) {
       $query = 'UPDATE civicrm_financial_account SET is_default = 0 WHERE financial_account_type_id = %1';
       $queryParams = array(1 => array($params['financial_account_type_id'], 'Integer'));
       CRM_Core_DAO::executeQuery($query, $queryParams);
-    }   
-    
+    }
+
     // action is taken depending upon the mode
     $financialAccount = new CRM_Financial_DAO_FinancialAccount();
     $financialAccount->copyValues($params);
@@ -114,42 +114,43 @@ class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAcco
     $financialAccount->save();
     return $financialAccount;
   }
-  
+
   /**
-   * Function to delete financial Types 
-   * 
+   * Function to delete financial Types
+   *
    * @param int $financialAccountId
    * @static
    */
   static function del($financialAccountId) {
-    //checking if financial type is present  
+    //checking if financial type is present
     $check = FALSE;
-    
+
     //check dependencies
-    $dependancy = array( 
-      array('Core', 'FinancialTrxn', 'to_financial_account_id'), 
-      array('Financial', 'FinancialTypeAccount', 'financial_account_id'), 
+    $dependancy = array(
+      array('Core', 'FinancialTrxn', 'to_financial_account_id'),
+      array('Financial', 'FinancialTypeAccount', 'financial_account_id'),
       );
     foreach ($dependancy as $name) {
       require_once (str_replace('_', DIRECTORY_SEPARATOR, "CRM_" . $name[0] . "_BAO_" . $name[1]) . ".php");
-      eval('$bao = new CRM_' . $name[0] . '_BAO_' . $name[1] . '();');
+      $className = "CRM_{$name[0]}_BAO_{$name[1]}";
+      $bao = new $className();
       $bao->$name[2] = $financialAccountId;
       if ($bao->find(TRUE)) {
         $check = TRUE;
       }
     }
-    
+
     if ($check) {
       CRM_Core_Session::setStatus(ts('This financial account cannot be deleted since it is being used as a header account. Please remove it from being a header account before trying to delete it again.'));
       return CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/admin/financial/financialAccount', "reset=1&action=browse"));
     }
-      
+
     //delete from financial Type table
     $financialAccount = new CRM_Financial_DAO_FinancialAccount();
     $financialAccount->id = $financialAccountId;
     $financialAccount->delete();
   }
-  
+
   /**
    * get accounting code for a financial type with account relation Income Account is
    *
@@ -172,7 +173,7 @@ WHERE cft.id = %1
     );
     return CRM_Core_DAO::singleValueQuery($query, $params);
   }
-  
+
   /**
    * get AR account
    *
@@ -185,9 +186,13 @@ WHERE cft.id = %1
    * @return integer count
    * @static
    */
-  static function getARAccounts($financialAccountId, $financialAccountTypeId, $accountTypeCode = 'ar') {
+  static function getARAccounts($financialAccountId, $financialAccountTypeId = NULL, $accountTypeCode = 'ar') {
+    if (!$financialAccountTypeId) {
+      $financialAccountType = CRM_Core_PseudoConstant::accountOptionValues('financial_account_type');
+      $financialAccountTypeId = array_search('Asset', $financialAccountType);
+    }
     $query = "SELECT count(id) FROM civicrm_financial_account WHERE financial_account_type_id = %1 AND LCASE(account_type_code) = %2
-      AND id != %3;";
+      AND id != %3 AND is_active = 1;";
     $params = array(
       1 => array($financialAccountTypeId, 'Integer'),
       2 => array(strtolower($accountTypeCode), 'String'),