Uploaded image for project: 'CiviCRM'
  1. CiviCRM
  2. CRM-10076 Recurring contributions and auto-renew memberships: allow self-service and back-office update and cancellation
  3. CRM-10084

Back-office cancellation of recurring contributions and auto-renew memberships with option to send cancel request to processor

    Details

    • Type: Sub-task
    • Status: Done/Fixed
    • Priority: Major
    • Resolution: Fixed/Completed
    • Affects Version/s: 4.2.0
    • Fix Version/s: 4.2.0
    • Component/s: CiviContribute, CiviMember
    • Labels:
      None

      Description

      Currently, a back-office "Cancel" action is provided in the Contributions tab, Recurring Contributions selector. However, this action simply updates the recurring contribution status in the CiviCRM DB (after giving a jScript warning). No "Cancel" action is provided in the back-end for Auto-renew memberships.

      Extend this functionality for Auth.net, PayPal and Google Checkout as follows:

      Recurring Contributions
      ===================

      • Cancel action in Recurring Contributions selector should check whether the associated payment processor class has a cancelSubscription method. If so, user is prompted to choose whether they want to "Send cancellation request to $processorName" or "Set CiviCRM recurring contribution status to cancelled (recurring payment must be cancelled manually with the payment processor)." Suggest using a radio button for this choice, no default is set so user has to explicitly select an option. Also display checkbox "[ ] Send Notification" - IF contact has a valid email address. Default for checkbox is true.
      • Where possible, set a flag in processor cancellation API to suppress notifications sent by the processor (so donor doesn't get 2 notifications)
      • If processor class doesn't have cancelSubscription method we can retain current behavior (warning alert box).
      • Also check with the recurring contribution is linked to an auto-renew membership (via civicrm_membership.recur_contribution_id). If so, add warning in the above pop-up dialog: "WARNING: This recurring contribution is linked to an auto-renew membership. If you cancel it, the associated membership will no longer renew automatically. However, the current membership status will not be affected."
      • If processor request succeeds, update recur contribution status, insert an Activity record, and send cancellation notification to donor.
        • Add new activity type - "Cancel Recurring Contribution"
        • Activity description should include original "processor_id" and any cancellation tracking transaction id's received from processor
        • Activity source is the logged in user's contact_id - the person doing the cancelling. Target is the contributor.
        • Send cancellation notification to donor / member if "Send Notification" is true (see message template section below)

      Auto-renew Memberships
      ====================

      • New 'action' for Membership selector when auto-renew is true: "Cancel Auto-renewal".
      • Functionality when clicked is the same as above, except warning text is different in pop-up: "WARNING: If you cancel the recurring contribution associated with this membership, the membership will no longer be renewed automatically. However, the current membership status will not be affected."

      NOTE: This action does not affect the current membership status. It only sets the civicrm_membership.recur_contribution_id to NULL - which "removes" the auto-renew = true property of the membership.

      System workflow message template(s) for Recurring Contribution and Auto-renew Membership Cancellations
      ====================================================================================
      I could not find the message template which handles notification for the existing front-end auto-renew cancellation functionality??? In any case, I think it may be best to create new system workflow msg template(s) - since I don't think we can add functionality easily to existing msg templates during upgrades (if they've been modified by the admin user).

      I think it's better to create two different templates - one for recurring contribution cancellations, and one for auto-renew membership cancellations . This gives admins more flexibility to customize the text w/o worrying about a bunch of conditional "code".

      Both can follow the general pattern in "Event Registration Cancellation" template.
      ---------------

      {ts 1=$contact.display_name}

      Dear %1

      {/ts}

      ,

      ...
      For recur contrib cancellations:
      "Your recurring contribution of $amount, every $recur_frequency_interval $recur_frequency_unit has been cancelled."

      ...
      The auto-renew template should include a "Membership Information" block for the associated membership:

      "The automatic renewal of your $membershipType membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal."

      ===================
      Membership Information
      ===================
      Membership Status:
      Membership Start Date:
      Membership End Date:

        Attachments

          Activity

            People

            • Assignee:
              dgg David Greenberg
              Reporter:
              dgg David Greenberg
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 1 week, 2 days, 5 hours, 30 minutes
                1w 2d 5h 30m