# Guide Utilisateur — Module Licence

> Ce guide explique comment gérer les licences logicielles, les abonnements clients et les offres commerciales dans la plateforme By+.
> Aucune connaissance technique n'est nécessaire.

---

## Table des matières

1. [Qu'est-ce qu'une Licence ?](#1-quest-ce-quune-licence-)
2. [Gérer les Offres de service](#2-gérer-les-offres-de-service)
3. [Gérer les Types d'offres et les Packs](#3-gérer-les-types-doffres-et-les-packs)
4. [Créer et gérer une Licence](#4-créer-et-gérer-une-licence)
5. [Cycle de vie d'une Licence](#5-cycle-de-vie-dune-licence)
6. [Gérer les Abonnements (Souscriptions)](#6-gérer-les-abonnements-souscriptions)
7. [Gérer les Clés API d'une Souscription](#7-gérer-les-clés-api-dune-souscription)
8. [Envoyer une licence par e-mail](#8-envoyer-une-licence-par-e-mail)
9. [FAQ](#9-faq)
10. [Lexique](#10-lexique)

---

## 1. Qu'est-ce qu'une Licence ?

Une **licence** est un droit d'utilisation accordé à un client pour une application ou un logiciel précis. Elle est identifiée par une **clé unique** (ex. : `ABCD-1234-EFGH-5678`) que le client utilise pour activer son logiciel.

Chaque licence est liée à :
- un **client** (contact)
- une **offre commerciale** qui définit les modules inclus et le prix

Une licence passe par plusieurs états au cours de sa vie :

```
Créée (En attente) → Active → Suspendue (temporaire)
                            → Révoquée (définitif)
                            → Expirée
```

---

## 2. Gérer les Offres de service

Une **offre de service** est le produit commercial que vous proposez à vos clients. Elle contient :
- les **modules fonctionnels** accessibles (ex. : Caisse, Stocks, Facturation)
- les **tarifs** selon la fréquence (mensuel / annuel) et le type de serveur (partagé / dédié)

### Créer une offre

1. Accédez à **Offres de licences**
2. Cliquez sur **Nouvelle offre**
3. Remplissez :
   - **Type d'offre** : catégorie commerciale de l'offre
   - **Application** concernée
   - **Modules inclus** : sélectionnez les modules et leurs permissions
   - **Tarifs** : ajoutez un ou plusieurs tarifs (fréquence + type serveur + prix + devise)
4. Cliquez sur **Enregistrer**

> Toute nouvelle offre est créée en statut **Brouillon**. Elle doit être activée avant de pouvoir être associée à une licence.

---

### Statuts d'une offre

| Statut | Signification |
|---|---|
| **Brouillon** | L'offre est en cours de configuration, non disponible |
| **Activée** | L'offre est disponible pour créer des licences |
| **Suspendue** | L'offre est temporairement désactivée |

---

### Gérer les tarifs d'une offre

Depuis le détail d'une offre, vous pouvez :
- **Ajouter un tarif** : précisez la fréquence (mensuelle ou annuelle), le type de serveur, le prix et la devise
- **Modifier un tarif** existant
- **Supprimer un tarif**

---

### Filtrer les offres disponibles

Vous pouvez rechercher une offre par :
- **Application**
- **Type d'offre**
- **Fréquence** et **type de serveur** combinés

---

## 3. Gérer les Types d'offres et les Packs

### Types d'offres

Les **types d'offres** permettent de catégoriser vos offres commerciales (ex. : "Starter", "Pro", "Entreprise").

Depuis la section **Types d'offres**, vous pouvez :
- Consulter la liste des types existants
- Créer, modifier ou supprimer un type

---

### Packs

Un **pack** est un regroupement de modules types proposés en bundle. Il sert de base pour composer les offres.

Depuis la section **Packs**, vous pouvez :
- Créer un pack et lui ajouter des modules
- Modifier ou supprimer un pack existant

---

## 4. Créer et gérer une Licence

### Créer une licence

1. Accédez à **Licences**
2. Cliquez sur **Nouvelle licence**
3. Remplissez :
   - **Nom** *(facultatif)* : libellé personnalisé
   - **Client** : sélectionnez le contact bénéficiaire
   - **Offre / Tarif** : choisissez le tarif de l'offre (fréquence + serveur)
   - **Durée** *(facultatif)* : nombre de périodes (selon la fréquence de l'offre)
   - **Date de début** : date à partir de laquelle la licence est valide
4. Cliquez sur **Enregistrer**

> La clé de licence est **générée automatiquement** au format `XXXX-XXXX-XXXX-XXXX`.

> Lors de la création, un **instantané de l'offre** (modules + permissions + tarif) est sauvegardé dans la licence. Cela garantit que les conditions initiales sont conservées même si l'offre est modifiée ultérieurement.

---

### Voir le détail d'une licence

Depuis la fiche d'une licence, vous consultez :
- La **clé de licence**
- Le **statut** actuel
- L'**offre associée** (modules inclus, tarif, fréquence)
- L'historique des **activations** (sur quelles machines/installations la licence a été activée)
- L'historique des **usages** (période d'utilisation effective)

---

### Modifier une licence

Vous pouvez modifier :
- Le **nom**
- La **durée**
- L'**offre associée** (met à jour l'instantané de l'offre)

---

### Consulter les permissions résolues

Depuis la fiche d'une licence, l'onglet **Permissions résolues** liste toutes les permissions effectivement accordées à ce client selon les modules actifs de la licence.

---

## 5. Cycle de vie d'une Licence

### Activer une licence (admin)

Une licence créée est d'abord **En attente**. Pour la rendre utilisable :
1. Ouvrez la licence
2. Cliquez sur **Activer**

La licence passe en statut **Active** et le client peut l'utiliser.

---

### Suspendre une licence

La suspension est **temporaire** : la licence cesse de fonctionner mais peut être réactivée.

1. Ouvrez la licence active
2. Cliquez sur **Suspendre**

Pour la réactiver : cliquez sur **Lever la suspension**.

---

### Révoquer une licence

La révocation est **définitive** : la licence et toutes ses activations sont annulées sans possibilité de retour en arrière.

1. Ouvrez la licence
2. Cliquez sur **Révoquer**
3. Confirmez l'action

> Toutes les installations actives associées à cette licence sont également révoquées automatiquement.

---

### Historique des activations

Depuis l'onglet **Activations** d'une licence, vous visualisez chaque installation ou appareil sur lequel la licence a été utilisée avec :
- L'identifiant de l'entité externe (machine, installation)
- Le nom d'hôte
- La date d'activation
- La date de dernière validation
- La date d'expiration (si limitée)

---

## 6. Gérer les Abonnements (Souscriptions)

Un **abonnement** (aussi appelé souscription) représente le lien entre un **client** et une **application**. Il permet au client d'accéder à l'application avec un type de déploiement défini.

### Types de déploiement

| Type | Description |
|---|---|
| **SaaS** | L'application est hébergée sur nos serveurs mutualisés |
| **Dédié** | L'application est déployée sur un serveur dédié au client |

---

### Créer un abonnement

1. Accédez à **Abonnements**
2. Cliquez sur **Nouvel abonnement**
3. Remplissez :
   - **Client** (contact)
   - **Application**
   - **Type de déploiement** : SaaS ou Dédié
   - **Date de souscription** et **date d'expiration** *(facultative)*
   - **Domaines autorisés** *(facultatif)* : liste des domaines web autorisés à utiliser les clés API
4. Cliquez sur **Enregistrer**

---

### Statuts d'un abonnement

| Statut | Signification |
|---|---|
| **En attente** | L'abonnement est créé mais pas encore actif |
| **Actif** | Le client accède à l'application |
| **Suspendu** | L'accès est temporairement bloqué |

---

### Générer une clé Webhook

Depuis la fiche d'un abonnement, cliquez sur **Générer une clé Webhook** pour obtenir un secret permettant de sécuriser les communications automatiques entre vos systèmes.

> Cette clé n'est affichée qu'une seule fois. Conservez-la précieusement.

---

## 7. Gérer les Clés API d'une Souscription

Les **clés API** permettent à une application externe de s'authentifier automatiquement sur la plateforme (connexion machine à machine, sans intervention humaine).

Chaque clé est composée de deux parties :
- **Clé publique** (`pk_...`) : identifiant de la clé, peut être partagé
- **Clé secrète** (`sk_...`) : mot de passe de la clé, à conserver confidentiel

> La clé secrète n'est affichée qu'à la création. Elle ne peut pas être récupérée ensuite.

---

### Générer une clé API

1. Ouvrez l'abonnement concerné
2. Accédez à l'onglet **Clés API**
3. Cliquez sur **Générer une clé**
4. Donnez un nom à la clé *(facultatif)*
5. Définissez une date d'expiration *(facultative)*
6. Notez immédiatement la **clé secrète** affichée

---

### Révoquer une clé API

Si une clé est compromise ou n'est plus nécessaire :
1. Ouvrez la clé concernée
2. Cliquez sur **Révoquer**

La clé devient immédiatement invalide et ne peut plus être utilisée.

---

## 8. Envoyer une licence par e-mail

Vous pouvez envoyer la clé de licence directement par e-mail à votre client.

1. Ouvrez la licence à envoyer
2. Cliquez sur **Envoyer par e-mail**
3. Remplissez :
   - **Destinataire** (`À`)
   - **Expéditeur** (`De`)
   - **Objet** du message
   - **Corps** du message

> Dans le corps du message, vous pouvez utiliser les variables suivantes qui seront remplacées automatiquement :
> - `{LICENSE_KEY}` → la clé de licence
> - `{APP_NAME}` → le nom de l'application

4. Cliquez sur **Envoyer**

> L'envoi est effectué en arrière-plan. Vous pouvez continuer à travailler pendant que l'e-mail est traité.

---

## 9. FAQ

**Puis-je modifier une offre après avoir créé des licences ?**
Oui. Modifier l'offre n'affecte pas les licences déjà créées, car celles-ci conservent un instantané de l'offre au moment de leur création.

**Peut-on supprimer une licence active ?**
Oui, techniquement. Mais il est recommandé de la révoquer plutôt que de la supprimer, afin de conserver la traçabilité.

**Quelle est la différence entre révoquer et suspendre ?**
- **Suspension** : temporaire, réversible. Utile en cas d'impayé ou de contrôle.
- **Révocation** : définitive. La licence ne peut plus jamais être réactivée.

**Que se passe-t-il si un client active sa licence sur plusieurs machines ?**
Chaque activation est enregistrée séparément. Vous pouvez les consulter dans l'onglet **Activations** de la licence.

**Comment savoir si une licence a expiré ?**
Le statut de la licence affiche **Expirée** et sa couleur passe au rouge dans l'interface.

---

## 10. Lexique

| Terme | Définition simple |
|---|---|
| **Licence** | Droit d'utilisation d'un logiciel accordé à un client, identifié par une clé unique |
| **Clé de licence** | Code au format `XXXX-XXXX-XXXX-XXXX` utilisé pour activer le logiciel |
| **Offre de service** | Produit commercial définissant les modules inclus et les tarifs |
| **Instantané d'offre** | Copie des conditions de l'offre au moment de la création de la licence |
| **Activation** | Enregistrement de l'utilisation d'une licence sur une machine ou installation précise |
| **Usage** | Période d'utilisation effective d'une licence (date de début et de fin) |
| **Abonnement** | Lien entre un client et une application avec son type de déploiement |
| **Clé API** | Paire de codes (publique + secrète) pour connecter deux systèmes automatiquement |
| **Révocation** | Annulation définitive d'une licence ou d'une clé API |
| **SaaS** | Application hébergée sur un serveur mutualisé (Software as a Service) |
| **Dédié** | Application hébergée sur un serveur réservé exclusivement au client |
| **Webhook** | Notification automatique envoyée à votre système lors d'un événement précis |
| **Fréquence** | Périodicité du tarif : mensuelle ou annuelle |
