Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Phase 4 - Membership Periods


Requirement/ user storySpecificationNotes and Wireframes
As a staff member, I want to see all different membership types that a contact holds so that I can have an overview of the current and past membership levels this contact have.
The memberships a contact holds should reflect each different membership type.

Option 1: When a membership is added to a contact, if the contact does not hold any membership of the same type, a new membership should be created. Otherwise the membership with the same type should be extended/ updated.

Option 2 (minimal): Do not change the current way CiviCRM creates membership records but fix any potential webform and reporting problems caused by that.

(Nice to have) Allow creating overlapped memberships from the same organisation in CiviCRM back-office.

As a staff member, I want to record the period of each membership so that I can view the complete history of exact dates of signup, renewal and end, and any gaps in the membership where it is cancelled or paused.
Membership period schema
  1. Create a database table "membershipextras_membership_period" upon installation of the extension. The database table have following columns: 
    1. id - primary key - required
    2. membership_id - foreign key to membership entity - required
    3. period_start_date - date when the membership period starts
    4. period_end_date - date when the membership period ends
    5. payment_entity_table - civicrm_contribution or civicrm_contribution_recur
    6. payment_entity_id - id of the payment entity
    7. is_active activated - whether the period has taken effect or not
    8. is_historic - whether it is an historical period created before the membership extras is installed



Membership signup
  1. Every time a new membership is signed up, a new membership period should also be created under that membership.
  2. Period start date and period end date should be the membership start date and end date.
  3. Payment entity should be recurring contribution if paid via payment plan. Otherwise it should be contribution

Membership renewal (upgrade/ downgrade/ renew same type)
  1. Every time a membership is renewed, a new membership period should also be created under that membership.
  2. Period start date should be today or a day after the last active period end date whichever is later. Period end date should period start date plus the length of a full term.
  3. The user should be able to manually set the date for renewal.
  4. Within a membership, there cannot be two overlapped active periods.

As a staff member, I want to be able to keep memberships and membership periods up to date so that I can maintain an accurate membership history.
Edit membership periods
  1. Allow updating the dates of each membership period.
  2. Within a membership, there cannot be two overlapped active periods.
  3. When a period is updated, the membership dates and status should be updated accordingly.


Admin should no longer be able to edit membership dates when editing a membership.
Cancel membership periods

Allow deactivating membership periods


If a payment for an active membership period is overdue for a certain length of time, the membership period should be cancelled.

Create a setting that allows staff to set the number of days after a payment is overdue that a membership period should become inactive.



Create a setting that allows staff to set the number of days after a payment is overdue that a membership period end date should be adjusted.
Delete membership periodsAllow deleting membership periods.Permission
As a staff member, I want to see the period of each membership signup and renewal so that I can know the complete membership history of this contact.
Display membership periods (pending wireframes)
  1. Membership periods should be nested under each membership type.
  2. (Could have) Ideally when staff see a membership, they should be able to drill down to the membership periods.
  3. (Would like to have but not this time) Membership period gantt chart


As a customer, I want my membership activated immediately after purchase so I can start using my membership on the day of the signup.
If a membership is paid via Direct Debit, the membership should be activated immediately.Create a setting that allows staff to specify a list of payment methods. If any membership order is made via these payment methods, the membership period should be activated even if the payment hasn't been completed.
Installation and uninstallation
Upgrader
  1. Add an upgrader to the extension to install the membershipextras_membership_period table for existing installations
  2. The upgrader should also generate a historic period for each membership record in membership table

UninstallerTBC


TBC - Contribution Page Support

...