Skip to content

Commit

Permalink
Call repeatTransation not completeOrder from repeatTransaction API
Browse files Browse the repository at this point in the history
  • Loading branch information
eileenmcnaughton committed Jun 21, 2023
1 parent e4d0cb5 commit de1f79d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
12 changes: 10 additions & 2 deletions CRM/Contribute/BAO/Contribution.php
Original file line number Diff line number Diff line change
Expand Up @@ -2146,6 +2146,11 @@ public static function contributionCount($contactId, $includeSoftCredit = TRUE)
/**
* Repeat a transaction as part of a recurring series.
*
* @internal NOT supported to be called from outside of core. Note this function
* was made public to be called from the v3 api which IS supported so we can
* amend it without regards to possible external callers as this warning
* was added in the same commit as it was made public rather than protected.
*
* The ideal flow is
* 1) Processor calls contribution.repeattransaction with contribution_status_id = Pending
* 2) The repeattransaction loads the 'template contribution' and calls a hook to allow altering of it .
Expand Down Expand Up @@ -2180,11 +2185,12 @@ public static function contributionCount($contactId, $includeSoftCredit = TRUE)
* @throws \Civi\API\Exception\UnauthorizedException
* @todo
*
* 2) repeattransaction code is current munged into completeTransaction code for historical bad coding reasons
* 2) repeattransaction code is callable from completeTransaction code for historical bad coding reasons
* 3) Repeat transaction duplicates rather than calls Order.create
* 4) Use of payment.create still limited - completetransaction is more common.
*/
protected static function repeatTransaction(array $input, int $recurringContributionID) {
public static function repeatTransaction(array $input, int $recurringContributionID) {
// @todo - this was shared with `completeOrder` and not all necessarily apply.
$inputContributionWhiteList = [
'fee_amount',
'net_amount',
Expand All @@ -2204,6 +2210,8 @@ protected static function repeatTransaction(array $input, int $recurringContribu

$completedContributionStatusID = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed');

// @todo this was taken from completeContribution - it may be this just duplicates
// upcoming filtering & can go.
$contributionParams = array_merge([
'contribution_status_id' => $completedContributionStatusID,
], array_intersect_key($input, array_fill_keys($inputContributionWhiteList, 1)
Expand Down
9 changes: 3 additions & 6 deletions api/v3/Contribution.php
Original file line number Diff line number Diff line change
Expand Up @@ -665,12 +665,9 @@ function civicrm_api3_contribution_repeattransaction($params) {
$input['receipt_from_email'] = ($params['receipt_from_email'] ?? NULL) ?: $domainFromEmail;
}

// @todo this should call CRM_Contribute_BAO_Contribution::repeatTransaction - some minor cleanup needed to separate
// from completeOrder
return CRM_Contribute_BAO_Contribution::completeOrder($input,
$templateContribution['contribution_recur_id'],
NULL,
$params['is_post_payment_create'] ?? NULL);
return CRM_Contribute_BAO_Contribution::repeatTransaction($input,
$templateContribution['contribution_recur_id']
);
}

/**
Expand Down

0 comments on commit de1f79d

Please sign in to comment.