Moved code from form layer to BAO and used api instead of BAO function
authorPradeep Nayak <pradpnayak@gmail.com>
Tue, 26 Jun 2018 23:31:34 +0000 (05:01 +0530)
committerPradeep Nayak <pradpnayak@gmail.com>
Thu, 26 Jul 2018 10:40:46 +0000 (11:40 +0100)
CRM/Admin/Form/Options.php
CRM/Core/BAO/OptionValue.php

index 1f2821d399d694ddc4c3fefe8c143cd432c80fc4..fd4aa9dfa18a1964884db831b91ca20f78e28e01 100644 (file)
@@ -486,18 +486,6 @@ class CRM_Admin_Form_Options extends CRM_Admin_Form {
 
       $optionValue = CRM_Core_OptionValue::addOptionValue($params, $this->_gName, $this->_action, $this->_id);
 
-      // CRM-11516
-      if (!empty($params['financial_account_id'])) {
-        $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,
-          'account_relationship' => $relationTypeId,
-          'financial_account_id' => $params['financial_account_id'],
-        );
-        CRM_Financial_BAO_FinancialTypeAccount::add($params);
-      }
-
       CRM_Core_Session::setStatus(ts('The %1 \'%2\' has been saved.', array(
             1 => $this->_gLabel,
             2 => $optionValue->label,
index cfb4b45dce48838c9d9b53720e6db4b26fd80fc7..98a331c6f4422edd1ea37c66fb8604af845005ec 100644 (file)
@@ -243,6 +243,29 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
     $optionValue->id = $id;
     $optionValue->save();
     CRM_Core_PseudoConstant::flush();
+
+    // Create relationship for payment intrument options
+    if (!empty($params['financial_account_id'])) {
+      $optionName = civicrm_api3('OptionGroup', 'getvalue', [
+        'return' => 'name',
+        'id' => $params['option_group_id'],
+      ]);
+      // Only create relationship for payment intrument options
+      if ($optionName == 'payment_instrument') {
+        $relationTypeId = civicrm_api3('OptionValue', 'getvalue', [
+          'return' => 'value',
+          'option_group_id' => 'account_relationship',
+          'name' => 'Asset Account is',
+        ]);
+        $params = [
+          'entity_table' => 'civicrm_option_value',
+          'entity_id' => $optionValue->id,
+          'account_relationship' => $relationTypeId,
+          'financial_account_id' => $params['financial_account_id'],
+        ];
+        CRM_Financial_BAO_FinancialTypeAccount::add($params);
+      }
+    }
     return $optionValue;
   }