Skip to content

Commit

Permalink
Switch recordAdditionalPayment fully over to api
Browse files Browse the repository at this point in the history
Use payment.create api from recordAdditionalPayment form as
part of general consolidation
  • Loading branch information
eileenmcnaughton committed Jun 5, 2019
1 parent c7520a5 commit 24274d4
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 55 deletions.
33 changes: 0 additions & 33 deletions CRM/Contribute/BAO/Contribution.php
Original file line number Diff line number Diff line change
Expand Up @@ -3986,39 +3986,6 @@ public static function validateFinancialType($financialTypeId, $relationName = '
return FALSE;
}

/**
* Function to record additional payment for partial and refund contributions.
*
* @param int $contributionId
* is the invoice contribution id (got created after processing participant payment).
* @param array $trxnsData
* to take user provided input of transaction details.
* @param string $paymentType
* 'owed' for purpose of recording partial payments, 'refund' for purpose of recording refund payments.
* @param int $participantId
* @param bool $updateStatus
*
* @return int
*
* @throws \CRM_Core_Exception
* @throws \CiviCRM_API3_Exception
*/
public static function recordAdditionalPayment($contributionId, $trxnsData, $paymentType = 'owed', $participantId = NULL, $updateStatus = TRUE) {

if ($paymentType == 'owed') {
$financialTrxn = CRM_Financial_BAO_Payment::recordPayment($contributionId, $trxnsData, $participantId);
if (!empty($financialTrxn)) {
self::recordPaymentActivity($contributionId, $participantId, $financialTrxn->total_amount, $financialTrxn->currency, $financialTrxn->trxn_date);
return $financialTrxn->id;
}
}
elseif ($paymentType == 'refund') {
$trxnsData['total_amount'] = -$trxnsData['total_amount'];
$trxnsData['participant_id'] = $participantId;
return civicrm_api3('Payment', 'create', $trxnsData)['id'];
}
}

/**
* @param int $targetCid
* @param $activityType
Expand Down
22 changes: 9 additions & 13 deletions CRM/Contribute/Form/AdditionalPayment.php
Original file line number Diff line number Diff line change
Expand Up @@ -356,19 +356,15 @@ public function submit($submittedValues) {
$this->processCreditCard();
}

$defaults = [];
$contribution = civicrm_api3('Contribution', 'getsingle', [
'return' => ["contribution_status_id"],
'id' => $this->_contributionId,
]);
$contributionStatusId = CRM_Utils_Array::value('contribution_status_id', $contribution);
$paymentID = CRM_Contribute_BAO_Contribution::recordAdditionalPayment($this->_contributionId, $this->_params, $this->_paymentType, $participantId);
// Fetch the contribution & do proportional line item assignment
$params = ['id' => $this->_contributionId];
$contribution = CRM_Contribute_BAO_Contribution::retrieve($params, $defaults, $params);
// @todo - this line needs to be moved to the Payment.create api - it's not form layer appropriate.
// testing required.
CRM_Contribute_BAO_Contribution::addPayments([$contribution], $contributionStatusId);
$trxnsData = $this->_params;
if ($this->_paymentType == 'refund') {
$trxnsData['total_amount'] = -$trxnsData['total_amount'];
}
$trxnsData['participant_id'] = $participantId;
// From the
$trxnsData['is_send_contribution_notification'] = FALSE;
$paymentID = civicrm_api3('Payment', 'create', $trxnsData)['id'];

if ($this->_contributionId && CRM_Core_Permission::access('CiviMember')) {
$membershipPaymentCount = civicrm_api3('MembershipPayment', 'getCount', ['contribution_id' => $this->_contributionId]);
if ($membershipPaymentCount) {
Expand Down
6 changes: 2 additions & 4 deletions CRM/Financial/BAO/Payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ public static function create($params) {
}
elseif ($params['total_amount'] < 0) {
$trxn = self::recordRefundPayment($params['contribution_id'], $params, FALSE);
CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], CRM_Utils_Array::value('participant_id', $params), $params['total_amount'], $trxn->currency, $trxn->trxn_date);
}

if ($isPaymentCompletesContribution) {
Expand All @@ -118,7 +117,7 @@ public static function create($params) {
);
}
else {
civicrm_api3('Contribution', 'completetransaction', ['id' => $contribution['id']]);
civicrm_api3('Contribution', 'completetransaction', ['id' => $contribution['id'], 'is_email_receipt' => $params['is_send_contribution_notification']]);
// Get the trxn
$trxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution['id'], 'DESC');
$ftParams = ['id' => $trxnId['financialTrxnId']];
Expand All @@ -133,6 +132,7 @@ public static function create($params) {
]
);
}
CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], CRM_Utils_Array::value('participant_id', $params), $params['total_amount'], $trxn->currency, $trxn->trxn_date);

return $trxn;
}
Expand Down Expand Up @@ -316,8 +316,6 @@ public static function filterUntestedTemplateVariables($params) {
* @param $updateStatus
* - deprecate this param
*
* @todo - make this protected once recordAdditionalPayment no longer calls it.
*
* @return CRM_Financial_DAO_FinancialTrxn
*/
protected static function recordRefundPayment($contributionId, $trxnData, $updateStatus) {
Expand Down
16 changes: 11 additions & 5 deletions api/v3/Payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -156,28 +156,34 @@ function _civicrm_api3_payment_create_spec(&$params) {
$params = [
'contribution_id' => [
'api.required' => 1,
'title' => 'Contribution ID',
'title' => ts('Contribution ID'),
'type' => CRM_Utils_Type::T_INT,
],
'total_amount' => [
'api.required' => 1,
'title' => 'Total Payment Amount',
'title' => ts('Total Payment Amount'),
'type' => CRM_Utils_Type::T_FLOAT,
],
'payment_processor_id' => [
'title' => 'Payment Processor ID',
'title' => ts('Payment Processor ID'),
'type' => CRM_Utils_Type::T_INT,
'description' => ts('Payment processor ID - required for payment processor payments'),
],
'id' => [
'title' => 'Payment ID',
'title' => ts('Payment ID'),
'type' => CRM_Utils_Type::T_INT,
'api.aliases' => ['payment_id'],
],
'trxn_date' => [
'title' => 'Cancel Date',
'title' => ts('Cancel Date'),
'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
],
'is_send_contribution_notification' => [
'title' => ts('Send out notifications based on contribution status change?'),
'description' => ts('Most commonly this equates to emails relating to the contribution, event, etcwhen a payment completes a contribution'),
'type' => CRM_Utils_Type::T_BOOLEAN,
'api.default' => TRUE,
],
];
}

Expand Down

0 comments on commit 24274d4

Please sign in to comment.