=== Stachethemes Seat Planner Lite ===
Tags: woocommerce, event tickets, assigned seating, table booking, seat booking
Requires: 6.7
Tested up to: 7.0
Requires PHP: 8.2
Stable tag: 1.8.7
License: GPLv2 or later
WC requires at least: 9.5
WC tested up to: 10.9

Let customers select and reserve exact seats or tables in WooCommerce, prevent double bookings during checkout, and validate entry with QR tickets.

== Description ==
Stachethemes Seat Planner helps you sell reserved seats with WooCommerce. Create an interactive seating map, assign prices and availability, and let customers choose their seats before checkout.

Use it for theaters, cinemas, concerts, conferences, workshops, tours, classes, or any product where customers need to book specific seats or spaces.

== Features ==

Seat Planner Lite is the core seat booking system for WooCommerce—maps, holds, checkout, and check-in in one plugin. Upgrade to **Stachethemes Seat Planner** (Pro) for multi-date events, discounts, custom fields, PDF tickets, unlimited layout objects, and more - see **Premium Features**.

= Core booking & seat management =

- **Table & seat support** - Build both table layouts and seating charts in the same system.
- **Drag-and-drop seat planner** - Design your venue with seats, tables, screens, labels, and static objects.
- **Up to 250 layout objects** - Build plans with seats, labels, screens, and other objects (Pro removes this cap).
- **Interactive seat selection** - Customers pick seats in real time on a map with zoom, pan, and seat details.
- **Best Available** - Auto-select the best contiguous seats; filter by price when seats have different rates.
- **CSV import & export** - Import and export seat layouts from the seat planner editor.
- **Cart hold timer** - Temporary seat holds while customers checkout to help prevent double bookings.
- **Handicap / accessible seats** - Mark accessible seats so they stand out on the map.
- **Auto-fill and pattern tools** - Place rows or sections quickly when building your layout.
- **Per-seat pricing** - Set prices by location, section, or individual seat.
- **On-site-only seats** - Restrict selected seats to on-site purchase via seat status.

= Checkout & customer experience =

- **Standard WooCommerce cart and checkout** - No separate ticketing checkout to learn.
- **Configurable redirect after adding seats** - Send customers to the cart, checkout, or a custom URL; optional cart timer on the storefront.
- **Unique QR code per seat** - Generated for each purchased seat for validation at the door.
- **Auto-complete paid auditorium orders** - Configurable, including mixed-cart behavior.
- **Front-end dark mode and accent color** - Brand the seat-selection experience.
- **WooCommerce coupon seat limits** - Require a minimum or maximum number of auditorium seats in the cart before a coupon applies.

= Manager & day-of operations =

- **Run the venue from one screen** - See what is free, block seats for holds or VIPs, and fix availability without waiting on a customer order.
- **Sell at the door or comp a seat** - Create a single-seat order from the floor when someone pays in person or gets a complimentary ticket.
- **Fix mistakes without re-checkout** - Move a customer to another seat on an existing order when they picked the wrong one.
- **Know who is inside** - Filter by scanned tickets and reset check-in when staff scans the wrong code.
- **Detect and fix double bookings and stale inventory** - Automatically find conflicts, seats stuck as taken, and unpaid orders still blocking sales.

= Check-in & ticket validation =

- **Built-in web scanner** - Validate tickets with a camera QR scanner in your WordPress dashboard.
- **Scan records** - Each scan updates ticket status; invalid or already-scanned tickets are shown clearly.

= Integrations & layout tools =

- **Shortcodes** - Embed a "Select seat" button or live seat counts on any page.
- **Elementor widgets** - Select Seat Button and Seat Count widgets.
- **Gutenberg blocks** - Select Seat Button and Seat Count blocks.

= Statistics & analytics =

- **See how the event is selling** - Seats sold, occupancy, revenue, and order counts at a glance; trends over time; breakdown by order or date; a simple read on how fast you are filling the house.

== Premium Features ==

Upgrade to **[Stachethemes Seat Planner](https://woocommerce.com/products/stachethemes-seat-planner/)** on WooCommerce for the full feature set, including everything in Lite plus:

= Core booking & seat management =

- **Unlimited layout objects** - No 250-object cap in the seat planner editor.
- **Multiple event dates on one product** - One seat map, many performances.
- **Optional sales rules** - Stop sales before the event; prevent isolated empty seats; min/max seats per purchase.

= Pricing, discounts & upsells =

- **Seat-level discounts** - Percentage or fixed amount on selected seats or groups; optional role restrictions.
- **Custom fields per seat** - Free or paid add-ons, upgrades, meal choices, and more (with conditional display).

= Checkout & customer experience =

- **PDF tickets** - Attach ticket details and QR codes to order emails; optional My Account downloads.

= Manager & day-of operations =

- **Bulk create orders** - Create orders for multiple seats at once from Manager.
- **Full booking edits** - Change seat, date, discounts, and custom fields on existing orders.
- **Move bookings to another date** - For multi-date products (bulk action supported).

= Check-in & ticket validation =

- **Free Android app** - Door check-in; pairs with your site via integration settings.

= Integrations & layout tools =

- **Export bookings** - Export bookings from the product or Manager (filter by date, choose columns).
- **Script embed** - Run seat selection on external sites with an allowed-origins whitelist.

= Statistics, reports & analytics =

- **CSV export** - Statistics tables and booking exports.
- **Automated email reports** - Scheduled occupancy and sales summaries, with CSV and optional color-coded seat-map snapshot.

[Check it out on WooCommerce](https://woocommerce.com/products/stachethemes-seat-planner/)

== Demo ==
[Live Demo](https://stachethemes.com/seat-planner/demo/)

== Installation ==

= Installation from within WordPress =

1. Visit **Plugins > Add New**.
2. Click **Upload Plugin** and upload the plugin archive.
3. Install and activate the **Stachethemes Seat Planner Lite** plugin.

= Manual Installation =

1. Upload the entire `stachethemes-seat-planner-lite` folder to the `/wp-content/plugins/` directory.
2. Visit **Plugins**.
3. Activate the **Stachethemes Seat Planner Lite** plugin.

== Source Repository ==
[GitHub Repository](https://github.com/zbozhilov/stachethemes-seat-planner-lite)

== Credits ==
- [Material UI Icons](https://mui.com/material-ui/material-icons/)
- [React Hot Toast](https://react-hot-toast.com/)
- [React Zoom Pan Pinch](https://www.npmjs.com/package/react-zoom-pan-pinch)

== Changelog ==

== 1.8.7 ==
- Added: Best Available - automatically select the best contiguous seats for customers; filter by price when seats have different rates. Enable it in Dashboard -> Settings -> General.
- Added: CSV import and export for seat plans in the seat planner editor.
- Update: Seat planner layout object limit raised from 100 to 250 (seats, labels, screens, and other objects).
- Update: UI improvements across the Overview dashboard and admin select controls.
- Fixed: Booking and seat lookups when one order includes seats from more than one event.
- Fixed: Cart no longer removes a seat when customers book the same seat label from different events that share a layout.
- Added: "Orphan taken seat" check in Tools to find and repair seats marked as taken without a matching order.
- Fixed: Statistics dates no longer show on the wrong day.
- Fixed: Missing QR code images are regenerated when tickets are viewed or sent in emails.

== 1.8.1 ==
- Fixed: A potential issue in WooCommerce admin that could occur when an Auditorium product has no saved seat plan yet (for example during initial product setup or on the Products list).

== 1.8.0 ==
- Other: Various small improvements to the UI

== 1.7.5 ==
- Added: Gutenberg blocks - "Select Seat Button" (embed the add-to-cart flow on any page) and "Seat Count" (display available, sold, or other seat totals for a product).
- Added: Site Health tools - now check for problems with QR Code.

== 1.7.3 ==
- Added: Dark mode option for the front-end interface. Turn it on in Dashboard -> Settings -> Colors to apply a dark theme to the date/time picker, seat selector form fields, and cart timer.
- Added: WooCommerce coupon seat limits for auditorium products. On the coupon edit screen you can set a minimum and/or maximum number of auditorium seats required in the cart before the coupon applies.
- Added: Elementor widgets - "Select Seat Button" (embed the add-to-cart flow on any page) and "Seat Count" (display available, sold, or other seat totals for a product and optional date). Find them under the Stachethemes Seat Planner category in the Elementor editor.

== 1.7.2 ==
- Update: QR Code now supports PHP 8.5

== 1.7.1 ==
Added: A new option for "Redirect Customers After Successful Addition" enabling admins to send customers to a custom URL after seats are added to the cart.

== 1.6.7 ==
Added: Stalled Orders check in Dashboard -> Tools -> Booking Integrity. Lists pending/failed orders that hold auditorium seats without payment markers or an active slot lock (same rules as checkout conflict auto-cancel). Report only; does not modify orders.
Update: Refreshed General tab UI for auditorium products in the admin.
Fixed: Saving the seat planner, dates, discounts, or custom fields no longer fails when text includes certain characters (for example in seat labels). 

== 1.6.6 ==
Added: QR code scanner - choose which camera device to use
Update: Various small improvements to the Seat Editor

== 1.6.5 ==
Update: Security improvements
Added: Better protection against double bookings. The plugin now checks seat conflicts earlier and helps prevent stale pending reservations from blocking available seats.

== 1.6.4 ==
Update: Faster and more reliable seat updates when order statuses change (e.g. payment received, order completed)
Update: Manager section now processes seat changes more efficiently

== 1.6.3 ==
- Added: RTL Support (beta) for right-to-left languages
- Fixed: Orders with only seat tickets now automatically move to "Completed" after payment (e.g. Stripe) instead of staying at "Processing"
- Update: Clearer description for the "Force Auto-Complete Mixed Orders" setting

== 1.6.2 ==
- Added: Option in Manager -> Availability to filter seats by scan status using the "Scanned" toggle, showing only seats that have been scanned (QR code checked in)
- Added: Option in the Manager Edit Seat page to unscan a ticket, view scan details, and clear scan status when needed

== 1.6.1 ==
- Fixed: Closing the color picker without choosing a new color no longer clears the color from your selected items

== 1.6.0 ==
- Price input now allows decimal values
- Added auto-fill mode in the Seat Planner Editor for faster objects creation
- Added arc transform tool in the Seat Planner Editor
- Added flip transform tool in the Seat Planner Editor

== 1.5.6 ==
- Added Statistics page in the Manager section with product analytics: summary cards (seats sold, occupancy, revenue, orders), revenue and sales over time (by event date or order date), sales-by-order and sales-by-date tables with CSV export, and velocity projection.

= 1.5.4 =
- QR code styling updated to use accent color
- Added rotation feature in the Seat Planner Editor for rotating elements

= 1.5.1 =
- Added option to create Order from the Manager section
- Added new shortcode [stachesepl_count] for displaying the total seat count for auditorium product(s).

= 1.4.1 =
- Added seat details tooltip on mobile devices
- Added new option in general settings to show or hide the seat details tooltip
- Other minor bug fixes

= 1.4.0 =
- Added Manager section in the Admin Panel
- Added option to hide the QR Code

= 1.3.0 =
- New tool "Edit Order", enabling admins to modify existing orders data, such as changing seat ID.

= 1.1.0 =
- New general option "Enforce WooCommerce Cart Calculation". This option helps fix the issue with missing cart price on certain themes.
- Fixed issue where the cart timer may not work properly on certain carts

= 1.0.42 =
- Fixed a bug where setting a non-existent or invalid product ID in the shortcode caused a crash.

= 1.0.40 =
- Option to disable the "Select Seat" button on product listings (product loops) such as the Shop page and category pages.
- New Accent Color option for simpler front-end UI color customization. Legacy color customization options have been removed.
- Merged Cart Timer and Add to Cart settings into a new Cart Behaviour tab in the plugin settings.
- Front-end UI now displays the Close button at all times.
- Front-end UI buttons and elements now follow the Accent Color setting.
- Converted the Round Corners option to a slider for better control over element border radius.
- Minor fixes and improvements.

= 1.0.38 =
- The Plugin now uses it's own "Select Seat", "View Cart" buttons.
- Added option to change colors for "Select Seat", "View Cart", "Add to Cart" buttons.
- Added Front-end seat tooltip
- Added Compatibility mode for cache plugins (e.g. WP Rocket, LiteSpeed) when lazy loading breaks due to JS optimization.
- Added New editor option "Additional Class Name" allowing custom CSS classes to be attached to objects.
- Improved UI for adding dates to the product.
- "Seat Reservation Time" and "Auto-Complete Orders" options moved to the new General tab in plugin settings.

= 1.0.36 =
- Added new plugin dashboard centralizing settings and features.
- Added new option "Auto-Complete Orders": automatically marks orders as Completed when payment is received for auditorium products.
- Added new option to control whether users are redirected after adding seats to the cart.
- Added new option to choose whether users are redirected to the cart or checkout page.
- Added new option to control whether customers are shown a message during redirection.

= 1.0.35 =
- Added Dashboard Widget showing Seats Sold & Revenue for the last 30 days
- Added Option to Lock objects in the Drag & Drop Editor 
- Added Visual UI for turning grid-snap on/off, grid color, grid size
- Added message when user is redirected to cart/checkout page on the front-end

= 1.0.34 =
- Bug fix where product can be incorrectly flagged as Unavailable

= 1.0.33 =
- Bug fix where deleting a draft order can accidentally release slot reservation
- Other minor bug fixes

= 1.0.32 =
- UI/UX improvements
- Added UI for Auto Incremental Patterns
- Added Booking Integrity Checker Tools
- Added option to check Reservation Details from the front-end if the user has Shop Manager role

= 1.0.28 =
- Minor fixes & improvements
- Enabled option to Scan QR Codes from the Dashboard

= 1.0.5 =
- Add to cart seat validation improvements

= 1.0.4 =
- Initial public release with core seat selection features.