URL: https://linuxfr.org/news/premier-module-libre-de-facturation-electronique-pour-odoo Title: Premier module libre de facturation électronique pour Odoo Authors: Alexis de Lattre Xavier Teyssier, Benoît Sibaud, Nÿco et palm123 Date: 2016年03月25日T16:00:03+01:00 License: CC By-SA Tags: odoo, erp, facture, pdf, facturation et dématérialisation Score: 41 Certains d'entre-vous ont peut-être créé leur société et ont alors été confrontés aux joies de la comptabilité... Cette dépêche les intéressera particulièrement ! Le développement de ce premier module libre de facturation électronique pour [Odoo](https://www.odoo.com/) est le fruit d'une histoire amusante que je vais vous raconter. ![Logo Odoo](https://upload.wikimedia.org/wikipedia/commons/a/a7/Odoo_Official_Logo.png "Logo Odoo") **NdM. :** pour mémoire, Odoo est un progiciel libre de gestion intégré, anciennement connu sous le nom d'OpenERP. ---- [Annonce détaillée sur les factures électroniques ZUGFeRD](http://www.akretion.com/blog/akretion-publishes-zugferd-modules-to-create-and-import-electronic-invoices-with-odoo) [Annonce précédente sur l'import de factures PDF "normales"](http://www.akretion.com/blog/akretions-christmas-present-for-the-odoo-community) [Odoo Community Association](https://odoo-community.org/) [Odoo](https://www.odoo.com/) [Le code des modules sur Github](https://github.com/OCA/account-invoicing/pull/122) ---- # Le problème Un week-end de septembre 2015, quelques jours avant la date limite de dépôt de la [liasse fiscale](https://fr.wikipedia.org/wiki/Liasse_fiscale) (la déclaration fiscale qui sert de base au calcul de l'impôt sur les sociétés) de notre SS2L [Akretion](http://www.akretion.com/), un de mes associés, développeur Odoo lui aussi, termine sa comptabilité de l'année écoulée pour pouvoir éditer son bilan. « Terminer » n'est pas le bon terme, je devrai plutôt dire « commence sa comptabilité », en tout cas en ce qui concerne la saisie des factures fournisseur ! Saisir ses factures fournisseur dans son logiciel comptable, même s'il s'appelle Odoo, n'est pas une partie de plaisir, et il a donc attendu la dernière minute pour s'y mettre. Il doit notamment saisir de nombreux billets de train achetés sur [Capitaine Train](https://www.captaintrain.com/) dont il a l'historique dans sa boite mail avec le justificatif de paiement sous forme de fichier PDF en pièce jointe. # La solution Et comme tout bon développeur, il est un peu paresseux. Plutôt que de se mettre à la tâche, il tente de développer un script pour automatiser ce travail ingrat et rébarbatif. Après quelques heures de travail, le script est au point : il prend les reçus PDF de CapitaineTrain, extrait le texte du PDF, récupère les informations pertinentes (date, descriptif du trajet, montant) via des expressions régulières et créé la facture fournisseur dans Odoo ! Si cela marche pour les billets de train, cela doit aussi pouvoir marcher pour les factures de téléphone mobile, d'accès Internet, de loyer, etc. Autant de factures qu'il faut saisir chaque mois dans son logiciel comptable ! L'idée est lancée. # Le produit Elle aboutit au développement du module Odoo *account_invoice_import* annoncé comme un [cadeau de Noël](http://www.akretion.com/blog/akretions-christmas-present-for-the-odoo-community) à la communauté Odoo et disponible sur le projet [account-invoicing](https://github.com/OCA/account-invoicing/pull/122) de l'[Odoo Community Association](https://odoo-community.org/) (OCA). Ce module utilise la bibliothèque Python [invoice2data](https://github.com/m3nu/invoice2data) qui contient des templates pour de [nombreux fournisseurs](https://github.com/m3nu/invoice2data/tree/master/invoice2data/templates), dont beaucoup de [fournisseurs français](https://github.com/m3nu/invoice2data/tree/master/invoice2data/templates/fr). Dès janvier 2016, j'équipe nos clients utilisateurs d'Odoo de ce nouveau module et je leur montre comment ils peuvent importer leurs factures de téléphone mobile, d'électricité, leurs billets de train... Ainsi que les factures de notre SS2L ! Un mois après le déploiement de ce nouveau module, ma société met à jour son serveur Odoo vers une nouvelle version et adopte un nouveau moteur de rapport pour les factures. La mise en page de la facture est complètement revue, et les expressions régulières destinées à extraire les informations de la facture PDF pour créer la facture fournisseur dans Odoo ne fonctionnent plus ! # Un obstacle Après à peine un mois d'utilisation, on atteint déjà les limites du système : tout changement dans la mise en page de la facture du fournisseur impose de mettre à jour le template d'import. Pour éviter cet écueil, il faut passer à la facturation électronique ! Et me voilà reparti à coder. Dans la seconde partie de la dépêche vous apprendrez certains principes de la facturation électronique, en particulier le format ZUGFeRD, et comment il est possible de générer et d'importer des factures électroniques ZUGFeRD dans Odoo. Aujourd'hui, quand une entreprise reçoit une facture PDF par courriel, le comptable va visualiser la facture avec son logiciel de lecture PDF préféré et, ensuite, il va saisir manuellement la facture dans le logiciel comptable de l’entreprise pour générer les écritures comptables dans le journal d’achats. Pour éviter cela, il faut automatiser l’import des factures fournisseur dans le logiciel comptable, ce qui nécessite d’avoir des données structurées sur la facture afin de pouvoir l’importer de façon fiable dans le logiciel comptable de l’entreprise. Le format PDF est parfait pour visualiser ou imprimer une facture, mais il ne fournit pas d’informations structurées sur la facture. Pour cela, mieux vaut utiliser un fichier XML. Il existe deux standards internationaux pour les factures XML : - [Universal Business Language](http://ubl.xml.org/) (UBL) normalisé par l’[OASIS](https://www.oasis-open.org/), - [Cross Industry Invoice](http://tfig.unece.org/contents/cross-industry-invoice-cii.htm) (CII) publié par [UN/CEFACT](http://www.unece.org/cefact), une agence des Nations-Unies. La solution serait-elle d’envoyer des factures sous forme de fichiers XML par courriel ? Peut-être pas. En effet, si votre entreprise est équipée d’un logiciel comptable moderne capable de générer des factures sous forme de fichiers XML, comment être sûr que vos clients possèdent un logiciel comptable moderne capable de lire de telles factures XML ? Et si votre client ne peut pas lire vos factures, il y a fort à parier que vous ne serez jamais payé ! C’est pour résoudre ce problème que le standard [ZUGFeRD](http://www.ferd-net.de/front_content.php?idcat=231&changelang=4) a été inventé. Ce standard fournit une solution intelligente et pragmatique à ce problème : il définit une façon d’intégrer un fichier XML à l’intérieur de la facture PDF. Avec l’arrivée de la norme [PDF/A-3](https://en.wikipedia.org/wiki/PDF/A) en 2012, il est devenu possible d’intégrer un ou plusieurs fichiers de n'importe quel format à l’intérieur d’un document PDF (sous Acrobat Reader, il faut cliquer sur l’icône représentant un trombone pour lister les fichiers intégrés dans le document PDF ; si vous connaissez des lecteurs PDF libres capables de lister les fichiers intégrés, signalez-les en commentaire !). Ainsi, une facture au format ZUGFeRD est simplement une facture PDF avec un fichier XML embarqué au format Cross Industry Invoice (CII). L’Allemagne est l’auteur du standard ZUGFeRD et elle incite ses entreprises à envoyer leurs factures dans ce format. À partir du 1er janvier 2017, les grandes entreprises fournisseur de l’État français auront l’obligation d’envoyer à l’administration des factures électroniques, et cette obligation sera [étendue progressivement](http://www.economie.gouv.fr/vous-orienter/numerique/secteur-public-facture-electronique-obligatoire-en-2017) à toutes les entreprises jusqu’au 1er janvier 2020. En France, le FNFE-MPE (Forum National de la Facture Electronique et des Marchés Publics Electroniques, qui n'a pas encore de site web !) coordonne la standardisation des factures électroniques et adopte la [même approche technique](http://docplayer.fr/3120866-Facture-mixte-collaboration-franco-allemande-pourquoi-comment-cyrille-sautereau-admarel-conseil-fnfe-mpe.html) que le standard ZUGFeRD : un fichier XML standardisé embarqué dans une facture PDF. Ce [communiqué de presse](http://www.institutionnel.gs1.fr/Communiques-de-presse/La-facturation-electronique-dans-l-agenda-numerique-commun-France-Allemagne) annonce que la France et l’Allemagne travaillent ensemble pour adopter un standard commun pour les factures électroniques. Certains pays, comme par exemple la Belgique, ont choisi une autre approche : le format belge de facture électronique [e-fff](http://www.e-fff.be/FR/protocol.php) spécifie que la facture est un fichier XML au format UBL à l'intérieur duquel on intègre le fichier PDF. C'est exactement l'inverse de l'approche franco-allemande ! Si vous n'avez pas de logiciel comptable moderne capable de lire la facture XML, vous ne pourrez même pas accéder au fichier PDF pour voir la facture, c'est la double peine ! Une histoire belge en quelque sorte... Aux Pays-Bas, la norme UBL a également été choisie ; la pratique semble être d'envoyer à la fois le fichier XML et le fichier PDF côte à côte. J'ai développé le support de la norme ZUGFeRD à la fois pour la génération des factures client (module *account\_invoice\_zugferd*) et pour l’import des factures fournisseur (module *account\_invoice\_import\_zugferd*) dans Odoo. Ces développements sont publiés sous la licence AGPL dans le projet [account-invoicing](https://github.com/OCA/account-invoicing/pull/122) de l’[Odoo Community Association](https://odoo-community.org/) (OCA) sur Github. Ce [screencast](http://public.akretion.com/odoo_electronic_invoicing_zugferd.ogv) en anglais (22 minutes, format OGV) offre une démonstration de l’utilisation d’Odoo à la fois pour l'import de factures PDF normales, mais aussi pour la génération de factures électroniques ZUGFeRD et leur import dans Odoo. J'ai également développé un module d'import de factures XML au format UBL (module *account\_invoice\_import\_ubl*). Ces modules sont la première implémentation libre de la norme ZUGFeRD en Python. C'est aussi à ma connaissance la première implémentation libre de la norme ZUGFeRD dans un ERP opensource. Le module utilise la bibliothèque Python [PyPDF2](http://mstamy2.github.io/PyPDF2/) pour l'ajout du fichier XML à l'intérieur du fichier PDF et pour toutes les autres contraintes imposées sur le fichier PDF par la norme ZUGFeRD. C'est une alternative au module Odoo propriétaire [itis\_account\_invoice\_zugferd](https://www.odoo.com/apps/modules/8.0/itis_account_invoice_zugferd/) vendu au prix de 800 € sur l'App Store d'Odoo et qui nécessite Java pour la génération de la facture ZUGFeRD. Les factures électroniques sont amenées à remplacer les factures papier, tout comme le courrier électronique est en passe de remplacer le courrier postal. Selon le gouvernement français, la généralisation de la facturation électronique devrait générer des économies de 335 millions d’euros pour les entreprises françaises et de 375 millions d'euros pour l’État (cf. cet [article](http://www.nextinpact.com/news/88350-l-etat-espere-gagner-375-millions-d-par-an-en-dematerialisant-sa-facturation.htm)).

AltStyle によって変換されたページ (->オリジナル) /