/**
* 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 .
* @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',
$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)
$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']
+ );
}
/**