diff --git a/CRM/Contribute/Form/AdditionalPayment.php b/CRM/Contribute/Form/AdditionalPayment.php index 16c6ba562b36..f174fa3732f7 100644 --- a/CRM/Contribute/Form/AdditionalPayment.php +++ b/CRM/Contribute/Form/AdditionalPayment.php @@ -336,20 +336,6 @@ public function submit($submittedValues) { if ($this->_component == 'event') { $participantId = $this->_id; } - $contributionStatuses = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', - 'contribution_status_id', - array('labelColumn' => 'name') - ); - $contributionStatusID = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', $this->_contributionId, 'contribution_status_id'); - if ($contributionStatuses[$contributionStatusID] == 'Pending') { - civicrm_api3('Contribution', 'create', - array( - 'id' => $this->_contributionId, - 'contribution_status_id' => array_search('Partially paid', $contributionStatuses), - 'is_pay_later' => 0, - ) - ); - } if ($this->_mode) { // process credit card @@ -357,17 +343,10 @@ public function submit($submittedValues) { $this->processCreditCard(); } - $defaults = array(); - $contribution = civicrm_api3('Contribution', 'getsingle', array( - 'return' => array("contribution_status_id"), - 'id' => $this->_contributionId, - )); - $contributionStatusId = CRM_Utils_Array::value('contribution_status_id', $contribution); - $result = CRM_Contribute_BAO_Contribution::recordAdditionalPayment($this->_contributionId, $this->_params, $this->_paymentType, $participantId); - // Fetch the contribution & do proportional line item assignment - $params = array('id' => $this->_contributionId); - $contribution = CRM_Contribute_BAO_Contribution::retrieve($params, $defaults, $params); - CRM_Contribute_BAO_Contribution::addPayments(array($contribution), $contributionStatusId); + $payment = civicrm_api3('Payment', 'create', array_merge([ + 'contribution_id' => $this->_contributionId, + 'total_amount' => $this->_params['total_amount'], + ], $this->_params)); if ($this->_contributionId && CRM_Core_Permission::access('CiviMember')) { $membershipPaymentCount = civicrm_api3('MembershipPayment', 'getCount', array('contribution_id' => $this->_contributionId)); if ($membershipPaymentCount) { diff --git a/tests/phpunit/CRM/Event/BAO/AdditionalPaymentTest.php b/tests/phpunit/CRM/Event/BAO/AdditionalPaymentTest.php index 8c05c65f9ba6..c8d57c43814a 100644 --- a/tests/phpunit/CRM/Event/BAO/AdditionalPaymentTest.php +++ b/tests/phpunit/CRM/Event/BAO/AdditionalPaymentTest.php @@ -218,17 +218,24 @@ public function testTransactionInfo() { $submittedValues = array( 'total_amount' => 20, 'payment_instrument_id' => 3, + 'contribution_id' => $contributionID, ); - CRM_Contribute_BAO_Contribution::recordAdditionalPayment($contributionID, $submittedValues, 'owed', $result['participant']['id']); + + $this->callAPISuccess('payment', 'create', $submittedValues); + $priceField = $this->callAPISuccess('PriceField', 'get', [ + 'sequential' => 1, + 'price_set_id' => $result['priceSetId'], + 'html_type' => 'Text' + ]); //Change selection to a lower amount. - $params['price_2'] = 50; - CRM_Price_BAO_LineItem::changeFeeSelections($params, $result['participant']['id'], 'participant', $contributionID, $result['feeBlock'], $result['lineItem']); + $params["price_{$priceField['id']}"] = 50; + CRM_Price_BAO_LineItem::changeFeeSelections($params, $result['participant']['id'], 'participant', $contributionID, $feeBlock, $lineItem, $feeAmt); //Record a refund of the remaining amount. $submittedValues['total_amount'] = 50; - CRM_Contribute_BAO_Contribution::recordAdditionalPayment($contributionID, $submittedValues, 'refund', $result['participant']['id']); - $paymentInfo = CRM_Contribute_BAO_Contribution::getPaymentInfo($result['participant']['id'], 'event', TRUE); + $this->callAPISuccess('payment', 'create', $submittedValues); + $paymentInfo = CRM_Contribute_BAO_Contribution::getPaymentInfo($participant['id'], 'event', TRUE); $transaction = $paymentInfo['transaction']; //Assert all transaction(owed and refund) are listed on view payments.