WooCommerce Plugin Requirements PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

I would like you to build a plugin to extend the WooCommerce Bookings and the

Woocommerce Products Bundle plugins. This document should provide the


information you need. If I have missed anything, please feel free to ask me.

Plugin Requirements:

1. The result must be a stand alone plugin that works with WooCommerce,
WooCommerce Bookings and the Woocommerce Products Bundle. It cannot
modify WooCommerce, WooCommerce Bookings or WordPress code.

2. The plugin must provide the ability to create a bundle of bookable products.

3. Since we also need to be able to create bundles of simple products, the plugin
must be able to work together with the current Woocommerce Products Bundle.
You may choose whether it is easier to create a new plugin that works alongside
the Woocommerce Products Bundle, or simply to extend the Woocommerce
Products Bundle plugin.

4. The plugin must be able to allow an item to be rented separately and as part of a
bundle.

5. The plug in must track inventory as follows:

Inventory = how many of an item the company owns, this number is stored in
database

Rented = how many have already rented individually or as a part of a bundle, this
number is calculated from the existing orders.

Available = Inventory - Rented; this number is used to determine how many of the
product or bundle a customer is able to rent.

6. The plugin must use a calendar and a time picker, similar to the one used in
WooCommerce Bookings, that the customer uses to select the date, start time and
stop time of their event. (figure 1). This date/time combination is used to determine
if an item is available for their event.

FIGURE 1
7. The customer must not be able to enter an end time that occurs before the start
time.

8. Once a date/time combination has been selected this combination must apply to
all of the items added to the cart. WooCommerce Bookings currently forces the
customer to input the date/time for each item in the order, this needs to be
changed.

9. If a customer inputs a date/time and later decides to change it, the change would
apply to all of the items in the cart.

10. The plugin must retain the current options included in the Product Bundles Plugin
(Figures 2 and 3).

FIGURE 2
FIGURE 3

11. The plugin should be able to interface with WooCommerce PDF Invoices & Packing
Slips

12. I would like to be able to add a bundled product to a bundle.



Background and Business Case:

I have an event rental company. We rent amusement equipment to people who are
hosting parties or corporate events. To help clarify what is needed let me provide the
following example:

Suppose that we rent plates, cups, and forks. We have 10 Plates, 12 Forks, 11 Table
Knives and 13 Spoons (figure 4).

FIGURE 4.

We rent each of these individually, but we also rent one of each of them bundled
together as a table setting. In other words, you could rent a Plate, or you could rent a
Spoon; or you could rent a Table Setting which consists of One plate, one Fork, one
Spoon and one Table Knife all bundled together (figure 5).

FIGURE 5
Continuing with this example, lets say that Customer A rents 2 Plates and 2 Table
Settings. The would leave 6 plates, 10 Forks, 9 Table Knives and 11 Spoons available
for the next order (figure 6)

FIGURE 6

Further, if Customer B then rents 3 Forks, 3 Table Knives and 3 Spoons, and 3 Table
Settings it would leave 3 plates, 6 Forks, 5 Table Knives and 7 Spoons available for any
other orders (figure 7).

FIGURE 7

So that is my problem. I need a way to be able to rent the items above in real time
using WooCommerce Bookings and have it manage my inventory so that we do not
overbook one of the items. In order to save time you should know that while attempting
to do this I have already tried the following:

First we were going to set up the products as bookable products in WooCommerce,


then use the Products Bundle plugin to group them together. Unfortunately this cannot
be done because according to WooCommerce you can’t assign a bookable product to
a Product Bundle (or a Chained Product, or a Variable Product or any other type of
product). I haven’t personally tested this, as I do not want to spend any more money
for something that doesn’t work, but their tech support tried it and said it doesn’t work.

Next we tried to use the resources function of Bookings to create resources for the
plate, cup, knife, fork and spoon. The global resource quantity field for the plate was be
set to 10, the global resource quantity field for the cup was set to 15, the global
resource quantity field for the forks was set to 12, the spoons to 13, and the table
knives to 11. Then we were going to create bookable products that use these
resources. For example, a Plate Rental which would use one plate; a cup rental which
would use one cup; and so on. Finally, we were going to create a Table Setting that
would use one of each. The problem with this option is that while you can indicate in
WooCommerce Bookings how many you have of each resource, there is no way to
specify how many of each resource the product uses. So if we create a bookable
product called Plate and assign the plate resource, it will assign all 10 plates to the
product not just one.

Plugin Functionality
I provided this example is because I am not familiar with the architecture of
WooCommerce bookings, therefore I have no idea what would be the best way to solve
this problem. It seems to me that the simplest way to accomplish what I need is the
following:

Develop a way to allow WooCommerce Booking to utilize the Products Bundle plugin.
This would allow me to create bookable products for each item and combine them
when needed to create a product bundle. Bookings would then manage the inventory
for the individual products, and when there is a bundle examine each item of the
bundle for availability. I believe that this is the best way because it continues to use the
basic WooCommerce architecture. Also, I would like to use the WooCommerce PDF
Invoices & Packing Slips plugin to print pick lists for the day’s orders and this method
should make that easier.

An alternative would be to develop a method to create resources (functionality exists),


then indicate how many of each resource a product uses (functionality missing), then
allocate these resources to the orders as they are booked to ensure that we do not rent
more items than we have available (functionality missing). Since the WooCommerce
PDF Invoices & Packing Slips plugin would no longer work, you would need to also
provide a way to print pick lists. If you choose this route, please let me know so that
we can discuss the format, function, and contents of the pick list.

Again, these solutions are based on my very limited knowledge of WooCommerce


Bookings. I may be missing an easier or better way, which I am willing to discuss.

Mandatory Criteria:

The result must be either a stand alone plugin that works with WooCommerce
Bookings or a modification of WooCommerce Bookings. It cannot modify
WooCommerce or WordPress code as there are other plugins I want to be able to use
without breaking. Further, when updates to either WooCommerce or WordPress come,
I want to be able to install them without issue.

The plugin must be able to allow items to be rented separately or bundled together
and it must allocate inventory. In the business case above, if I rent out 2 plates and 2
table settings, I should have 6 plates still available to rent in one form or another.

There should be a calendar and a time picker, similar to the one used in
WooCommerce Bookings, that the customer uses to select the date, start time and
stop time of their event. This date/time combination is used to determine if an item is
available for their event (figure 8).

FIGURE 8
(If changes are made to the date/time picker from Woocommerce the following must be
included: Like the current WooCommerce Bookings plugin, the calendar must indicate
if an item is available or not on a certain day (perhaps it has been rented out or the day
is closed). The time picker should use the date format hh:mm AM/PM. The customer
should not be able to enter an end time that occurs before the start time, this can be
controlled by changing the selection in the drop down or by displaying an error
message and not accepting the date/time until corrected.)

Once a date/time combination has been selected this combination must apply to all of
the items added to the cart. WooCommerce Bookings currently forces the customer to
input the date/time for each item in the order, this needs to be changed. If a customer
wants to change the date/time, the change would apply to all of the items in the cart.

For grouped products, such as our table setting example, it is essential that the
customer is able to charge the quantities of table settings they require, but that they
are not able to change the quantities of the items that make up the table setting. Ideally
I would like to be able to add a bundled product to a bundle.

We also sell concession supplies and have downloadable products, so it is important


that we retain the ability to create bundles from the other product types as well as the
changes to the bookable products.

When it is finished the plugin should be able to interface with WooCommerce PDF
Invoices & Packing Slips

You might also like