Skip to content
This repository has been archived by the owner on Jan 15, 2020. It is now read-only.

↪ Subscription Management: Switching for Bundle Types #241

Closed
manospsyx opened this issue Dec 7, 2017 · 21 comments
Closed

↪ Subscription Management: Switching for Bundle Types #241

manospsyx opened this issue Dec 7, 2017 · 21 comments

Comments

@manospsyx
Copy link
Member

manospsyx commented Dec 7, 2017

Parent Task

#222

Description

Switching here refers to both scheme switching and content switching -- similar to variable products where the user may switch the billing details of the subscription and/or the product configuration (attributes).

UI/UX

Ideally I'd like to replicate the Product Bundles Cart Editing UX here, which relies on showing an "Edit" button next to the cart item title -- that's pretty much in line with how WCS already handles Switching for core types: There's no need to deviate from that. Not sure if "Upgrade/Downgrade" is the best possible choice of words here, but that's minor.

Clicking on that button will take the user to the product page, where a new configuration and/or scheme can be chosen. The rest of the flow after adding to cart can remain the same as now.

Note that in this case we have multiple line items that may need to be deleted/added/modified in parallel: When the modified bundle is added to the cart, SATT will need to figure out how to treat each cart item by comparing the configuration in the cart with the configuration in the Subscription.

Not easy.

@manospsyx manospsyx self-assigned this Dec 7, 2017
@manospsyx manospsyx changed the title Subscription Content Management: Switching for Bundle Types Subscription Management: Switching for Bundle Types Dec 7, 2017
@manospsyx
Copy link
Member Author

The rest of the flow after adding to cart can remain the same as now

From #278 --

I'm not a big fan of how WCS forces the user to go through the entire checkout flow when switching doesn't require a payment to happen. I'd love to discuss the why's and how's of that -- and I'm sure I'm missing hundreds of hours of thinking and discussions here, but I wanted to share that from a store owner's (and user's) perspective this flow feels odd. If there's any plan to improve this flow I'd be happy to contribute.

When a bundle (or any product, for that matter) doesn't require payment, instead of guiding the user through the entire checkout flow, it would be a lot easier (for the user, and for us) to code a solution that works in a similar way as the add-to-sub management feature of SATT.

@thenbrent I know I have asked the same question in #278, but as it's also relevant here I'm adding this for reference: Is there a reason why WCS always forces the user to place a "switching" order, even when no payment is needed?

Assuming that shipping costs aren't modified, I'd rather end this flow at the single-product page, by redirecting the user to the modified subscription.

Switching the contents of a bundle (without switching its scheme) could be implemented as a "remove-and-then-add" action without much effort.

@manospsyx
Copy link
Member Author

manospsyx commented Feb 14, 2018

Note that "add-to-subscription" features in SATT work without modifying the recurring shipping costs.

That's OK when charging a flat shipping fee, but will fail for anything else. For future reference, I have opened #280

@monfrique
Copy link

monfrique commented Apr 2, 2018

Hey @franticpsyx

I've been using SATT with Mix & Match and have developed a plugin that does exactly as you have described. The customer can press an 'Edit' button from their subscription and adjust the quantity and type of products in their container then just press Save to update it within the Subscription.

However, I am having issues with changing the container. I realise this is probably only possible from admin and not front end. So I have attempted to add a new container to the subscription and then have added any associated mix and match products. However, they are not saving as Mix and match products despite adding the 'Part of' meta - instead they just save as regular products. I believe this is related to SATT. Is there something I can do from the database or meta to ensure they save correctly? I found a similar comment to this in thread 12 from over a year ago but don't see a resolution in the roadmap.

@manospsyx
Copy link
Member Author

Hey @monfrique -- my guess is you'd need to remove and re-add the container and ensure the necessary meta gets added to the newly created order item. I agree it can be quite complex to juggle with order items + the parent/child relationships and meta required by Mix and Match (or any complex product type). Unfortunately, I can't provide much more help with this as it's a complex customization (which is why it hasn't been added to SATT yet) -- and providing help with customizations is beyond the scope of this issue tracker. I'd be happy to provide pointers if this was reasonably simple to explain, but I'm afraid that right now I don't have the complete picture of a solution, either.

SATT 2.1, which you can find in the 2.1 branch, includes some new management features that you might be able to re-use (and get some inspiration from).

With that said, Mix and Match doesn't include any easy-to-use methods for adding entire MnM collections to orders and would need a significant investment of effort to support the full set of features included with SATT 2.1. This is not something we can prioritize right now, in part because the majority of what you can do with MnM is also possible with Product Bundles.

For offering pick-and-mix bundles with SATT, I'd recommend trying Product Bundles (along with this mini-extension) instead of Mix and Match products.

@manospsyx manospsyx reopened this Apr 3, 2018
@monfrique
Copy link

Thanks so much for your reply - funnily enough I worked out the solution with a friend overnight and we now have it 100% functional. I developed this specifically for a client but I may package it up separately as a plugin for those looking to add the functionality to SATT + Mix and Match in the near future.

@manospsyx manospsyx changed the title Subscription Management: Switching for Bundle Types ↪ Subscription Management: Switching for Bundle Types May 11, 2018
@samrgomes
Copy link

Hey @franticpsyx !

Quoting your last paragraph from message 2 here:

Switching the contents of a bundle (without switching its scheme) could be implemented as a "remove-and-then-add" action without much effort.

I'm currently working on a SATT + Composite products solution. Version 2.1 added swtcth functionality for Simple and Variation products, but not yet for Bundled and Composite ones. Would it be possible for you to give any direction on how to proceed with implementation of "remove-and-then-add" action? That seems to be much of what it's needed on my end.

Thank you!

@manospsyx
Copy link
Member Author

@samrgomes we haven't started work on this yet -- without having the design/flow part nailed down, I'm not sure if I can be of much help at this stage.

Feel free to contribute thoughts on how you imagine this could work, though! They'll be extremely valuable for speccing things here.

@samrgomes
Copy link

I can see it's a hard flow to come up with. I'll contribute if any thoughts come up.

@robin-scott
Copy link

Hi @franticpsyx - this might not be quite the exact issue, but have got a somewhat motivated client looking for us to add in ability to switch (change renewal period & variation information) products around from within the my-account/my-subscriptions page. Am investigating some options for this, and feels like it might be a nice place to add some of this - has this come up or been explored before?

@manospsyx
Copy link
Member Author

@robin-scott is this for products in Bundles?

@robin-scott
Copy link

Among other product types and displays, yes. Also I wondered if there's anywhere more appropriate to shoot around some specifics (WC Slack?). If we go ahead and build some of this out, my feeling is it could be a useful place to manage contents of SATT subscriptions more generally... but am keen not to reinvent wheel, and also, I'd like to understand if you've run into any difficulty with some of this. Probably slack / email will be easier for this discussion, as it strays from issue to issue :)

@manospsyx
Copy link
Member Author

Hey @robin-scott -- if you have a clear spec, I'd encourage you to install WCS + SATT and see what's missing. Then, you should be able to identify which of the missing features you need are planned in SATT (and which are not) by looking at the issues in this tracker.

If you have something different in mind that you can't find in SATT, feel free to open an issue -- if SATT is the right place for what you are looking to achieve, we'll use your feedback when we prioritize the next chunk of work in SATT.

@dss-rtm
Copy link

dss-rtm commented Jan 4, 2019

SATT + Mix and Match

@monfrique I was wondering if you ever released your plugin for SATT and mix and match as it sounds like something I might have a use for and pay for.

@monfrique
Copy link

@dss-rtm
We completed it and it works great, however we did not package it up for public release. I really want to but just have not had any spare time. I've added it to my workflow for the first quarter of this year and will post an update here when it's ready. There's actually quite a lot of extra features we've added since then so I will look at making a toggle settings page where you can activate the various things we've developed.

@dss-rtm
Copy link

dss-rtm commented Jan 9, 2019

@monfrique That sounds really exciting and I look forward to checking it out as it sounds like a valuable addition to SATT. Thanks in advance for sharing your work! Happy 2019.

@robin-scott
Copy link

@franticpsyx different project, but similar requirement here to my earlier comment, and doing the remove-and-then-add thing. Also this client echoes your earlier "why does WCS send through checkout to switch". Can provide a bit of insight into the desired functionality here in case you're still looking for design / flow guidance.

Essentially, what would be useful would be if adding to a subscription containing bundled products were more like editing a cart of bundled products (add / remove quantity of products already in bundle X) - without having to complete checkout afterwards - an add to ( / remove from) subscription with a cart-like interface.

@manospsyx
Copy link
Member Author

@robin-scott thanks for the update!

Yup, that's more or less the approach we've been thinking about. As far as I remember, currently WCS requires the user to go through checkout even if the price of the modified line item is lower after the switch. I'm pretty sure there are many good reasons to do so (validation, history/logging), at the expense of UX.

I'm not sure how we'll handle multi-line switching of Priced Individually bundled items at this point -- statically-priced Bundles shouldn't be a problem. But when it comes to "adding a product to a subscription", SATT already takes the entire checkout flow out of the picture, so I'm certainly tempted to follow the same approach when switching Bundles. But there are consistency considerations here that need to be taken into account, too: If WCS "says" that the checkout flow is an essential part of switching a Simple product, then why should a Bundle behave any different?

@robin-scott
Copy link

In a nutshell, this is exactly the conundrum here @franticpsyx :)

The majority of requests to use SATT and bundles (I think we are running at 5-7 projects in similar ball park) originate because client doesn't want customer to have to re-checkout.

AFAIK there is no functional need for the re-checkout to switch subscriptions (except there is the way things presently work) but it is useful that it does demonstrate buyer intent (which is worthwhile in and of itself); the issue here is what bundle subscribed user expects at this part of the UX journey, and "checkout" is (probably) not that.

At this point - switching around the subscribe-able bundle - the user expects to be able to switch around the bundle, and "it just works".

The development required for this is not so simple though :)

We are in workaround territory each time, and really it feels like some My Account "switch subscribed bundled products" is where we should be looking. It would be a big enhancement; my question is would it be useful to all, and my feeling is that it would be useful to all SATT + Bundles merchants to have this option if they want to offer bundle switching in between billing periods.

@malviyaritesh
Copy link

malviyaritesh commented Jan 29, 2019

@dss-rtm
We completed it and it works great, however we did not package it up for public release. I really want to but just have not had any spare time. I've added it to my workflow for the first quarter of this year and will post an update here when it's ready. There's actually quite a lot of extra features we've added since then so I will look at making a toggle settings page where you can activate the various things we've developed.

Hey @monfrique Can you please share your solution for SATT + MnM subscription switching? Currently, while switching, it creates new subscription instead of updating the existing one. I desperately need the solution for it and can't find a way to do it by myself. Please share your solution even if its not complete for public release, it will give me direction to complete it by myself. Your help is much appreciated.

@malviyaritesh
Copy link

I've written a mini extension wocommerce-mnm-switching which allows switching of MnM items in container of a subscription. I tried not to modify any other dependent plugin file but to make it successfully work, I had to modify a file of WooCommerce Subscriptions plugin, the file is:
woocommerce-subscriptions/includes/class-wc-subscriptions-switcher.php

I've created a gist to be useful anyone looking for the same. I've included the class-wc-subscriptions-switcher.php and its diff for the reference of changes. Feel free to improve on it.

https://gist.github.com/malviyaritesh/e4aa32c263287d7ab7ddaaf8483a0b5a

@manospsyx
Copy link
Member Author

Moved to the APFS repository.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

6 participants