Fix missing variables
authorEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 4 Feb 2022 06:13:03 +0000 (19:13 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Thu, 10 Feb 2022 02:05:06 +0000 (15:05 +1300)
Note this updates the code such that the buttons are consistent on this form with the payment info block

CRM/Contribute/BAO/Contribution.php
CRM/Contribute/Form/ContributionView.php
templates/CRM/Contribute/Form/ContributionView.tpl

index d03f1abe93f078973a42f22fe1dd26bbc5a08801..f086b14f5b0f75b714b785e3b6e9449bba2d8331 100644 (file)
@@ -4271,6 +4271,9 @@ LIMIT 1;";
   /**
    * 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
    *
@@ -4279,10 +4282,9 @@ LIMIT 1;";
    *     -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.
index 9f4bcd47f08d69e4643c26f172661068038abd76..f2d85975649adf3ab5a05d698e6be8b12d295b9d 100644 (file)
@@ -202,20 +202,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form {
     );
     $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;
@@ -228,6 +215,10 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form {
       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',
@@ -235,14 +226,6 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form {
         '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')) {
@@ -260,7 +243,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form {
 
     $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');
       }
@@ -281,6 +264,10 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form {
       ];
     }
     $this->assign('linkButtons', $linkButtons ?? []);
+    $this->assign('contactId', $values['contact_id']);
+    $this->assign('componentId', $id);
+    $this->assign('component', 'contribution');
+    $this->assignPaymentInfoBlock($id);
   }
 
   /**
index 5b7b3b4fbd487b179415d56a64b5353002134de1..7956686f7d95395dc5a9c293e0450032c8524acc 100644 (file)
       <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"}