Standing Orders - version 1


#1

Continuing the discussion from Standing / Repeating Orders:

The first cut of standing orders is on its way!

We’ve been busy working on version 1 of the Standing (repeating) Orders feature, and it’s almost time to put it out there for everyone to play with and provide feedback on changes or improvements before we put it live. We estimate that @oeoeaio and @maikel and @bingxie and @stveep will have almost everything ready to play with by the end of October.

Below is the breakdown of what will be built.


PART 1 - ORDER CYCLE SCHEDULES


PART 2 - STANDING ORDER MODEL


PART 3 - SCHEDULED ORDER CHECKOUT CHANGES

Note: This part is pretty tricky to understand/visualise and will be better described once we have screenshots and user journeys for you to view and then you can play with it yourself. So if you found it hard to follow what the dotpoints were laying out then never fear, more information to help will be coming soon.


PART 4 - STRIPE PAYMENT GATEWAY
You can read more about this here, and also follow the work @stveep and @oeoeaio are doing on GitHub.

Disclaimer: This part of the work may not be done and ready in time for the end of October deadline. You’ll be able to play around with all the other parts, but this one may take longer. Stay tuned, more news as we have it.


PART 5 - STANDING ORDERS IN REPORTS
Not yet defined though it should be easy to implement, @oeoeaio to define what is required for this in the coming weeks.


PART 6 - NEW & IMPROVED FUNCTIONALITY ON THE SIDE

Enterprises will be able to:

  1. Opt-in to make it mandatory for customers to log in to purchase from them (ie. they can’t purchase as a guest).

And customers will be able to:

  1. Set their preferred billing and shipping address
  2. Update their preferred billing address and shipping address on account page

Next few steps…

@rob is working through parts 1 and 2, and will hopefully have this done and ready for @sstead to play with in the last week of October. @maikel is working on part 3 (and some of part 6), which has grown exponentially since we initially quoted on this piece of work so we just have to figure out how to juggle funds for the additional work not originally planned for. Hopefully this won’t be too big an issue and we’ll be able to have all the work done and tested by @sstead in November. Work is progressing on part 4 with @stveep and @oeoeaio and hopefully we’ll have an idea of the size of the piece of work and a delivery date by the end of October. Apologies that I can’t give you a firmer idea on dates, however I’ll keep updating this page as we progress so that you’re all up to date.

Any questions, post them here, otherwise stay tuned for the next update :slight_smile:


Standing orders / subscriptions
What’s New? - v.1.8.7 (161223)
Subscriptions: Technical Overview
[FEAT] Subscriptions (standing orders)
Possible OFN instance for Spain
#2

Hi everyone,

Your access to the first cut of the standing orders feature is almost here! Apologies for the length of time it’s taken us to get something out to the community, it’s been quite an epic journey to get to this point but @oeoeaio is putting the final touches on his part so that he can hand it over to @sstead to do a first round of testing, and @maikel just has to fix a fees issue that @sstead found when she tested his part and that will be ready to go.

The plan at this stage is to go live with community testing on Wednesday 14 December, at which point in time you will all have exactly one week to play with the feature and feedback any thoughts on changes or any bugs you’ve found. We’ll be working on leftover tweaks and functionality that the guys didn’t get done in time while you’re looking at it, and then we’ll have a week to integrate any changes that come out of the community testing before we should have something ready for release.

So, stay tuned, @sstead will be putting out all the details on testing in the middle of next week!

Cheers :smile:


#3

Apologies everyone,

After several hours of testing this afternoon, Sally and I have identified several issues that we think would be better to resolve before opening our first cut of standing orders up for community testing. Most of these are relatively small, so I am giving myself until Friday afternoon our time to knock over as many as possible, at which point we intend to go live. I am hopeful that this should be enough time to make the testing experience a bit less error prone and more targeted to the user experience than dealing with known bugs.

If you are super desperate to have a look at the state of things, the code is on our staging1 server. Feel free to have a poke around, but bear in mind that I will be pushing code frequently over the next couple of days, and data will be lost on each push, so I wouldn’t waste too much time setting up test data, or logging issues. We’ll be releasing a set of testing notes when we go live on Friday.

We think it best that we leave community testing open until the first week of the new year, as most of us in Aus will be taking a break from the 23rd until then anyway. So the aim is to get everything as polished as possible before the break, and then to incorporate any changes arising from community testing ASAP in the new year.

Again, apologies that this keeps getting pushed out, but I think starting from a reasonable point is going to save all of us a lot time and confusion. :slight_smile:


#4

Hello everyone,

@oeoeaio, @maikel @danielle and @bingxie’s brains have nearly imploded multiple times in bringing Standing Orders to life, but they’ve done it, and this epic feature is now ready for testing by the global community!

We’re asking everyone to go to Staging1 and give Standing Orders a test before January 11, 9am AEST (Melbourne time). @nick @lin_d_hop @MyriamBoure @stveep @CynthiaReynolds @MyriamBoure @mags @sreeharsha
@elf-pavlik @tschumilas @Oliver @Olivier @MikeiLL Please tag anyone else :slight_smile:

Here is the address for Staging1 - https://staging1.openfood.com.au

What is it?

In case you’re not familiar, Standing Orders is a feature which allows enterprises to setup recurring or repeating subscription-like orders for their customers. Here’s a run-down of how it works…

Currently the enterprise admin can create standing orders for their customers, including the items they’d like regularly ordered and their preferred shipping/payment method. First the admin must create a group of order cycles called a schedule. The frequency of order cycles within the schedule dictates how often the customer gets their standing order. To illustrate with an example, the enterprise is likely to create a routine schedule, such as ‘fortnightly’ and it will contain an order cycle every two weeks. When each of the order cycles in the schedule opens, customers with standing orders applied to this schedule will have an order generated for them automatically, which they can add/remove products from until the order cycle closes. When the order cycle closes, their order is finalised, and they are billed.

We need to have lots of eyes on the feature to:
a) make sure it’s working smoothly and check for bugs
b) to make sure it will meet the needs of users in your part of the world
c) to discover any ways to make it more user friendly.

While the feature is functional, be aware that this it is currently the MVP, or a bare bones version. It’s not perfect, but this is a good stage to get your feedback, before finishing touches are made.

What to test:

  • Part 1 - Order Cycle Schedules - setup groups of order cycle that the standing orders will apply to
  • Part 2 -Standing Order Model - enterprises can assign standing orders to customers
  • Part 3 - Scheduled order checkout changes - customers can interact with their standing order in the checkout process.

There are 2 options for testing:

Option 1
If you’re a more advanced user of the OFN, you can head to staging and explore the feature BLIND, without looking at the description of the feature below. Testing in this way tells us if the feature is intuitive. Your feedback will reveal whether the location and setup of the feature is logical and easy to understand. Because you won’t be told in advance what to look for, these testers will give a good indication of how our users will see the feature.

Option 2
If you’d class yourself as a new, less experienced OFN user, or if you’ve already testing via Option 1, you can follow the guidelines below for testing. This lists the functionality to be tested, and you can tick off functioning components like a checklist. These testers will be checking that everything is working and that there are no bugs. We also want to hear if the feature will meet your needs, and whether you see any ways to improve it.

Having testers across both options will be ideal- and if you go with option 1 first, you can test with the option 2 approach after.

Note, Rob will clear the data next week on Friday the 23rd Australia time. So any new enterprises you’ve setup will be gone. This can be a pain in you’re half way through testing, or if you want a clean slate to test a second time, you can test once before and once after the data is cleared.

FAQs

Where to put your testing notes?

Previously ‘crowd testers’ have put their testing notes in individual google docs, and put the link here on the discourse thread. This worked well, just make it public/shareable. Remember screenshots and clear descriptions of the things that aren’t working.

Haven’t used staging1 before?
Head to https://staging1.openfood.com.au/register and create an account. You will need to request permission to create >1 enterprise if you want to test as a hub- email your instance leader (Lynne, Cynthia, Theresa, Harsha, Nick or Myriam, or hello@openfoodnetwork.org) and they’ll sort this for you.

New to testing?
Checkout basic instructions here - Testing Handbook

What device?
Please test the back end on desktop only (the backend is not responsive). Please test the front end on desktop and mobile/tablet if possible.

Be warned
There are a number of features/improvements which are part of Standing Orders but not complete yet, including; implementing STRIPE payment wallet and triggering payment at close of the standing order’s order cycle. @stveep is working on these and they aren’t far away. There are also some bugs, which are listed on this Epic on github - https://github.com/openfoodfoundation/openfoodnetwork/issues/1323 . If you see an issue is already captured in github, you don’t need to flag it during testing, or you can add comments to the existing issue.

Option 2 for Testing- Checklist of features/functionality

Part 1 - Order Cycle Schedules

Create an order cycle schedule 1055

  • A schedule is a group that contains multiple order cycles. Standing orders are applied to one of these groups, so we need to setup schedules before we setup the standing order. For example, if I want to give a customer a weekly subscription to a vegie box order, I’ll setup a schedule called ‘weekly’ and put weekly order cycles into that schedule. Then I can apply a standing order to that schedule for my customer.
  • In the Order Cycle admin page there is an Add Schedule button - clicking this opens a modal
  • You can name the new schedule
  • You can drag existing order cycles into the schedule from a given list of OCs. You can drag them out as well.
  • You can cancel the creation of this schedule, by clicking a cancel button. You’ll be asked if you’re sure before it cancels. A canceled schedule won’t exist.
  • If you hit ‘create’ a schedule will be created, the modal will close and the name of the schedule will show in the column next to all selected OCs.
  • Can show/hide the columns in the OC table, and save default columns for your user.

Edit or delete an order cycle schedule 1059

  • In the order cycle interface I can see previously created schedules in the OC table next to OCs that are assigned to the schedule.
  • If I click on the name of the schedule in the table. This should open an edit modal for the schedule.
  • You can edit the name of the schedule - these changes carry through everywhere the schedule is referenced.
  • You must click update for changes to be saved. Clicking cancel will ignore any changes.
  • You can delete a schedule by clicking on the delete button
  • If no standing orders are in place against the schedule it’s possible to delete after confirming. If standing orders are placed against the schedule then it should not be possible to delete.

Add an OC to one or more schedules (via the OC create/edit screen) 1058

  • Go to create an order cycle. There should be a new field called schedules.
  • You can search for previously created schedules and select them. You can select >1.
  • Only the coordinator of the OC is able to edit the schedule- suppliers or distributors can see the schedules but not edit
  • Test for producer OC interface and hub OC interface
  • On the OC admin page, in the schedule column, any schedules selected in the add OC interface should be listed next to the OC.
  • Now check that when editing an OC the schedule field is still visible and editable.
  • After adding/removing a schedule from an OC the ‘save’ button should become available to click

Filter order cycles by schedule or by date range 1056

  • I can filter the order cycle page by shop and schedule

Part 2 - Standing Order Model

Set up a standing order for a customer 1060

  • In Orders > Standing orders
  • I can select the coordinator.
  • Click on the Add Standing order button.
  • A 'create SO wizard steps through each field of creating a standing order. I can cancel at any time.
  • You cannot create a SO without first creating a schedule.
  • Customer - I can only select a customer on my customer list
  • Schedule - I can select from existing schedules
  • I can select payment and shipping methods that are active
  • I can select a start and end date for the standing order. If the customer’s standing order end date is before the close date of an OC, there’ll be no order placed in the OC.
  • The customer address should autofill from the customer’s saved default address (this isn’t built yet)
  • You can search for and select which items will be in this SO and in what QTYs.
  • You can review and save, or cancel.
    + Note if you create a standing order which applies to a currently open order cycle, an order will not be generated for that order cycle.

View all my standing orders 1061

  • In orders > standing orders
  • Filter the page by coordinator
  • Can select to view/hide columns
  • I can see all customers’ standing orders, including the schedule, the items, the start and end dates and the payment/shipping method.

Edit a standing order 1065

  • Open Orders > Standing Orders
  • On the index page you can see all existing SOs
  • The schedule and customer name cannot be edited
  • I can clikc on the items in a SO and a dropdown opens where I can edit the products in that SO and save.
  • Shipping and Payment methods can be edited in the same way.
  • Start and end dates can be edited in the same way.
  • An edit botton sits at the right of each row in the table. Clicking this opens an edit SO modal. Here you cannot edit the cusotmer name and schedule. All other fields can be edited.

Pause a Standing Order 1064
• In standing orders, in the listing view of a shop’s existing standing order, there is a pause button next to each standing order
• Hover over this button to reveal help text
• Click the pause button and be prompted to confirm the pause. Click cancel and the order isn’t paused, click confirm and it is paused.
• A paused order will have the ‘state’ = paused (previously it showed as ‘active’)
• The pause button has now become a ‘play’ button. Clicking play opens a confirmation prompt. Click cancel and the order remains paused, click confirm and the order is ‘active’ again.
• Paused orders should not receive emails regarding their standing order.
• No order should be generated for paused standing orders.

Cancel a customer’s standing order 1063
• This is a way to permanently delete a standing order, so that no future orders will be created for a customer. The cancelled standing order cannot be retrieved.
• Beside the standing order list, hover over the x Cross button. This will pop up a little message reading ‘cancel standing order’.
• If you click this a confirmation box will pop up, warning the user that this is final. If you cancel, the order remains, if you confirm it is cancelled.
• The order will remain on your standing order list, in the state ‘cancelled’
+ Note: If you cancel a standing order which has a current order in an open order cycle, that standing order will be deleted, as well as future ones.

Part 3 - Schedules Order Checkout Changes

Process standing orders when a new order cycle opens 1087
• When a standing order is applied to future order cycles, which are not open yet, no ‘order’ exists for each recurring order in the Listing Orders page (as complete or incomplete).
• When an order cycle opens, the system is triggered to create an order for this standing order, and the shop admin can now see it in their ‘Listing Orders’ page. It will be in the state ‘complete’ and any items in the standing order that ARE NOT in the order cycle will have been removed.
• This will be triggered IF the order cycle opened automatically according to the set opening date, or if it was manually opened by the user setting the date in the past.
• The stock/inventory level should have been reduced by these orders.

Send an email to the customer when a new standing order cycle opens 1078
• If a customer’s standing is applied to a schedule which contains an order cycle which has just opened, the system should send that customer an email alerting them that the order cycle is open and that they can ammend their standing order.
• They’ll be told if some items in their standing order are not available in the current order cycle and therefore not going to be delivered.
• What if none of the items in their standing order are in the OC?
• Check the contents of this email - does it contain all important information in a logical layout.

Notify customers when the order cycle has ended and their scheduled standing order is checked out 1088
• When an order cycle, in a schedule, with standing orders attached reaches its closing date and time, all standing orders which have been in ‘cart’ state for the duration of the order cycle are now ‘completed’.
• This will trigger an email to each customer with a final order confirmation. This will include their base standing order, plus any amendments they made to this during the order cycle open period.
• In the shop admin’s Listing Orders page, the standing orders will now show as ‘Complete’.

Opt-in option for enterprises to require customers to login to complete an order 1160

  • Enterprises now have the option to require customers to login before they can finalise their checkout. This is an important setting to be applied in conjunction with standing orders. Why? A customer with a standing order shouldn’t checkout as a guest because this could prevent them from seeing items that are already in their standing order, and they may duplicate their order. When logged in, they’ll see the alert at checkout saying ‘check which items are already in your order’.
  • This setting is in ‘Shop Preferences’
  • It should be recommended that enterprises using standing orders disallow guest checkout (for reason mentioned above).
  • If ‘allow guest orders’ is selected, customers can choose this option at checkout. If it is not, customers should be promoted to login, with no option of checking out as a guest.
  • This setting is separate to the ‘publicly visible shopfront’ setting, which demands customers login, and be on the customer list, in order to even see the shopfront.
  • Once tested, leave this setting on ‘require login’ for further testing, otherwise the new features won’t show.

Opt-in for enterprises to allow their customers to make changes to their current order 1161

  • Enterprises now have the option to allow or disallow customers to make changes to their past orders, IF the order cycle is still open. This allows/disallows customer to change their standing order which was set up in the past and is currently in an open order cycle.
  • This setting is in Shop Preferences
  • It’s conditional on Standing orders being activated???
  • Check that the setting is correctly allowing/disallowing order changes.
  • Leave activated for the next testing items.

Display products bought in an order cycle in the shop cart dropdown 1083

  • The shopping cart will now show items previously purchased in the same order cycle, below items in the current active cart. This includes items in a standing order that applied to the open order cycle.
  • It will only show if the setting above is active (allow customers to change their current order).
  • It will only show when the customer has entered a shop with an OC open.
  • It should not show items from other OCs, it should not show items from cancelled orders, it should not show items that have been removed from orders (from edit cart page).
  • It should update if you switch between 2 active order cycles, or 2 shopfronts

Display products bought in an order cycle in the edit cart page 1084

  • The Edit Cart page now shows items in the current cart, as well as items which have previously been purchased in the same Order Cycle, by the logged in shopper. This includes standing orders allocated to the order cycle.
  • It will only show if the setting above is active (allow customers to change their current order).
  • In case shoppers miss this part of the edit cart page, there is a reminder in the checkout, with a link back to the edit cart page.

Allow for bought products to be removed from an order on the edit cart page 1085

  • On the edit cart page, customers can remove items which were previously ordered in the same order cycle, including those in their standing order. Only if the “allow customers to change their current order” setting is activated
  • The deleted item should be removed in the customer’s ‘Account’ page, the cart dropdown, in the Enterprises reports, in the backend order, and the stock should be returned to the ‘on hand’ value of the product in product or inventory (i.e. it should carry through everywhere).
  • Note this feature will only be allowed if the enterprise has allowed customers to make changes to their orders (shop preferences, mentioned above).

#5

Two initial notes to testers:

  1. If creating a new enterprise on Staging1 your confirmation email will link you to staging2 (github:1137). You can get around this by editing your link in a text editor and copying to a browser.
    From the link in your confirmation email, right click and click ‘Copy link location’ or similar.
    Change: http://staging2.openfood.com.au/enterprise/co… etc
    To: http://staging1.openfood.com.au/enterprise/confirmation?co… etc

  2. You need to enable Standing Orders in Shop Preferences before you can start playing with anything. Took me a while to figure this out as a blind tester.


#6

I got stuck at the first step too @lin_d_hop !! Wanted to post about it, thanks for the inputs !!


#7

i can’t see the ‘Add Schedule’ button

am i in the right place here?


Internal Communications Summary
#8

I have now worked it out. maybe because I was using an enterprise that was set up ages ago standing orders were not enabled on this screen (see centre bottom), but now I have enabled them I can see the button


#9

This is brilliant! Thank you so much to all involved for all your work on this.

I have set up a standing order to run over then next few days with daily order cycles. i got my first confirmation email and will keep you posted as the schedule unfolds… All VERY exciting

thanks again and happy solstice to all you lovely people
N


#10

I am getting regular emails confirming the automatic orders…

…but when i go to my basket it is empty


#11

I’ve had a play using Nick’s login as well. Managed ok to setup a schedule and choose the schedule for a new standing order.
On choosing the customer it would be nice if the fields auto-populated but otherwise at least an option to copy the billing address to the shipping address.
I got to the “add products” page and saw this:

I assumed I had to choose a product which was available on demand and so went back to products and changed on items to on demand. I was then able to add this product. So the message works though the text is a bit confusing.

More soon…


Future of Spree : Collaborations with Key Contributors
#12

OK I’ve read some of the instructions now and I can see it’s not intended that products with limited stock are excluded from SOs, so not sure why I’m getting the above message?

Like Nick I can’t see how to edit an existing order. Has this been built?


#13

Hi @Oliver, you’re right that the ability to edit an existing order isn’t available - it’s being refined as we speak and will definitely be available to test before we go live.


#14

Hello everyone, happy 2017.

We’ve been a bit quiet on the Standing Orders front since we asked for feedback, but @oeoeaio has been busy working on getting the tweaks and changes into version 1. We’ve also had our friendly UX consultant Yuko look at it and suggest user flow changes.

Here’s what we’re planning in terms of releasing the feature:

  • Rob gets the final tweaks and user flow changes into version 1, tested, and ready to go.

  • @stveep and Rob get the Stripe payment method released onto the site (standing orders depends on this payment method).

  • We set up the feature as a toggle on/off option in the super admin backend.

  • We have a beta release by the end of March, where Australian hubs (e.g. Rob’s Baw Baw food hub) and any others interested turn on the feature and test it out live on production (@nick @lin_d_hop @Sara I imagine you’d have some hubs keen to be part of the beta trial).

  • We make any further tweaks where needed, and once all is good we then turn the feature on as a standard piece of functionality and introduce it to everyone.

Stay tuned as Rob et. al. get this over the line and released!


#15

Hi all, massive apologies but we have to delay by another week (groan!)

We’re so so close to having Stripe up and running but there’s one more tweak to be done by @stveep / @oeoeaio before we hand it over to @sstead for testing and launch. Our plan is to get Stripe out as Release 1.9 as early next week as possible, and then put Standing Orders out as beta 1.10 soon after that.

Apologies again for the delay, we’re almost there!


#16

Renaming Standing Orders - we need your opinions everybody!!
Here in Australia we are thinking that Standing Orders may not be the best name for the feature… what do you think? It would be good to settle on the best name before we release the feature.

Why not standing order?

  • While it makes sense it’s not a commonly used term, so needs some explanation

  • Talking about individual orders and standing orders get very wordy very quickly, and there’s room for confusion between the two.

  • My vote is ‘subscription’


#17

‘Repeating orders’.

I also like ‘subscription’.


#18

‘subscription’ works well, no need to have to explain it :wink:


#19

we use the term ‘subscription’ to apply to CSA type operations - so there is the potential to get confused here - especially if we add other CSA/box builder features in the future.
I think people here would be very clear on ‘standing order’ - we use that phrase in other situations. But if that doesn’t work for some - I like ‘repeating order’.


closed #20