Add workflow template for recurring cancelled
authorEileen McNaughton <emcnaughton@wikimedia.org>
Sat, 25 Sep 2021 02:10:37 +0000 (14:10 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Sat, 18 Dec 2021 21:44:54 +0000 (10:44 +1300)
This is a simple template, with a slightly smaller subset of values than the exisiting one.

It pulls out the recurring part to a trait...

CRM/Contribute/Form/CancelSubscription.php
CRM/Contribute/WorkflowMessage/RecurringCancelled.php [new file with mode: 0644]
CRM/Contribute/WorkflowMessage/RecurringEdit.php
CRM/Contribute/WorkflowMessage/RecurringTrait.php [new file with mode: 0644]
tests/phpunit/CRM/Contribute/Form/CancelSubscriptionTest.php

index 1504cb2db3a3e2f0bdf767c6c3e3bb365bf21706..4bcf8408412d1e7dacbc2568a841ab3f041bfa39 100644 (file)
@@ -239,15 +239,11 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib
         $msgType = 'info';
       }
       else {
-        $tplParams['recur_frequency_interval'] = $this->getSubscriptionDetails()->frequency_interval;
-        $tplParams['recur_frequency_unit'] = $this->getSubscriptionDetails()->frequency_unit;
-        $tplParams['amount'] = CRM_Utils_Money::format($this->getSubscriptionDetails()->amount, $this->getSubscriptionDetails()->currency);
-        $tplParams['contact'] = ['display_name' => $this->_donorDisplayName];
         $status = ts('The recurring contribution of %1, every %2 %3 has been cancelled.',
           [
-            1 => $tplParams['amount'],
-            2 => $tplParams['recur_frequency_interval'],
-            3 => $tplParams['recur_frequency_unit'],
+            1 => CRM_Utils_Money::format($this->getSubscriptionDetails()->amount, $this->getSubscriptionDetails()->currency),
+            2 => $this->getSubscriptionDetails()->frequency_interval,
+            3 => $this->getSubscriptionDetails()->frequency_unit,
           ]
         );
         $msgTitle = 'Contribution Cancelled';
@@ -262,6 +258,7 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib
             'valueName' => $this->_mode == 'auto_renew' ? 'membership_autorenew_cancelled' : 'contribution_recurring_cancelled',
             'contactId' => $this->getSubscriptionDetails()->contact_id,
             'tplParams' => $tplParams,
+            'tokenContext' => ['contribution_recurId' => $this->getContributionRecurID()],
             //'isTest'    => $isTest, set this from _objects
             'PDFFilename' => 'receipt.pdf',
             'from' => CRM_Contribute_BAO_ContributionRecur::getRecurFromAddress($this->getContributionRecurID()),
diff --git a/CRM/Contribute/WorkflowMessage/RecurringCancelled.php b/CRM/Contribute/WorkflowMessage/RecurringCancelled.php
new file mode 100644 (file)
index 0000000..2ffdfc1
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * @support template-only
+ */
+class CRM_Contribute_WorkflowMessage_RecurringCancelled extends Civi\WorkflowMessage\GenericWorkflowMessage {
+  use CRM_Contribute_WorkflowMessage_RecurringTrait;
+
+  public const WORKFLOW = 'contribution_recurring_cancelled';
+
+  /**
+   * The recurring contribution contact.
+   *
+   * @var array|null
+   *
+   * @scope tokenContext
+   *
+   * @required
+   */
+  public $contact;
+
+  protected function exportExtraTokenContext(array &$export): void {
+    $export['smartyTokenAlias']['amount'] = 'contribution_recur.amount';
+    $export['smartyTokenAlias']['recur_frequency_unit'] = 'contribution_recur.frequency_unit:label';
+    $export['smartyTokenAlias']['recur_frequency_interval'] = 'contribution_recur.frequency_interval';
+  }
+
+}
index f66a613f5de4296bf7486c5491c63adc1cd9f7e5..7e211c87244e9bf9908891e860b46d42ea2594ed 100644 (file)
@@ -7,7 +7,9 @@
  * @method array getContributionRecur()
  */
 class CRM_Contribute_WorkflowMessage_RecurringEdit extends Civi\WorkflowMessage\GenericWorkflowMessage {
-  const WORKFLOW = 'contribution_recurring_edit';
+  use CRM_Contribute_WorkflowMessage_RecurringTrait;
+
+  public const WORKFLOW = 'contribution_recurring_edit';
 
   /**
    * The recurring contribution contact.
@@ -20,23 +22,6 @@ class CRM_Contribute_WorkflowMessage_RecurringEdit extends Civi\WorkflowMessage\
    */
   public $contact;
 
-  /**
-   * The recurring contribution.
-   *
-   * @var array|null
-   *
-   * @scope tokenContext as contribution_recur
-   *
-   * @required
-   */
-  public $contributionRecur;
-
-  /**
-   * @var int
-   * @scope tokenContext as contribution_recurId
-   */
-  public $contributionRecurId;
-
   /**
    * Smarty template historically defined a property 'receipt_from_email'.
    * (Note the asymmetric lack of 'receipt_from_name'.)
@@ -48,14 +33,6 @@ class CRM_Contribute_WorkflowMessage_RecurringEdit extends Civi\WorkflowMessage\
    */
   public $receiptFromEmail;
 
-  public function setContributionRecur(array $contributionRecur) {
-    $this->contributionRecur = $contributionRecur;
-    if (!empty($contributionRecur['id'])) {
-      $this->contributionRecurId = $contributionRecur['id'];
-    }
-    return $this;
-  }
-
   protected function exportExtraTokenContext(array &$export): void {
     $export['smartyTokenAlias']['installments'] = 'contribution_recur.installments';
     $export['smartyTokenAlias']['amount'] = 'contribution_recur.amount';
diff --git a/CRM/Contribute/WorkflowMessage/RecurringTrait.php b/CRM/Contribute/WorkflowMessage/RecurringTrait.php
new file mode 100644 (file)
index 0000000..4389c89
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @method array getContributionRecur()
+ * @method array getContact()
+ * @method $this setContact(array $contact)
+ */
+trait CRM_Contribute_WorkflowMessage_RecurringTrait {
+  /**
+   * The recurring contribution.
+   *
+   * @var array|null
+   *
+   * @scope tokenContext as contribution_recur
+   *
+   * @required
+   */
+  public $contributionRecur;
+
+  /**
+   * @var int
+   * @scope tokenContext as contribution_recurId
+   */
+  public $contributionRecurId;
+
+  /**
+   * Set recurring contribution object.
+   *
+   * @param array $contributionRecur
+   *
+   * @return $this
+   */
+  public function setContributionRecur(array $contributionRecur): self {
+    $this->contributionRecur = $contributionRecur;
+    if (!empty($contributionRecur['id'])) {
+      $this->contributionRecurId = $contributionRecur['id'];
+    }
+    return $this;
+  }
+
+}
index acdb085eee9cacd903ffa16713daafa2847913a6..6bef624257e72e8ff87a7494ed152ca126d31688 100644 (file)
@@ -49,7 +49,7 @@ class CRM_Contribute_Form_CancelSubscriptionTest extends CRM_Contribute_Form_Rec
       "Subject: Recurring Contribution Cancellation Notification - Mr. Anthony\n Anderson II",
       'Return-Path: bob@example.org',
       'Dear Anthony,',
-      'Your recurring contribution of $ 10.00, every 1 month has been cancelled as requested',
+      'Your recurring contribution of $10.00, every 1 month has been cancelled as requested',
     ];
   }