The extension is built for and will only work in conjunction with Magento 2. Specifically, the extension has been tested for compatibility with the following versions of Magento:
Upon purchasing a license, the extension will be installed for free by one of our expert developers.
To upgrade the extension to the latest version, navigate to your Magento root directory and run the following commands:
php -d memory_limit=-1 composer.phar require toddlininger/classmanager php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento setup:static-content:deploy php bin/magento cache:clean
You can disable the extension using native Magento commands. To disable the extension:
php -d memory_limit=-1 composer.phar require toddlininger/classmanager php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento setup:static-content:deploy php bin/magento cache:clean
Similarly, to re-enable it:
php bin/magento module:enable --clear-static-content ToddLininger_ClassManager
You can uninstall the extension using native Magento commands.
We recommend that this only be done by an experienced Magento 2 developer.
To uninstall the extension (and create backups in case anything goes wrong):
php bin/magento module:uninstall ToddLininger_ClassManager --backup-code --backup-media --backup-db
If you have any extensions that are dependent on the extension you will have to uninstall those at the same time.
To ensure the stability and reliability of the extension, we have built unit tests for core functions. Running the unit tests after upgrading the extension (or Magento or any other extension) will verify the internal structure of the extension.
The extension unit tests do not support testing of Magento core functionality such as placing orders, nor do they test compatibility with other extensions or themes. These will all need to be tested manually.
To run the unit tests, navigate to your Magento root directory and run the following command:
php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/toddlininger/classmanager/Test/Unit/
The following extensions can be used to enhance the extension’s functionality.
If you will be having employees register customers for classes you may want to provide a special payment option for them to use when payment for the class will not take place on the website (for example on an in-store POS). The following module will allow them to checkout without providing payment details. It is typically installed alongside the extension, but can be excluded if desired.
If you will be offering your employees an in-store payment method (see above), you’ll need to restrict access to it so that regular customers are unable to use it. Both of these are good options:
These extensions allow you to attach files to products, which, in the context of the extension, is most commonly used to provide downloadable supply lists.
We have plans to create a companion extension that will integrate with the Mageworx extension to attach the files to the extension’s emails.
If you have one or more custom options that are used across all of your classes (like a comments field or class policy consent), you may want to consider installing an extension to help manage those. We recommend:
Below is the full text of the Event Management license:
Software License Agreement (SLA) for the Event Management Extension for Magento 2 This Software License Agreement ("SLA") is a legal agreement between you and Todd Lininger Design, LLC (“Vendor”). By installing and using the Event Management Extension for Magento 2 (“Software”), you are confirming your acceptance of the Software and agreeing to become bound by the terms of this SLA. If you are entering into this SLA on behalf of a company or other legal entity, you represent that you have the authority to bind such entity and its affiliates to these terms and conditions. If you do not have such authority or if you do not agree with the terms and conditions of this SLA, do not install or use the Software, and you must not accept this SLA. This SLA shall apply only to the Software supplied by Todd Lininger Design, LLC herewith regardless of whether other software is referred to or described herein. The terms also apply to any Vendor updates, supplements, Internet-based services, and support services for the Software, unless other terms accompany those items on delivery. If so, those terms apply. LICENSE GRANT Todd Lininger Design, LLC hereby grants you a personal, non-transferable, non-exclusive license to use the Software on your devices in accordance with the terms of this SLA. You are permitted to install and run the Software on one or more computer servers, hosting a single website domain. While use is only granted for a single production domain, additional domains can be used solely for testing and staging purposes. You are responsible for ensuring your devices meet the minimum requirements of the Software. The license for this Software is not perpetual; it is granted only for the time period (the “Subscription Term”) for which you have paid. If you cancel or fail to pay for your Subscription Term, your Subscription Term will be considered “expired,” the license will be immediately suspended and you will be required to uninstall the Software from all devices within 15 days of license suspension, unless other terms are agreed upon. If so, those terms apply. In order for the Software to be functional you may be required to install a License Key (“Key”) in order to validate the Subscription Term. The Key can be deactivated by the Vendor to remotely disable the Software on your computer in the event that you have not paid for your Subscription Term. You are not permitted to: - Edit, alter, modify, adapt, translate or otherwise change the whole or any part of the Software nor permit the whole or any part of the Software to be combined with or become incorporated in any other software, nor decompile, disassemble or reverse engineer the Software or attempt to do any such things - Reproduce, copy, distribute, resell or otherwise use the Software for any commercial purpose - Allow any third party to use the Software on behalf of or for the benefit of any third party - Use the Software in any way which breaches any applicable local, national or international law - Use the Software for any purpose that Todd Lininger Design, LLC considers is a breach of this SLA INTELLECTUAL PROPERTY AND OWNERSHIP Todd Lininger Design, LLC shall at all times retain ownership of the Software as originally downloaded by you and all subsequent downloads of the Software by you. The Software (and the copyright, and other intellectual property rights of whatever nature in the Software, including any modifications made thereto) are and shall remain the property of Todd Lininger Design, LLC. Todd Lininger Design, LLC reserves the right to grant licenses to use the Software to third parties. SOFTWARE REQUIREMENTS This Software is an extension built for Magento Open Source and therefore requires Magento Open Source (version 2.2 or higher) to function. The Software will not function and is not supported without Magento. While it may also run tyy on other versions of Magento (e.g. Magento Commerce), functionality and use on other versions is not guaranteed and not supported. The Magento Open Source software can be obtained from https://magento.com/tech-resources/download. CUSTOMIZATION Due to the modular and hierarchical nature of Magento, it is possible for the Software to be customized and extended without modifying the Software directly. This type of external customization and extension is permitted so long as no modifications are made to the Software. All other customizations and modifications can and will only be performed by Todd Lininger Design, LLC and/or developers contracted by Todd Lininger Design, LLC. TERMINATION This SLA is effective from the date you first use the Software and shall continue until terminated. You may terminate it at any time upon written notice to Todd Lininger Design, LLC. It will also terminate immediately if you fail to comply with any term of this SLA. Upon such termination, the licenses granted by this SLA will immediately terminate and you agree to stop all access and use of the Software. The provisions that by their nature continue and survive will survive any termination of this SLA. GOVERNING LAW This SLA, and any dispute arising out of or in connection with this SLA, shall be governed by and construed in accordance with the laws of Washington state and the United States of America. Modified Thursday, June 20, 2019, 12:22 PM PDT
The extension’s license may be purchased by getting in touch with us using the contact form below. Upon purchasing the license a unique key will be provided to you. Your license key is valid for the period of time for which you’ve paid. When that time has expired you will be required to renew your license in order to continue using the extension.
Once received, your license key must be installed in the extension’s config settings. After installation of a valid key you will see the status of the license:
The license key is configured for one production domain and up to two additional development or staging domains, as needed. To add or change production, development or staging domains on your license, contact us.
No, your session and roster data is safe and will reappear be there once you’ve renewed your license.
Your customers will still be able to register for classes. There will be no visible difference on the front end.
These services can be provided at an additional cost.
The extension adds a new product type to Magento called "Class Reservation". You can create a new class product by either pressing the arrow next to the Add Product button on the Products grid and selecting "Class Reservation", or by pressing "Add New Class" at the top of the Sessions grid.
In Magento 2 it no longer matters which Attribute Set or Design you choose for class products. The extension will work regardless of those settings. Sessions are also no longer managed through the Custom(izable) Options interface. Class products now have dedicated session management under the Class Sessions tab.
The Class Sessions tab is where you’ll create and manage all of your sessions for a class. See Class sessions for more details.
The Class Details tab is used for product-specific settings and contains only two options:
Yes|No
Set this option to "Yes" to mark this class as a special event. This allows for filtering and highlights these events in certain areas of the website.(text field)
This field can be used to change the default text that’s shown when no sessions are available. The default is Registration for this class is no longer available
, (however the default can be changed as well in CM settings).You can add custom options to class registrations under the Customizable Options tab. Whatever options you enter here will show on the registration form. Some common options include:
Prerequisites
File Attachments and Product Downloads extension must be installed.
Using the File Attachments and Product Downloads extension you can assign files, such as PDF supply lists, to the product. The download links will show up in a tab on the product page and can also be attached to order emails. They are not included in the extension’s emails yet, but we have plans to add that.
The extension adds two new columns to the Magento Products grid:
You can filter class products by instructor by entering an instructor’s name (or part of it) into the "Instructors" filter field. You can also sort by instructor. This can help you find certain classes right from the Products grid.
You can filter and sort your class products by whether they are marked as a special event or not.
Added in 1.1.4
Sessions are at the heart of the extension. A session is a combination of a location, instructor and one or more times, creating a unique moment in time and space! Some classes only offer a single session; others may offer many session options in different locations and at different times. A single session can also consist of a single date and time, or span multiple dates and times.
Prerequisites
Locations must be added in advance.
Instructors must be added in advance.
New sessions are added under the “Class Sessions” tab on the product editing page (they can also be imported). Open the tab and press the Add New Session button to create a new session. Once you've created some sessions, you can grab the handle on the left and drag and drop to reorder them. You can also click the trash can icon on the right to delete them.
Under no circumstances should sessions be recycled. If a session date, time or location changes, that’s fine, but reusing one session for a completely different session will only cause headaches.
No changes will be saved until the product “Save” button is pressed.
When creating or editing a session, this is what an expanded session panel looks like:
Session status can be one of four states:
Active
— session is enabled for registration or waitlisting (dependent upon capacity)Inactive
— session is disabled for registration (will not be displayed to customers)Canceled
— set session status to “Canceled” to close registration and notify registrants by email (see Cancelations for more details)Completed
— session date/time has passed and session is considered complete (set automatically)The default state is Active
.
A location for the session must be selected from the dropdown list. (The location must be added before it can be selected.) See Locations.
An instructor for the session must be selected from the dropdown list. (The instructor must be added before it can be selected.) See Instructors.
You can associate as many date/time combinations as you want with each session. It is common for sessions to only have one date and time. Or you may have a session that spans several days, weeks or months. When the session spans more than one date, make sure to add a new row for each date. Unless you plan to keep partying through the night, then by all means, go for it!
This is the number of spots that will be available for the session. Once this number is reached, registration will be closed, but customers will be able to add their names to a wait list (if enabled) in case any spots open up.
The base price is set as the product price, but if one session will cost more (or less) than the rest, an adjustment can be entered here. This can be any positive or negative decimal-based integer.
Manual sort order can be set here, but usually it’s a good idea to just let the extension’s smart auto-sorting do the heavy lifting.
You can enter text that may be helpful to the customer and it will be diplayed in parentheses on the front end. For example, you may want to list the day(s) of the week that the class is on. Just don’t get too wordy, or it will clutter the registration options.
As of version 1.0.13, changes to a session’s location, date or time will trigger an automatic email sent to all current registrants notifying them of the change. If a customer has already added the session to their calendar using the “Add to Calendar” link, they will need to remove the old calendar entry and download and import the updated iCal file. A brief notice regarding this as well as a link to the updated iCal file will be included in the session change email.
To cancel a class session, change the session’s Status
to Canceled
(see Editing Sessions). When a session is canceled, an email is sent to all current registrants notifying them of the cancelation.
The extension does not initiate refunds. Refunds, if applicable, will need to be manually processed.
Prerequisites
Class Products must exist before importing.
Locations must exist before importing.
Instructors must exist before importing.
Sessions can be imported via CSV file. The CSV file contains the following columns and looks something like this:
CM20-001 | Active | The Colosseum | Horatio Albatross | 1/16/2023 | 11 am | 2:30 pm | 100 | Lunch will be provided |
Download a Sample CSV
After you’ve prepared your CSV, navigate to Class Manager > Configuration > Import Sessions
, select your file, and click the “Import” button to start the import process. If any errors occur, no sessions will be imported; you will be informed of what went wrong so you can fix it and try again.
sku
, status
, location
, instructor
, start_date
, start_time
, end_time
and qty
.end_date
field is not required since it defaults to the same as start_date
.status
, location
, instructor
and qty
in which case they can optionally be left blank.price_adjustment
, sort_order
and notes
fields are optional and will inherit the same defaults they would when adding/editing sessions manually.sku
column must be empty for these subsequent rows to be added to the session. If a SKU is provided the row will be treated as a separate session.The Sessions grid can be accessed from the main the extension’s menu and shows a list of all sessions across all products. Here you can search and sort them, see which ones are full, and even make changes to them directly from the grid.
Once you have the columns the way you want them, you can save your column views using the “Views” menu so you can easily switch between views.
You can filter the sessions by pressing the “Filters” button, filling in/selecting the filters you want, and pressing the “Apply Filters” button. Clear all filters by pressing the “Clear all” link.
The coolest part of the grid is being able to edit certain session details right from the grid (requires permission) without having to open the product for editing! When you click on a row, it’s selected and some of the fields become editable.
You can change the Status, number of Seats, Notes, Sort Order and Price Adjustment. This is especially handy when you have a class that has reached capacity and you want to add another seat or two to maximize your revenue. You can adjust the number of seats in a couple of seconds and the Capacity percentage updates accordingly.
The extension changes the product page in a way that the new Class Reservation
product type now shows the list of associated Sessions and the Add me to cart
button is replaced with the Register
button. The list of sessions contains the location and time of the event, shows the status of the session and tells whether it is possible to register for it.
When the available session has been selected, clicking on the Register
button show the pop-up window with input fields for the name of the buyer, their email and phone number. If the customer is a registered one and does not belong to the service group of customers, these fields are filled in automatically.
If there are Related Products
specified for the product in question, the form will also contain a checkbox with the possibility to add a specified related product to the cart along with the registration for the event.
After the form was filled in and the Add To Cart
button was clicked, the event product will be added to the cart. Then, a regular Magento checkout procedure is followed.
When the order is created, the registration with the Reserved
status is created for this customer. When the order is paid for, the status of the registration is changed to Active
.
If there are no available seats for the event, the product page will have an Add me to the wait list
link, available only for registered users. After the form is filled and sent the user doesn’t have to proceed to checkout — the registration with the Wait List
status has already been created for that user.
All registrations are listed in the Rosters section of the extension in the admin panel — Class Manager / Rosters
.
When the session row is clicked, the admin is taken to the page with the grid of registrations for this session. The name of the event, its location, date and time, instructor, status (depending on occupancy — N seats left
, 1 seat left
, full
, overbooked
) are displayed on top of the grid.
The registration grid displays all registrations of customers for this event — statuses, number of booked seats, names and contacts of the buyers, comments from customers and administrator, reservation date, link to the order (if it exists), payment amount, link to the customer’s account. When clicking on the row of this grid, inline editing of the record becomes available: administrator can inter alia change the registration status — say, they can cancel the registration by specifying the Cancelled
status. Export and Print buttons that allow admins to export registrations in .csv or print them out are available on top of the registration grid.
Besides, the registration status is used to send service emails (see next paragraph) and calculate event seats available for purchase.
The extension has the following automated emails:
All types of automated emails can be turned on or off. All types can have their own email template, including that created based on the default templates for each type that come pre-built with the extension. The emails of the last two types are sent through the email queue of the extension. Other emails are sent directly when the initiating event takes place.
The account dashboard of the register user has the My Classes link, following which takes you to the page with customer’s registrations. The page is split into 3 sections: Upcoming Classes
— confirmed customer registrations to events that have not yet passed; Wait Listed Classes
— events that had not available seats whose wait list the customer was added to; Recent Classes
— registrations to events that already passed. If the section does not have records — a respective notification is shown. If there are records, then the respective registration data is shown: name and link to the event product, location, data and time, instructor, number of booked seats, link to the order (if it exists), and registration status.
Employee registrations (often called “in-store registrations”) are a central feature to businesses that also operate retail locations. A customer may come into the store wanting to sign up and pay for a class at the same time — and in the same transaction — that they make a physical purchase, and this system allows store employees to do so on their behalf.
Prerequisites
In-Store Payment module must be installed and enabled.
Module for restricting payment methods by customer group must be installed.
One or more customer groups must be created to which all store accounts will be assigned.
Customer group must be selected for in-store registrations in config settings and also configured for access to the In-Store Payment method.
Customer accounts (either one per store, one per register, or one per employee) must be created for employees and assigned to the selected customer group(s).
How to register a customer for a class using your in-store account:
Of course, the registration will be added to the class roster in Magento. In addition — if the customer’s email address was entered correctly — glorious, almost magical, things will happen!
If a session has reached capacity, customers can be added to a wait list for the class so that they may be contacted once more spots open up. If a class session is full a link to get on the wait list will be shown for the session.
For a customer to add themselves, they simply press the “Get on the wait list” link. If they are not logged in, they will be asked to log in (or create an account if they don't have one). They will then be able to select the quantity of wait list spots as well as add any comments.
The customer’s wait list entries will show up on their My Classes page.
Customers can manage their wait list entries by clicking on the class name on the My Classes page (or otherwise navigating to the class page) and clicking the “Get on the wait list” link again. When the form appears they will be able to either update their wait list info (adjust quantity, add notes...) or they will also have the option to delete their wait list entry using the “Delete” button.
The process for an employee to add a customer to a wait list is almost identical. The difference is that you will enter the customer’s name and contact info into the Notes field.
To add more than one customer, adjust the quantity and add their name and contact info to the Notes field, while also retaining the info for existing customer(s), and press the “Update wait list spot” button.
Classes waitlisted using a store employee’s account will not show up on the customer’s My Classes page, however they will show up on the store’s My Classes page.
Note: we recognize that this is not an ideal method for in-store wait list signups and are working to implement a better system. Your feedback is welcome.
The Rosters grid can be accessed from the main menu of the extension and, similar to the Sessions grid, shows a list of all sessions. You can find the roster you’re looking for by searching and sorting them, then press “View” (or just click in a row) to view individual rosters.
You can sort columns, drag-and-drop the column headers to reorganize columns, and you can show/hide the columns in the grid using the “Columns” manager.
Once you have the columns the way you want them, you can save your column views using the “Views” menu so you can easily switch between views.
You can filter the sessions by pressing the “Filters” button, filling in/selecting the filters you want, and pressing the “Apply Filters” button. Clear all filters by pressing the “Clear all” link.
A roster is a view of who is registered for a class session. Rosters can be accessed in the following ways:
When you view a roster, you'll see the Class name, location, date & time, instructor and number of seats at the top. There are also a couple of helpful buttons:
Below the header is the Registrations grid which lists all participants for a session.
Note: the “Actions” dropdown menu may be unavailable depending on your permissions.
Please be aware that Magento 2 paginates grids, so some entries may be “hidden” on other pages.
In order to view all entries at once you can set the number per page to the maximum: 999. This usually “sticks” from roster to roster, but it doesn't hurt to check and make sure that you’re viewing all entries and not just the first 20 (which is the default).
You can sort columns, drag-and-drop the column headers to reorganize columns, and you can show/hide the columns in the grid using the “Columns” manager.
Once you have the columns the way you want them, you can save your column views using the “Views” menu so you can easily switch between views. For example, it may be helpful to save a “Print” view for printing rosters.
You can filter the grid by pressing the “Filters” button, filling in/selecting the filters you want, and pressing the “Apply Filters” button. Clear all filters by pressing the “Clear all” link.
The Status filter on this grid allows you to view multiple statuses at once. So if you want to show both Active
and Wait List
entries, you can do that!
Filters are only available for active columns. If a filter is missing, toggle the column visibility and try again.
To edit a roster entry, click on a row and it will become editable. Make your changes and then press the “Save” button.
Restrictions
There are two levels of editing permissions: Limited and Full. Certain fields require Full permissions to edit. Permission level has been notated next to each field.
Status Full
The registration status can be updated. Possible options are:
Active
— The customer has registered for the class and plans to attendReserved
— The customer has reserved their spot, but has not yet paid for itCanceled
— The customer will no longer be attendingWait List
— Designates a wait list entryNote: RegistrationStatus
cannot be changed fromWait List
toActive
unless there is an order associated with the entry.
Status changes are recorded as a comment on the associated order:
Quantity Limited
|Full
The quantity of a registration can be changed as long as there are seats available in the class. If the class is full, unless you edit the session to increase the number of available seats (or cancel or reduce the quantity of another registration), you will only be able to adjust the quantity down.
Note: If theQuantity
is changed to0
, theStatus
of the registration is also changed toCanceled
, however changing the Quantity from0
to1
does not automatically return the registration status toActive
. Status must be updated manually.
Status changes are recorded as a comment on the associated order:
Name Full
Customer name can be updated in case of typo.
E-mail Full
Customer email can be updated in case of typo.
Phone Full
Customer phone number can be updated in case of typo.
Customer info Full
Customer comments can be updated.
Internal notes Limited
|Full
Internal notes can be added.
Reserved date Full
(Even though it looks like this can be changed, it cannot. We will be disabling editing of the date field in a future release.)
The extension brings more flexibility to roster printing. Now you can filter and sort entries as well as hide columns you don't need.
Before printing, double-check your pagination to make sure all entries are visible. Only the visible entries will be printed.
This is where Views are really handy. You can save a “Print” view which just shows the columns you want on your printouts and then easily switch back and forth between a more detailed view and your slimmed-down “Print” view. Once you've created your “Print” view and have selected it using the Views menu, press the “Print” button. A popup window opens*, displaying only the roster isolated from other elements that shouldn't be printed. You can then press Ctrl + P
on a PC or ⌘ + P
on a Mac to print the window.
*If you don't see the window open, make sure your browser isn't blocking it.
Rosters can be exported to a CSV file. You can apply any filters you want to the registrations table and when you’re ready to export, press the “Export” menu button and then the “Export” button which appears in the dropdown.
You will then be prompted to save the file to your computer where you can open it in the application of your choice.
Note that column sorting and hiding does not apply to exports. All columns are exported whether they are visible or not.
You can see if anyone is wait listed for a session by looking in the “Wait List Qty” column on the Rosters grid. If you would like to view all classes that have a wait list you can filter the Rosters grid by sessions with a Wait List Qty of 1 to 999.
When viewing a roster, Wait List entries will be highlighted in pink and you'll usually find them towards the bottom. Although, depending on your sorting method, they may show up at the top or even in the middle of other roster entries.)
The wait list entries will show the customer’s contact information as well as how many spots they would like to register for, the date on which they made their request, and any comments they may have provided. (If the Include session options in wait list form
setting is enabled, it will also show the answers they provided to the extra session questions.)
Because every registration requires an order to be associated with it, wait list entries cannot be directly converted to registrations. You will need to contact the customer letting them know that one or more spots have become available and they can now register for the class through the website, or you can register them on their behalf using the employee registration method. Once they have registered for the class, either you or the customer will need to manually delete their wait list entry; it is not done automatically. On the back end, all of the same fields that can be edited for registrations can be edited for wait list entries. Please see the Editing Registrations documentation for instructions on editing wait list entries.
We are searching for better ways of handling this. Current ideas include an automated email which will notify wait listed customers when spots open up. Another idea we are considering is to utilize a backorder system where orders could still be placed even when there is no availability for a session and those orders would be assigned the “Wait List” status. You would then have to cancel and refund the order if they are unable to attend. Your feedback is welcome.
Customers can also manage their own wait list entries from the My Classes page in their account.
Location is the place where the event is going to take place. This is a mandatory field when creating a Session. This is why all the possible locations of the event should first be added to the location roster that can be found in the extension settings at Class Manager / Configuration / Locations
.
The location grid allows you to filter locations by name, code, phone number, and email, and sort by any column in the grid. The records are paginated with the ability to specify the amount of records to be displayed per page. Bulk editing and deletion of records is available. In order to create a new location you should click the Add New Location button. In order to edit an existing location you need to select the Edit option of the Action column of the respective grid row.
The location page has the following data:
All available locations are listed in the filter of the calendar. The location specified when creating the Session is listed in the Session selection section on the event product page. The location is available on most admin UI elements related to sessions.
Instructor is the person who runs the event being organized. This is a mandatory field when creating a Session, therefore, all Instructors must first be entered in the Instructors grid under Class Manager / Configuration / Instructors
.
In the instructor grid, filters are available by name, email address and instructor code; you can sort by all columns of the grid. Records are displayed page by page with the ability to specify the number of records on each page. Bulk editing and bulk deletion of records is available. To create a new instructor, click the Add New Instructor
button, to edit an existing one, click Edit
in the Action
column in the respective grid row.
The instructor’s detail page contains the following data:
An instructor is selected for a session (event) when it is created.
On the product detail page, all instructors conducting sessions for this product are displayed in the Instructors tab (if the Class Product / Show Instructors Tab
setting is enabled).
After registering for a class, the instructor conducting it is mentioned in the default newsletter templates. The Instructor property is available on almost all session-related UI elements of the admin panel.
The customer classes report is available at Class Manager / Reports / Customer classes
. The report is a structured selection of data on registrations by customers shown as a grid (the filters and sort buttons are available) that allows you to export the results in a .csv format or print it out. The important fields of the grid are: id and name of the customer, their email and phone number, the name of the event, its location and time, order creation data, order link, total amount, order status, and whether it was a direct order (created by the customer themselves), or a service order (created by a service customer).
This report is available at Class Manager / Reports / Purchase location
. This report is a structured selection of data on registrations by service registration accounts (customers, that belong to the service group, that can create registrations for other people), shown as a grid (with filters and sort buttons) with an ability to export the results in a .csv format and print it out. The important fields of the grid: name of the service account and Customer if it was a direct registration, the name of the event, its location and time, order link, order creation date, and total amount.
action
and primary
added to Add to Calendar links, which will style them as buttons in the Luma theme (and other themes which support those class names)