Skip to Content
Tuto

Tutoriel pour développeur Odoo freelance France : ajouter une remise produit et recalculer les totaux

Tutoriel pas à pas pour développeur Odoo freelance France : ajouter un champ remise produit, recalculer totaux et vérifier avant déploiement.
AK
Adama Koné Expert Odoo freelance
22 September 2026
Accueil Blog Tuto Tutoriel pour développeur Odoo freelance France : ajouter une remise produit et recalculer les totaux
September 22, 2026 by
Tutoriel pour développeur Odoo freelance France : ajouter une remise produit et recalculer les totaux

Contexte et objectif

Tu es développeur Odoo freelance France et tu dois ajouter une remise par ligne de vente (par produit) sans casser le calcul des totaux. Ce tutoriel pas à pas te guide depuis les prérequis jusqu'à la vérification finale, avec des exemples concrets et les erreurs fréquentes à éviter.

Prérequis

  • Accès à une instance Odoo (version ciblée connue).
  • Environnement de développement : module custom skeleton, accès SSH/filestore, droits développeur.
  • Connaissances de base : modèles Odoo, vues XML, manifeste (__manifest__.py).

Étapes pas à pas

1) Créer ou préparer le module

  1. Si nécessaire, utiliser ton squelette habituel (scaffold) et ajouter le module au dépôt.
  2. Mettre à jour __manifest__.py avec dépendances (ex : 'sale' si tu modifies sale.order.line).

2) Ajouter le champ sur le modèle

Hériter du modèle et ajouter un champ pour la remise, par exemple discount_percent. Exemple conceptuel : class SaleOrderLine(models.Model): _inherit = 'sale.order.line' discount_percent = fields.Float('Remise %'). Prends garde au type (Float, Monetary) et au paramètre digits si nécessaire.

3) Adapter le calcul

Soit tu ajoutes un champ calculé, soit tu adjusts le compute existant. Par exemple, modifier la méthode compute du montant pour appliquer la remise : inclure la logique « price_unit * qty * (1 - discount_percent/100) » avant taxes. Si tu modifies une méthode existante, utilise super() et évite les copies complètes pour rester compatible avec les upgrades.

4) Mettre à jour la vue

Hérite de la vue de ligne de vente et insère le champ dans l'interface. Exemple : utiliser <field name='discount_percent'/> dans un xpath adapté pour placer le champ à côté du prix unitaire.

5) Tests et mise à jour

  1. Redémarrez le serveur, met à jour la liste des apps et upgrade ton module.
  2. Crée une commande de test : ajoute un produit, applique une remise et vérifie que les totaux (ligne, taxes, total global) reflètent la remise.
  3. Ajouter un test unitaire rapide si tu as l'habitude des tests Odoo (créer sale.order, sale.order.line, assert sur amounts).

Erreurs fréquentes et comment les corriger

  • Champ ajouté mais non visible : oublie d'hériter la vue ou le nom du champ est mal orthographié.
  • Totaux incorrects : oublie d'intégrer la remise dans le calcul avant taxes ou taxe mal appliquée sur le montant brut.
  • Perte de compatibilité : modifier une méthode core sans appeler super() peut casser d'autres modules.
  • Problèmes de droits : accès aux nouveaux champs ou modèles non autorisés pour certains groupes.

Vérification finale

  1. Créer 3 commandes de test : produits avec taxe, produits sans taxe, et remise 0% pour comparaison.
  2. Vérifier les journaux serveur pour erreurs lors du calcul.
  3. Comparer manuellement le calcul : prix_unit * qty * (1 - remise/100) puis application des taxes.
  4. Si tout est OK, documente la modification (README du module, notes de déploiement).

Si tu veux, on peut regarder ton code ensemble et faire ce diagnostic rapidement pour vérifier compatibilité et sécurité. Réserve un diagnostic Odoo ou contacte-moi pour en discuter : /rendez-vous.

Intégrateur Odoo PME France : comparatif pratique et checklist pour décideurs
Comparatif clair pour décideurs : comment choisir un intégrateur Odoo pour votre PME en France — options, critères concrets, risques et étapes pour décider.
WhatsApp