*
* @return int
*/
- public function getNumTermsByContributionAndMembershipType($membershipTypeID, $contributionID) {
+ public static function getNumTermsByContributionAndMembershipType($membershipTypeID, $contributionID) {
$numTerms = CRM_Core_DAO::singleValueQuery("
SELECT membership_num_terms FROM civicrm_line_item li
LEFT JOIN civicrm_price_field_value v ON li.price_field_value_id = v.id
$changeDate = CRM_Utils_Array::value('trxn_date', $input, date('YmdHis'));
$contributionResult = self::repeatTransaction($contribution, $input, $contributionParams);
+ $contributionID = (int) $contribution->id;
if ($input['component'] == 'contribute') {
if ($contributionParams['contribution_status_id'] === $completedContributionStatusID) {
self::updateMembershipBasedOnCompletionOfContribution(
- $contribution,
+ $contributionID,
$changeDate
);
}
}
}
- $contributionParams['id'] = $contribution->id;
+ $contributionParams['id'] = $contributionID;
$contributionParams['is_post_payment_create'] = $isPostPaymentCreate;
if (!$contributionResult) {
// Add new soft credit against current $contribution.
if ($recurringContributionID) {
- CRM_Contribute_BAO_ContributionRecur::addrecurSoftCredit($recurringContributionID, $contribution->id);
+ CRM_Contribute_BAO_ContributionRecur::addrecurSoftCredit($recurringContributionID, $contributionID);
}
$contribution->contribution_status_id = $contributionParams['contribution_status_id'];
$transaction->commit();
// @todo - check if Contribution::create does this, test, remove.
- CRM_Contribute_BAO_ContributionRecur::updateRecurLinkedPledge($contribution->id, $recurringContributionID,
+ CRM_Contribute_BAO_ContributionRecur::updateRecurLinkedPledge($contributionID, $recurringContributionID,
$contributionParams['contribution_status_id'], $input['amount']);
// create an activity record
if (self::isEmailReceipt($input, $contribution->contribution_page_id, $recurringContributionID)) {
civicrm_api3('Contribution', 'sendconfirmation', [
- 'id' => $contribution->id,
+ 'id' => $contributionID,
'payment_processor_id' => $paymentProcessorId,
]);
CRM_Core_Error::debug_log_message("Receipt sent");
* Note that the way in which $memberships are loaded as objects is pretty messy & I think we could just
* load them in this function. Code clean up would compensate for any minor performance implication.
*
- * @param \CRM_Contribute_BAO_Contribution $contribution
+ * @param int $contributionID
* @param string $changeDate
*
* @throws \CRM_Core_Exception
* @throws \CiviCRM_API3_Exception
*/
- public static function updateMembershipBasedOnCompletionOfContribution($contribution, $changeDate) {
- $memberships = self::getRelatedMemberships($contribution->id);
+ public static function updateMembershipBasedOnCompletionOfContribution($contributionID, $changeDate) {
+ $memberships = self::getRelatedMemberships($contributionID);
foreach ($memberships as $membership) {
$membershipParams = [
'id' => $membership['id'],
// The api assumes num_terms is a special sauce for 'is_renewal' so we need to not pass it when updating a pending to completed.
// ... except testCompleteTransactionMembershipPriceSetTwoTerms hits this line so the above is obviously not true....
// @todo once apiv4 ships with core switch to that & find sanity.
- $membershipParams['num_terms'] = $contribution->getNumTermsByContributionAndMembershipType(
+ $membershipParams['num_terms'] = self::getNumTermsByContributionAndMembershipType(
$membershipParams['membership_type_id'],
- $contribution->id
+ $contributionID
);
}
// @todo remove all this stuff in favour of letting the api call further down handle in