From 29dd4adad73ab246d59c12dab4389d68533f0715 Mon Sep 17 00:00:00 2001 From: Jitendra Purohit Date: Tue, 23 May 2017 12:37:39 +0530 Subject: [PATCH] CRM-20591: Fix class_name on update of payment processor --- CRM/Financial/BAO/PaymentProcessor.php | 22 +++++++------ tests/phpunit/api/v3/PaymentProcessorTest.php | 32 +++++++++++++++++++ 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/CRM/Financial/BAO/PaymentProcessor.php b/CRM/Financial/BAO/PaymentProcessor.php index a3b89b4caa..c0c12b73d7 100644 --- a/CRM/Financial/BAO/PaymentProcessor.php +++ b/CRM/Financial/BAO/PaymentProcessor.php @@ -53,17 +53,19 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces $processor = new CRM_Financial_DAO_PaymentProcessor(); $processor->copyValues($params); - $ppTypeDAO = new CRM_Financial_DAO_PaymentProcessorType(); - $ppTypeDAO->id = $params['payment_processor_type_id']; - if (!$ppTypeDAO->find(TRUE)) { - CRM_Core_Error::fatal(ts('Could not find payment processor meta information')); - } + if (empty($params['id'])) { + $ppTypeDAO = new CRM_Financial_DAO_PaymentProcessorType(); + $ppTypeDAO->id = $params['payment_processor_type_id']; + if (!$ppTypeDAO->find(TRUE)) { + CRM_Core_Error::fatal(ts('Could not find payment processor meta information')); + } - // also copy meta fields from the info DAO - $processor->is_recur = $ppTypeDAO->is_recur; - $processor->billing_mode = $ppTypeDAO->billing_mode; - $processor->class_name = $ppTypeDAO->class_name; - $processor->payment_type = $ppTypeDAO->payment_type; + // also copy meta fields from the info DAO + $processor->is_recur = $ppTypeDAO->is_recur; + $processor->billing_mode = $ppTypeDAO->billing_mode; + $processor->class_name = $ppTypeDAO->class_name; + $processor->payment_type = $ppTypeDAO->payment_type; + } $processor->save(); // CRM-11826, add entry in civicrm_entity_financial_account diff --git a/tests/phpunit/api/v3/PaymentProcessorTest.php b/tests/phpunit/api/v3/PaymentProcessorTest.php index b920675e38..441b7440f7 100644 --- a/tests/phpunit/api/v3/PaymentProcessorTest.php +++ b/tests/phpunit/api/v3/PaymentProcessorTest.php @@ -78,6 +78,38 @@ class api_v3_PaymentProcessorTest extends CiviUnitTestCase { return $result['id']; } + /** + * Update payment processor. + */ + public function testPaymentProcessorUpdate() { + $params = $this->_params; + $result = $this->callAPISuccess('payment_processor', 'create', $params); + $this->assertNotNull($result['id']); + + $updateParams = array( + 'id' => $result['id'], + 'name' => 'Update API Test', + ); + $this->assertDBState('CRM_Financial_DAO_PaymentProcessor', $result['id'], $params); + $this->callAPISuccess('payment_processor', 'create', $updateParams); + $result = $this->callAPISuccess('payment_processor', 'get', array('id' => $result['id'])); + + $expectedResult = array( + 'id' => $result['id'], + 'domain_id' => $params['domain_id'], + 'name' => $updateParams['name'], + 'payment_processor_type_id' => $params['payment_processor_type_id'], + 'is_default' => 0, + 'is_test' => 0, + 'class_name' => $params['class_name'], + 'billing_mode' => 1, + 'is_recur' => $params['is_recur'], + 'payment_type' => 1, + 'payment_instrument_id' => 1, + ); + $this->checkArrayEquals($expectedResult, $result['values'][$result['id']]); + } + /** * Test using example code. */ -- 2.25.1