--- title: Devis vers Facture url: https://blog.guigpap.com/fr/workflows/quote-to-invoice/ url_md: https://blog.guigpap.com/fr/workflows/quote-to-invoice.md category: automation date: '2026-03-28' maturite: production techno: - n8n - odoo application: - automation - business --- # Devis vers Facture > Transformation automatique des devis confirmes Odoo en factures avec notification Telegram ## 1. Quoi ? — Definition et contexte Dans Odoo, quand un client accepte un devis (sale.order passe en etat "sale"), il faut creer la facture, eventuellement la valider, et parfois l'envoyer par email. Ce workflow automatise cette chaine : des que le devis est confirme, la facture est creee et une notification Telegram arrive si le montant depasse un seuil configurable. > **Note - Sale Order → Invoice** > > Dans Odoo, un **sale.order** est un devis. Quand le client accepte, son etat passe a "sale" (confirme). La facture (`account.move`) est un document comptable separe qui doit etre cree a partir du devis — c'est cette etape que le workflow automatise. --- ## 2. Pourquoi ? — Enjeux et motivations ### Problemes resolus | Probleme | Sans automatisation | Avec automatisation | |----------|--------------------|--------------------| | **Oubli de facturation** | Devis confirme, facture jamais creee | Creation automatique | | **Delai de facturation** | Facturer 3 jours apres la confirmation | Instantane | | **Pas de visibilite** | Decouvrir la vente dans Odoo | Notification Telegram immediate | --- ## 3. Comment ? — Mise en oeuvre technique ### Architecture ```mermaid flowchart TD Sale["sale.order · état → sale"] Action["Automated Action Odoo"] Webhook["N8N webhook /odoo/sale-confirmed · interne"] subgraph Workflow["Quote-to-Invoice workflow"] direction TB CheckDup["Check duplicate invoice"] Create["Create account.move · Odoo XML-RPC"] Post{"auto_post enabled ?"} Validate["Validate invoice"] Email{"auto_send_email enabled ?"} Send["Send invoice email"] Threshold{"montant > threshold EUR ?"} end Hub["Notification Hub"] Sale --> Action --> Webhook --> CheckDup --> Create --> Post Post -->|Yes| Validate --> Email Post -->|No| Email Email -->|Yes| Send --> Threshold Email -->|No| Threshold Threshold -->|Yes| Hub ``` ### Declenchement Une Automated Action Odoo surveille les `sale.order` qui passent en etat "sale" et envoie un webhook interne a N8N. ### Parcours 1. **Verification** — Le workflow verifie qu'une facture n'existe pas deja pour ce devis (prevention des doublons) 2. **Creation** — Appel Odoo XML-RPC pour creer la facture (`account.move`) a partir du `sale.order` 3. **Post-validation** (optionnel) — Si `auto_post` est active, la facture passe de brouillon a validee 4. **Envoi email** (optionnel) — Si `auto_send_email` est active, l'email de facturation est envoye au client 5. **Notification** — Si le montant depasse le seuil (defaut : 1000 EUR), une notification Telegram est envoyee ### Configuration | Parametre | Defaut | Description | |-----------|--------|-------------| | `auto_post` | false | Valider automatiquement la facture | | `auto_send_email` | false | Envoyer l'email au client | | `notification_threshold` | 1000 | Seuil de notification Telegram (EUR) | > **Caution - Webhook interne** > > Le webhook `/webhook/odoo/sale-confirmed` est bloque par Caddy depuis l'exterieur. Seul le conteneur Odoo peut l'appeler via le reseau Docker interne. --- ## 4. Et si ? — Perspectives et limites ### Limites actuelles | Limite | Impact | Mitigation | |--------|--------|------------| | **Pas de validation comptable** | Facture auto-postee sans verification | `auto_post` desactive par defaut | | **Seuil fixe** | Meme seuil pour tous les clients | Configurable par workflow | ### Scenarios d'evolution **Si besoin de validation manager** : - Utiliser le [Approval Workflow Hub](/fr/workflows/approval-workflow/) pour les montants > X - Bouton [Valider] dans Telegram avant le post --- ## Pages liees ### Workflows - [CRM Pipeline](/fr/workflows/crm-automation/) — Pipeline commercial en amont - [Website Lead Notification](/fr/workflows/website-lead-notification/) — Leads formulaire web - [Notification Hub](/fr/workflows/notification-hub/) — Routage notifications ### Infrastructure - [Odoo 18 sur Docker](/fr/infrastructure/odoo-18-setup/) — Facturation et comptabilite ## Metadonnees agent - Cet article est issu du blog GuiGPaP Lab. - Contexte global du blog: https://blog.guigpap.com/llms.txt - Contact auteur: https://odoo.guigpap.com/mon-cv - Licence: CC-BY-SA 4.0