/**
* Get payment links as they relate to a contribution.
*
+ * If a payment can be made then include a payment link & if a refund is appropriate
+ * then a refund link.
+ *
* @param int $id
* @param string $contributionStatus
*
* -url
* -title
*
- * If a payment can be made then include a payment link & if a refund is appropriate
- * then a refund link.
+ * @internal - not supported for use outside of core.
*/
- protected static function getContributionPaymentLinks(int $id, string $contributionStatus): array {
+ public static function getContributionPaymentLinks(int $id, string $contributionStatus): array {
if ($contributionStatus === 'Failed' || !CRM_Core_Permission::check('edit contributions')) {
// In general the balance is the best way to determine if a payment can be added or not,
// but not for Failed contributions, where we don't accept additional payments at the moment.
);
$statusOptionValueNames = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
$contributionStatus = $statusOptionValueNames[$values['contribution_status_id']];
- if (in_array($contributionStatus, ['Partially paid', 'Pending refund'])
- || ($contributionStatus == 'Pending' && $values['is_pay_later'])
- ) {
- if ($contributionStatus == 'Pending refund') {
- $this->assign('paymentButtonName', ts('Record Refund'));
- }
- else {
- $this->assign('paymentButtonName', ts('Record Payment'));
- }
- $this->assign('addRecordPayment', TRUE);
- $this->assign('contactId', $values['contact_id']);
- $this->assign('componentId', $id);
- $this->assign('component', 'contribution');
- }
+ $this->assign('addRecordPayment', in_array($contributionStatus, ['Partially paid', 'Pending refund', 'Pending']));
$this->assignPaymentInfoBlock($id);
$searchKey = NULL;
if (($context === 'fulltext' || $context === 'search') && $searchKey) {
$urlParams = "reset=1&id={$id}&cid={$values['contact_id']}&action=update&context={$context}&key={$searchKey}";
}
+ foreach (CRM_Contribute_BAO_Contribution::getContributionPaymentLinks($this->getID(), $contributionStatus) as $paymentButton) {
+ $paymentButton['icon'] = 'fa-plus-circle';
+ $linkButtons[] = $paymentButton;
+ }
$linkButtons[] = [
'title' => ts('Edit'),
'url' => 'civicrm/contact/view/contribution',
'icon' => 'fa-pencil',
'accesskey' => 'e',
];
- if (!empty($paymentButtonName)) {
- $linkButtons[] = [
- 'title' => $paymentButtonName,
- 'url' => 'civicrm/payment',
- 'qs' => "action=add&reset=1&component=contribution&id={$id}&cid={$values['contact_id']}",
- 'icon' => 'fa-plus-circle',
- ];
- }
}
if ($this->isHasAccess('delete')) {
$pdfUrlParams = "reset=1&id={$id}&cid={$values['contact_id']}";
$emailUrlParams = "reset=1&id={$id}&cid={$values['contact_id']}&select=email";
- if ($invoicing && empty($is_template)) {
+ if (Civi::settings()->get('invoicing') && !$contribution['is_template']) {
if (($values['contribution_status'] != 'Refunded') && ($values['contribution_status'] != 'Cancelled')) {
$invoiceButtonText = ts('Download Invoice');
}
];
}
$this->assign('linkButtons', $linkButtons ?? []);
+ $this->assign('contactId', $values['contact_id']);
+ $this->assign('componentId', $id);
+ $this->assign('component', 'contribution');
+ $this->assignPaymentInfoBlock($id);
}
/**
<td>{$thankyou_date|crmDate}</td>
</tr>
{/if}
+ <tr>
+ <td class='label'>{ts}Payment Summary{/ts}</td>
+ <td id='payment-info'></td>
+ </tr>
{if empty($is_template)}
<tr>
<td class="label">{ts}Payment Details{/ts}</td>
<td>{include file="CRM/Contribute/Form/PaymentInfoBlock.tpl"}</td>
</tr>
{/if}
- {if $addRecordPayment}
- <tr>
- <td class='label'>{ts}Payment Summary{/ts}</td>
- <td id='payment-info'></td>
- </tr>
- {/if}
</table>
{if $softContributions && count($softContributions)} {* We show soft credit name with PCP section if contribution is linked to a PCP. *}
</div>
</fieldset>
{/if}
-{if $addRecordPayment}
- {include file="CRM/Contribute/Page/PaymentInfo.tpl" show='payments'}
-{/if}
+{include file="CRM/Contribute/Page/PaymentInfo.tpl" show='payments'}
<div class="crm-submit-buttons">
{include file="CRM/common/formButtons.tpl" location="bottom"}