> For the complete documentation index, see [llms.txt](https://arpelin.gitbook.io/arpelin/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://arpelin.gitbook.io/arpelin/dsf-dossier-de-specifications-fonctionnelles-arpelin.md).

# DSF - Dossier de Spécifications Fonctionnelles Arpelin

### 1. Objectif du document

Ce document décrit les spécifications fonctionnelles détaillées du logiciel Arpelin, en particulier les modules de caisse enregistreuse et bornes de commande soumis à la certification NF525. Il constitue le référentiel fonctionnel du logiciel dans le cadre de la conformité aux exigences de la Partie 10 du référentiel NF525.

***

### 2. Vue d'ensemble fonctionnelle

#### 2.1. Périmètre fonctionnel NF525

Arpelin intègre deux modules principaux soumis à la certification NF525 :

* **Caisse enregistreuse web** : Interface de vente au comptoir
* **Bornes de commande** : Interface de commande autonome client

Ces modules respectent les exigences de traçabilité, inaltérabilité, clôture et archivage des données fiscales.

#### 2.2. Architecture fonctionnelle

```
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   BORNE CLIENT  │    │  CAISSE WEB     │    │  BACK-OFFICE    │
│                 │    │                 │    │                 │
│ • Commande auto │◄──►│ • Encaissement  │◄──►│ • Gestion stock │
│ • Paiement CB   │    │ • Validation    │    │ • Clôtures      │
│ • Ticket        │    │ • Tickets       │    │ • Reporting     │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────▼───────────────────────┘
                    ┌─────────────────────────────┐
                    │     BASE DE DONNÉES         │
                    │  Transactions • Logs        │
                    │  Closures • Archives        │
                    └─────────────────────────────┘
```

***

### 3. Module Caisse Enregistreuse Web ⭐

#### 3.1. Authentification et accès

**3.1.1. Connexion utilisateur**

* **Méthode** : Compte utilisateur (email ou nom d'utilisateur + mot de passe)
* **Point d'accès** : Site internet du commerçant
* **Session** : Durée 8 heures avec maintien automatique
* **Rôles supportés** : Caissier, Manager, Administrateur

**3.1.2. Sécurisation**

* **HTTPS obligatoire** : Chiffrement de toutes les communications
* **Session sécurisée** : Token de session régénéré
* **Droits granulaires** : Permissions selon le rôle utilisateur

#### 3.2. Interface principale de caisse

**3.2.1. Organisation de l'écran**

L'interface principale se compose de deux sections principales :

**Panel Préparations** :

* Commandes internet (non payées/payées/faites)
* Commandes bornes (non payées/payées/faites)
* Commandes caisse (non payées/payées/faites)
* Statut temps réel de toutes les commandes
* Les commandes marquées comme retirées ne sont pas affichées dans le panel préparations.

**Section Caisse** :

* Zone d'ajout d'articles au panier
* Visualisation du panier en cours
* Interface d'encaissement et validation
* Génération de tickets

**3.2.2. Workflow de vente**

```
1. Ajout articles → Panier
2. Validation panier → Commande
3. Sélection paiement → Encaissement
4. Validation → Transaction + Ticket
5. Archivage → Logs + Archives
```

#### 3.3. Gestion des articles

**3.3.1. Ajout d'articles au panier**

* **Saisie manuelle** : Sélection depuis catalogue
* **Code-barres** : Scan QR code dans champ dédié
* **Quantités** : Modification possible avant validation

**3.3.2. Informations article**

* **Prix TTC** : Affichage obligatoire TTC
* **TVA** : Taux défini par article (5.5%, 10%, 20%...)
* **Stock** : Contrôle disponibilité si activé
* **Catégorie** : Classification pour s'y retrouver plus facilement

**3.3.3. Restrictions tarifaires**

* **Pas de remises** : Système sans remises programmables, mais remise possible manuellement depuis la caisse.
* **Prix fixes** : Tarifs définis en back-office uniquement
* **TVA obligatoire** : Taux TVA requis par article

#### 3.4. Processus d'encaissement

**3.4.1. Moyens de paiement supportés**

| Moyen                  | Type        | Validation | Intégration                 |
| ---------------------- | ----------- | ---------- | --------------------------- |
| **Espèces**            | Manuel      | Caissier   | Saisie montant              |
| **CB Manuel**          | Manuel      | Caissier   | TPE externe, saisie montant |
| **CB Auto SumUp**      | Automatique | API        | Intégration directe         |
| **CB Auto Smile\&Pay** | Automatique | API        | Intégration directe         |
| **Titres Restaurant**  | Manuel      | Caissier   | Saisie montant              |
| **Satispay**           | Manuel      | Caissier   | Saisie montant              |

**3.4.2. Validation paiement**

* **Paiement total** : Un seul moyen de paiement
* **Paiement fractionné** : Plusieurs moyens possibles
* **Montant restant** : Affichage temps réel
* **Trop-perçu** : Montant négatif affiché, impossibilité de valider (pas de gestion rendu)

**3.4.3. Workflow validation**

```
Panel Préparations → Sélection commande → Choix paiement
     ↓
Validation montant → Confirmation → Transaction validée
     ↓
Génération ticket → Archivage → Mise à jour totaux
```

#### 3.5. Génération de tickets ⭐

**3.5.1. Format et impression**

* **Format** : Optimisé imprimantes thermiques 80mm
* **Compatibilité** : Toute imprimante compatible navigateur
* **Contenu** : Conforme réglementation fiscale française
* **Horodatage** : Date/heure précise au moment de validation

**3.5.2. Numérotation**

* **Incrémentation automatique** : Numéro séquentiel par client (ID Panier)
* **Gestion duplicatas** : Système anti-collision
* **Unicité garantie** : Un numéro = une transaction unique
* **Traçabilité** : Lien avec table transactions

**3.5.3. Contenu ticket obligatoire**

```
[HEADER COMMERÇANT]
Nom, Adresse, SIRET, TVA

[DÉTAIL VENTE]
Article | Qté | Prix Unit. | Total
TVA par taux (5.5%, 10%, 20%...)

[TOTAUX]
Total HT | TVA | TTC
Moyen(s) de paiement

[FOOTER OBLIGATOIRE]  
N° Ticket | Date/Heure
Signature numérique (hash)
```

**3.5.4. Réimpression**

* **Accès** : Managers, Caissiers, Administrateurs
* **Mention obligatoire** : "DUPLICATA" visible avec numéro duplicata
* **Traçabilité** : Log de réimpression enregistré
* **Limite** : Période de conservation des données

#### 3.6. Traçabilité et logs - JET⭐

**3.6.1. Enregistrement des actions**

Chaque action de caisse génère un enregistrement :

* **Utilisateur** : Identification du caissier
* **Horodatage** : Précision à la seconde
* **Action** : Type d'opération effectuée
* **Données** : Détail complet de la transaction

**3.6.2. Table Logs (audit NF525)**

| Champ           | Type         | Rôle NF525                      |
| --------------- | ------------ | ------------------------------- |
| `id`            | int(11)      | **Identifiant unique log**      |
| `user_id`       | varchar(255) | **Traçabilité utilisateur**     |
| `action`        | text         | **Type d'action effectuée**     |
| `function`      | varchar(50)  | **Fonction système appelée**    |
| `log_date`      | datetime     | **Horodatage précis**           |
| `signature`     | text         | **Empreinte de validation**     |
| `current_hash`  | varchar(64)  | **Hash action actuelle**        |
| `previous_hash` | varchar(64)  | **Chaînage avec log précédent** |

Le JET (journal d'évènements techniques) est consultable et téléchargeable depuis l'onglet Ventes > JET

**🛒 Gestion des commandes**

* ORDER\_PICKUP- Commande retirée
* ORDER\_DELETE- Commande supprimée
* UNPAID\_ORDER\_DELETE- Commande non payée supprimée
* CANCEL\_ENTRY- Annulation d'entrée

**💰 Gestion des prix**

* PRICE\_MODIFY- Modification de prix
* DISCOUNT\_ITEM- Remise sur article
* DISCOUNT\_GLOBAL- Remise globale

**🛍️ Gestion du panier**

* CART\_VIEW- Consultation panier
* CART\_UPDATE- Mise à jour panier
* CART\_GLOBAL- Action globale panier

#### 📚 Documentation du système JET

**🔗 Système de chaînage blockchain**

**Principe :** Chaque log est lié au précédent par un hash cryptographique, créant une chaîne inviolable.

* **Hash actuel :**&#x45;mpreinte SHA-256 de toutes les données du log
* **Hash précédent :**&#x52;éférence au hash du log précédent
* **Signature :**&#x53;ignature cryptographique des données

*📍 Toute modification d'un log casse la chaîne et est détectable.*

**📊 Hash de contrôle d'export**

**Définition :** Empreinte numérique calculée sur l'ensemble des données exportées.

**Utilité :**

* Vérifier l'intégrité du fichier exporté
* Prouver qu'aucune modification n'a eu lieu
* Garantir la conformité lors d'audits

*💡 Comme un "cachet de cire numérique" pour vos exports.*

**🔍 Vérification d'intégrité**

**Processus :** Contrôle automatique de toute la chaîne de logs.

**Vérifications effectuées :**

* Continuité du chaînage entre logs
* Validité des signatures cryptographiques
* Intégrité des hash calculés
* Rapport détaillé des anomalies

*⚠️ Une chaîne brisée indique une tentative de falsification.*

**📋 Format d'export CSV**

**Contenu du fichier :**

* Métadonnées d'export (date, utilisateur, type)
* Dictionnaire des codes d'action
* Données complètes des logs
* Statistiques de l'export
* Hash de contrôle pour vérification

*🎯 Format prêt pour audits et conformité réglementaire.*

Une vérification automatique de la chaîne est possible depuis la page JET. Vous pouvez trier le journal d'évènements techniques par utilisateur, date ou code fonction.

***

### 4. Module Bornes de Commande ⭐

#### 4.1. Interface client autonome

**4.1.1. Caractéristiques**

* **100% autonome** : Aucune intervention requise
* **Interface tactile** : Optimisée pour écran tactile
* **Catalogue dynamique** : Synchronisé avec back-office
* **Multilangue** : Support plusieurs langues si configuré

**4.1.2. Processus de commande**

```
Accueil → Sélection articles → Panier → Paiement → Confirmation
   ↓           ↓              ↓        ↓         ↓
Catalogue → Quantités → Récapitulatif → CB/Comptoir → Ticket
```

#### 4.2. Gestion des commandes

**4.2.1. Types de paiement**

* **Paiement comptoir** : Statut "Non payée" → Traitement en caisse
* **Paiement CB borne** : Statut "Payée" → Traitement direct
* **Validation automatique** : Intégration API paiement

**4.2.2. Synchronisation temps réel**

* **Transmission immédiate** : Commande visible en caisse instantanément
* **Statuts partagés** : Mise à jour temps réel (non payée/payée/faite)
* **Base unique** : Même table de données que caisse manuelle

#### 4.3. Intégration avec la caisse

**4.3.1. Workflow intégré**

```
BORNE → Commande créée → CAISSE (Panel Préparations)
   ↓                           ↓
Paiement CB → Transaction → Validation/Ticket
   ↓                           ↓  
Archivage ← ← ← ← ← ← ← ← Clôture
```

**4.3.2. Traçabilité unifiée**

* **Même processus** : Validation et archivage identiques
* **Même numérotation** : Tickets séquentiels unifiés
* **Mêmes logs** : Table d'audit commune
* **Mêmes clôtures** : Inclus dans rapports automatiques

***

### 5. Gestion des Stocks et Articles

#### 5.1. Administration des articles

**5.1.1. Création/modification**

* **Interface** : Onglet "Articles" du back-office
* **Saisie manuelle** : Tous champs modifiables
* **Import codes-barres** : Scan direct dans champ dédié
* **Validation** : Contrôles obligatoires (prix, TVA)

**5.1.2. Informations requises**

```
- Nom article (obligatoire)
- Prix TTC (obligatoire)  
- Taux TVA (obligatoire)
- Code-barres (optionnel)
- Catégorie (optionnel)
- Stock initial (si gestion activée)
- Statut actif/inactif
```

#### 5.2. Gestion des stocks

**5.2.1. Activation optionnelle**

* **Par défaut** : Gestion stock désactivée
* **Activation** : Par article individuellement
* **Contrôle** : Vérification disponibilité à la vente
* **Alertes** : Stock bas configurable

**5.2.2. Mouvement de stock**

* **Décrémentation automatique** : À chaque vente validée
* **Correction manuelle** : Via back-office (tracée)
* **Inventaire** : Mise à jour globale possible
* **Historique** : Tous mouvements tracés

#### 5.3. Codes-barres et scanning

**5.3.1. Support technique**

* **Format** : QR Code principalement
* **Compatibilité** : Codes-barres standards
* **Saisie** : Champ dédié dans interface caisse
* **Recherche** : Correspondance automatique article

**5.3.2. Workflow scanning**

```
Scan code → Recherche BDD → Article trouvé → Ajout panier
     ↓              ↓             ↓            ↓
Code lu → Correspondance → Quantité → Validation
```

***

### 6. Système de Clôtures ⭐

#### 6.1. Clôtures automatiques

**6.1.1. Programmation**

* **Quotidienne** : Tous les jours à 00h00 (minuit)
* **Mensuelle** : Premier jour du mois à 00h00
* **Annuelle** : Premier janvier à 00h00
* **Exécution** : Script automatisé (cron)

**6.1.2. Contenu rapport automatique**

Basé sur l'exemple fourni (Rapport #194) :

```
1. EN-TÊTE
- Numéro clôture incrémental
- Période (date début/fin)
- Date génération

2. RÉSUMÉ VENTES  
- Total brut TTC des ventes
- Total TTC des remboursements  
- Total TTC net
- Total net TVA
- Total net des ventes HT

3. DÉTAILS TVA
- Par taux (5.5%, 10%, 20%...)
- Montant TVA par taux

4. MÉTHODES PAIEMENT
- Nombre transactions par moyen
- Total par moyen de paiement
- Répartition complète

5. DONNÉES HASHAGE ⭐
- Hash précédent (chaînage)
- Hash actuel (intégrité)
- Signature cryptographique
```

#### 6.2. Clôtures manuelles

**6.2.1. Droits d'accès**

* **Managers** : Clôture manuelle autorisée
* **Administrateurs** : Clôture manuelle autorisée
* **Caissiers** : Clôture manuelle interdite
* **Période** : Configurable (journée, période personnalisée)

**6.2.2. Déclenchement manuel**

* **Interface** : Back-office, section clôtures
* **Validation** : Confirmation obligatoire
* **Génération** : Rapport identique aux automatiques
* **Traçabilité** : Utilisateur et horodatage enregistrés

#### 6.3. Sécurisation et intégrité ⭐

**6.3.1. Système de hashage**

* **Hash précédent** : Référence clôture antérieure
* **Hash actuel** : Empreinte données actuelles
* **Chaînage cryptographique** : Intégrité de la séquence
* **Signature** : Validation authentifique inaltérable

**6.3.2. Immutabilité**

* **Données figées** : Aucune modification post-clôture
* **Archive automatique** : Sauvegarde immédiate
* **Table Closures** : Stockage permanent sécurisé
* **Accès lecture seule** : Consultation uniquement

***

### 7. Gestion Multi-Utilisateurs et Rôles

#### 7.1. Système de rôles

**7.1.1. Niveaux d'accès**

| Rôle               | Caisse    | Clôtures        | Gestion Articles | Administration |
| ------------------ | --------- | --------------- | ---------------- | -------------- |
| **Caissier**       | ✅ Complet | ❌ Lecture seule | ❌ Lecture seule  | ❌ Aucun        |
| **Manager**        | ✅ Complet | ✅ Manuelle      | ✅ Complet        | ⚠️ Partiel     |
| **Administrateur** | ✅ Complet | ✅ Complète      | ✅ Complet        | ✅ Complet      |

**7.1.2. Permissions détaillées**

**Caissier** :

* Encaissement et validation ventes
* Consultation stocks et prix
* Génération tickets clients
* Accès panel préparations

**Manager** :

* Toutes permissions caissier
* Clôtures manuelles
* Gestion catalogue articles
* Consultation rapports
* Réimpression tickets

**Administrateur** :

* Toutes permissions précédentes
* Configuration système
* Gestion utilisateurs et rôles
* Accès logs complets
* Paramétrage intégrations

#### 7.2. Traçabilité utilisateurs

**7.2.1. Journalisation**

* **Connexions** : Horodatage et IP
* **Actions** : Toute modification tracée
* **Responsabilité** : Identification utilisateur obligatoire
* **Audit** : Historique complet conservé

**7.2.2. Sécurité sessions**

* **Durée** : 8 heures maximum
* **Inactivité** : Déconnexion automatique
* **Concurrent** : Une session par utilisateur
* **Tokens** : Régénération périodique

***

### 8. Rapports et Statistiques

#### 8.1. Rapports automatiques

**8.1.1. Types disponibles**

* **Rapport journalier** : Ventes du jour
* **Rapport mensuel** : Synthèse mensuelle
* **Rapport annuel** : Bilan année complète
* **Rapport TVA** : Détail par taux TVA

**8.1.2. Contenu standardisé**

* **Totaux** : HT, TVA, TTC
* **Répartition paiements** : Par moyen utilisé
* **Articles** : Meilleures ventes
* **Performances** : Évolution période

#### 8.2. Statistiques temps réel

**8.2.1. Tableaux de bord**

* **Ventes jour** : Chiffre actuel
* **Transactions** : Nombre et montant
* **Moyens paiement** : Répartition live
* **Top articles** : Meilleures ventes

**8.2.2. Exports**

* **Format** : CSV, PDF, Excel
* **Période** : Configurable
* **Contenu** : Détaillé ou synthèse
* **Automatisation** : Envoi email programmé

***

### 9. Intégrations et API

#### 9.1. Passerelles de paiement

**9.1.1. SumUp**

* **Type** : Intégration API REST
* **Validation** : Automatique
* **Webhook** : Retour statut temps réel
* **Sécurité** : HTTPS + clés API

**9.1.2. Smile\&Pay**

* **Type** : Intégration API REST
* **Validation** : Automatique
* **Webhook** : Retour statut temps réel
* **Sécurité** : HTTPS + clés API

**9.1.3. Satispay**

* **Type** : Intégration API REST
* **Validation** : Automatique
* **Webhook** : Retour statut temps réel
* **Sécurité** : HTTPS + clés API

#### 9.2. Flux de données sécurisés

**9.2.1. Communications**

* **Chiffrement** : TLS 1.2 minimum
* **Authentification** : Clés API sécurisées
* **Timeout** : Gestion déconnexions
* **Retry** : Reprise automatique erreurs

**9.2.2. Journalisation API**

* **Appels** : Tous échanges logged
* **Erreurs** : Traçabilité complète
* **Performance** : Monitoring temps réponse
* **Sécurité** : Tentatives d'accès malveillantes

***

### 10. Conformité NF525

#### 10.1. Exigences respectées

**10.1.1. Traçabilité ⭐**

* **Transactions** : Horodatage précis
* **Utilisateurs** : Identification obligatoire
* **Modifications** : Logs avant/après
* **Intégrité** : Hash de validation

**10.1.2. Inaltérabilité ⭐**

* **Données figées** : Post-validation
* **Hash cryptographique** : SHA-256
* **Chaînage** : Clôtures liées
* **Signatures** : Authentification

**10.1.3. Clôture ⭐**

* **Automatique** : Quotidienne garantie
* **Manuelle** : Droits contrôlés
* **Complétude** : Toutes transactions
* **Archivage** : Permanent sécurisé

**10.1.4. Archivage et immutabilité ⭐**

* **Conservation** : Données figées dans table `transactions`
* **Format** : Non altérable post-validation
* **Accès** : Lecture seule via interface dédiée
* **Métadonnées** : Ticket complet figé (adresse, SIRET, signature)
* **Restauration** : Réimpression possible avec mention duplicata

**10.1.5. Signature électronique conforme ⭐**

* **Signature complète** : Stockée dans champ `signature` (varchar 255)
* **Chaînage** : `current_hash` et `previous_hash` pour intégrité séquentielle
* **Extrait ticket** : **Positions 3, 7, 13, 19 uniquement** (exigence NF525)
* **Affichage** : 4 caractères sur ticket client (ex: "A3F7")
* **Vérification** : Reconstitution possible via signature complète

#### 10.2. Processus d'audit

**10.2.1. Mise à disposition**

* **Données** : Export formaté standard
* **Logs** : Accès complet historique
* **Documentation** : Procédures formalisées
* **Support** : Accompagnement technique

**10.2.2. Vérifications possibles**

* **Cohérence** : Totaux et détails
* **Intégrité** : Validation hash
* **Complétude** : Absence de trous
* **Traçabilité** : Piste d'audit complète

***

### 11. Évolutions et Maintenance

#### 11.1. Gestion des mises à jour

**11.1.1. Déploiement**

* **Centralisé** : Mise à jour serveur unique
* **Impact** : Aucune interruption client
* **Validation** : Tests pré-déploiement
* **Rollback** : Retour version antérieure

**11.1.2. Évolutions fonctionnelles**

* **Roadmap** : Planification documentée
* **Compatibilité** : Maintien conformité NF525
* **Formation** : Accompagnement utilisateurs
* **Documentation** : Mise à jour continue

#### 11.2. Support utilisateur

**11.2.1. Assistance technique**

* **Disponibilité** : Horaires définis
* **Canaux** : Téléphone, email, chat
* **Compétences** : Formation spécialisée
* **Escalade** : Niveaux support définis

**11.2.2. Formation**

* **Initiale** : Prise en main complète
* **Continue** : Nouvelles fonctionnalités
* **Documentation** : Guides utilisateur
* **Vidéos** : Tutoriels en ligne

***

*Document établi dans le cadre de la certification NF525*\
*Version : 2.0*\
*Date : \[Date actuelle]*\
*Responsable : \[Votre nom]*
