# Billetterie & Événements — Guide complet

> Présentation DataFirefly Billetterie & Événements transforme n'importe quel produit PrestaShop en billet d'événement. Le module gère deux types d'événements (placement libre ou places assises), un plan de salle visuel, la…

- Page: <https://www.datafirefly.com/documentation/dfeventtickets/>
- Langue: fr
- Mis à jour le: 2026-06-27
- Autres langues: [en](https://www.datafirefly.com/en/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/documentation/llms.txt>

## Présentation

DataFirefly Billetterie & Événements transforme n'importe quel produit PrestaShop en billet d'événement. Le module gère deux types d'événements (placement libre ou places assises), un plan de salle visuel, la génération de billets QR téléchargeables en PDF et un écran de contrôle d'entrée par scan. La particularité de l'approche : chaque **catégorie de place est une déclinaison produit**, ce qui laisse PrestaShop gérer nativement les prix, les taxes et la facturation.

Aucune dépendance externe : la génération des QR et des PDF est embarquée dans le module. Aucun Composer n'est requis, et le module est compatible PrestaShop 8 comme 9, en multiboutique.

## Installation

1. Téléchargez l'archive `dfeventtickets.zip` depuis votre compte DataFirefly.
2. Dans le back-office, allez dans **Modules > Module Manager**, cliquez sur **Téléverser un module** et déposez le ZIP.
3. Le module s'installe automatiquement : il crée ses tables, ses onglets de menu (sous **Clients > DataFirefly Billetterie**) et enregistre ses hooks.
4. Videz le cache PrestaShop (**Paramètres avancés > Performances > Vider le cache**) après l'installation.

En cas de mise à jour, écrasez les fichiers puis videz le cache pour purger l'index de classes de PrestaShop.

## Concepts clés

### Produit = billet

Vous créez d'abord un produit PrestaShop standard (le « billet »), puis vous lui associez un _événement_. Tout ce qui touche au prix, à la TVA et à la facture reste géré par PrestaShop.

### Zone de prix = déclinaison

Chaque zone (Carré Or, Balcon, Fosse…) pointe vers une **combinaison** du produit (`id_product_attribute`) ou vers le prix de base. C'est ce qui garantit des totaux et des factures corrects, sans calcul parallèle.

### Deux types d'événement

- **Placement libre** (`general`) : le client choisit une catégorie et une quantité via le bloc d'achat natif.
- **Places assises** (`seated`) : le client choisit sa place sur un plan de salle interactif.

## Créer un événement

Rendez-vous dans **Clients > DataFirefly Billetterie > Événements** puis cliquez sur **Ajouter un événement**. Renseignez :

- le **produit** associé ;
- le **type** (placement libre ou places assises) ;
- les **dates** de début et de fin (format `AAAA-MM-JJ HH:MM:SS`) et le fuseau ;
- la **capacité** (pour le placement libre) ;
- la **durée de réservation** (minutes pendant lesquelles un siège sélectionné reste bloqué, 15 par défaut) ;
- le statut **actif**.

Vous pouvez aussi accéder à la création/édition d'événement directement depuis l'onglet **Billetterie & Événement** de la fiche produit.

## Définir les zones de prix

Une fois l'événement enregistré, le panneau **Zones de prix** apparaît sous le formulaire. Pour chaque zone, indiquez un nom, la déclinaison produit correspondante (ou le prix de base) et une couleur d'affichage. Le prix réel est lu depuis la déclinaison PrestaShop.

Créez au moins une zone avant de dessiner le plan de salle : chaque siège doit être rattaché à une zone.

## Dessiner le plan de salle

Pour les événements en places assises, ouvrez **Dessiner le plan de salle**. L'éditeur visuel permet de :

- **générer un bloc** de sièges (rangées × colonnes, première rangée et premier numéro paramétrables) rattaché à une zone ;
- **repositionner** un siège au glisser-déposer ;
- **activer/désactiver** un siège (clic) — un siège désactivé n'est pas vendu ;
- **supprimer** un siège (double-clic) ;
- **tout effacer** pour recommencer.

La barre « SCÈNE / ENTRÉE » sert de repère d'orientation pour vos clients.

## Côté boutique : acheter un billet

Sur la fiche produit, le module injecte automatiquement le bon widget :

- **Places assises** : un plan interactif où les zones sont colorées, les places occupées grisées et les places disponibles cliquables. Le client sélectionne une ou plusieurs places ; chaque sélection ajoute la déclinaison correspondante au panier et réserve le siège temporairement.
- **Placement libre** : un encart de disponibilité ; l'achat se fait via le bloc quantité natif.

Si une place vient d'être prise par un autre client, le plan se rafraîchit et invite à en choisir une autre — pas de double vente.

## Billets QR & PDF

Dès que la commande est validée et payée, le module génère un billet par place réellement payée, chacun portant un **jeton aléatoire unique** encodé en QR. Le client télécharge ses billets en PDF (un billet par page) depuis le détail de la commande ou son espace client. Si TCPDF n'est pas disponible, un repli HTML imprimable est proposé.

## Contrôle d'entrée (scan)

Le jour J, ouvrez **Clients > DataFirefly Billetterie > Scan**. Deux modes :

- **Caméra** : démarrez la caméra et présentez le QR du billet ;
- **Saisie manuelle** : collez ou saisissez le code du billet.

Le résultat s'affiche en couleur (valide, déjà utilisé, annulé, invalide) et un journal des derniers scans aide le personnel d'accueil. Un billet validé passe en **utilisé** et ne peut plus être réutilisé.

## Cycle de vie d'un billet

- **reserved** : siège sélectionné, bloqué jusqu'à expiration de la réservation ;
- **valid** : commande payée et réconciliée (seules les places réellement payées deviennent valides) ;
- **used** : billet scanné à l'entrée ;
- **cancelled** : commande annulée ou remboursée ;
- **expired** : réservation non confirmée arrivée à expiration.

## Gestion des billets en back-office

L'onglet **Billets** liste tous les billets avec leur événement, place, client, commande, statut et date d'émission. La liste est filtrable et permet l'**annulation groupée**. Un filtre par événement est disponible depuis le panneau zones.

## Compatibilité & aspects techniques

- PrestaShop 8.0 à 9.x, multiboutique, multilingue (FR, EN, ES, DE, IT) ;
- PHP 7.4 à 8.3 ;
- contrôleurs `ModuleAdminController` (compatibilité PS8/9, sans contrôleurs Symfony) ;
- QR (bibliothèque MIT) et PDF (TCPDF natif) embarqués, aucune dépendance Composer.

## Dépannage

### Le widget de sélection n'apparaît pas sur la fiche produit

Vérifiez que l'événement est **actif**, associé au bon produit, et que le module est bien greffé sur les hooks de la fiche produit. Videz le cache.

### Une page blanche apparaît après l'installation ou la mise à jour

Videz le cache PrestaShop pour reconstruire l'index de classes, puis rechargez l'écran.

### La caméra ne démarre pas sur l'écran de scan

Le scan caméra nécessite un contexte sécurisé (HTTPS) et l'autorisation d'accès à la caméra. À défaut, utilisez la saisie manuelle du code.

### Les prix ou taxes semblent incorrects

Assurez-vous que chaque zone pointe vers la bonne déclinaison produit : c'est PrestaShop qui calcule prix et TVA à partir de cette combinaison.
