Sometimes members miss the gift code entry field during signup and pay normally instead. Today the only way to fix this is to ask the member to redo their entire signup so they can apply the code, which is friction we're putting on people who already gave us money for a gift.
Staff should be able to redeem a gift certificate code from the admin side — either while creating a new membership for a member, or applied to an existing fresh membership. The redemption logic itself already exists in Signup::RedemptionsController#create (wrap a Membership.create_for_member in a transaction and call gift_membership.redeem), so this is mostly a question of surfacing it in the admin UI.
Places to start:
MembershipForm (app/forms/membership_form.rb) currently has two payment modes: "Accept payment today" and "Create without payment." A third "Redeem gift certificate code" option would slot in naturally alongside those.
app/views/admin/members/memberships/new.html.erb is the form that needs the new fieldset.
GiftMembershipRedemptionForm (app/forms/gift_membership_redemption_form.rb) already validates codes and could be composed in.
Open questions:
- Should this also handle the case where a member has already paid for a membership and we want to refund/credit them after applying the gift code? Or is it sufficient to only support "this membership hasn't been paid for yet, redeem the code instead"? The latter is much simpler and probably covers the reported pain point.
Sometimes members miss the gift code entry field during signup and pay normally instead. Today the only way to fix this is to ask the member to redo their entire signup so they can apply the code, which is friction we're putting on people who already gave us money for a gift.
Staff should be able to redeem a gift certificate code from the admin side — either while creating a new membership for a member, or applied to an existing fresh membership. The redemption logic itself already exists in
Signup::RedemptionsController#create(wrap aMembership.create_for_memberin a transaction and callgift_membership.redeem), so this is mostly a question of surfacing it in the admin UI.Places to start:
MembershipForm(app/forms/membership_form.rb) currently has two payment modes: "Accept payment today" and "Create without payment." A third "Redeem gift certificate code" option would slot in naturally alongside those.app/views/admin/members/memberships/new.html.erbis the form that needs the new fieldset.GiftMembershipRedemptionForm(app/forms/gift_membership_redemption_form.rb) already validates codes and could be composed in.Open questions: