URL: https://linuxfr.org/news/sortie-de-tryton-5-0 Title: Sortie de Tryton 5.0 Authors: Cédric Krier palm123, Maxime Richez, Julien Jorge, Davy Defaud, Nicolas Évrard, Oliver et Nils Ratusznik Date: 2018年10月09日T23:58:46+02:00 License: CC By-SA Tags: tryton, erp et postgresql Score: 33 La première version de [[Tryton]] avec une prise en charge de longue durée (*long term support*) vient de sortir ce 1er octobre 2018. Tryton est un [progiciel de gestion intégré](https://fr.wikipedia.org/wiki/Progiciel_de_gestion_int%C3%A9gr%C3%A9) (_aka_ PGI ou ERP) écrit majoritairement en Python (et un peu de JavaScript). Il suit une [[architecture trois tiers]] et tourne par défaut sur [PostgreSQL](https://www.postgresql.org/) et [SQLite](https://sqlite.org/) (pour les tests). Différents clients légers peuvent être utilisés : application native, application Web ou script. Tryton est fourni de base avec plus de 130 modules couvrant largement les besoins de l’entreprise (achat, vente, facturation, stock, projet, comptabilité...)  ---- [Annonce de la sortie](https://discuss.tryton.org/t/tryton-release-5-0/711) [Démo](http://www.tryton.org/download#demo) [LinuxFr.org : Sortie de la 4.8](https://linuxfr.org/news/sortie-de-tryton-4-8) [Nouveau site Web](http://www.tryton.org/) [Documentation](http://docs.tryton.org/en/5.0/) ---- C’est la première version de Tryton qui ne prend uniquement en charge que [Python 3](https://en.wikipedia.org/wiki/History_of_Python#Version_3), mais également la première version qui a un [support étendu de cinq ans](https://discuss.tryton.org/t/release-process/395). Grâce à l’effort de la communauté et le financement de la fondation, le site Web a pu être complètement refait afin d’être plus parlant et de mieux présenter les fonctionnalités aux visiteurs. Changements pour le développeur =========== File Transactionnelle --------------------- Un besoin récurrent pour les grandes installations est de pouvoir exécuter certaines tâches lourdes de manière asynchrone. Mais Tryton repose fortement sur le mécanisme de transaction de la base de données pour garantir la cohérence des données. Du coup, il n’est pas facile d’utiliser un outil externe pour cette gestion s’il ne prend pas au moins en charge le protocole [_Two‐phase commit_](https://en.wikipedia.org/wiki/Two-phase_commit_protocol). Pour ce faire, Tryton embarque maintenant une file de tâches gérée par la base de données. Ceci est possible grâce aux fonctionnalités [LISTEN](https://www.postgresql.org/docs/current/static/sql-listen.html)/[NOTIFY](https://www.postgresql.org/docs/current/static/sql-notify.html) et aux [_advisory locks_](https://www.postgresql.org/docs/current/static/explicit-locking.html#ADVISORY-LOCKS). Le postage d’une tâche se fait simplement en appelant n’importe quelle méthode d’une classe en passant par l’attribut `__queue__`. La tâche sera alors exécutée par un « _worker_ », s’il y en a un, ou bien à la fin de la transaction. Chaque « _worker_ » utilise une reserve de processus (_pool_) pour effectuer les tâches (afin de contourner le [GIL](https://en.wikipedia.org/wiki/Global_interpreter_lock "Global interpreter lock")). Notifications en temps réel --------------------------- Le serveur est maintenant capable d’envoyer des messages au client grâce à un [bus](https://fr.wikipedia.org/wiki/Bus_informatique). Le client fait du [_long polling_](https://fr.wikipedia.org/wiki/Server_push#Long_polling) pour recevoir ceux‐ci. Un premier usage de ce mécanisme est l’envoi de notifications qui sont des messages courts avec une priorité. C’est un nouveau besoin depuis que Tryton peut exécuter des tâches asynchrones, et donc il faut pouvoir pousser un retour à l’utilisateur. Nouvelle gestion de session --------------------------- Un mécanisme de double expiration des sessions est ajouté. Par défaut, une session expire maintenant après trente jours. Mais certaines opérations comme poster une facture ou approuver un paiement requièrent une session "fraîche" sinon une nouvelle est créée. Une session fraîche est une session qui n’a pas eu de période sans requête plus longue que cinq minutes depuis sa création. Une protection supplémentaire a été ajoutée : celle-ci consiste à supprimer toutes les sessions d’un utilisateur quand celui-ci change son mot de passe. Le client Web stocke maintenant la session dans le _[localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage)_ du navigateur. Du coup, elle peut être partagée par différents onglets. Récursive CTE ------------- Tryton possède déjà une optimisation pour la recherche sur les arbres (opérateurs `parent_of` et `child_of`), c’est l’[imbrication d’ensembles](https://fr.wikipedia.org/wiki/Imbrication_d%27ensembles), mais elle nécessite une configuration pour stocker des données pré‐calculées. Désormais, quand une telle opération se fera sur une table qui n’est pas configurée, Tryton générera une requête SQL qui utilise une [_Common Table Expression_](https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL#Common_table_expression) récursive si la base les gère, au lieu de faire la récursion en Python. Ceci permet d’éviter plusieurs allers‐retours entre le serveur et la base de données. Meilleurs index --------------- Il est maintenant possible de définir des index composés d’expressions SQL en plus des colonnes. Ces index peuvent aussi être partiels via une clause `WHERE`, ce qui permet d’optimiser des requêtes basées sur des conditions constantes. Changements pour l’utilisateur ============================== Design ------ L’interface a été retravaillée pour être plus simple et plus légère. Le jeu d’icônes [Material Design](https://material.io/tools/icons/) de Google remplace celui du [thème Tango](http://tango.freedesktop.org/Tango_Icon_Library), ce qui permet une meilleure intégration dans le client Web. De plus, pour le client bureau, nous avons utilisé la base [GtkApplication](https://developer.gnome.org/gtk3/stable/GtkApplication.html) qui permet une meilleure intégration au bureau. Par exemple, le menu de l’application est affiché dans la barre de titre globale.   Pièces jointes -------------- Dans Tryton, il est possible d’attacher des fichiers à n’importe quel document. Jusqu’à présent, il fallait passer par une fenêtre surgissante (_popup_), désormais une liste déroulante propose d’ouvrir ou de télécharger les fichiers directement ou d’en ajouter un nouveau. La fenêtre surgissante existe toujours pour la gestion plus complexe.  Client Web ---------- Le développement du client Web a démarré plus tard que celui du client bureau et, du coup, il lui manque quelques fonctionnalités mineures. Chaque nouvelle version tente de combler cet écart et celle‐ci n’y fait pas exception. Le menu contextuel des champs relation de la version bureau qui permet d’ouvrir l’enregistrement, de lancer une action, etc., est implémenté par un clic avec `Ctrl`. Le _widget_ de sélection de fichier n’ouvre plus une fenêtre surgissante avec un `input[select]` mais directement la fenêtre surgissante de sélection. Le client Web prend également en charge les langues qui s’écrivent de droite à gauche.  Le menu de gauche peut être également caché sur les écrans larges quand on a besoin de plus d’espace. L’URL de la page s’adapte en fonction de l’onglet ouvert. Cette URL permet de rouvrir le même onglet et peut ainsi être partagée entre utilisateurs. Comme la session est stockée dans le navigateur, ouvrir une telle URL ne requiert pas de se ré‐authentifier. Les boutons de navigation dans l’historique peuvent être utilisés, l’onglet correspondant sera rouvert ou sélectionné s’il est déjà présent. C’est pratique quand on ferme un onglet par erreur. Le client Web, comme le client bureau, tente de limiter le nombre d’onglets ouverts. Il sélectionne un onglet similaire s’il existe au lieu d’en ouvrir un nouveau. Comptabilité ------------ Le paramétrage des comptes sur le produit a été supprimé pour ne laisser que l’option de la catégorie comptable. Cela simplifie et permet une meilleure séparation des droits et rôles. Dans certains pays, les plans comptables changent fréquemment. Pour ce faire, les comptes peuvent avoir une période de validité. Il est maintenant possible d’envoyer automatiquement depuis Tryton des factures sur le portail [Chorus Pro](http://chorus-pro.gouv.fr/). En France, les fournisseurs d’entités publiques ont l’obligation de déposer leurs factures sur ce portail. Un état final a été ajouté aux relances de paiement afin de pouvoir faire le suivi après le dernier niveau. C’est‐à‐dire quand des procédures juridiques prennent le relai. Il désormais possible de configurer la date (début ou fin du mois) à laquelle les mouvements d’amortissement seront postés. Achats et ventes ---------------- Il est maintenant possible de définir une période de grâce entre le moment où une vente ou un achat est confirmé et le moment où Tryton va en effectuer le traitement. Ceci permet d’annuler la confirmation et de corriger ou annuler le document. C’est très pratique car, souvent, c’est quelques secondes après la confirmation que l’on remarque une erreur. Abonnements ----------- Certains abonnements ou locations nécessitent la réservation d’un actif de la société. Il est maintenant possible d’encoder cette information sur l’abonnement et Tryton s’assurera que l’actif n’est loué qu’une seule fois. Production ---------- Tryton peut maintenant gérer les productions [externalisées](https://fr.wikipedia.org/wiki/Externalisation). Il créera pour chacune un ordre d’achat qui sera comptabilisé dans le coût de production. Stock et inventaire ------------------- Un assistant fournit une nouvelle manière de faire l’inventaire d’un emplacement en comptant les produits. L’assistant commence avec tous les produits à zéro et incrémente la quantité chaque fois qu’un produit est compté. À la fin, l’assistant calcule la différence afin de faire les mouvements de correction. Il est à présent possible de limiter la quantité maximum d’un lot. Cette fonctionnalité permet de définir un lot comme un numéro de série grâce à une quantité maximale de un.