CRM-16189, called exception in BAO and catched at form level
authorPradeep Nayak <pradpnayak@gmail.com>
Wed, 27 Jul 2016 14:29:31 +0000 (19:59 +0530)
committerPradeep Nayak <pradpnayak@gmail.com>
Wed, 27 Jul 2016 14:33:17 +0000 (20:03 +0530)
----------------------------------------
* CRM-16189: Improve support for Accrual Method bookkeeping
  https://issues.civicrm.org/jira/browse/CRM-16189

CRM/Event/BAO/Event.php
CRM/Event/Form/ManageEvent/Fee.php
CRM/Financial/BAO/FinancialAccount.php
CRM/Member/BAO/MembershipType.php
CRM/Member/Form/MembershipType.php
CRM/Price/BAO/PriceFieldValue.php
CRM/Price/BAO/PriceSet.php
CRM/Price/Form/Field.php
CRM/Price/Form/Option.php
CRM/Price/Form/Set.php

index 539eb64d416d95ac783401f6658b277daa46c623..7fc34e205aed7cb54519f2e79eb21c05953877b5 100644 (file)
@@ -97,10 +97,7 @@ class CRM_Event_BAO_Event extends CRM_Event_DAO_Event {
 
     // CRM-16189
     if (!empty($params['financial_type_id'])) {
-      $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType($params['financial_type_id']);
-      if ($isError) {
-        throw new CRM_Core_Exception(ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts'));
-      }
+      CRM_Financial_BAO_FinancialAccount::validateFinancialType($params['financial_type_id']);
     }
     $event = new CRM_Event_DAO_Event();
 
index c86240e146a570a7e6cb334d86695af30035bcdc..b235f9b0ee5991ab4816c47d3586c67e3f527b7f 100644 (file)
@@ -522,9 +522,11 @@ class CRM_Event_Form_ManageEvent_Fee extends CRM_Event_Form_ManageEvent {
       }
     }
     // CRM-16189
-    $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType($values['financial_type_id']);
-    if ($isError) {
-      $errors['financial_type_id'] = ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts');
+    try {
+      CRM_Financial_BAO_FinancialAccount::validateFinancialType($values['financial_type_id']);
+    }
+    catch (CRM_Core_Exception $e) {
+      $errors['financial_type_id'] = $e->getMessage();
     }
     return empty($errors) ? TRUE : $errors;
   }
index 2ec3a4db4049766b24af42148ed4881635ab02cd..ba39a1350ef02bf8b2f09e3d874a0a0c816ec1d9 100644 (file)
@@ -450,7 +450,7 @@ LIMIT 1";
     }
     $deferredFinancialType = self::getDeferredFinancialType();
     if (!array_key_exists($financialTypeId, $deferredFinancialType)) {
-      return TRUE;
+      throw new CRM_Core_Exception(ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts'));
     }
     return FALSE;
   }
index 1d29b8e7aae619c460b7c592e1088b2a552cedcd..322a03521f07371737989d5574eda43565368202 100644 (file)
@@ -107,11 +107,10 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType {
     }
 
     // CRM-16189
-    $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType(
-      CRM_Utils_Array::value('financial_type_id', $params)
-    );
-    if ($isError) {
-      throw new CRM_Core_Exception(ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts'));
+    if (!empty($params['financial_type_id'])) {
+      CRM_Financial_BAO_FinancialAccount::validateFinancialType(
+        $params['financial_type_id']
+      );
     }
 
     // action is taken depending upon the mode
index 3cd0264a46de1a560514d4c566b1b08ced6b8f3c..baee601fb3bc05eb6297616cd8c83614d13ab07b 100644 (file)
@@ -283,9 +283,11 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
     }
 
     // CRM-16189
-    $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType($params['financial_type_id']);
-    if ($isError) {
-      $errors['financial_type_id'] = ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts');
+    try {
+      CRM_Financial_BAO_FinancialAccount::validateFinancialType($params['financial_type_id']);
+    }
+    catch (CRM_Core_Exception $e) {
+      $errors['financial_type_id'] = $e->getMessage();
     }
 
     return empty($errors) ? TRUE : $errors;
index 9a6fdf979ca08b498cc86b691c0a879754e2af16..d3ed23c70fe338774628a7166e2c455f2a0e5944 100644 (file)
@@ -66,13 +66,12 @@ class CRM_Price_BAO_PriceFieldValue extends CRM_Price_DAO_PriceFieldValue {
     if (!$priceFieldID) {
       $priceFieldID = CRM_Core_DAO::getFieldValue('CRM_Price_BAO_PriceFieldValue', $id, 'price_field_id');
     }
-    $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType(
-      CRM_Utils_Array::value('financial_type_id', $params),
-      $priceFieldID,
-      'PriceField'
-    );
-    if ($isError) {
-      throw new CRM_Core_Exception(ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts'));
+    if (!empty($params['financial_type_id'])) {
+      CRM_Financial_BAO_FinancialAccount::validateFinancialType(
+        $params['financial_type_id'],
+        $priceFieldID,
+        'PriceField'
+      );
     }
     if (!empty($params['is_default'])) {
       $query = 'UPDATE civicrm_price_field_value SET is_default = 0 WHERE  price_field_id = %1';
index 74e3e5da461347371df7b13d7f421e1ff777fbc0..4b2922c51c831110d5c953160eccd03108607978 100644 (file)
@@ -79,14 +79,11 @@ class CRM_Price_BAO_PriceSet extends CRM_Price_DAO_PriceSet {
       $priceSetID = CRM_Utils_Array::value('id', $params);
     }
     // CRM-16189
-    if ($validatePriceSet) {
-      $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType(
-        CRM_Utils_Array::value('financial_type_id', $params),
+    if ($validatePriceSet && !empty($params['financial_type_id'])) {
+      CRM_Financial_BAO_FinancialAccount::validateFinancialType(
+        $params['financial_type_id'],
         $priceSetID
       );
-      if ($isError) {
-        throw new CRM_Core_Exception(ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts'));
-      }
     }
     $priceSetBAO = new CRM_Price_BAO_PriceSet();
     $priceSetBAO->copyValues($params);
index 57c4f09d479fca32eecfa37d6b44d9b889de8e0f..2e0fb425a64fceeca475c36ded4b0f5bc0980b70 100644 (file)
@@ -409,9 +409,11 @@ class CRM_Price_Form_Field extends CRM_Core_Form {
       }
       else {
         // CRM-16189
-        $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType($fields['financial_type_id'], $form->_sid);
-        if ($isError) {
-          $errors['financial_type_id'] = ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts');
+        try {
+          CRM_Financial_BAO_FinancialAccount::validateFinancialType($fields['financial_type_id'], $form->_sid);
+        }
+        catch (CRM_Core_Exception $e) {
+          $errors['financial_type_id'] = $e->getMessage();
         }
       }
     }
@@ -531,9 +533,11 @@ class CRM_Price_Form_Field extends CRM_Core_Form {
 
           $_flagOption = $_emptyRow = 0;
           // CRM-16189
-          $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType($fields['option_financial_type_id'][$index], $form->_fid, 'PriceField');
-          if ($isError) {
-            $errors["option_financial_type_id[{$index}]"] = ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts');
+          try {
+            CRM_Financial_BAO_FinancialAccount::validateFinancialType($fields['option_financial_type_id'][$index], $form->_fid, 'PriceField');
+          }
+          catch(CRM_Core_Exception $e) {
+            $errors["option_financial_type_id[{$index}]"] = $e->getMessage();
           }
         }
 
index e61012232f10e9741267cc62a312eae581f24821..81b994f4ce59b4cc825dcbce4a2e61a65c8340b8 100644 (file)
@@ -286,9 +286,11 @@ class CRM_Price_Form_Option extends CRM_Core_Form {
       $errors['count'] = ts('Participant count can not be greater than max participants.');
     }
     // CRM-16189
-    $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType($fields['financial_type_id'], $form->_fid, 'PriceField');
-    if ($isError) {
-      $errors['financial_type_id'] = ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts');
+    try {
+      CRM_Financial_BAO_FinancialAccount::validateFinancialType($fields['financial_type_id'], $form->_fid, 'PriceField');
+    }
+    catch (CRM_Core_Exception $e) {
+      $errors['financial_type_id'] = $e->getMessage();
     }
     return empty($errors) ? TRUE : $errors;
   }
index b78bc7de04e7e8f53994c132d9e65cc6f5c84777..90d9be60fd3ce1e5ac5f25b22fd3927acbcb6826 100644 (file)
@@ -107,9 +107,11 @@ class CRM_Price_Form_Set extends CRM_Core_Form {
       && (array_key_exists(CRM_Core_Component::getComponentID('CiviEvent'), $fields['extends'])
         || array_key_exists(CRM_Core_Component::getComponentID('CiviMember'), $fields['extends']))
     ) {
-      $isError = CRM_Financial_BAO_FinancialAccount::validateFinancialType($fields['financial_type_id']);
-      if ($isError) {
-        $errors['financial_type_id'] = ts('Deferred revenue account is not configured for selected financial type. Please have an administrator set up the deferred revenue account at Administer > CiviContribute > Financial Accounts, then configure it for financial types at Administer > CiviContribution > Financial Types, Accounts');
+      try {
+        CRM_Financial_BAO_FinancialAccount::validateFinancialType($fields['financial_type_id']);
+      }
+      catch (CRM_Core_Exception $e) {
+        $errors['financial_type_id'] = $e->getMessage();
       }
     }
     return empty($errors) ? TRUE : $errors;