# Guide Utilisateur — Module Application

> Ce guide vous explique comment gérer les applications, leurs modules, leurs packs et le stockage dans la plateforme By+.
> Aucune connaissance technique n'est nécessaire.

---

## Table des matières

1. [Qu'est-ce qu'une Application ?](#1-quest-ce-quune-application)
2. [Gérer les Applications](#2-gérer-les-applications)
3. [Gérer les Modules](#3-gérer-les-modules)
4. [Gérer les Packs](#4-gérer-les-packs)
5. [Gérer les Permissions](#5-gérer-les-permissions)
6. [Gérer les Offres de Stockage](#6-gérer-les-offres-de-stockage)
7. [Gérer les Abonnements de Stockage](#7-gérer-les-abonnements-de-stockage)
8. [Lexique](#8-lexique)

---

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

Une **application** représente un logiciel ou un service proposé aux utilisateurs de la plateforme (par exemple : une application de gestion de boutique, de facturation, de gestion RH, etc.).

Chaque application peut contenir :
- des **modules** : des fonctionnalités spécifiques (ex. : gestion des stocks, caisse, statistiques)
- des **packs** : des regroupements de modules vendus ensemble
- des **offres de stockage** : des plans de capacité de stockage proposés aux utilisateurs

---

## 2. Gérer les Applications

### Voir la liste des applications

Depuis l'interface, accédez à la section **Applications**. Vous verrez la liste de toutes les applications avec :
- leur nom
- leur statut (Active ou Inactive)
- le nombre de modules, de packs et d'offres associés

Vous pouvez **rechercher** une application par son nom ou sa description, et **filtrer** par statut.

---

### Créer une application

1. Cliquez sur **Nouvelle application**
2. Remplissez les champs :
   - **Nom** *(obligatoire)* : le nom de l'application
   - **Description** *(facultatif)* : une courte présentation
   - **Statut** : Active (par défaut) ou Inactive
3. Cliquez sur **Enregistrer**

> Une clé unique est automatiquement générée à partir du nom (ex. : "Ma Boutique" → `ma_boutique`). Elle sert à identifier l'application dans les échanges entre systèmes.

---

### Modifier une application

1. Ouvrez l'application souhaitée
2. Cliquez sur **Modifier**
3. Mettez à jour les informations (nom, description, statut)
4. Cliquez sur **Enregistrer**

---

### Désactiver / Réactiver une application

Changez le statut de l'application entre **Active** et **Inactive** depuis la page de modification.

Une application inactive n'est plus proposée aux utilisateurs mais ses données sont conservées.

---

### Supprimer une application

> **Attention** : La suppression est définitive. Elle efface aussi tous les packs et offres associés.

La suppression est bloquée si l'application est liée à une **licence active**. Vous devez d'abord dissocier ou supprimer la licence correspondante.

---

## 3. Gérer les Modules

Un **module** est une fonctionnalité précise d'une application. Par exemple, une application de boutique peut avoir les modules : *Caisse*, *Stocks*, *Statistiques de vente*.

### Voir les modules d'une application

Ouvrez l'application puis accédez à l'onglet **Modules**. La liste affiche tous les modules avec leurs informations.

---

### Ajouter un module

1. Dans l'onglet **Modules**, cliquez sur **Ajouter un module**
2. Sélectionnez le **type de module** (AppModule) dans la liste proposée
3. Ajoutez une description si nécessaire
4. Cliquez sur **Enregistrer**

---

### Dépendances entre modules

Certains modules nécessitent d'autres modules pour fonctionner. Par exemple, le module *Statistiques* peut nécessiter le module *Ventes*.

Pour consulter ou configurer les dépendances :
1. Ouvrez un module
2. Accédez à l'onglet **Dépendances**
3. Ajoutez ou retirez les modules requis

> Lors de l'activation d'un module, ses dépendances sont automatiquement incluses même si elles n'ont pas été sélectionnées manuellement.

---

### Supprimer un module

Ouvrez le module et cliquez sur **Supprimer**. Cette action est irréversible.

---

## 4. Gérer les Packs

Un **pack** est un regroupement de modules vendus ensemble sous une offre tarifaire. Par exemple : un *Pack Starter* peut inclure les modules *Caisse* et *Stocks*.

### Créer un pack

1. Dans l'onglet **Packs** de l'application, cliquez sur **Nouveau pack**
2. Associez-le à un **pack tarifaire** existant
3. Ajoutez une description
4. Cliquez sur **Enregistrer**

---

### Ajouter des modules à un pack

1. Ouvrez le pack souhaité
2. Cliquez sur **Ajouter un module au pack**
3. Sélectionnez le module et configurez ses options
4. Cliquez sur **Enregistrer**

---

### Supprimer un pack

La suppression d'un pack entraîne automatiquement la suppression de tous les modules qui lui sont rattachés.

---

## 5. Gérer les Permissions

Les **permissions** définissent ce que les utilisateurs ont le droit de faire dans chaque application (ex. : consulter les ventes, créer une facture, gérer les stocks).

### Voir les permissions disponibles

Accédez à la section **Permissions des applications**. Vous pouvez filtrer par **catégorie** (ex. : Boutique, Finance, RH).

---

### Créer une permission

1. Cliquez sur **Nouvelle permission**
2. Renseignez :
   - **Code** : identifiant court (ex. : `shop.sale.view`)
   - **Catégorie** : le domaine fonctionnel
   - **Description** : explication en clair de ce que permet cette permission
3. Cliquez sur **Enregistrer**

---

### Associer des permissions à une application

Depuis la fiche d'une application :
1. Accédez à l'onglet **Permissions**
2. Ajoutez, retirez ou synchronisez les permissions de l'application

---

## 6. Gérer les Offres de Stockage

Une **offre de stockage** est un plan proposé aux utilisateurs pour stocker leurs données (documents, fichiers, etc.). Chaque offre définit une capacité (ex. : 5 Go) et un prix.

### Créer une offre de stockage

1. Accédez à la section **Offres de stockage**
2. Cliquez sur **Nouvelle offre**
3. Remplissez :
   - **Nom** : ex. "Pack 5 Go"
   - **Application** associée
   - **Capacité** : valeur numérique (ex. : 5)
   - **Unité** : Ko, Mo, Go ou To
   - **Prix** et **Devise**
   - **Description** *(facultatif)*
4. Cliquez sur **Enregistrer**

> Toute nouvelle offre est créée en statut **Inactive** par défaut. Pensez à l'activer pour qu'elle soit visible par les utilisateurs.

---

### Activer / Désactiver une offre

Depuis la liste des offres, utilisez le bouton de changement de statut pour passer l'offre d'**Active** à **Inactive** et inversement.

Seules les offres **actives** peuvent recevoir des demandes d'abonnement.

---

### Modifier ou supprimer une offre

- **Modifier** : mettez à jour les informations depuis la fiche de l'offre
- **Supprimer** : action irréversible, à utiliser avec précaution si des abonnements sont en cours

---

## 7. Gérer les Abonnements de Stockage

Un **abonnement de stockage** est une demande faite par un utilisateur (ou une application tierce) pour bénéficier d'une offre de stockage.

### Cycle de vie d'un abonnement

```
Demande soumise → En attente → Approuvée ✓
                            → Rejetée   ✗
```

| Statut | Signification |
|---|---|
| **En attente** | La demande a été soumise, elle attend une décision |
| **Approuvée** | La capacité de stockage est activée pour l'utilisateur |
| **Rejetée** | La demande a été refusée |

---

### Consulter les demandes

Accédez à la section **Abonnements de stockage**. Vous pouvez filtrer par :
- **Statut** (En attente, Approuvée, Rejetée)
- **Application**
- **Recherche libre**

---

### Approuver une demande

1. Ouvrez la demande en statut **En attente**
2. Cliquez sur **Approuver**
3. Ajoutez une note si nécessaire
4. Confirmez

> Une notification est automatiquement envoyée à l'utilisateur ou à l'application concernée lors de l'approbation.

---

### Rejeter une demande

1. Ouvrez la demande en statut **En attente**
2. Cliquez sur **Rejeter**
3. Indiquez la raison dans le champ **Notes** *(recommandé)*
4. Confirmez

---

### Supprimer une demande

Seules les demandes **En attente** peuvent être supprimées. Une demande approuvée ou rejetée ne peut pas être effacée.

---

## 8. Lexique

| Terme | Définition simple |
|---|---|
| **Application** | Un logiciel ou service géré dans la plateforme |
| **Module** | Une fonctionnalité précise d'une application |
| **Pack** | Un regroupement de modules vendus ensemble |
| **Permission** | Un droit d'accès accordé à un utilisateur dans une application |
| **Offre de stockage** | Un plan d'espace de stockage avec une capacité et un prix |
| **Abonnement** | La demande d'un utilisateur pour bénéficier d'une offre de stockage |
| **Statut Actif** | L'application ou l'offre est disponible et utilisable |
| **Statut Inactif / Suspendu** | L'application ou l'offre n'est plus disponible |
| **Dépendance** | Un module qui doit être activé pour qu'un autre fonctionne |
| **Clé (key)** | Identifiant unique généré automatiquement à partir du nom |
