Skip to main content

Personalisation

Séquences

Le menu Configuration > Personnalisation > Séquences permet d'accéder aux de numérotation automatique générée par Open-Prod dans plusieurs objet comme les ventes, les achats, les factures, les pièces comptables, ... À la création d'une base, les séquences sont pré-paramétrées pour garantir un démarrage immédiat de l'utilisateur. Par exemple, les commandes de vente seront numérotées SO0000XXX, les commandes d'achat PO0000XXX, etc, ... 

En-tête 

L'en-tête contient les informations générales de la séquence : 

  • Sonnom : pour identifier rapidement les séquences à l'usage, il est recommandé d'utiliser le nom de l'objet auquel la séquence s'applique comme nom ; 

  • La méthode d'implémentation : en implémentation standard, définie par défaut, dès qu'un objet lié tente de générer un numéro, le numéro suivant est utilisé puis la séquence s'incrémente–si pour une raison ou une autre, l'attribution du numéro est stoppée (contrôle bloquant, bug, ...), le numéro ne sera pas réutilisé. En implémentation sans écart, le numéro n'est transmis qu'une fois les contrôles passés, garantissant une attribution de numéros continus. Ainsi cela sert surtout lors de traitement SQL de masse comme un import par exemple. Cette seconde méthode peut cependant s'avérer plus lente. 
    L'implémentation sans écart n'empêche pas la présence de « trous » dans la numérotation en cas de suppression d'un enregistrement. 

Pour les factures et avoirs, la contrainte de séquence continue est implémentée directement dans le code : dès qu'une facture est validée (et donc numérotée), il devient impossible de la supprimer (mais on peut l'annuler si nécessaire). Il est donc inutile de sélectionner une implémentation sans écart. 

  • Le code de séquencement est un champ informatif qui indique, le cas échéant, à quel objet est liée la séquence. Il s'agit d'un champ technique utilisé dans le code d'Open-Prod. Il est recommandé de le laisser vide lorsqu'on crée une nouvelle séquence. 

  • Pour que la séquence soit sélectionnable, le champ actif doit être coché. 

Onglet « Séquence » 

Cet onglet contient les paramétrages de génération de la séquence. Une séquence est composée d'un préfixe, d'un numéro incrémental et d'un suffixe. Le préfixe et le suffixe peuvent comprendre des balises de code pour intégrer des éléments dynamiques à la séquence. Ce point est expliqué plus bas. 

 La numérotation suit ensuite le schéma [préfixe]numéro incrémental[suffixe], comme illustré ci-contre. 

Quatre paramètres supplémentaires peuvent être modifiés : 

  • La taille de la séquence, c'est-à-dire le nombre de caractères du numéro incrémental. Ce paramètre est généralement utilisé pour conserver une longueur de séquence fixe, pour des raisons pratiques : les recherches, la manipulation de données et les analyses nécessitant du retraitement de données sont facilitées. 

 Exemple : Dans le premier exemple de séquence du tableau ci-contre, la première facture sera numérotée « F1 » alors que dans le second exemple, elle sera numérotée « F0001 ». Plus la liste d'enregistrements s'allongera, plus la recherche sera précise à terme. 

La taille de la séquence ne sert qu'à démarrer avec plus de chiffres que le numéro incrémental : elle ne limite pas ce dernier. L'exemple 5 du tableau ci-contre montre qu'une séquence de taille 3 se poursuit correctement lorsque le numéro incrémental passe à 4 chiffres. 

  • L’étape, ou « pas » de l'incrémentation, détermine le nombre suivant qui sera généré. Elle généralement fixée à 1 pour éviter des « trous » dans la numérotation, mais elle peut servir dans certains cas particuliers. 

Exemple : une société utilise deux codifications de factures qui correspondent aux deux phases de ses prestations : commande de matériel et installation. Elle crée une première séquence avec un suffixe MAT ; 

  • Le nombre suivant est le prochain numéro qui sera généré dans la séquence. Il est mis à jour à chaque génération de numéro par le calcul : 

Numéro suivant = numéro généré + étape. 

  • L'option Utiliser des sous-séquences par intervalle de date permet de réinitialiser la séquence lors du passage d'une période à une autre. La gestion des sous-séquences est expliquée plus bas. 

 Onglet « Exercices » 

 En cours de rédaction, sera ajouté ultérieurement. 

Balises de code 

Les préfixes et suffixes de séquences peuvent inclure des balises de code qui remonteront des éléments temporels dynamique. Les balises disponibles sont listées dans la légende de l'onglet « Séquence ». 

La balise est à insérer telle quelle dans le préfixe (ou suffixe) : ce n'est que lors de la génération du numéro qu'elle sera remplacée par la valeur correspondante. La valeur de la balise est déterminée à partir de la date du jour. 

Exemple : en décembre 2019, un préfixe DOC%(year)s%(month)s donnera une séquence commençant par DOC201912... 

Une image contenant texte

Description générée automatiquement

Pour les problématiques liées aux numérotations de factures, une option spécifique existe, Séquences basées sur les dates comptables, qui peut être activée dans les paramétrages de facturation. 

Sous-séquences 

Dans certains cas, on peut souhaiter réinitialiser les numérotations au début de chaque période. C'est notamment le cas pour les éléments des processus d'achat et de vente : de nombreuses sociétés réinitialisent la numérotation des devis, commandes et factures chaque année. 
En France, la législation impose une numérotation pour la facturation, il est donc fortement recommandé de ne pas réinitialiser la séquence des factures et avoirs de vente. 

En cochant l'option, un bouton Compléter les sous-séquences et un tableau listant les sous-séquences s'affichent. Une sous-séquence fonctionne sur une plage de temps définie par une date de début et une date de fin, et possède son propre compteur de nombre suivant. Ainsi, à chaque nouvelle période, la numérotation reprend depuis le nombre suivant de la séquence associée. 

Le bouton Compléter les sous-séquences ouvre un assistant pour générer les sous-séquences automatiquement. L'utilisateur renseigne la date de début et la date de fin de la période totale de temps sur laquelle générer les sous-séquences, et le type de période utilisé. Le nombre suivant est celui que portera indépendamment chaque sous-période. 

Rappel : comme les séquences, les sous-séquences travaillent sur la date réelle, et non sur la date de l'enregistrement. 

 Dans l'exemple illustré ci-contre, on génère des sous-périodes annuelles pour réinitialiser la facturation au numéro 1 à chaque début d'année, sur les 5 prochaines années à partir de début 2019. À partir du 1er janvier 2020, la première facture qui sera générée en 2020 portera le numéro 1, indépendamment du numéro de la dernière facture générée en 2019. 

Personnalisation des séquences

Contexte 

  • Les séquences sont paramétrables dans le standard avec des dates. On souhaite paramétrer aussi avec les champs issus d'un objet. 

  • Or, la plupart du temps, le numéro de séquence est obtenu avant que le create() soit appelé et même avant que l'objet cible soit associé. L'évaluation de champ de l'objet que l'on pourrait mettre n'aurait accès à rien de dynamique. Une parade possible est donc de réaliser cette action en passant par une action serveur puis une action automatisée. 

Exemples 

Sur les séquences des étiquettes  

1) Action serveur de type « Expression Python » : '%s%s' % (('%s - ' % object.product_id.code) if object.product_id else '',object.template_id.sequence_id.next_by_id() if object.name=='/' else object.name) 

2) Action automatisée 

Une image contenant texte

Description générée automatiquement 

Sur les séquences des PO  

1) Action serveur de type « Expression Python » : '%s - %s' % (self.env['ir.sequence'].get('purchase.order') if object.name=='/' and object.is_compute_name() else object.name, object.partner_id.reference) 

2) Action automatisée 

Précision décimale

Dans Open-Prod, le nombre de décimales des différentes valeurs numériques sont paramétrables depuis le sous-menu Configuration > Technique > Structure de la base de données > Précision décimale. 

Ce sous-menu liste l'ensemble des précisions décimales définies dans le système. La précision décimale définit le nombre de chiffres après la virgule utilisés pour un usage, qui correspond à une catégorie de valeurs dans l'ERP. 

Exemple : en standard, le poids des produits est défini sur 4 décimales. 

Toutes les précisions décimales sont déjà créées dans l'ERP en standard. La création n'est pas nécessaire puisque les valeurs sont à crées dans le code source. 

Valeur par défaut

Pour aider les utilisateurs dans la création d'enregistrements techniques (produits, partenaires, ...) et dans l'utilisation quotidienne, il est possible de définir des valeurs par défaut sur les champs, qui seront préremplies lors des créations d'enregistrements. 

Exemple : si les conditions de paiement des clients sont normalement toujours négociées à 30 jours net, on définira cette valeur par défaut pour le champ conditions de paiement pour compléter automatiquement la majorité des fiches partenaires. L'utilisateur ne gérera alors que les exceptions. 

N'importe quel champ de l'interface peut avoir une valeur par défaut : pour l'ajouter, on passera généralement par le mode développeur. 

Création de valeurs par défaut 

Étape 1 : En mode développeur, accéder au formulaire d'un enregistrement dans lequel la valeur du champ à mettre par défaut est déjà renseignée, puis cliquer sur le scarabée présent dans le bandeau bleu supérieur et sélectionner Valeurs par défaut. Un assistant s'affiche. 

Étape 2 : Dans l'assistant, compléter les champs : 


  • Valeur par défaut : sélectionner le champ et sa valeur à mettre par défaut pour les futurs enregistrements. Seuls les champs contenant une valeur dans le formulaire affiché seront sélectionnables  

  • Uniquement vous-même ou Tous les utilisateurs : par défaut, la valeur par défaut est appliquée pour les créations d'enregistrements de l'utilisateur courant uniquement, mais il est possible d'appliquer la valeur par défaut dans les créations de tous les utilisateurs. 


Une image contenant texte

Description générée automatiquement 

Il est également possible d'utiliser le raccourci ctrl + shift + clic gauche sur un champ pour ouvrir directement l'assistant ci-dessus.  

Le droit "Ajouter des valeurs par défaut pour tous les utilisateurs" dans les droits supplémentaires des utilisateurs permet d'avoir la possibilité de définir une valeur par défaut pour tous les utilisateurs dans l'assistant ci-dessus.  

Liste des valeurs par défaut 

La liste des valeurs par défaut de la base est accessible par le sous-menu Configuration / Personnalisation / Paramètre par défaut de l'utilisateur 

La liste des valeurs par défaut permet de créer, modifier et supprimer le paramétrage d'une valeur par défaut. Un clic sur une ligne affiche le formulaire de la valeur par défaut. Celui-ci contient plus de champs que ceux remplis dans l'assistant de création : 

  • Nom : champ sur laquelle s'applique la valeur 

  • Nom du modèle : nom technique de l'objet sur lequel s'applique la valeur  

  • Modèle : il s'agit d'une aide au remplissage du nom du modèle : l'utilisateur saisit le nom de l'objet en français et le système remontera le terme technique dans le champ nom du modèle 

  • Valeur par défaut : valeur que prendra le champ spécifié dans le champ nom 

On ne crée généralement pas de valeur par défaut depuis cette vue formulaire car l'assistant est beaucoup plus rapide et simple. Dans le formulaire, il faut utiliser les noms techniques pour désigner l'objet, le champ et la valeur à appliquer. Par exemple, dans l'image ci-dessus, la valeur par défaut prévoit que : 

La langue par défaut d'un partenaire (res.partner) sera le Français (fr_FR).  

 Ce sous-menu est donc utilisé pour : 

  • Supprimer ou modifier des valeurs par défaut créées depuis l'assistant. 

  • Créer des valeurs par défaut dans un wizard (car le scarabée du mode debug n'est pas accessible dans ce cas). 

  • Créer une valeur par défaut qui appelle une valeur dynamique : par exemple, pour saisir une valeur par défaut égale à la date du jour il faut utiliser la syntaxe datetime.today 

Interface utilisateur - Modification de menu

Open-Prod fonctionne à l'aide de menus et de sous-menus. La liste des menus d'Open-Prod est accessible par le sous-menu Configuration > Technique/Interface utilisateur > Éléments de menu : c'est à partir de ce menu qu'on pourra gérer les menus existants et en créer de nouveaux. 

Formulaire 

Dans la liste, les menus sont affichés avec leur séquence. En cliquant sur un menu, le formulaire s'affiche (illustration ci-contre). L'en-tête contient les champs suivants : 

  • Le nom du menu, le chemin complet pour l'atteindre depuis le menu principal et le menu parent auquel il est rattaché le cas échéant ; 

  • Sa séquence, qui détermine son ordre d'apparition par rapport aux autres menus de même niveau ; 

  • L’action réalisée par le menu (ouvrir une vue, un assistant, une page intranet, ...). À la création d'un menu, il faut indiquer l'action dans ce champ. L'action est en Python. Seuls les menus séparateurs (en bleu et gras dans l'arborescence fixe) n'exécutent pas d'action. 

  • Le fichier d'icône Web qui apparaît dans le menu principal à l'ouverture d'Open-Prod. Le nom de l'image doit correspondre à celui qui est contenu dans le code. 

  • L'option désactiver mise à jour protège le menu des modifications lors des mises à jour du serveur. En effet, lors d'une mise à jour, les modifications manuelles appliquées sur les menus sont écrasées par le paramétrage standard par défaut. L'option doit être utilisée avec parcimonie, car si le paramétrage standard du menu est corrigé lors d'une mise à jour, cette correction sera ignorée à la mise à jour. 

Le menu est composé de 3 onglets : 
  • Groupes liste les droits d'accès au menu : seuls les noms définis seront autorisés à voir le menu. Si aucun groupe n'est défini, tout le monde pourra y accéder ; 

  • Sous-menus liste les menus rattachés au menu avec leur séquence ; 

  • Description peut contenir des explications sur le menu. 

Les vues personnalisées

Le menu Configuration > Interface utilisateur > Vues personnalisées permet d'accéder aux vues propres aux utilisateurs : ce sont les vues créées par des favoris (A ne pas confondre avec les vues créées en xpath qui sont aussi "appelées" vues personnalisées). 

Une image contenant texte

Description générée automatiquement

Les champs d'une vue personnalisée sont : 

  • L'utilisateur (Open-Prod) pour lequel s'applique cette vue. 

  • La vue d'origine : Vue à partir de laquelle a été créée la vue personnalisée. 

  • L'architecture de vue : Code XML de la vue. 

  • Partage de vue : il est possible de venir définir des utilisateurs qui partagent la vue personnalisée. Ils voient donc le tableau de bord en lecture seule s'ils ne l'ont pas déjà créé auparavant. 

Une fois un favori enregistré, la seule information que l'on a dessus est le titre qu'on lui a donné. Il peut donc être intéressant de consulter via les vues personnalisées ce que fait le favori. Il peut également être utile de venir ajouter/supprimer des conditions directement dans la vue XML plutôt que de recréer le favori de 0 quand on veut lui apporter une modification. 

Lors de l'ajout d'une nouvelle recherche dans le tableau de bord, on complète la vue d'origine 

Utiliser un filtre dynamique avec la date du jour 

  • Ajouter au tableau de bord les commandes créées ce jour : 

Etape 1 : Ajouter au tableau de bord de manière classique en sélectionnant la date du jour. 

Etape 2 : Retrouver le filtre personnalisé et remplacer la date du jour par today. 

Une image contenant texte

Description générée automatiquement

  • Ajouter au tableau de bord les commandes créées les 10 derniers jours : 

[u'order_date', u'&lt;=', u'today'] : Date de saisie de commande <= aujourd'hui 

[u'order_date', u'&gt;=',(datetime.date.today()-datetime.timedelta(days=(10))).strftime('%Y-%m-%d')] : Date de saisie de commande >= aujourd'hui -10 jours 

Filtres personnalisées 

La liste des filtres personnalisés créés dans le système est accessible depuis le sous-menu Configuration > Interface utilisateur > Filtres personnalisés. Elle permet de retrouver facilement un filtre sans le rechercher vue par vue. 

La liste des filtres personnalisés contient tous les filtres livrés dans le standard d'Open-Prod, ainsi que ceux créés par les utilisateurs. En cliquant sur un filtre, la vue formulaire ci-contre s'affiche. Elle se compose d'un en-tête et de 3 champs de règles. 

L'en-tête contient les champs suivants : 

  • Lenom du filtre tel qu'il s'affiche dans le menu Filtres de la vue concernée ; 

  • Lemodèle, c'est-à-dire la table sur laquelle le filtre s'applique ; 

  • L’action, c'est à-dire l'élément du menu sur lequel le filtre s'applique. S'il est vide, le filtre est applicable sur l'ensemble des éléments ; 

  • Le nom de l'utilisateur ayant créé le filtre et y ayant accès. Si le champ est vide, le filtre est visible par tout le monde ; 

  • Filtre par défaut : si la case est cochée, le filtre a été défini comme filtre par défaut. 

  • Actif : si la case est cochée, le filtre est visible dans la vue liste. 

En-dessous de l'entête, trois champs permettent de définir les conditions d'application du filtre grâce à une règle en Python : 

  • Domaine : code du filtre appliqué ; 

  • Contexte: code du regroupement appliqué, le cas échéant ; 

  • Trier : code du tri effectué, le cas échéant. 

La vue liste des filtres reprend l'ensemble des éléments de l'entête. 

 Nous recommandons d'utiliser le menu Filtres dans les différentes vues pour créer des filtres, plutôt qu'une création « from scratch » depuis ce menu. 

Menu caché

Le sous-menu Configuration/Technique/Interface utilisateur/Menu caché permet de gérer les menus cachés. En effet, les menus peuvent être masqués lorsqu'ils ne sont pas utiles, afin d'épurer l'interface. Certains menus peuvent également être cachés jusqu'à l'activation d'un paramètre particulier. C'est notamment le cas dans le menu Stock, qui contient des menus cachés liés aux étiquettes et aux lots : ces derniers ne s'activeront que si le le mode de gestion correspondant est activé dans les paramètres. 

Ce sous-menu ouvre la vue liste de l'ensemble des groupes de menus cachés. En cliquant sur une ligne, la vue formulaire ci-contre s'ouvre. Elle contient les champs suivants : 

  • Actif : si la case est cochée, les menus indiqués seront cachés si le champs est faux. 

  • Modèle : il s'agit de la table sur laquelle le champ est défini. 

  • Champ : c'est le nom du champ qui va impliquer de cacher la liste des menus ou non. 

En dessous, dans le cadre Menus, la liste des menus qui dépendent du champ définis dans l'entête, et qui sont à cacher si le champ est faux, est affichée. 

Le vue liste des menus cachés reprend les même champs que ceux de la vue formulaire. 

L'ajout de règles de menus cachés est rarement nécessaire, la gestion des droits permettant en général de cacher des menus en fonction des besoins. Le cas échéant, il prévoir un champ de type booléen pour activer/désactiver les menus cachés.