myFAB Fondation

Module permettant d’initialiser de manière standard une base Open-Prod et apporter quelques amélioration à certains modules de base open-prod


Présentation

L'objectif du module permet d’exécuter de façon automatique la procédure d’initialisation d’une base de données juste après sa création grâce aux paramétrages de base et aussi grâce à l’installation des modules Open-prod.

Le setup de la base de données au démarrage d’un projet est ainsi grandement accéléré tout en réduisant le risque d'erreur et d'oubli. De plus, cela permet d'harmoniser l'initialisation des bases de données, rendant ainsi le suivi et la maintenance des projets plus efficaces.

image.png

Initialisation

1. Pré-requis

Avant d'installer myFAB Fondation ou tout autre module myfab, il convient de s'assurer que les sources ont été déployées sur le serveur.

Puisqu'il s'agit de conditionner une base de données, il est également impératif qu'une base de données ait été créée via la méthode « Create Database » du Gestionnaire de bases de données d'Open-Prod.

2. Installation myFAB Fondation

L'installation du module s'effectue depuis l'onglet Configuration > Application d'Open-Prod. Dans la barre de recherche, taper "my_fab". Le module myFAB Fondation sera présent si les sources myFAB ont bien été déployées. Cliquer sur "Activer" puis suivre les différentes étapes du déploiement directement dans la page Open-Prod.

image.png

Au lancement de la première installation, le module va directement lancer l'installation du module Comptabilité.

A mi parcours, la wizard suivante va vous demander de configurer vos options comptables (comme si vous installiez le module Comptabilité directement) :

image.png

image.png

L'installation de ce module peut être longue. Il ne faut pas interrompre le traitement tant que le chargement n'est pas terminé.

Après installation de la Comptabilité, le wizard suivant va s'afficher :

image.png

Installé dans tous les cas :

Lancer l'initialisation des données de base va ajouter les éléments suivants : 

Lancer l'initialisation des modules Open-Prod de base va lancer l'installation de modules essentiels pour une configuration standard d'Open-Prod.

3. Mise à jour et maintenance

Le wizard d'initialisation se déclenche automatiquement lors de la première installation du module. Il est possible de le relancer manuellement si par exemple vous avez oublié de cocher les cases. Pour cela allez dans paramètres>Technique>Actions>Assistant de configuration

Il suffit de filtrer les lignes sur le statut "A faire" puis "'Lancer". Cependant, attention il y a des risques d'importer les données en doublons... 

image.png

Export de configuration

1. Principe

Ce module inclus dans myFAB Fondation permet d'exporter facilement d'une base à une autre des paramétrages réalisées. Pour l'instant seule l'export de modèle est champ est fonctionnel. Il est prévue d'étendre cela aux Action serveur, Onchange, Fichier de paramètres (exemple stock, achat, planning, déclaration…), Vues.

2. Connexion 

Il est nécessaire d'établir la connexion entre les bases de données : 

image.png

3. Export

image.png


Fonctionnalités diverses

Ajout de séquences personnalisées pour les codes produits et références partenaires

Depuis une catégorie de produit vous pouvez cocher la case "A une séquence personnalisée" puis sélectionner la séquence souhaitée. (remarque : c'est à vous de gérer vos propres séquences depuis Paramètres>Séquences et identifiants>Séquences)

image.png

Depuis les partenaire > Congituration > Paramètres

image.png

image.png

si vous cochez "A une séquence personnalisée" vous pouvez soit

Ajout droit de modification sur le code produit et la référence partenaire

Aller dans Paramètres > Utilisateurs, sélectionner l'utilisateur à qui rajouter les droits et cocher ces deux cases dans la section "Droits des données techniques".

image.png

Re-plannification automatique des ordres de fabrication

Ajout de 2 champs sur le modèle ordre de fabrication :

Si un de ces champs est renseigné, lors de la modification d'un OF. Il sera replanifié automatiquement au plus tôt (si mf_planned_start_date) ou au plus tard (si mf_planned_end_date)

image.png

Cette fonctionnalité pourra être utilisée par exemple si un outil externe souhaite mettre à jour la planification Open-prod des OF. Il suffira alors qu'il mette à jour ces dates (via une API ou via myfab\_file interface.)

Paramètre pour interdire de produire plus que la quantité produite sur l'OT précédente

Il n’y a aucun paramétrage spécifique à faire, dès qu’on déclare une quantité produite sur un OT supérieur à la quantité de l’OT précédente (s’il y en a), un message d’avertissement (non bloquant) apparaît pour alerter qu’on s’apprête à produire plus que l’OT précédente.

Cette alerte n’apparaît que dans le Wizard de déclaration de production depuis l’OT de l’interface standard. Exemple :

Si dans les OT on coche la case « Interdire de produire plus que l'OT précédente ». il ne sera pas possible de produire plus que l’opération précédente.

Ce message bloquant s’applique quelque soit l’interface de déclaration mais ne se déclenche qu’à la fin de la déclaration

Ajout séquence sur options

Ajout d'un champs "Séquence" sur les options pour de les ordonner (par exemple lors de l'impression des options)image.png

Ajout de notes sur l'assistant de consommation d'étiquette

Logistique > Actions d'étiquettes > Consommation d'étiquette

image.png

Ajout option "Désactivé Mise à jour"

Ajout de la case "Désactiver la mise à jour" sur les objets "actions serveur" et modèle de conversion d'unité.

Si cette case est cochée et que ces enregistrements sont crées via un module, ces données ne serons pas mises à jour (comportement identique au cases similaires sur les objets "menu, actions de fenêtres ... ).

image.png

image.png

 

Version des commits

image.png

Pour connaître précisément les versions des commits OpenProd et myFAB installées sur votre serveur :

  1. Cliquez sur votre utilisateur (en haut à droite).
  2. Sélectionnez le menu « À propos de… ».

Vous pouvez également consulter l’historique des versions par lesquelles votre base est passée :

  1. Accédez à Paramètres > myFAB Configuration > Configuration des modules myFAB.
  2. Cliquez sur le bouton « Historique des mises à jour ».

image.png


Fiche de diagnostic myFAB

Une fiche de diagnostic au format Excel peut être générée afin d’obtenir une vue d’ensemble de votre base.

Pour y accéder :

  1. Allez dans Paramètres > myFAB Configuration > Configuration des modules myFAB.
  2. Cliquez sur le bouton « Fiche de diagnostic ».

Cette fiche ne contient aucune donnée métier.
Elle fournit uniquement : des statistiques sur la volumétrie des différentes tables, le nombre de personnalisations réalisées sur la base.

image.png

image.png

myFAB Gestionnaire de CRON

Le module myFAB Gestionnaire de CRON enrichit les fonctionnalités natives des actions planifiées (crons) dans Open‑Prod.
Il apporte un nouveau type de cron, des informations de diagnostic, des indicateurs d’exécution et des outils de simulation permettant d’optimiser la planification.
Le module est disponible à partir de la version v9.13.

⚠️(module bientôt en v10)

image.png

Nouveau type de cron : les “crons groupés”

Un cron groupé permet de regrouper plusieurs crons enfants sous une planification commune. Le groupe exécute ensuite ces crons enfants de manière séquentielle.

image.png

Les crons enfants sont automatiquement désactivés. Il n’est pas possible de les réactiver ni de les planifier individuellement : seul le cron groupé pilote leur exécution.

Ajout des statuts sur les crons

image.png

Pour les crons groupés, le statut affiché correspond à une synthèse des statuts de ses crons enfants.

Si un cron fait planter le système ou si le serveur Open‑Prod s’arrête brutalement, il peut conserver le statut “En cours” alors que son traitement n’est plus réellement actif.
(Astuce : si la fiche du cron est impossible à modifier, c’est qu’un processus est réellement en cours.)

Le statut du cron est un champ calculé : il n’est donc pas possible de filtrer ou trier sur ce champ.

Simuler les prochaines exécutions et les visualiser sur un planning

Le module permet de simuler les prochaines occurrences d’un cron en fonction :

Modes de calcul du temps

image.png

Modes de simulation

Vous pouvez effectuer une simulation :

Les occurrences simulées peuvent être affichées en :

Cela permet notamment de vérifier qu’aucune exécution ne se chevauche.

image.png

image.png

image.png

Analyse statistique du journal des crons. 

Pour faciliter l’analyse et les diagnostics :

Le bouton Montrer les lignes de log permet d’accéder directement aux logs.

Le nombre de lignes utilisées pour le calcul des statistiques peut être modifié.
⚠️ Une valeur trop élevée peut ralentir l’affichage.

image.png

Le nombre de lignes utilisées pour le calcul des statistiques peut être modifié.

Une valeur trop élevée peut ralentir l’affichage.

image.png

Lancement d'une action serveur

Il est désormais possible de créer un cron dédié à l’exécution d’une action serveur.
Cela permet d’automatiser rapidement certaines opérations techniques ou métiers.

image.png

Notification e‑mail en cas d’erreur (à venir)

Une future version du module permettra l’envoi automatique d’un e‑mail lorsqu’une action planifiée échoue.

Le principe sera le suivant :

Limitation actuelle :
Si le service Open‑Prod s’arrête brutalement, la notification ne sera pas envoyée.
Un service complémentaire est en cours d’étude pour pallier cette limitation.

myFAB Rapport docx

myFAB · Rapport DOCX — Référence rapide

Prérequis : pip install docxtpl docxcompose htmldocx · LibreOffice requis pour le mode PDF


Créer un paramétrage

Technique → Rapport DOCX → Configurations → Nouveau

Champ Valeur attendue Obligatoire
Nom du rapport Libellé affiché dans l'interface
Code rapport Identifiant technique unique, sans espaces — ex : declaration_conformite_ce
Modèle Modèle Odoo cible (ex : sale.order, mrp.production)
Champ nom fichier Champ Char du modèle utilisé pour nommer le fichier
Template DOCX Fichier .docx avec balises Jinja2
Préfixe Texte ajouté au début du nom de fichier généré
Mode de fusion composer (DOCX unique) · zip (un fichier/enregistrement) · pdf (via LibreOffice)
Nom fichier impression Formule Jinja — ex : {{ docs.name }}
Autoescape Activer si le template contient <, > ou &

Publier via le bouton Publier — tous les champs passent en lecture seule.
Pour modifier : Dépublier d'abord.


Syntaxe du template

Champs

{{docs.nom_du_champ}}
{{docs.relation_id.champ}}

Fonctions utilitaires

Fonction Description
{{spelled_out(docs.champ)}} Nombre en toutes lettres
{{formatdate(docs.champ)}} Date formatée (Babel, fr_FR par défaut)
{{fdate(docs.champ, "%d/%m/%Y")}} Date avec format personnalisé
{{fnum(docs.champ, " ", ",", 2)}} Numérique — fnum(val, sep_milliers, sep_décimal, décimales)
{{parsehtml(docs.champ)}} HTML → texte brut
{{p html2docx(docs.champ)}} HTML → sous-document Word
{{convert_currency(docs.champ, docs.currency_id)}} Montant avec devise
{{render_image(docs.champ, width=30, height=30)}} Image binaire (mm)
{{r rich_text(docs.champ)}} Texte enrichi
{{p add_subdoc(docs.champ)}} Sous-document DOCX binaire
{{replace_image('nom', docs.champ)}} Remplacement d'image dans le template

Langue surchargeable par fonction : {{formatdate(docs.champ, lang='en_US')}}


Boucles dans un tableau

Chaque directive {%tr %} doit occuper une ligne entière du tableau, avec une cellule fusionnée sur toute la largeur.

{%tr for line in docs.order_line_ids %}
  {{line.product_id.display_name}}  |  {{line.qty}}  |  {{line.price_unit}}
{%tr endfor %}

Conditions dans un tableau

Utiliser impérativement if / else / endif — deux blocs if séparés provoquent une TemplateSyntaxError.

{%tr for line in docs.order_line_ids %}
{%tr if not line.uom_qty %}
  [cellule fusionnée] {{line.product_id.display_name}}   ← ligne de section
{%tr else %}
  {{line.product_id.display_name}}  |  {{line.uom_qty}}  |  {{line.price_unit}}
{%tr endif %}
{%tr endfor %}

Ordre obligatoire : forifelseendifendfor

Préférer not line.champ à line.champ == 0 pour couvrir 0, 0.0, False et None.

La directive {%tr if %} et le contenu {{champ}} doivent être dans deux <w:r> séparés dans le XML Word — sinon le contenu ne s'affiche pas.


Mode PDF

Configurer le chemin LibreOffice dans Paramètres → Technique → Paramètres système :

OS Valeur
Linux /usr/bin/libreoffice
Windows C:\Program Files\LibreOffice\program\soffice.exe

Clé : default_libreoffice_path


Erreurs courantes

Erreur Cause Solution
TemplateSyntaxError: unknown tag 'endif' Deux blocs if séparés dans un for Remplacer par if / else / endif
Ligne fusionnée vide {%tr if %} et {{champ}} dans le même <w:r> Les séparer en deux runs distincts
Condition == 0 ignorée Le champ est un float (0.0 != 0) Utiliser not line.champ
Erreur 500 générique Erreur Python non affichée journalctl -u odoo -n 100 ou tail -f /var/log/odoo/odoo.log
PDF non généré LibreOffice absent ou mal configuré Installer + configurer default_libreoffice_path