# Event Tickets & Seating — Complete Guide

> Overview DataFirefly Event Tickets & Seating turns any PrestaShop product into an event ticket. The module handles two event types (general admission or assigned seating), a visual seating chart, QR…

- Page: <https://www.datafirefly.com/en/documentation/dfeventtickets/>
- Language: en
- Last updated: 2026-06-27
- Other languages: [fr](https://www.datafirefly.com/documentation/dfeventtickets/index.md), [es](https://www.datafirefly.com/es/documentation/dfeventtickets/index.md), [de](https://www.datafirefly.com/de/documentation/dfeventtickets/index.md), [it](https://www.datafirefly.com/it/documentation/dfeventtickets/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfeventtickets/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfeventtickets/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfeventtickets/index.md)
- Index: <https://www.datafirefly.com/en/documentation/llms.txt>

## Overview

DataFirefly Event Tickets & Seating turns any PrestaShop product into an event ticket. The module handles two event types (general admission or assigned seating), a visual seating chart, QR ticket generation downloadable as PDF, and a scan-based entry-control screen. The key idea: each **seat category is a product combination**, so PrestaShop natively handles prices, taxes and invoicing.

No external dependency: QR and PDF generation is bundled inside the module. No Composer is required, and the module works on PrestaShop 8 and 9, in multistore.

## Installation

1. Download the `dfeventtickets.zip` archive from your DataFirefly account.
2. In the back office, go to **Modules > Module Manager**, click **Upload a module** and drop the ZIP.
3. The module installs automatically: it creates its tables, its menu tabs (under **Customers > DataFirefly Ticketing**) and registers its hooks.
4. Clear the PrestaShop cache (**Advanced Parameters > Performance > Clear cache**) after installation.

When updating, overwrite the files then clear the cache to purge PrestaShop's class index.

## Key concepts

### Product = ticket

You first create a standard PrestaShop product (the "ticket"), then associate an _event_ with it. Everything related to price, VAT and invoicing stays handled by PrestaShop.

### Price zone = combination

Each zone (Gold Circle, Balcony, Pit…) points to a product **combination** (`id_product_attribute`) or to the base price. This guarantees correct totals and invoices, with no parallel calculation.

### Two event types

- **General admission** (`general`): the customer picks a category and a quantity via the native add-to-cart block.
- **Assigned seating** (`seated`): the customer picks their seat on an interactive seating chart.

## Creating an event

Go to **Customers > DataFirefly Ticketing > Events** then click **Add an event**. Fill in:

- the associated **product**;
- the **type** (general admission or assigned seating);
- the start and end **dates** (format `YYYY-MM-DD HH:MM:SS`) and the timezone;
- the **capacity** (for general admission);
- the **hold duration** (minutes during which a selected seat stays locked, 15 by default);
- the **active** status.

You can also reach event creation/editing directly from the **Ticketing & Event** tab on the product page.

## Defining price zones

Once the event is saved, the **Price zones** panel appears below the form. For each zone, set a name, the matching product combination (or the base price) and a display color. The actual price is read from the PrestaShop combination.

Create at least one zone before drawing the seating chart: every seat must be attached to a zone.

## Drawing the seating chart

For seated events, open **Draw the seating chart**. The visual editor lets you:

- **generate a block** of seats (rows × columns, with configurable first row and first number) attached to a zone;
- **reposition** a seat by drag-and-drop;
- **enable/disable** a seat (click) — a disabled seat is not sold;
- **delete** a seat (double-click);
- **clear all** to start over.

The "STAGE / ENTRANCE" bar provides an orientation cue for your customers.

## Storefront: buying a ticket

On the product page, the module automatically injects the right widget:

- **Assigned seating**: an interactive chart where zones are color-coded, taken seats greyed out and available seats clickable. The customer selects one or more seats; each selection adds the matching combination to the cart and holds the seat temporarily.
- **General admission**: an availability box; the purchase goes through the native quantity block.

If a seat has just been taken by another customer, the chart refreshes and prompts them to pick another one — no double-selling.

## QR & PDF tickets

As soon as the order is validated and paid, the module generates one ticket per actually-paid seat, each carrying a **unique random token** encoded as a QR code. The customer downloads their tickets as a PDF (one ticket per page) from the order detail or their customer account. If TCPDF is unavailable, a printable HTML fallback is provided.

## Entry control (scan)

On the day, open **Customers > DataFirefly Ticketing > Scan**. Two modes:

- **Camera**: start the camera and present the ticket QR;
- **Manual entry**: paste or type the ticket code.

The result is shown in color (valid, already used, cancelled, invalid) and a log of the latest scans helps the front-desk staff. A validated ticket switches to **used** and can no longer be reused.

## Ticket life cycle

- **reserved**: seat selected, locked until the hold expires;
- **valid**: order paid and reconciled (only actually-paid seats become valid);
- **used**: ticket scanned at the door;
- **cancelled**: order cancelled or refunded;
- **expired**: an unconfirmed hold that reached its expiry.

## Managing tickets in the back office

The **Tickets** tab lists every ticket with its event, seat, customer, order, status and issue date. The list is filterable and supports **bulk cancellation**. A per-event filter is available from the zones panel.

## Compatibility & technical notes

- PrestaShop 8.0 to 9.x, multistore, multilingual (FR, EN, ES, DE, IT);
- PHP 7.4 to 8.3;
- `ModuleAdminController` controllers (PS8/9 compatibility, no Symfony controllers);
- QR (MIT library) and PDF (native TCPDF) bundled, no Composer dependency.

## Troubleshooting

### The selection widget does not show on the product page

Check that the event is **active**, associated with the right product, and that the module is properly hooked on the product-page hooks. Clear the cache.

### A blank page appears after install or update

Clear the PrestaShop cache to rebuild the class index, then reload the screen.

### The camera does not start on the scan screen

Camera scanning requires a secure context (HTTPS) and camera-access permission. Otherwise, use manual code entry.

### Prices or taxes look wrong

Make sure each zone points to the correct product combination: PrestaShop computes price and VAT from that combination.
