Comment Créer une Séquence Automatique pour un Champ Personnalisé dans Odoo
Dans cet article, nous allons explorer comment créer une séquence automatique pour un champ personnalisé dans Odoo. Ce guide est particulièrement utile si vous souhaitez attribuer un numéro incrémental unique à un champ spécifique lorsqu'un enregistrement change de statut. Par exemple, lorsqu'un devis est transformé en commande, nous voulons que la commande ait un numéro incrémental dédié.
Contexte
Par défaut, lorsqu'un devis est transformé en commande dans Odoo, la nouvelle commande conserve le même numéro que le devis. Cependant, un de nos clients souhaitait que chaque commande ait un numéro unique et incrémental. Pour répondre à cette demande, nous allons créer un champ personnalisé "Numéro de commande", configurer une séquence, et mettre en place une automatisation pour attribuer ce numéro.
Étapes à Suivre
1. Créer un Champ Personnalisé
La première étape consiste à créer un champ personnalisé dans le modèle des commandes. Ce champ sera utilisé pour stocker le numéro de commande unique.
- Allez dans Configuration > Technique > Champs.
- Créez un nouveau champ avec les paramètres suivants dans un formulaire de commande :
- Modèle : sale.order
- Nom du champ : x_studio_numcde
- Type de champ : Char
2. Configurer une Séquence
Ensuite, nous devons créer une séquence qui générera les numéros incrémentaux.
- Allez dans Configuration > Technique > Séquences.
- Créez une nouvelle séquence avec les paramètres suivants :
- Code de la séquence : num.cde.test
- Nom : Numéro commande
- Préfixe : CMD (ou tout autre préfixe de votre choix)
- Suffixe : au choix
- Etape : 1 (c'est le pas)
- Numéro suivant : au choix, on met 1 par défaut
3. Mettre en Place l'Automatisation
Enfin, nous allons configurer une automatisation qui attribuera un numéro de commande unique chaque fois qu'un devis est transformé en commande.
- Allez dans Configuration > Technique > Automatisations.
- Créez une nouvelle automatisation avec les paramètres suivants :
- Modèle : sale.order
- Déclencheur : Statut défini sur commande client
- Condition : x_studio_numcde n'est pas défini (pour éviter de continuer la séquence au cas ou on ait annulé la commande et reconfirmé)
- Action : Exécuter le code Python
Voici le code Python à exécuter :
for record in records: record['x_studio_numcde'] = env['ir.sequence'].next_by_code('num.cde.test')
N'oubliez pas qu'intervenir sur Studio peut être dangereux, faites d'abord des essais en base de test ou contactez nous pour de l'aide.
Conclusion
En suivant ces étapes, vous pouvez facilement configurer une séquence automatique pour un champ personnalisé dans Odoo. Cette solution permet d'attribuer un numéro unique et incrémental à chaque commande, répondant ainsi aux besoins spécifiques de vos clients.
Pour une démonstration visuelle de ces étapes, consultez notre vidéo explicative :
Créer une séquence automatique dans Odoo