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 blockchainreglements-20251101-20251130.json: Règlements de la période avec signatures blockchainlogs-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"
}
]
}
]
siret: Numéro SIRET de l'établissementnumero: Numéro unique de la facturedate: Date de création (ISO 8601)total_HT: Montant total hors taxestotal_TTC: Montant total toutes taxes comprisessignature: Signature blockchain de cette factureprevious_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..."
}
]
siret: Numéro SIRET de l'établissementfacture: Numéro de la facture associéeuser: Utilisateur ayant enregistré le règlementlibelle: Description du règlementdate_creation: Date d'enregistrement du règlement (ISO 8601)date_reglement: Date effective du règlement (ISO 8601)montant: Montant du règlementmode: Mode de règlement (CB, Espèces, Chèque, Virement, etc.)signature: Signature blockchain de ce règlementprevious_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..."
}
]
timestamp: Date et heure de l'action (ISO 8601)user: Utilisateur ayant effectué l'actionaction: Type d'actionmodel: Type d'objet modifié (Facture, Reglement, Patient, etc.)instance: Identifiant de l'objet modifiédiff: Détail des modifications (format JSON)commentaire: Commentaire optionnelsignature: Signature blockchain de ce logprevious_signature: Signature du log précédent
🗒️ L’archive contient une application web qui permet de consulter facilement le fichier JSON des logs :
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édenteprevious_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.htmldans votre navigateur web (Chrome, Firefox, Safari, Edge...)
- Deux modes possibles :
- Les résultats s'affichent en quelques secondes
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.





