# Générer un contrat de location saisonnière avec WooCommerce Bookings

> Un loueur saisonnier veut qu'un contrat personnalisé sorte automatiquement à chaque réservation validée : voici l'enchaînement de hooks qui rend cela possible avec WooCommerce Bookings.

- Auteur : WordPress Développement
- Publié le : 2021-02-13
- Mis à jour le : 2021-02-13
- Catégorie : E-commerce
- URL : https://www.wpmoderne.fr/ecommerce/contrat-location-saisonniere-woocommerce-bookings/

## L’essentiel

- Le contrat se génère au moment où la réservation devient confirmée
- Les données de séjour fusionnent automatiquement dans un gabarit PDF
- Le document part en pièce jointe de l'e-mail de confirmation existant

« Confirmed » : c'est ce statut de réservation, dans WooCommerce Bookings, qui déclenche tout le reste du dispositif décrit dans cet article. Un loueur saisonnier qui gère plusieurs gîtes voulait éviter de rédiger un contrat de location à la main pour chaque réservation validée. La solution tient dans un hook bien choisi et un gabarit de document fusionné automatiquement.

Le principe reste simple à énoncer : dès qu'une réservation passe au statut confirmé, un contrat PDF se génère à partir d'un modèle, rempli avec les dates de séjour, l'identité du locataire et le gîte concerné, puis s'ajoute automatiquement à l'e-mail de confirmation que WooCommerce envoie déjà.

## Le hook qui déclenche la génération

WooCommerce Bookings expose plusieurs statuts pour une réservation : en attente de confirmation, confirmée, annulée. Le hook `woocommerce_booking_confirmed` se déclenche précisément au moment où une réservation bascule vers l'état confirmé, que ce basculement soit automatique (paiement immédiat accepté) ou manuel (validation par le gestionnaire du gîte après vérification de disponibilité).

C'est ce point d'entrée qui sert de déclencheur au script de génération du contrat, plutôt qu'un hook lié à la commande elle-même : une commande WooCommerce peut être payée sans que la réservation associée soit encore confirmée, notamment quand le gîte impose une validation manuelle avant tout engagement définitif.

## Fusionner les données de séjour dans un gabarit

Une fois le hook déclenché, le script récupère l'objet `WC_Booking` associé, qui donne accès à la date de début, à la date de fin et au produit réservable concerné. Ces informations, combinées aux données du client issues de la commande, alimentent un gabarit HTML converti ensuite en PDF via une bibliothèque de rendu, une opération courante dans l'écosystème WordPress pour ce type de document.

> L'essentiel à retenir : Le contrat se génère au moment où la réservation devient confirmée ; Les données de séjour fusionnent automatiquement dans un gabarit PDF ; Le document part en pièce jointe de l'e-mail de confirmation existant

### Un gabarit par type de gîte

Le loueur gère plusieurs gîtes aux caractéristiques différentes (capacité d'accueil, présence d'une piscine, règlement intérieur propre à chaque bien). Le script sélectionne le gabarit adapté selon le produit réservable associé à la réservation, ce qui évite d'avoir à maintenir un contrat générique trop vague ou, à l'inverse, un contrat par réservation individuelle à rédiger manuellement.

## Joindre le contrat à l'e-mail existant

Plutôt que de créer un circuit d'envoi d'e-mail parallèle, le contrat généré s'ajoute simplement en pièce jointe de l'e-mail de confirmation de commande que WooCommerce envoie déjà, via le filtre `woocommerce_email_attachments`. Cette approche évite de dupliquer la logique d'envoi et garantit que le client reçoit son contrat dans le même message que la confirmation de sa réservation, sans e-mail supplémentaire à surveiller.

```
add_filter( 'woocommerce_email_attachments', function( $attachments, $email_id, $order ) {
    if ( 'customer_completed_order' === $email_id ) {
        $chemin_contrat = generer_contrat_location( $order->get_id() );
        if ( $chemin_contrat ) {
            $attachments[] = $chemin_contrat;
        }
    }
    return $attachments;
}, 10, 3 );
```

- Déclenchement sur le statut confirmé de la réservation, pas sur la commande seule
- Sélection automatique du gabarit selon le gîte concerné
- Jonction en pièce jointe d'un e-mail transactionnel déjà existant

## Conserver une trace du contrat généré

Le fichier PDF généré est archivé dans un répertoire protégé du serveur, hors de portée d'un accès public direct, et son chemin est enregistré en métadonnée de la réservation. Le gestionnaire du gîte peut ainsi retrouver n'importe quel contrat déjà émis depuis l'administration WordPress, sans devoir régénérer le document ni fouiller dans une boîte e-mail.

> Un contrat généré automatiquement mérite d'être archivé automatiquement aussi : sinon, la première demande de duplicata du client redevient un travail manuel.

## Ce que ce dispositif ne traite pas

L'état des lieux numérique réalisé à l'arrivée et au départ du locataire reste un sujet distinct, généralement traité par une application dédiée ou un formulaire séparé rempli sur place. Ce dispositif se limite à la génération du contrat de location au moment de la confirmation, pas au suivi de l'état du bien pendant et après le séjour.

## Ce qu'il faut retenir

Ce montage supprime une tâche manuelle répétitive sans complexifier le parcours du client : le contrat arrive dans le même e-mail que la confirmation, sans étape supplémentaire à gérer côté locataire. Le travail de développement se concentre presque entièrement sur la conception soignée du gabarit de contrat, la mécanique de génération et d'envoi restant, elle, assez simple à mettre en place.
