Manuel administration fiscale Téléchargement de l'export fiscal La gestion des exports fiscaux se trouve dans la partie Préférences -> Comptabilité : 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 .   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 explorateur_archive.html : interface web facilitant la consultation des fichiers 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 Explorateur d'archive L’archive contient une application web qui permet de consulter les fichiers JSON : 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) Extrayez l'archive archive-fiscale-20251101-20251130.zip Ouvrez le fichier verifier_archive.html dans votre navigateur web (Chrome, Firefox, Safari, Edge...) 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 Les résultats s'affichent en quelques secondes Exemple d’archive corrompue Exemple d’archive valide 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.