Building a site for a Massage Therapy Club -- I think I need 3 plgins

Hi,
I'm building a site for Massage Therapy business and they offer simple massage payments or the option of paying a monthly fee (massage club) as a set fee for 2 massages per month. They want to offer traditional payment gateways, so I need more than PayPal for checkout. Here is my dev site so far:http://dcmc.wgarnsey.com/

I think that I need to use:
Appointments+ - for setting the massage schedule and booking the massage.
MarketPress - for enabling a payment gateways such as Authorize.net
Membership - for creating membership levels and paying membership subscription

The interactions we need are:
A) A customer can schedule and pre-pay a first-time massage for $29.95
B) A customer can join the Massage Club and sign-up for monthly payment plan
C) A massage club customer can book a time (2 massage per month) and not have to pay because they are already a paying member
D) Customer checks out using Visa, MC or PayPal (* we may opt just for the manual setting in MarketPress and let the office manager run the cards manually - although that is not my recommendation)

I think I have Appointment+ set up pretty well, but am not sure how to integrate MarketPress and Membership to work with Appointments+. Is there any specific help content that you can refer to me to get they plugins to play together?

Thx!

  • Tyler Postle

    Hey William,

    I have attached a couple screenshots showing how to integrate these 3 plugins together.

    Make sure that your "Payment Required" setting is set to "Yes" That's from the general Appointments+ settings menu (Appointments+ > Settings > General Settings Tab)

    You will need to activate the "Appointments in Product Cart" Add-on. You can then activate the integration from your general settings.

    As for membership, this also requires that the payment required setting is set to "Yes", once that is done you will have new options underneath it. One of which, as seen in the screen shot, is to give clients that have a certain membership level(s) discounts on the service. So, you could give them 100% discount (free) because they've already paid for it by signing up for the membership.

    Hopefully that makes sense and helps you out!

    Cheers

  • Ash

    Hello @William

    Welcome to WPMU community!

    I hope you are well today and thanks for asking the question.

    @TyePo is a great help here, please follow his suggestion to integrate marketpress with appointment+.

    You can offer 100% coupon to members from a membership level, so that they can use that coupon to checkout and get the product free.

    For allowing only 2 booking per month, please add the following code in your theme's functions.php:

    // Works only if login required
    function limit_active_apps( $reply_array ) {
    global $wpdb, $current_user, $appointments;
    // Change statuses as required. i.e. remove pending condition if you wish
    $count = $wpdb->get_var( "SELECT COUNT(*) FROM " . $appointments->app_table . " WHERE user=".$current_user->ID." AND (status='pending' OR status='confirmed' OR status='paid' ) and start > NOW() - INTERVAL 30 DAY " );
    if ( $count >= 2)
    return array( 'error'=>'You have reached maximum allowed number of appointments' );
    return $reply_array;
    }
    add_filter( 'app_pre_confirmation_reply', 'limit_active_apps' );

    Please let me know if you find this is helpful, or if you have any further questions.

    Cheers
    Ash

  • Ash

    Hi @William

    I am sorry for the delay here. I was sick in these days :slight_frown:

    Anyway, if you still have issues with the code I provided in my above post, please add a <?php tag at the beginning.

    Like this:

    <?php
    // Works only if login required
    function limit_active_apps( $reply_array ) {
    global $wpdb, $current_user, $appointments;
    // Change statuses as required. i.e. remove pending condition if you wish
    $count = $wpdb->get_var( "SELECT COUNT(*) FROM " . $appointments->app_table . " WHERE user=".$current_user->ID." AND (status='pending' OR status='confirmed' OR status='paid' ) and start > NOW() - INTERVAL 30 DAY " );
    if ( $count >= 2)
    return array( 'error'=>'You have reached maximum allowed number of appointments' );
    return $reply_array;
    }
    add_filter( 'app_pre_confirmation_reply', 'limit_active_apps' );

    Let me know if it works this time.

    Cheers
    Ash

  • ken_lyle

    Hey Ash and TyePo,
    This is great, but I think not what @William meant. It is not really the number of active appointments in a 30 day period...

    More likely, it is the number of appointments in a calendar month. Could we see code for that?

    However, it may be that if one allows "rollover" of unused credits from one month to another, that a client could get any number of massages per month by using stored up credits.

    I am currently working on a similar application for a client who does massage and teaches yoga. They want to have:

    1) larger packages of services with no end date. The most critical idea here is store credit, which can be sold at a discount. Is Cubepoints the best way to do this? Can I assign Cubepoints based on a purchase, or does that need to be done manually in the backend?

    2) they want to sell Monthly Passes for a particular class, meaning unlimited registrations for that class in the month (but not others). For example, a Yoga membership does not give access to massage or coaching. The current configuration options don't address this adequately. If I give a 100% discount for members, they can book any service, and it appears to be free.

    3) they want to do smaller packages which are good for only 30 days, and expire, or perhaps as a Subscription product, but with no rollover. For example, 1 massage and 10 yoga classes. I don't have any idea on this one, because it seems to combine the other two...creating a credit for specific services, but which have to be used in a certain time window.

    Sorry to jump in, but I am hard pressed to answer these 3 use cases, even with all 3 extensions, and I haven't found answers for advanced use cases like this.

    Thanks!

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.