sale.order.line : champs, relations et API
Le modèle sale.order.line (« Ligne de commande ») est un modèle persistant déclaré par le module Ventes, puis enrichi par 35 autres modules. Il expose 129 champs, dont 120 déclarés directement sur le modèle ; 25 champs d'autres modèles pointent vers lui. Retrouvez ci-dessous chaque champ avec son nom technique, son type, son libellé français et ses relations, puis un exemple d'appel à l'API JSON-2 d'Odoo 19.
Fiche d'identité
- Nom technique
sale.order.line- Libellé
- Ligne de commande
- Type
- Persistant (models.Model)
- Table SQL
sale_order_line- Module d'origine
- Ventes (
sale) - Étendu par
- delivery, sale_stock, stock_delivery, sale_management, event_sale, event_booth_sale, repair, sale_purchase, stock_dropshipping, pos_sale, pos_repair, pos_sale_loyalty, sale_margin, sale_mrp, sale_service, sale_project, sale_expense, sale_expense_margin, sale_gelato, sale_gelato_stock, sale_loyalty, sale_stock_margin, sale_pdf_quote_builder, sale_product_matrix, sale_project_stock, sale_purchase_project, sale_stock_product_expiry, sale_timesheet, sale_timesheet_margin, website_sale, website_sale_slides, website_event_booth_sale, website_event_sale, website_sale_stock, website_sale_loyalty
- Tri par défaut (_order)
order_id, sequence, id- Hérite de (mixins)
- analytic.mixinpos.load.mixin
Champs du modèle
120 champs propres, 3 hérités des mixins et 6 champs automatiques de l'ORM. Cliquez sur un nom pour obtenir le lien direct vers le champ.
129 champs affichés sur 129
| Nom technique | Libellé | Type | Détails |
|---|---|---|---|
| allowed_uom_ids | Unité de mesure autorisée | many2many→ uom.uom | calculé |
| amount_invoiced | Montant facturé | monetary | calculé |
| amount_to_invoice | Solde non facturé | monetary | calculé |
| amount_to_invoice_at_date | Montant | float | calculé |
| analytic_line_ids | Lignes analytiques | one2many | inverse : |
| available_product_document_ids | Documents produits disponibles | many2many | calculé ajouté par Créateur de devis PDF ( |
| categ_id | Categ | many2one | related : |
| collapse_composition | Replier la composition | boolean | |
| collapse_prices | Replier les prix | boolean | |
| combo_item_id | Article combo | many2one | |
| company_id | Société | many2one | related : |
| company_price_include | Company Price Include | selection | related : |
| coupon_id | Bon de réduction | many2one | lecture seule ajouté par Ventes Fidélité ( |
| currency_id | Devise | many2one | related : |
| customer_lead | Délai Nombre de jours entre la confirmation de la commande et l'expédition des produits au client | float | requiscalculé, stocké |
| discount | Remise (%) | float | calculé, stocké |
| display_qty_widget | Afficher widget qté | boolean | calculé ajouté par Gestion des ventes et des entrepôts ( |
| display_type | Type d'affichage | selection | Valeurs : |
| event_booth_category_id | Catégorie des stands | many2one | ajouté par Ventes de stands d'événement ( |
| event_booth_ids | Stands confirmés | one2many | inverse : ajouté par Ventes de stands d'événement ( |
| event_booth_pending_ids | Stands en attente Utilisé pour créer une inscription lors de la fourniture du stand d'événement souhaité. | many2many | calculé ajouté par Ventes de stands d'événement ( |
| event_booth_registration_ids | Inscription confirmée | one2many | inverse : ajouté par Ventes de stands d'événement ( |
| event_id | Événement Choisissez un événement et une inscription pour cet événement sera automatiquement créée | many2one | calculé, stocké ajouté par Ventes sur événements ( |
| event_slot_id | Créneau Choisissez un créneau, un ticket sera automatiquement généré pour celui-ci. | many2one | calculé, stocké ajouté par Ventes sur événements ( |
| event_ticket_id | Type de tickets Choisissez un type de ticket et une inscription pour cet événement sera automatiquement créée. | many2one | calculé, stocké ajouté par Ventes sur événements ( |
| expense_id | Dépense | many2one | ajouté par Marge des dépenses commerciales ( |
| expense_ids | Dépenses | one2many | lecture seule inverse : ajouté par Ventes Dépenses ( |
| extra_tax_data | Données fiscales supplémentaires | json | |
| forecast_expected_date | Date prévue | datetime | calculé ajouté par Gestion des ventes et des entrepôts ( |
| free_qty_today | Qté disponible aujourd'hui | float | calculé ajouté par Gestion des ventes et des entrepôts ( |
| has_displayed_warning_upsell | Has Displayed Warning Upsell | boolean | ajouté par Feuille de temps des ventes ( |
| invoice_lines | Lignes de facture | many2many | |
| invoice_status | Statut de la facture | selection | calculé, stocké Valeurs : |
| is_configurable_product | Ce produit est-il configurable ? | boolean | related : |
| is_delivery | Est une livraison | boolean | ajouté par Frais de livraison ( |
| is_downpayment | Est un acompte Les acomptes sont effectués lors de la création de factures à partir d'une commande client. Ils ne sont pas copiés lors de la duplication d'une commande client. | boolean | |
| is_expense | Est une dépense Est vrai si la ligne de commande vient d'une dépense ou d'une facture fournisseur | boolean | |
| is_mto | Est fabriqué à la commande ? | boolean | calculé ajouté par Gestion des ventes et des entrepôts ( |
| is_multi_slots | Avec créneaux multiples | boolean | related : ajouté par Ventes sur événements ( |
| is_optional | Ligne optionnelle | boolean | ajouté par Ventes ( |
| is_product_archived | Est un produit archivé | boolean | calculé |
| is_repair_line | Est lié à une réparation | boolean | calculé ajouté par PdV – Réparation ( |
| is_reward_line | Est une ligne de récompense de programme | boolean | calculé ajouté par Ventes Fidélité ( |
| is_service | Is a Service | boolean | calculé, stocké ajouté par Ventes - Services ( |
| is_storable | Is Storable | boolean | related : ajouté par Gestion des ventes et des entrepôts ( |
| linked_line_id | Ligne de commande liée | many2one | |
| linked_line_ids | Lignes de commande liées | one2many | inverse : |
| linked_virtual_id | Lien virtuel | char | |
| margin | Marge | float | calculé, stocké ajouté par Marges sur les commandes de ventes ( |
| margin_percent | Marge (%) | float | calculé, stocké ajouté par Marges sur les commandes de ventes ( |
| move_ids | Mouvements de stock | one2many | inverse : ajouté par Gestion des ventes et des entrepôts ( |
| name | Description | text | requiscalculé, stocké |
| name_short | Nom court | char | calculé ajouté par eCommerce ( |
| order_id | Référence commande | many2one | requis |
| order_partner_id | Client | many2one | related : |
| parent_id | Ligne de section parente | many2one | calculé |
| points_cost | Coût des points Combien de points cette récompense coûte sur la carte de fidélité. | float | ajouté par Ventes Fidélité ( |
| pos_order_line_ids | Lignes de commandes transférées vers le Point de Vente | one2many | lecture seule inverse : ajouté par PdV - Ventes ( |
| price_reduce_taxexcl | Remise hors taxes | monetary | calculé, stocké |
| price_reduce_taxinc | Remise toutes taxes comprises | monetary | calculé, stocké |
| price_subtotal | Sous-total | monetary | calculé, stocké |
| price_tax | Total des taxes | float | calculé, stocké |
| price_total | Total | monetary | calculé, stocké |
| price_unit | Prix unitaire | float | requiscalculé, stocké |
| pricelist_item_id | Élément de la liste de prix | many2one | calculé |
| product_add_mode | Product Add Mode | selection | related : ajouté par Matrice de vente ( |
| product_custom_attribute_value_ids | Valeurs personnalisées | one2many | calculé, stocké inverse : |
| product_document_ids | Documents produits Les documents produits pour cette ligne de commande qui seront fusionnés dans le devis PDF. | many2many | ajouté par Créateur de devis PDF ( |
| product_id | Produit | many2one | |
| product_no_variant_attribute_value_ids | Valeur supplémentaire | many2many | calculé, stocké |
| product_qty | Qté de produits | float | calculé ajouté par Frais de livraison ( |
| product_template_attribute_value_ids | Valeur caratéristique du modèle produit | many2many | related : |
| product_template_id | Modèle de produit | many2one | calculé |
| product_type | Type de produit | selection | related : |
| product_uom_id | Unité | many2one→ uom.uom | calculé, stocké |
| product_uom_qty | Quantité | float | requiscalculé, stocké |
| product_uom_readonly | UdM du produit en lecture seule | boolean | calculé |
| product_updatable | Peut modifier le produit | boolean | calculé |
| project_id | Generated Project | many2one | ajouté par Ventes - Projet ( |
| purchase_line_count | Nombre d'articles d'achat générés | integer | calculé ajouté par Ventes & Achats ( |
| purchase_line_ids | Lignes d'achat générées Ligne d'achat générée par cet article de vente lors de la confirmation de la commande, ou quand la quantité a été augmentée. | one2many | lecture seule inverse : ajouté par Ventes & Achats ( |
| purchase_price | Coût | float | calculé, stocké ajouté par Marges sur les commandes de ventes ( |
| qty_available_today | Qté disponible aujourd'hui | float | calculé ajouté par Gestion des ventes et des entrepôts ( |
| qty_delivered | Quantité de livraison | float | calculé, stocké |
| qty_delivered_at_date | Délivré | float | calculé |
| qty_delivered_method | Méthode de mise à jour des quantités livrées According to product configuration, the delivered quantity can be automatically computed by mechanism: - Manual: the quantity is set manually on the line - Analytic From expenses: the quantity is the quantity sum from posted expenses - Timesheet: the quantity is the sum of hours recorded on tasks linked to this sale line - Stock Moves: the quantity comes from confirmed pickings | selection | calculé, stocké Valeurs : |
| qty_invoiced | Quantité facturée | float | calculé, stocké |
| qty_invoiced_at_date | Facturé | float | calculé |
| qty_invoiced_posted | Quantité facturée (comptabilisée) | float | calculé |
| qty_to_deliver | Qté à livrer | float | calculé ajouté par Gestion des ventes et des entrepôts ( |
| qty_to_invoice | Quantité à facturer | float | calculé, stocké |
| reached_milestones_ids | Reached Milestones | one2many | inverse : ajouté par Ventes - Projet ( |
| recompute_delivery_price | Recompute Delivery Price | boolean | related : ajouté par Frais de livraison ( |
| registration_ids | Inscriptions | one2many | inverse : ajouté par Ventes sur événements ( |
| remaining_hours | Temps restant sur les bons de commande | float | calculé, stocké ajouté par Feuille de temps des ventes ( |
| remaining_hours_available | Heures restantes disponibles | boolean | calculé ajouté par Feuille de temps des ventes ( |
| reward_id | Récompense | many2one | lecture seule ajouté par Ventes Fidélité ( |
| reward_identifier_code | Code d'identification de la récompense Champ technique utilisé pour relier plusieurs lignes de récompense d'une même récompense entre elles. | char | ajouté par Ventes Fidélité ( |
| route_ids | Routes | many2many | ajouté par Gestion des ventes et des entrepôts ( |
| sale_line_warn_msg | Message d’avertissement ligne de vente | text | calculé |
| salesman_id | Vendeur | many2one | related : |
| scheduled_date | Date planifiée | datetime | calculé ajouté par Gestion des ventes et des entrepôts ( |
| selected_combo_items | Articles combinés sélectionnés | char | |
| sequence | Séquence | integer | |
| service_tracking | Service Tracking | selection | related : |
| shop_warning | Avertissement | char | ajouté par eCommerce ( |
| state | Statut de la commande | selection | related : |
| task_id | Generated Task | many2one | ajouté par Ventes - Projet ( |
| tax_calculation_rounding_method | Méthode d'arrondi pour le calcul des taxes | selection | lecture seule related : |
| tax_country_id | Pays de la taxe | many2one | related : |
| tax_ids | Taxes | many2many | calculé, stocké |
| technical_price_unit | Prix unitaire technique | float | |
| timesheet_ids | Feuilles de temps | one2many | inverse : ajouté par Feuille de temps des ventes ( |
| translated_product_name | Nom de produit traduit | text | calculé |
| untaxed_amount_invoiced | Montant hors taxes facturé | monetary | calculé, stocké |
| untaxed_amount_to_invoice | Montant hors taxes à facturer | monetary | calculé, stocké |
| use_expiration_date | Utiliser la date d'expiration | boolean | related : ajouté par Expiration du stock produit à la vente ( |
| virtual_available_at_date | Virtuellement disponible à date | float | calculé ajouté par Gestion des ventes et des entrepôts ( |
| virtual_id | Virtuel | char | |
| warehouse_id | Entrepôt | many2one | calculé, stocké ajouté par Gestion des ventes et des entrepôts ( |
| analytic_distribution | Répartition Analytique | json | calculé, stocké hérité de analytic.mixin |
| analytic_precision | Précision analytique | integer | hérité de analytic.mixin |
| distribution_analytic_account_ids | Compte analytique de répartition | many2many | calculé hérité de analytic.mixin |
| create_date | Créé le | datetime | lecture seuleautomatique |
| create_uid | Créé par | many2one | lecture seuleautomatique |
| display_name | Nom affiché | char | lecture seulecalculéautomatique |
| id | ID | integer | lecture seuleautomatique |
| write_date | Dernière mise à jour le | datetime | lecture seuleautomatique |
| write_uid | Dernière mise à jour par | many2one | lecture seuleautomatique |
Relations
Modèles liés depuis ce modèle
- account.analytic.line : analytic_line_ids, timesheet_ids
- account.move.line : invoice_lines
- account.tax : tax_ids
- event.booth : event_booth_ids, event_booth_pending_ids
- event.booth.category : event_booth_category_id
- event.booth.registration : event_booth_registration_ids
- event.event : event_id
- event.event.ticket : event_ticket_id
- event.registration : registration_ids
- event.slot : event_slot_id
- hr.expense : expense_id, expense_ids
- loyalty.card : coupon_id
- loyalty.reward : reward_id
- pos.order.line : pos_order_line_ids
- product.attribute.custom.value : product_custom_attribute_value_ids
- product.category : categ_id
- product.combo.item : combo_item_id
- product.document : available_product_document_ids, product_document_ids
- product.pricelist.item : pricelist_item_id
- product.product : product_id
- product.template : product_template_id
- product.template.attribute.value : product_no_variant_attribute_value_ids, product_template_attribute_value_ids
- project.milestone : reached_milestones_ids
- project.project : project_id
- project.task : task_id
- purchase.order.line : purchase_line_ids
- res.company : company_id
- res.country : tax_country_id
- res.currency : currency_id
- res.partner : order_partner_id
- res.users : salesman_id
- sale.order : order_id
- sale.order.line : linked_line_id, linked_line_ids, parent_id
- stock.move : move_ids
- stock.route : route_ids
- stock.warehouse : warehouse_id
- uom.uom : allowed_uom_ids, product_uom_id
Champs d'autres modèles qui pointent ici
- account.analytic.line : so_line
- account.move.line : sale_line_ids
- event.booth : sale_order_line_id, sale_order_line_registration_ids
- event.booth.configurator : sale_order_line_id
- event.booth.registration : sale_order_line_id
- event.registration : sale_order_line_id
- event.sale.report : sale_order_line_id
- hr.expense : sale_order_line_id
- mrp.production : sale_line_id
- pos.order.line : sale_order_line_id
- product.attribute.custom.value : sale_order_line_id
- project.milestone : sale_line_id
- project.project : sale_line_id
- project.sale.line.employee.map : sale_line_id
- project.task : last_sol_of_customer, sale_line_id
- purchase.order.line : sale_line_id
- registration.editor.line : sale_order_line_id
- repair.order : sale_order_line_id
- report.project.task.user : sale_line_id
- sale.order.line : linked_line_id, parent_id
- stock.move : sale_line_id
- timesheets.analysis.report : so_line
Lire ce modèle par l'API
Exemple d'appel à l'API JSON-2 d'Odoo 19 : lecture des cinq premiers enregistrements avec des champs réels du modèle. Remplacez l'instance, la base et la clé API par les vôtres.
curl -X POST "https://votre-instance.odoo.com/json/2/sale.order.line/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: votre-base" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["name","customer_lead","order_id","price_unit","product_uom_qty"],"limit":5}'import requests
BASE_URL = "https://votre-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "votre-base"}
res = requests.post(
f"{BASE_URL}/sale.order.line/search_read",
headers=headers,
json={"domain": [], "fields": ["name","customer_lead","order_id","price_unit","product_uom_qty"], "limit": 5},
)
res.raise_for_status()
print(res.json())- L'accès à l'API externe est réservé à la formule Custom d'Odoo.
- XML-RPC et JSON-RPC seront retirés dans Odoo 22 (automne 2028) : préférez JSON-2.
- Les droits d'accès et règles d'enregistrement de l'utilisateur de la clé s'appliquent.
Citer cet outil
Vous rédigez un tutoriel, une documentation interne ou une réponse sur un forum ? Copiez ce lien pour renvoyer vos lecteurs vers la fiche à jour.
<a href="https://aidoo.ai/fr/outils/explorateur-modeles-odoo/sale-order-line">sale.order.line (Odoo 19.0)</a>Sources
- Code source du modèle sur GitHub
- Documentation Odoo 19 : ORM API
- Documentation Odoo 19 : API externe JSON-2
Données vérifiées le 23 septembre 2026 · Odoo 19.0 Community
Vous avez un projet Odoo ou souhaitez exploiter votre ERP avec l'IA ? Échangeons
Intégration, développement de modules, connexion de Claude ou ChatGPT à vos données : décrivez-nous votre contexte, nous vous répondons sous 24 heures ouvrées.