From 3300bf67858c2f88fbb814f56b84925993dde932 Mon Sep 17 00:00:00 2001 From: Pradeep Nayak Date: Fri, 18 Sep 2015 00:47:13 +0530 Subject: [PATCH] --CRM-16526, fixed api test --- api/v3/Contribution.php | 27 ++++++++++++------- tests/phpunit/api/v3/ContributionPageTest.php | 2 ++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/api/v3/Contribution.php b/api/v3/Contribution.php index 8994d32df7..00aa5ccbdb 100644 --- a/api/v3/Contribution.php +++ b/api/v3/Contribution.php @@ -46,17 +46,24 @@ function civicrm_api3_contribution_create(&$params) { _civicrm_api3_custom_format_params($params, $values, 'Contribution'); $params = array_merge($params, $values); - if (empty($params['id'])) { - $op = 'add'; - } - else { - $op = 'edit'; - } - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types, $op); - if (!in_array($params['financial_type_id'], array_keys($types))) { - return civicrm_api3_create_error('You do not have permission to create this contribution'); + if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus()) { + if (empty($params['id'])) { + $op = 'add'; + } + else { + if (empty($params['financial_type_id'])) { + $params['financial_type_id'] = civicrm_api3('Contribution', 'getvalue', array( + 'id' => $params['id'], + 'return' => 'financial_type_id', + )); + } + $op = 'edit'; + } + CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types, $op); + if (!in_array($params['financial_type_id'], array_keys($types))) { + return civicrm_api3_create_error('You do not have permission to create this contribution'); + } } - if (!empty($params['id']) && !empty($params['contribution_status_id'])) { $error = array(); //throw error for invalid status change such as setting completed back to pending diff --git a/tests/phpunit/api/v3/ContributionPageTest.php b/tests/phpunit/api/v3/ContributionPageTest.php index d167500f79..da92847a4d 100644 --- a/tests/phpunit/api/v3/ContributionPageTest.php +++ b/tests/phpunit/api/v3/ContributionPageTest.php @@ -566,6 +566,7 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { 'price_field_id' => $priceField['id'], 'label' => 'Long Haired Goat', 'amount' => 20, + 'financial_type_id' => 'Donation', ) ); $priceFieldValue = $this->callAPISuccess('price_field_value', 'create', array( @@ -573,6 +574,7 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { 'price_field_id' => $priceField['id'], 'label' => 'Shoe-eating Goat', 'amount' => 10, + 'financial_type_id' => 'Donation', ) ); $this->_ids['price_field_value'] = array($priceFieldValue['id']); -- 2.25.1