}
$this->assign('self_service', $this->isSelfService());
+ $this->assign('recur_frequency_interval', $this->_subscriptionDetails->frequency_interval);
+ $this->assign('recur_frequency_unit', $this->_subscriptionDetails->frequency_unit);
$this->editableScheduleFields = $this->_paymentProcessorObj->getEditableRecurringScheduleFields();
if (count($lineItems) > 1) {
$amtAttr += ['readonly' => TRUE];
}
- $this->addMoney('amount', ts('Recurring Contribution Amount'), TRUE, $amtAttr,
+ $amountField = $this->addMoney('amount', ts('Recurring Contribution Amount'), TRUE, $amtAttr,
TRUE, 'currency', $this->_subscriptionDetails->currency, TRUE
);
+ // The amount on the recurring contribution should not be updated directly. If we update the amount using a template contribution the recurring contribution
+ // will be updated automatically.
+ $paymentProcessorObj = Civi\Payment\System::singleton()->getById(CRM_Contribute_BAO_ContributionRecur::getPaymentProcessorID($this->contributionRecurID));
+ $templateContribution = CRM_Contribute_BAO_ContributionRecur::getTemplateContribution($this->contributionRecurID);
+ if (!empty($templateContribution['id']) && $paymentProcessorObj->supportsEditRecurringContribution()) {
+ $amountField->freeze();
+ }
+
$this->add('text', 'installments', ts('Number of Installments'), ['size' => 20], FALSE);
if ($this->_donorEmail) {
}
// if this is an update of an existing recurring contribution, pass the ID
- $params['id'] = $this->getContributionRecurID();
+ $params['contributionRecurID'] = $params['id'] = $this->getContributionRecurID();
$message = '';
- $params['subscriptionId'] = $this->getSubscriptionDetails()->processor_id;
+ $params['recurProcessorID'] = $params['subscriptionId'] = $this->getSubscriptionDetails()->processor_id;
+
$updateSubscription = TRUE;
if ($this->_paymentProcessorObj->supports('changeSubscriptionAmount')) {
try {
[$donorDisplayName, $donorEmail] = CRM_Contact_BAO_Contact::getContactDetails($contactID);
- $tplParams = [
- 'recur_frequency_interval' => $this->_subscriptionDetails->frequency_interval,
- 'recur_frequency_unit' => $this->_subscriptionDetails->frequency_unit,
- 'amount' => CRM_Utils_Money::format($params['amount']),
- 'installments' => $params['installments'],
- ];
-
- $tplParams['contact'] = ['display_name' => $donorDisplayName];
- $tplParams['receipt_from_email'] = $receiptFrom;
-
$sendTemplateParams = [
'groupName' => 'msg_tpl_workflow_contribution',
'valueName' => 'contribution_recurring_edit',
'contactId' => $contactID,
- 'tplParams' => $tplParams,
+ 'tplParams' => ['receipt_from_email' => $receiptFrom],
'isTest' => $this->_subscriptionDetails->is_test,
'PDFFilename' => 'receipt.pdf',
'from' => $receiptFrom,
'toName' => $donorDisplayName,
'toEmail' => $donorEmail,
+ 'tokenContext' => ['contribution_recurId' => $this->getContributionRecurID()],
];
- [$sent] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
+ CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
}
}
}
}
- /**
- * Get the recurring contribution ID.
- *
- * @return int
- */
- protected function getContributionRecurID(): int {
- return $this->_subscriptionDetails->recur_id;
- }
-
}