Se rendre au contenu
Nexelans
  • 0
    • Page d'accueil
    • Nos services
    • Odoo
    • Formations
    • Services
    • Support
    • Aide
    • Facture électronique
    • Formations proposées
    • Blog Odoo
    • Postes
    • Partenaires
    • Contactez-nous
  • +33 9 72 02 75 90 contact@nexelans.fr
  • Se connecter
Nexelans
  • 0
    • Page d'accueil
    • Nos services
    • Odoo
    • Formations
    • Services
    • Support
    • Aide
    • Facture électronique
    • Formations proposées
    • Blog Odoo
    • Postes
    • Partenaires
    • Contactez-nous
  • +33 9 72 02 75 90 contact@nexelans.fr
  • Se connecter
  • T&A Odoo
  • Odoo v19 : calculer le délai moyen de paiement des clients (en SaaS)
  • Odoo v19 : calculer le délai moyen de paiement des clients (en SaaS)

    12 janvier 2026 par
    Nexelans, Emmanuel Chaumery
    | Aucun commentaire pour l'instant

    Le délai de paiement des clients est un indicateur central pour piloter la trésorerie et évaluer le comportement de règlement. Pourtant, en Odoo v19 SaaS, ce délai n’est pas directement disponible sous une forme exploitable et fiable, notamment lorsqu’il y a des paiements partiels ou multiples.

    Cet article explique comment calculer un délai réel de paiement, basé sur la date effective de règlement complet, en utilisant uniquement Odoo Studio, sans développement spécifique ni accès au code serveur.

    Pourquoi le délai de paiement est trompeur en standard

    En standard, Odoo :

    • sait si une facture est payée ou non,

    • affiche une date comptable sur la facture,

    • mais n’expose pas la date réelle du règlement complet comme champ exploitable.

    Or, cette date est fondamentale. Une facture peut être :

    • réglée en plusieurs fois,

    • soldée par plusieurs écritures (banque, caisse, OD),

    • ou rapprochée à des dates différentes.

    La seule définition fiable est donc :

    Délai de paiement = nombre de jours entre la date de facture et la date de règlement complet

    Cette date correspond à la dernière écriture de paiement rapprochée avec la facture.

    Principe de la solution

    D’un point de vue comptable :

    • une facture client génère une ligne sur un compte client (receivable),

    • les paiements viennent se rapprocher de cette ligne,

    • la facture est totalement payée lorsque ces rapprochements sont complets,

    • la date du règlement complet est la date la plus récente des écritures rapprochées, le statut de la facture passant à "payée".

    C’est cette logique que nous allons exploiter via un champ calculé.

    Étape 1 – Créer un champ calculé avec Odoo Studio

    Accès

    • Comptabilité → Factures

    • Ouvrir Studio

    • Modèle : Facture (account.move)

    Champ à créer

    • Type : Entier

    • Libellé : Délai de paiement (jours)

    • Nom technique : x_studio_delai_de_paiement

    • Champ calculé : oui

    • Champ stocké : oui (important pour les analyses ultérieures)

    Dépendances

    move_type, payment_state, invoice_date,
    line_ids.account_id,
    line_ids.matched_credit_ids,
    line_ids.matched_debit_ids
    

    Étape 2 – Code de calcul du délai de paiement

    Le code ci-dessous :

    • ne traite que les factures clients payées,

    • récupère les écritures réellement rapprochées,

    • gère les paiements multiples,

    • calcule un délai basé sur la réalité comptable.

    for record in self:
        record['x_studio_delai_de_paiement'] = False
    
        # Factures clients payées uniquement
        if record.move_type != 'out_invoice' or record.payment_state != 'paid':
            continue
        if not record.invoice_date:
            continue
    
        # Lignes clients (receivable)
        receivable_lines = record.line_ids.filtered(
            lambda l: l.account_id and l.account_id.account_type == 'asset_receivable'
        )
    
        payment_dates = []
    
        # Récupération des dates des écritures rapprochées
        for line in receivable_lines:
            for pr in line.matched_credit_ids:
                mv = pr.credit_move_id.move_id
                if mv and mv.date:
                    payment_dates.append(mv.date)
    
            for pr in line.matched_debit_ids:
                mv = pr.debit_move_id.move_id
                if mv and mv.date:
                    payment_dates.append(mv.date)
    
        if payment_dates:
            paid_date = max(payment_dates)  # règlement complet
            record['x_studio_delai_de_paiement'] = (paid_date - record.invoice_date).days
    

    Ce que permet ce champ

    Une fois calculé et stocké, ce champ peut être utilisé pour :

    • analyser le comportement de paiement client,

    • comparer les délais réels aux conditions contractuelles,

    • filtrer ou trier les factures par rapidité de règlement,

    • alimenter des tableaux de bord ou exports personnalisés.

    Vue liste factures et délai de paiement

    Il reflète la réalité du cash, et non une approximation basée sur des dates comptables génériques.

    ⚠️ Important – Tests et validation avant mise en production

    Les personnalisations décrites dans cet article doivent impérativement être testées dans une base de test avant tout déploiement en production.

    Même réalisées avec Odoo Studio, elles :

    • exploitent des mécanismes comptables sensibles (lettrages),

    • influencent des indicateurs financiers,

    • doivent être validées sur des cas concrets : paiements partiels, multi-paiements, avoirs, écritures de régularisation.

    Avant mise en production, il est recommandé de :

    • vérifier les résultats sur un échantillon de factures,

    • comparer avec la réalité comptable,

    • valider les calculs avec les équipes finance ou comptabilité.

    Cette démarche est valable pour toute personnalisation dans Odoo, y compris en environnement SaaS.

    Conclusion

    Avec une configuration maîtrisée dans Odoo Studio, il est possible d’obtenir un délai réel de paiement client, fidèle à la réalité comptable, sans développement spécifique et sans sortir du cadre SaaS.

    C’est un bon exemple de la manière dont Odoo v19 permet d’aller au-delà des indicateurs standards pour construire des outils de pilotage réellement utiles, à condition de comprendre où se trouvent les bonnes données.

    Et comme d'habitude, si vous avez besoin d'aide avec ce tuto, contactez nous. Nous pouvons aussi vous accompagner pour créer les tableaux de bords correspondants.

    Variante

    Merci à Francis, un de nos clients, qui a essayé la méthode et l'a adaptée en calculant le retard par rapport à la date d'échéance (valide en cas de date d'échéance unique) plutôt que par rapport à la date de facture. Ce qui nous donne un délai moyen de retard de paiement qui peut compléter ou remplacer le délai moyen de paiement :

    record['x_studio_delai_de_retard_de_paiement'] = (paid_date -
    record.invoice_date_due).days
    Nexelans, Emmanuel Chaumery 12 janvier 2026
    Partager cet article
    Étiquettes
    Archive
    Se connecter pour laisser un commentaire.
    Nexelans​​​

    Siège social :141 chemin de la Basse Biousse, 38890 St Chef

    Bureaux : 2 rue des Sayes, 38080 L'Isle d'Abeau

    Une adresse doit être spécifiée pour qu'une carte soit intégrée

                         

    Entrer en contact
    • contact@nexelans.fr
    • 09 72 02 75 90
    Suivez-nous

     LinkedIn

    • YouTube
    Divers
    • Mentions légales
    • Vie privée
    • Conditions générales de services
    • Conditions générales de maintenance
    Produits
    • Odoo
    • Facture électronique




    Logo Nexelans

    Nexelans
    • Page d'accueil
    • Contact
    • Prendre Rendez-vous
    • Nos services
    • Formations
    •   Numeum
    ​
    Copyright 2024 © Nexelans
    Généré par Odoo - Le #1 Open Source eCommerce

    Nous utilisons des cookies pour vous offrir une meilleure expérience utilisateur sur ce site. Politique en matière de cookies

    Que les essentiels Je suis d'accord