# 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*\
\&#xNAN;*Version : 2.0*\
\&#xNAN;*Date : \[Date actuelle]*\
\&#xNAN;*Responsable : \[Votre nom]*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://arpelin.gitbook.io/arpelin/dsf-dossier-de-specifications-fonctionnelles-arpelin.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
