Sortie de Tryton 5.0

Posté par  (site web personnel, Mastodon) . Édité par palm123, Maxime Richez, Julien Jorge, Davy Defaud, Nicolas Évrard, Oliver et Nils Ratusznik. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
33
23
oct.
2018
Bureautique

La première version de Tryton avec une prise en charge de longue durée (long term support) vient de sortir ce 1ᵉʳ octobre 2018.

Tryton est un progiciel de gestion intégré (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 et SQLite (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é…)

Tryton

Sommaire

C’est la première version de Tryton qui ne prend uniquement en charge que Python 3, mais également la première version qui a un support étendu de cinq ans.
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. 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/NOTIFY et aux 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).

Notifications en temps réel

Le serveur est maintenant capable d’envoyer des messages au client grâce à un bus. Le client fait du 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 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, 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 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 de Google remplace celui du thème Tango, ce qui permet une meilleure intégration dans le client Web.
De plus, pour le client bureau, nous avons utilisé la base GtkApplication qui permet une meilleure intégration au bureau. Par exemple, le menu de l’application est affiché dans la barre de titre globale.

Client Web
Client bureau

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.
Attachement

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.
Client Web avec langue 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. 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. 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.

Aller plus loin

  • # Travail de longue haleine

    Posté par  . Évalué à 10.

    Perso ça me fait très plaisir de voir que Tryton continue et évolue.

    Je trouve que c'est une belle histoire du libre, ça vaudrait le coup dans une dépêche de nous en dire un peu plus sur le business modèle, la fondation et la communauté professionnelle qui travaille autour de tryton.

    • [^] # Re: Travail de longue haleine

      Posté par  (site web personnel, Mastodon) . Évalué à 9.

      Je trouve que c'est une belle histoire du libre, ça vaudrait le coup dans une dépêche de nous en dire un peu plus sur le business modèle, la fondation et la communauté professionnelle qui travaille autour de tryton.

      Certes on pourrait faire une dépêche, ça n'empêche pas de répondre brièvement.

      Concernant le business model, il n'y en pas. Tout comme il n'y a pas de business model pour linux, gcc ou vim. Par contre Red Hat, Microsoft et autres ont chacun leur propre business model et linux y trouve sa place. Ainsi dans Tryton, il y a notre société (B2CK) qui fourni un support de second niveau et fait quelques intégrations ; des sociétés qui ont construit des verticalisations (assurance, gestion forestière) ; une société qui fait de l'hébergement matiné de conseil ; et pas mal de prestataires de service (qui créent ou non leurs propres modules). Mis à part un exemple, tous ceux que je connais qui utilisent Tryton contribuent d'une façon ou d'une autre.

      À propos de la fondation, ce n'est en fait pas bien compliqué: elle est là pour assurer la pérennité des infrastructures et la préservation de la marque. Elle reçoit quelques dons et utilise l'argent pour promouvoir le projet (conférence, re-design du site web). Elle n'a pas la propriété du droit d'auteur et le projet ne demande pas de signer un CLA. Je tiens aussi à ajouter qu'elle ne dirige pas les développements, c'est la communauté et les patches qu'elle fourni (ou non) qui font le taf.

      Concernant la communauté professionnelle, on sait qu'elle est plus étendue que ce que le site de tryton montre (certains ne veulent pas y apparaitre, d'autres ne pense pas que ce soit nécessaire, etc). On ne va pas se mentir: elle pourrait être plus grande mais de façon générale quand on y rentre, on y reste.

      • [^] # Re: Travail de longue haleine

        Posté par  . Évalué à 4.

        Le modèle d'un ensemble de prestataire professionnels est celui de logiciel comme joomla! ou plone. J'ai pu observer ces deux dernier d'un peu plus près et je trouve que parmi les difficulté dans ce modèle il y a :

        • c'est un peu toujours les même qui contribuent au cœur (avec un certain turn-over), alors qu'il y a beaucoup de consommateurs, exigeants mais donnant peu. (passagers clandestins) ;
        • le système de plugin, fait qu'on peine à moderniser le cœur et surtout à le simplifier, car ça apporterai des incompatibilités, et beaucoup de plugin, très utiles, n'ont plus de mainteneur. De fait Plone (je parle de Plone 3 à l'époque) et Joomla (là je parle de l'actuel) sont un énorme entassements de couches qui rendent la maîtrise de l'ensemble très difficile.

        En positif, apparemment ces projets continuent à soulever de l'enthousiasme, avec une communauté, certes pas hégémonique, mais qui continue bien et crée des emplois (ouais c'est discutable de mettre ça comme ça).

        Il me semble que, avec une fondation/association en place, la mise en place d'un label (payant en monnaie ou en travail), à différent niveau (or/argent/bronze) peut être un moyen d'avoir plus d'investissement sur le cœur et de diminuer les passagers clandestins.

        • [^] # Re: Travail de longue haleine

          Posté par  (site web personnel, Mastodon) . Évalué à 4.

          À l'inverse de plone (qui le seul projet que je connais un peu des deux), on arrive à moderniser le cœur mais ce sont les intégrateurs qui doivent suivre le rythme. Ils le font assez lentement (on sait par exemple que des versions non supportées de Tryton depuis 4 ans tournent encore faute de volonté du côté du client final de payer pour une mise à jour). D'autres intégrateurs forcent dans leur contrat une mise à jour annuelle ou bisannuelle.

          Oui l'association pourrait probablement lever des fonds et payer à temps partiel quelqu'un pour bosser sur Tryton. L'idée de la labellisation sur différent niveau selon un contribution en monnaie / temps me semble un peu bizarre. Au final, cette labellisation a pour but d'aider les gens qui débarquent à choisir un partenaire or il n'y a rien de plus frustrant que de tomber sur un naze qui a un niveau gold juste parce qu'il paie.

          Des membres de la communauté ont proposé la contribution via une dîme volontaire sur les projets réalisés. C'est aussi une bonne idée mais qui ne voit pas le jour.

          Le problème du financement d'un projet libre et communautaire reste assez difficile je trouve (évidemment dès que ce n'est pas communautaire, c'est beaucoup plus facile :P).

  • # Docker en prod ?

    Posté par  (site web personnel) . Évalué à 1.

    Je le note à tester et pourquoi pas une mise en prod juste pour la partie facturation.

    Est-ce que le container docker est utilisable en prod ? Ou bien plutôt conseillé pour les tests ?

    Born to Kill EndUser !

    • [^] # Re: Docker en prod ?

      Posté par  (site web personnel, Mastodon) . Évalué à 5.

      L'image docker peut être utilisée en production, elle utilise le serveur uwsgi. Mais il est conseillé de la mettre derrière un proxy inverse comme nginx ou lighttpd. Si la taille de l'entreprise est assez grande, il faudra probablement un peu de paramétrage comme augmenté le nombre de processus ou bien faire de la répartition de charge. Il est aussi conseillé par les développeurs de PostgreSQL de ne pas containériser la base de données.

      • [^] # Re: Docker en prod ?

        Posté par  (site web personnel) . Évalué à 1. Dernière modification le 24 octobre 2018 à 09:52.

        Il y aura 2 à 3 utilisateurs simultanés avec peu de volume. Du coups je pense que le container par défaut devrait le faire. Je passe par traefik pour faire la répartition.

        Merci pour les infos

        Born to Kill EndUser !

      • [^] # Re: Docker en prod ?

        Posté par  . Évalué à 2.

        Il est aussi conseillé par les développeurs de PostgreSQL de ne pas containériser la base de données.

        A première vue je peux voir pour la diminution de perf due à l'abstraction et sans doute quelques risques de corruption en plus en cas de crash. Ont-ils d'autres raisons ?

  • # Tests

    Posté par  . Évalué à 6.

    Il suit une architecture trois tiers et tourne par défaut sur PostgreSQL et SQLite (pour les tests)

    Comme vous faites pour utiliser SQLite pour les tests vu qu'on ne retrouve pas toutes les fonctions PostgreSQL que vous utilisez (comme le NOTIFY/LISTEN cité dans cette dépêche).

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Tests

      Posté par  (site web personnel, Mastodon) . Évalué à 7.

      Pour la plus part du temps, on a un contournement quand une fonctionnalité n'existe pas sur un "backend".
      Et si un test requière une fonctionnalité spécifique qui n'est pas disponible pour le "backend" testé alors on le passe.

  • # Export du fichier des écritures comptables - Fichier FEC

    Posté par  (site web personnel, Mastodon) . Évalué à 4.

    Bonjour,

    est-ce que Tryton permet l'export du fichier des écriture comptables (dit "fichier FEC") qui est devenu obligatoire en France pour toute société ?

    Ce fichier doit avoir un format particulier et doit répondre au cahier des charges du FISC :
    http://bofip.impots.gouv.fr/bofip/9028-PGP

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.