Documentation10 min de lecture

Visas, séquences, QR codes et assistants : quatorze briques serveur

Le module OCA `base_tier_validation_confirm_auth` (dépôt `server-ux`, version 18.0.1.0.0, licence AGPL-3) exige que le réviseur **ressaisisse son mot de passe** avant d'approuver une validation sensible, en s'appuyant sur le mécanisme de contrôle de sécurité d'Odoo. Treize autres modules traitent le transfert de visa, les séquences, les QR codes et les assistants multi-étapes.

Documents tamponnés et classés sur un bureau

Les circuits de validation d'Odoo Community reposent sur un module communautaire générique. Il approuve et rejette, et c'est tout : pas de transfert, pas de correction de réviseur, pas de condition calculée, pas de contrôle d'identité.

Cinq modules l'étendent. Neuf autres apportent des briques que l'on retrouve partout : séquences, QR codes, assistants, plages de dates. Ils terminent le dépôt server-ux.

Résumé

Cinq modules étendent les circuits de validation : le mot de passe exigé avant approbation, la correction des réviseurs d'une revue déjà créée, la définition en Python de la condition de déclenchement et de la liste des réviseurs, le transfert d'une décision à un tiers, et le déclenchement d'une action serveur à l'approbation ou au rejet.

Trois modules traitent les séquences et les dates : une clé de contrôle ajoutée en fin de numéro, une périodicité de réinitialisation autre qu'annuelle, et le rattachement des écrans de plages de dates à la comptabilité.

Deux modules traitent les QR codes : retrouver instantanément n'importe quel enregistrement en scannant un code depuis la barre de navigation, et le classement automatique de PDF déposés dans un dossier surveillé, rattachés à l'enregistrement correspondant.

Quatre modules enfin sont des briques pour développeurs : un gabarit de message listant les enregistrements créés, un socle d'assistants multi-étapes, le remplacement d'un texte de gabarit sans surcharge, et le rejeu des recalculs de champs dans la modification en masse.

L'essentiel

  • Le mot de passe exigé avant d'approuver une validation sensible.
  • Le transfert d'un visa à une autre personne.
  • La correction des réviseurs d'une revue déjà créée.
  • Une condition de déclenchement en Python pour un palier.
  • Une clé de contrôle en fin de numéro de séquence.
  • Une réinitialisation de séquence mensuelle ou autre, pas seulement annuelle.
  • Un QR code pour retrouver un enregistrement.
  • Des PDF classés automatiquement depuis un dossier surveillé.

Ce que ces modules ajoutent à l'instance

FamilleModulesNombre
Validationbase_tier_validation_confirm_auth, base_tier_validation_correction, base_tier_validation_formula, base_tier_validation_forward, base_tier_validation_server_action5
Séquences et datessequence_check_digit, sequence_reset_period, date_range_account3
QR codesdocument_quick_access, document_quick_access_folder_auto_classification2
Briques développeurmail_message_destiny_link_template, multi_step_wizard, template_content_swapper, server_action_mass_edit_onchange4

Les menus : Paramètres ▸ Technique ▸ Validations par niveau ▸ Tier Review Correction, Facturation ▸ Configuration ▸ Plages de dates et ses trois sous-menus, Paramètres ▸ Technique ▸ Actions ▸ Document Quick Access Rule, Documents to process, Paramètres ▸ Technique ▸ Interface utilisateur ▸ Template Content Mappings.

Les circuits de validation, complétés

Le moteur de validation par paliers est traité dans sa fiche dédiée. Cinq modules lui ajoutent ce qui manque à un usage réel.

Un circuit de validation qui ne permet pas de transférer une décision bloque dès le premier congé. C'est la raison la plus fréquente pour laquelle une organisation abandonne les visas après trois mois : le directeur financier part en vacances, et les factures attendent.

  • base_tier_validation_forward permet à un validateur de transférer sa décision à une autre personne, au lieu de devoir approuver ou rejeter lui-même. Version 2.0.2, la plus avancée du lot.
  • base_tier_validation_correction permet de corriger les réviseurs assignés à une revue déjà créée, sans modifier la définition d'origine ni relancer le processus.
  • base_tier_validation_confirm_auth exige que le réviseur ressaisisse son mot de passe avant d'approuver — le contrôle d'identité attendu sur un visa engageant.
  • base_tier_validation_formula permet de définir en Python la condition de déclenchement d'un palier et la liste des réviseurs. C'est ce qui permet un circuit dépendant du montant, du client ou de la marge.
  • base_tier_validation_server_action déclenche une action serveur dès qu'un palier est approuvé ou rejeté, et permet une validation automatique.

Les deux derniers transforment le moteur : sans eux, un circuit est une suite de paliers fixes ; avec eux, c'est une règle métier.

Les séquences et les plages de dates

sequence_check_digit (LGPL-3) ajoute aux séquences la possibilité de calculer et d'ajouter une clé de contrôle en fin de numéro, selon un algorithme choisi.

Une clé de contrôle sur un numéro de pièce ou de colis divise les erreurs de saisie manuelle : un chiffre transposé rend le numéro invalide à la frappe, au lieu de pointer silencieusement vers une autre pièce.

sequence_reset_period (LGPL-3) permet de choisir la périodicité de réinitialisation d'une séquence — mensuelle, trimestrielle — au lieu de la seule réinitialisation annuelle du standard.

date_range_account est une colle : elle rattache les écrans de plages de dates à la comptabilité, sous Facturation ▸ Configuration ▸ Plages de dates, avec la génération, les plages et leurs types. Elle n'ajoute aucun modèle propre.

Les plages de dates sont la brique sur laquelle reposent plusieurs modules de reporting et le mois fiscal du dépôt analytique : les déclarer au bon endroit évite de les chercher dans les menus techniques.

Retrouver un document par son QR code

document_quick_access permet de retrouver n'importe quel enregistrement — facture, contact, produit — en scannant un QR code ou un code-barres qui encode son identifiant, depuis un bouton de la barre de navigation. Les règles de correspondance vivent sous Paramètres ▸ Technique ▸ Actions ▸ Document Quick Access Rule.

document_quick_access_folder_auto_classification va plus loin : il scanne les fichiers PDF déposés dans un dossier surveillé à la recherche d'un QR code, et rattache chaque fichier à l'enregistrement Odoo correspondant. Menu Documents to process.

Le second répond à un flux papier bien réel : un bon de livraison imprimé avec un QR code, signé par le client, scanné en pile le soir, et chaque page retrouve sa commande sans intervention. C'est la numérisation d'un circuit papier sans ressaisie.

Le module dépend d'un composant du dépôt d'échanges de données (edi_component_oca) pour la surveillance du stockage.

Quatre briques pour développeurs

  • mail_message_destiny_link_template (LGPL-3) fournit un gabarit de message réutilisable affichant, dans la conversation d'un enregistrement source, la liste des enregistrements créés ou modifiés depuis lui, avec un lien.
  • multi_step_wizard fournit un socle d'assistants multi-étapes : un mécanisme et une vue de base, avec navigation Suivant et Retour.
  • template_content_swapper permet de remplacer un texte affiché par un gabarit — rapport PDF, page du site, portail — sans développer de surcharge. Référentiel sous Paramètres ▸ Technique ▸ Interface utilisateur ▸ Template Content Mappings.
  • server_action_mass_edit_onchange étend la modification en masse : pour chaque champ configuré, une option permet de rejouer les recalculs du champ avant d'écrire sa nouvelle valeur.

Le dernier corrige un défaut discret de la modification en masse : changer un champ sur deux cents enregistrements sans rejouer les recalculs laisse les champs dépendants inchangés — un taux de taxe modifié sans recalculer les montants, par exemple.

Le remplacement de texte dans un gabarit est le plus utile des quatre pour une PME : renommer « Bon de commande » en « Confirmation de commande » sur un rapport ne devrait pas demander un module.

Limites connues

  • Les cinq extensions de validation dépendent du moteur base_tier_validation : installer le moteur d'abord, et n'ajouter les extensions qu'en réponse à un besoin constaté.
  • Une condition de déclenchement en Python est du code dans la base : elle échappe au contrôle de version et aux tests. À documenter et à limiter.
  • Le transfert de visa déplace la responsabilité : la traçabilité du transfert doit être vérifiée avant de s'y fier pour un visa engageant.
  • La correction des réviseurs contourne la définition d'origine : à restreindre, sous peine de vider le circuit de son sens.
  • Changer la périodicité d'une séquence en cours d'exercice produit des numéros qui se chevauchent : le faire à une date de rupture.
  • Le classement automatique de PDF dépend de edi_component_oca : une brique du dépôt d'échanges de données.
  • document_quick_access encode un identifiant d'enregistrement dans un QR code : un code imprimé reste valide et lisible par quiconque y a accès, donc à ne pas poser sur un document destiné à sortir de l'entreprise sans y réfléchir.

Identité technique

Les quatorze modules viennent du dépôt OCA server-ux, branche 18.0 — dont les 35 modules sont désormais tous documentés ici. Onze sont en AGPL-3, trois en LGPL-3. Les dépendances : base_tier_validation pour les cinq extensions, date_range et account pour les plages de dates, barcode_action et edi_component_oca pour les QR codes, server_action_mass_edit et onchange_helper pour la modification en masse.

L'autre fiche du dépôt : paramétrer sans développer.

Questions fréquentes

Que faire quand un validateur est en congé et bloque les factures ?

base_tier_validation_forward permet au validateur de transférer sa décision à une autre personne. C'est la raison la plus fréquente pour laquelle une organisation abandonne les visas après trois mois : le directeur financier part en vacances, et tout attend.

Peut-on exiger une confirmation d'identité avant d'approuver dans Odoo ?

Oui : base_tier_validation_confirm_auth exige que le réviseur ressaisisse son mot de passe avant d'approuver, via le mécanisme de contrôle de sécurité d'Odoo. C'est le contrôle attendu sur un visa engageant — un poste laissé ouvert ne suffit plus à valider.

Peut-on faire dépendre un circuit de validation du montant ?

Oui, avec base_tier_validation_formula, qui permet de définir en Python la condition de déclenchement d'un palier et la liste des réviseurs. C'est ce qui transforme un circuit fixe en règle métier. Attention : c'est du code dans la base, qui échappe au contrôle de version.

Peut-on retrouver un document Odoo en scannant un QR code ?

Oui : document_quick_access ouvre l'enregistrement correspondant depuis un bouton de la barre de navigation, et document_quick_access_folder_auto_classification classe automatiquement les PDF déposés dans un dossier surveillé. Un bon de livraison signé, scanné en pile, retrouve sa commande sans ressaisie.

Peut-on réinitialiser une séquence Odoo chaque mois ?

Oui, avec sequence_reset_period, qui permet de choisir la périodicité au lieu de la seule réinitialisation annuelle du standard. À faire à une date de rupture : changer la périodicité en cours d'exercice produit des numéros qui se chevauchent.

Se faire accompagner

Les circuits de validation sont l'exemple parfait d'un outil abandonné faute de deux détails : personne ne peut transférer son visa, et personne ne peut corriger un réviseur mal assigné. Les deux modules qui corrigent cela pèsent quelques kilo-octets.

Nous installons donc le moteur de visas avec ses extensions de transfert et de correction dès le départ, et nous réservons les conditions en Python aux cas qui le justifient vraiment — parce que du code dans la base est du code que personne ne relit. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Les circuits de validation d'Odoo Community approuvent et rejettent, et c'est tout : pas de transfert, pas de correction de réviseur, pas de contrôle d'identité. Cinq modules les complètent, neuf autres apportent séquences à clé de contrôle, QR codes et assistants. Parlons de vos circuits de visa.

Documentation OCAOdoo CommunityErgonomie

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo