Skip to main content

Manuel administration fiscale

Téléchargement de l'export fiscal

La gestion des exports fiscaux se trouve dans la partie Préférences -> Comptabilité :

Capture d’écran 2025-09-25 à 15.06.32.png

L’interface présente tous les export générés depuis le début de l’utilisation du logiciel. L’utilisateur peut, via un bouton dédié, générer un nouvel export couvrant une période maximale d’un an. 

Capture d’écran 2025-11-14 à 14.22.34.png

Utilisation de l'export

Cette documentation décrit la procédure de vérification de l’intégrité et de l’authenticité d’un export fiscal généré par le logiciel.

Chaque archive contient toutes les factures et leurs lignes, les règlements et les journaux d’activité pour une période maximale d’un an.  Une signature Ed25519 garantit l’intégrité des données.

La période couverte est précisée dans le nom de l’archive.

Contenu de l'archive

Fichiers de données

  • export_20251101_20251130.zip : Archive contenant les données JSON
    • factures-20251101-20251130.json : Factures de la période avec signatures blockchain
    • reglements-20251101-20251130.json : Règlements de la période avec signatures blockchain
    • logs-20251101-20251130.json : Journaux d'activité de la période avec signatures blockchain

Fichiers de sécurité

  • export_20251101_20251130.zip.sig : Signature cryptographique Ed25519 de l'archive
  • export_20251101_20251130.zip.verify_key.pub : Clé publique pour vérifier la signature

Documentation

  • README.md : l'équivalent de cette documentation au format markdown
  • verifier_archive.html : Interface web de vérification
  • visualiser_logs.html : interface web facilitant la consultation des logs du fichier json

Structure des fichiers JSON


Note concernant les signatures : tous les enregistrements ne sont pas nécessairement signés. Les enregistrements créés avant la mise en place du système de signature auront des champs signature et previous_signature vides ou null.

factures-YYYYMMDD-YYYYMMDD.json

Tableau d'objets contenant les factures avec leurs lignes :

[
  {
    "siret": "12345678901234",
    "numero": "251100001",
    "date": "2025-01-15T10:30:00",
    "total_HT": "1250.00",
    "total_TTC": "1500.00",
    "signature": "aca7aaf2e5c93b0ee377...",
    "previous_signature": "",
    "lignes": [
      {
        "siret": "12345678901234",
        "facture": "251100001",
        "code": "2159815",
        "libelle": "Semelle orthopédique",
        "prixVente": "125.00",
        "prixUnitaireHT": "104.17",
        "totalHT": "104.17",
        "quantite": 1,
        "tva": "20.00"
      }
    ]
  }
]
Champs principaux :
  • siret : Numéro SIRET de l'établissement
  • numero : Numéro unique de la facture
  • date : Date de création (ISO 8601)
  • total_HT : Montant total hors taxes
  • total_TTC : Montant total toutes taxes comprises
  • signature : Signature blockchain de cette facture
  • previous_signature : Signature de la facture précédente (vide pour la première)
  • lignes : Tableau des lignes de facturation

reglements-YYYYMMDD-YYYYMMDD.json

Tableau d'objets contenant les règlements :

[
  {
    "siret": "12345678901234",
    "facture": "251100001",
    "user": "Dr. Martin",
    "libelle": "Règlement Carte Bancaire",
    "date_creation": "2025-01-15T10:35:00",
    "date_reglement": "2025-01-15T10:35:00",
    "montant": "1500.00",
    "mode": "CB",
    "signature": "ff187b00e19af92136bd...",
    "previous_signature": "aca7aaf2e5c93b0ee377..."
  }
]
Champs principaux :
  • siret : Numéro SIRET de l'établissement
  • facture : Numéro de la facture associée
  • user : Utilisateur ayant enregistré le règlement
  • libelle : Description du règlement
  • date_creation : Date d'enregistrement du règlement (ISO 8601)
  • date_reglement : Date effective du règlement (ISO 8601)
  • montant : Montant du règlement
  • mode : Mode de règlement (CB, Espèces, Chèque, Virement, etc.)
  • signature : Signature blockchain de ce règlement
  • previous_signature : Signature du règlement précédent

logs-YYYYMMDD-YYYYMMDD.json

Tableau d'objets contenant les journaux d'activité :

[
  {
    "timestamp": "2025-01-15T10:30:00",
    "user": "Dr. Martin",
    "action": "UPDATE",
    "model": "Facture",
    "instance": "251100001",
    "diff": "{\"status\": [\"brouillon\", \"validée\"]}",
    "commentaire": "Validation de la facture",
    "signature": "209e9cc27d6ebd9ccfbb...",
    "previous_signature": "ff187b00e19af92136bd..."
  }
]
Champs principaux :
  • timestamp : Date et heure de l'action (ISO 8601)
  • user : Utilisateur ayant effectué l'action
  • action : Type d'action 
  • model : Type d'objet modifié (Facture, Reglement, Patient, etc.)
  • instance : Identifiant de l'objet modifié
  • diff : Détail des modifications (format JSON)
  • commentaire : Commentaire optionnel
  • signature : Signature blockchain de ce log
  • previous_signature : Signature du log précédent

Note🗒️ L’archive contient une application web qui permet de consulter facilement le fichier JSON des logs :

Tous les enregistrements ne sont pas nécessairement signés. Les enregistrements créés avant la mise en place du système de signature auront des champs signature et previous_signature vides ou null.

Capture d’écran 2025-11-21 à 10.22.59.png

Système de sécurité

Signature cryptographique

L'archive utilise l'algorithme Ed25519 (courbes elliptiques) pour garantir :

  • L'authenticité : L'archive provient bien de votre système
  • L'intégrité : Aucune modification n'a été effectuée après génération

Blockchain

Chaque enregistrement (facture, règlement, log) contient :

  • signature : Hash cryptographique des données + signature précédente
  • previous_signature : Signature de l'enregistrement précédent

Ce chaînage garantit :

  • L'inaltérabilité : Impossible de modifier un enregistrement sans casser la chaîne
  • La non-répudiation : Impossible de supprimer ou insérer un enregistrement

Vérification de l'archive

Méthode 1 : Interface web (recommandée - aucune installation requise)

  1. Extrayez l'archive archive-fiscale-20251101-20251130.zip
  2. Ouvrez le fichier verifier_archive.html dans votre navigateur web (Chrome, Firefox, Safari, Edge...)
    Capture d’écran 2025-11-14 à 14.04.33.png
  3. Deux modes possibles :
    • Mode automatique : Si vous utilisez un serveur HTTP local (voir ci-dessous), les fichiers se chargent automatiquement
    • Mode manuel : Sinon, un bouton apparaît pour sélectionner les 3 fichiers
      Capture d’écran 2025-11-14 à 14.04.54.png
  4. Les résultats s'affichent en quelques secondes
    1. Exemple d’archive corrompue
      Capture d’écran 2025-11-14 à 14.05.15.png
    2. Exemple d’archive valide
      Capture d’écran 2025-11-14 à 14.14.44.png
Avantages : Aucune installation Python, interface graphique, fonctionne sur tous les systèmes

Pour le mode automatique (optionnel) :

# Dans le dossier de l'archive extraite
python3 -m http.server 8080
# Puis ouvrir: http://localhost:8080/verifier_archive.html

Méthode 2 : Vérification manuelle (experts)

1. Vérifier la signature Ed25519

import nacl.signing
import nacl.encoding

# Charger la clé publique
with open('export_20251101_20251130.zip.verify_key.pub', 'r') as f:
    verify_key_hex = f.read()
verify_key = nacl.signing.VerifyKey(verify_key_hex, encoder=nacl.encoding.HexEncoder)

# Charger les données
with open('export_20251101_20251130.zip', 'rb') as f:
    data = f.read()

# Charger la signature
with open('export_20251101_20251130.zip.sig', 'r') as f:
    signature_hex = f.read()
signature = bytes.fromhex(signature_hex)

# Vérifier
try:
    verify_key.verify(data, signature)
    print("✓ Signature valide")
except:
    print("✗ Signature invalide - Archive compromise")

2. Vérifier la blockchain

Pour chaque type de données (factures, règlements, logs), vérifier que :

signature_N = Hash(données_N + signature_N-1)

Consultez le fichier verifier_archive.html (source JavaScript) pour l'implémentation complète de la vérification de blockchain.

Support

Pour toute question concernant cette archive, contactez Présence Informatique.