Click & Collect
Initiating the flow
Click-and-collect orders are always triggered by the customer. They decide they are willing to pick up the goods in a store. Most likely, they select the particular store as well. Because we know all of this information, initiating a click and collect flow is pretty straightforward.
The flow can be initiated from one of two places:
- A webshop
- Another store
Web shop initiation
Web shops push orders into EVA using
PushSalesOrder. In order to mark orders as click and collect, we need to set a PickupOrganizationUnit. In PushSalesOrder, we can use PickupOrganizationUnitBackendID. Example order:
"Street": "Grove street",
In addition to the pickup organization, we also need a customer with a billing address. Shipping address not needed, obviously.
The request returns the new order's OrderID.
The 'Reserve in store' tile can be enabled by setting
Orders:Reservations:ClickAndCollectEnabled to 'true'.
After a click and collect order is created, the designated store will receive the order in the form of a reservation task under click and collect tasks. Clicking the task opens an overview of all items that need to be picked for this order. The items can be picked by scanning them or by manually inputting their barcode.
When all items have been picked, we can complete the reservation task. When completing the task, we can choose whether we want to print a reservation receipt in the form of the OrderReservationReceipt Stencil.
When the task has been completed, EVA should send an e-mail to the customer stating that they can pick up their order. To enable this e-mail, we need to set Mail:StockReservationCreated:Enabled to true. Additionally, we need to create a StockReservation stencil.
Clean up reservations
At some point, some people are going to forget to pick up their reserved orders. We don't want these reserved orders to hang around indefinitely, so we introduced reservation cleanup tasks. We can set a maximum amount of days for reserved orders to stay reserved, after which we will trigger a reservation cleanup task.
To set this maximum amount of days, we use MaxReservationTime, by default, this is set to 7 days.
To remind customers to pick up their reserved order, we can set the PickupReminder:ReminderDays setting. If we set this to 4,2,1, EVA will send out a reminder e-mail when there's four days left for the customer to pick up their order. It will then remind them again when there's only two days left, and again when there's only one day left. The reminder e-mail is called PickupReminder and can be configured in Stencil.
To support these reminders, we need to set up the EVA.UserTasks.Tasks.PickupReminders task under Management → Tasks in the Admin. Settings this to an interval of 24 hours, will check if any reservation order have an amount of days left that corresponds with the PickupReminder:ReminderDays setting and trigger the e-mails.
When completing a cleanup task, you can set EVA to automagically refund the payment on the order by setting
RefundAfterReservationOrderLineCancelled to 'true'.
Required reservation time
If you want to configure a time, a store would need to prepare a C&C order, you can use the setting 'Orders:Reservation:RequiredReservationTime' which will specify the time the store needs to prepare a C&C order before it is ready for pickup.
The calculation will also consider opening hours. So should this setting push the C&C order passed the end of the day, it would move to the next day.