diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..32368e4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Enuxia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 97fb158..d673dc6 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,236 @@ -### Enuxia E_Invoice +# Enuxia E-Invoice -Facturation électronique française pour ERPNext via SuperPDP +Application open source de facturation électronique française pour **Frappe Framework et ERPNext v16**. -### Installation +Enuxia E-Invoice connecte les factures de vente et d’achat standards d’ERPNext aux services de facturation électronique de **SuperPDP**. -You can install this app using the [bench](https://github.com/frappe/bench) CLI: +> **État du projet :** développement actif et tests en environnement de laboratoire. +> Un audit de sécurité, de conformité réglementaire et de configuration comptable reste nécessaire avant toute utilisation en production. + +## Fonctionnalités + +### Factures de vente + +* Utilisation des factures de vente standards ERPNext +* Génération des données sémantiques EN 16931 +* Conversion au format UBL +* Validation des factures générées +* Envoi des factures par l’intermédiaire de SuperPDP +* Enregistrement de l’identifiant distant SuperPDP +* Protection contre les doubles envois +* Synchronisation des statuts +* Historique des événements de transmission +* Gestion des identifiants et informations de routage françaises +* Recherche dans l’annuaire français de facturation électronique + +### Factures fournisseurs + +* Synchronisation incrémentale des factures reçues +* Synchronisation manuelle depuis l’interface ERPNext +* Synchronisation automatique horaire +* Protection contre les synchronisations concurrentes avec Redis +* Archivage des données sémantiques EN 16931 +* Archivage du document original +* Rapprochement fournisseur par identifiant fiscal +* Correspondance des articles, taxes, entrepôts et comptes comptables +* Prévisualisation de la facture d’achat +* Création d’une facture d’achat ERPNext en brouillon +* Protection contre les doublons +* Restauration de l’échange entrant lorsqu’une facture d’achat brouillon est supprimée + +### Intégration ERPNext + +* Workspace dédié à la facturation électronique +* Configuration des comptes de facturation électronique +* Intégration aux factures de vente +* Intégration aux factures d’achat +* Gestion des identifiants électroniques des clients +* Accès aux documents reçus depuis les factures d’achat +* Application visible dans le Desk Frappe v16 +* Sidebar et icône Desk dédiées + +## Prérequis + +* Frappe Framework v16 +* ERPNext v16 +* Une installation Bench compatible +* Redis +* Un compte SuperPDP +* Des identifiants d’API SuperPDP + +ERPNext est déclaré comme dépendance obligatoire et doit être installé avant Enuxia E-Invoice. + +## Installation + +Depuis une installation Bench Frappe/ERPNext v16 existante : ```bash -cd $PATH_TO_YOUR_BENCH -bench get-app $URL_OF_THIS_REPO --branch version-16 -bench install-app enuxia_einvoice +bench get-app \ + --branch version-16 \ + https://git.enuxia.fr/enuxia-public/enuxia_einvoice.git ``` -### Contributing - -This app uses `pre-commit` for code formatting and linting. Please [install pre-commit](https://pre-commit.com/#installation) and enable it for this repository: +Installer l’application sur un site : ```bash -cd apps/enuxia_einvoice -pre-commit install +bench --site votre-site.example \ + install-app enuxia_einvoice ``` -Pre-commit is configured to use the following tools for checking and formatting your code: +Construire les assets et appliquer les migrations : -- ruff -- eslint -- prettier -- pyupgrade +```bash +bench build --app enuxia_einvoice -### License +bench --site votre-site.example migrate + +bench --site votre-site.example clear-cache +``` + +Redémarrer les services lorsque le mode de déploiement l’exige : + +```bash +bench restart +``` + +## Configuration initiale + +Après l’installation : + +1. Ouvrir l’application **Facturation électronique** depuis le Desk. +2. Ouvrir **Comptes de facturation électronique**. +3. Créer un compte `Electronic Invoicing Account`. +4. Sélectionner la société ERPNext concernée. +5. Choisir l’environnement SuperPDP. +6. Renseigner les identifiants d’API SuperPDP. +7. Tester la connexion. +8. Configurer les identifiants électroniques de la société et des clients. +9. Configurer les correspondances comptables des factures fournisseurs. + +Les identifiants et jetons SuperPDP sont propres à chaque site. Ils ne sont pas inclus dans ce dépôt. + +## Envoi d’une facture client + +L’envoi s’effectue depuis une facture de vente ERPNext validée. + +L’application : + +1. contrôle les données nécessaires ; +2. construit la représentation EN 16931 ; +3. convertit la facture au format UBL ; +4. valide le document ; +5. transmet la facture à SuperPDP ; +6. enregistre le suivi dans `Electronic Invoice Exchange`. + +Les factures déjà envoyées sont protégées contre les doubles transmissions. + +## Synchronisation des factures reçues + +Les factures reçues sont synchronisées automatiquement par le scheduler horaire. + +Une synchronisation manuelle est également disponible depuis : + +```text +Facturation électronique +→ Échanges électroniques +→ Facturation électronique +→ Synchroniser les factures reçues +``` + +La synchronisation crée ou met à jour des documents `Electronic Invoice Exchange`. + +Elle ne valide pas automatiquement les écritures comptables. + +Les factures d’achat ERPNext sont toujours créées en statut **Brouillon** et doivent être contrôlées par un utilisateur autorisé avant validation. + +## Développement + +Appliquer les migrations : + +```bash +bench --site votre-site.example migrate +``` + +Construire les assets : + +```bash +bench build --app enuxia_einvoice +``` + +Lancer les tests : + +```bash +bench --site votre-site.example run-tests \ + --app enuxia_einvoice +``` + +Le projet contient notamment des tests pour : + +* les appels à l’API SuperPDP ; +* la génération EN 16931 ; +* la conversion UBL ; +* la validation des factures ; +* le workflow d’envoi ; +* la synchronisation entrante ; +* les calculs de facture d’achat ; +* les correspondances fournisseurs et articles ; +* la protection contre les doublons ; +* l’historique des événements ; +* la sécurité des URLs de documents ; +* les identifiants d’entreprise français. + +## Sécurité + +Ne publiez jamais dans les issues, logs ou pull requests : + +* les secrets client SuperPDP ; +* les jetons d’accès ; +* les jetons de rafraîchissement ; +* des factures de production ; +* des données personnelles ; +* des informations confidentielles de clients ou fournisseurs ; +* des fichiers de configuration privés ; +* des clés privées. + +Les identifiants doivent être configurés dans l’interface ERPNext et stockés dans les champs protégés de Frappe. + +Les vulnérabilités sensibles ne doivent pas être publiées dans une issue publique. Elles doivent être signalées directement aux mainteneurs Enuxia. + +## Données et conformité + +Cette application facilite le transport et le traitement de données de facturation électronique. + +Elle ne garantit pas, à elle seule, la conformité : + +* comptable ; +* fiscale ; +* juridique ; +* réglementaire ; +* RGPD ; +* organisationnelle. + +Chaque déploiement doit être contrôlé selon : + +* l’organisation concernée ; +* sa configuration comptable ; +* sa plateforme de dématérialisation partenaire ; +* les exigences françaises et européennes applicables ; +* ses obligations de sécurité et de protection des données. + +## État du projet + +Le projet est actuellement destiné : + +* au développement ; +* aux démonstrations ; +* aux tests en laboratoire ; +* à la préparation de pilotes encadrés. + +Il n’est pas encore déclaré prêt pour un déploiement en production sans audit complémentaire. + +## Licence + +Ce projet est distribué sous licence MIT. + +Copyright © 2026 Enuxia contributors. -mit