Odoo 20.0 Community · Persistant

purchase.order : champs, relations et API

Le modèle purchase.order (« Bon de commande fournisseur ») est un modèle persistant déclaré par le module Achats, puis enrichi par 15 autres modules. Il expose 107 champs, dont 74 déclarés directement sur le modèle ; 14 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 20.

Fiche d'identité

Nom technique
purchase.order
Libellé
Bon de commande fournisseur
Type
Persistant (models.Model)
Table SQL
purchase_order
Module d'origine
Achats (purchase)
Étendu par
purchase_stock, sale_purchase, sale_purchase_stock, stock_dropshipping, mrp_subcontracting_dropshipping, purchase_mrp, mrp_subcontracting_purchase, project_purchase, purchase_alternative, purchase_alternative_stock, purchase_edi_ubl_bis3, purchase_product_matrix, purchase_repair, purchase_requisition, purchase_requisition_stock
Tri par défaut (_order)
priority desc, id desc
Hérite de (mixins)
portal.mixinproduct.catalog.mixinmail.threadmail.activity.mixinaccount.document.import.mixin

Champs du modèle

74 champs propres, 27 hérités des mixins et 6 champs automatiques de l'ORM. Cliquez sur un nom pour obtenir le lien direct vers le champ.

107 champs affichés sur 107

Nom techniqueLibelléTypeDétails
acknowledgedConfirmé

Indique que le fournisseur a accusé réception du bon de commande.

boolean
alternative_po_idsBons de commande alternatifs

Autres bons de commande potentiels pour l'achat de produits

one2many

related : purchase_group_id.order_ids

ajouté par Alternative d'achat (purchase_alternative)

amount_taxTaxesmonetary
lecture seulecalculé, stocké
amount_totalTotalmonetary
lecture seulecalculé, stocké
amount_total_ccTotal en devisemonetary
lecture seulecalculé, stocké
amount_untaxedMontant hors taxesmonetary
lecture seulecalculé, stocké
bill_matched_ratioBill Matched Ratiofloat
calculé
company_currency_idDevise de la sociétémany2one

related : company_id.currency_id

company_idSociétémany2one
requis
company_price_includeCompany Price Includeselection

related : company_id.account_price_include

country_codeCode payschar

related : company_id.account_fiscal_country_id.code

currency_idDevisemany2one
requiscalculé, stocké
currency_rateTaux de changefloat
calculé, stocké
date_approveDate de la commandedatetime
lecture seule
date_calendar_startDate calendrier de débutdatetime
lecture seulecalculé, stocké
date_orderÉchéance de commande

Représente la date à laquelle le devis devrait être validé et converti en bon de commande.

datetime
requis
date_plannedArrivée prévue

Date de livraison prévue des marchandises par le fournisseur, selon les dernières informations disponibles

datetime
calculé, stocké
date_promisedDate promise

Date promise par le fournisseur pour la livraison d’au moins un ou plusieurs produits.

datetime
calculé, stocké

ajouté par Purchase Stock (purchase_stock)

default_location_dest_id_is_subcontracting_locID empl. dest. par défaut est empl. sous-traitanceboolean
calculé

ajouté par Dropship and Subcontracting Management (mrp_subcontracting_dropshipping)

default_location_dest_id_usageType d'emplacement de destination

Champ technique utilisé pour afficher l'adresse de dropshipping.

selection
lecture seule

related : picking_type_id.default_location_dest_id.usage

ajouté par Purchase Stock (purchase_stock)

dest_address_idAdresse de dropshipping

Ajoutez une adresse si vous voulez livrer directement du fournisseur au client. Sinon, laissez vide pour vous faire livrer à votre société.

many2one
calculé, stocké
document_tax_modeMode de taxe du documentselection
requiscalculé, stocké

Valeurs : tax_excluded (Hors taxes), tax_included (Toutes taxes comprises)

dropship_picking_countNombre de livraisons en dropshippinginteger
calculé

ajouté par Drop Shipping (stock_dropshipping)

duplicated_order_idsCommande dupliquéemany2many
calculé
effective_dateArrivée

Date de finalisation de la dernière réception.

datetime
calculé, stocké

ajouté par Purchase Stock (purchase_stock)

fiscal_position_idPosition fiscalemany2one
gridGrid

Technical storage of grid. If grid_update, will be loaded on the PO. If not, represents the matrix to open.

char

ajouté par Purchase Matrix (purchase_product_matrix)

grid_product_tmpl_idGrille des modèles de produits

Champ technique pour les fonctionnalités de product_matrix.

many2one

ajouté par Purchase Matrix (purchase_product_matrix)

grid_updateMise à jour de la grille

Si le champ grille contient une nouvelle matrice à appliquer ou pas.

boolean

ajouté par Purchase Matrix (purchase_product_matrix)

has_sale_orderChamp technique indiquant si le bon de commande est lié à des commandes client.boolean
calculé

ajouté par Sale Purchase (sale_purchase)

incoming_picking_countNombre de réceptionsinteger
calculé

ajouté par Purchase Stock (purchase_stock)

incoterm_idIncoterm

Les Incoterms sont une série de termes commerciaux prédéfinis utilisés dans les transactions internationales.

many2one
calculé, stocké
incoterm_locationLieu Incotermchar
calculé, stocké
invoice_countNombre de facturesinteger
calculé, stocké
invoice_idsFactures fournisseursmany2many
calculé, stocké
invoice_statusStatut de facturationselection
lecture seulecalculé, stocké

Valeurs : no (Rien à facturer), to invoice (Factures en attente), invoiced (Entièrement facturé)

is_lateEn retardboolean
is_shippedEst expédiéboolean
calculé

ajouté par Purchase Stock (purchase_stock)

lock_confirmed_poLock Confirmed Poselection

related : company_id.po_lock

lockedVerrouillé

Les bons de commandes verrouillés ne peuvent pas être modifiés.

boolean
mrp_production_countNombre d'OF d'origineinteger
calculé

ajouté par Purchase and MRP Management (purchase_mrp)

nameRéférence commandechar
requis
noteConditions généraleshtml
on_time_rateOn Time Ratefloat

related : partner_id.on_time_rate

ajouté par Purchase Stock (purchase_stock)

on_time_rate_percOTDfloat
calculé

ajouté par Purchase Alternative Stock (purchase_alternative_stock)

order_lineLignes de commandeone2many

inverse : order_id

originSource

Référence du document qui a généré cette demande de bon de commande (par ex. une commande client)

char
partner_bill_countPartner Bill Countinteger

related : partner_id.supplier_invoice_count

partner_idFournisseur

Vous pouvez trouver un fournisseur par son nom, numéro de TVA, e-mail ou sa référence interne.

many2one
requis
partner_refRéférence fournisseur

Référence de la commande client ou de l'offre envoyée par le fournisseur. Utilisé principalement pour faire la correspondance lors de la réception des produits, puisque cette référence est généralement écrite sur le bon de livraison envoyé par votre fournisseur.

char
payment_term_idConditions de paiementmany2one
picking_idsRéceptionsmany2many
calculé, stocké

ajouté par Purchase Stock (purchase_stock)

picking_type_idLivrer à

Cela déterminera le type d'opération des réceptions

many2one
requis

ajouté par Purchase Stock (purchase_stock)

priorityPrioritéselection

Valeurs : 0 (Normal), 1 (Urgent)

product_idProduitmany2one

related : order_line.product_id

project_idProjetmany2one

ajouté par Project Purchase (project_purchase)

purchase_group_idGroupe d'achatmany2one

ajouté par Alternative d'achat (purchase_alternative)

purchase_warning_textAvertissement d’achat

Avertissement interne pour le partenaire ou les produits défini par l’utilisateur.

text
calculé
receipt_reminder_emailRappel de réceptionboolean
calculé, stocké
receipt_statusStatut de la réceptionselection
calculé, stocké

Valeurs : pending (Non reçu), partial (Partiellement reçu), full (Entièrement reçu)

reference_idsRéférencesmany2many

ajouté par Purchase Stock (purchase_stock)

reminder_date_before_receiptJours avant réceptioninteger
calculé, stocké
repair_countCount of source repairsinteger
calculé

ajouté par Purchase Repair (purchase_repair)

requisition_idAccordmany2one

ajouté par Conventions d'achat (purchase_requisition)

requisition_typeRequisition Typeselection

related : requisition_id.requisition_type

ajouté par Conventions d'achat (purchase_requisition)

sale_order_countNombre de ventes à la sourceinteger
calculé

ajouté par Sale Purchase (sale_purchase)

show_comparisonAfficher la comparaisonboolean
calculé
show_receive_buttonAfficher le bouton Recevoirboolean
calculé
stateStatutselection
lecture seule

Valeurs : draft (Demande de prix), sent (Envoyé), to approve (À approuver), purchase (Bon de commande fournisseur), cancel (Annulé)

subcontracting_resupply_picking_countNombre de réapprovisionnements de sous-traitance

Nombre de réapprovisionnements de sous-traitance pour les composants

integer
calculé

ajouté par Purchase and Subcontracting Management (mrp_subcontracting_purchase)

tax_calculation_rounding_methodMéthode d'arrondi pour le calcul des taxesselection
lecture seule

related : company_id.tax_calculation_rounding_method

tax_country_idPays de la taxe

Champ technique pour filtrer les taxes disponibles en fonction du pays fiscal et de la position fiscale.

many2one
calculé
tax_totalsTaxes totalesjson
calculé
user_idAcheteurmany2one
access_tokenJeton de sécuritéchar

hérité de portal.mixin

access_urlURl d'accès au portail

URl du portail client

char
calculé

hérité de portal.mixin

access_warningAvertissement d'accèstext
calculé

hérité de portal.mixin

activity_calendar_event_idActivité suivante de l'événement du calendriermany2one
calculé

hérité de mail.activity.mixin

activity_date_deadlineDate limite de l'activité à venirdate
lecture seulecalculé

hérité de mail.activity.mixin

activity_exception_decorationIndicateur d’exception d’activité

Type d'activité d'exception enregistrée.

selection
calculé

Valeurs : warning (Alerte), danger (Erreur)

hérité de mail.activity.mixin

activity_exception_iconIcône

Icône pour indiquer une activité d'exception.

char
calculé

hérité de mail.activity.mixin

activity_idsActivitésone2many

inverse : res_id

hérité de mail.activity.mixin

activity_plans_idsPlans d'activitémany2many
calculé

hérité de mail.activity.mixin

activity_stateStatut de l'activité

Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities.

selection
calculé

Valeurs : overdue (En retard), today (Aujourd'hui), planned (Planifié)

hérité de mail.activity.mixin

activity_summaryRésumé de l'activité suivantechar

related : activity_ids.summary

hérité de mail.activity.mixin

activity_type_iconIcône de type d'activitéchar

related : activity_ids.icon

hérité de mail.activity.mixin

activity_type_idType d'activités à venirmany2one

related : activity_ids.activity_type_id

hérité de mail.activity.mixin

activity_user_idUtilisateur responsablemany2one
lecture seulecalculé

hérité de mail.activity.mixin

has_messageA un messageboolean
calculé

hérité de mail.thread

message_attachment_countNombre de pièces jointesinteger
calculé

hérité de mail.thread

message_follower_idsAbonnésone2many

inverse : res_id

hérité de mail.thread

message_has_errorErreur d'envoi du message

Si coché, certains messages ont une erreur de livraison.

boolean
calculé

hérité de mail.thread

message_has_error_counterNombre d'erreurs

Nombre de messages avec des erreurs d'envoi

integer
calculé

hérité de mail.thread

message_has_sms_errorErreur d'envoi SMS

Si coché, certains messages ont une erreur de livraison.

boolean
calculé

hérité de mail.thread

message_idsMessagesone2many

inverse : res_id

hérité de mail.thread

message_is_followerEst un abonnéboolean
calculé

hérité de mail.thread

message_needactionNécessite une action

Si coché, de nouveaux messages demandent votre attention.

boolean
calculé

hérité de mail.thread

message_needaction_counterNombre d'actions

Nombre de messages nécessitant une action

integer
calculé

hérité de mail.thread

message_partner_idsAbonnés (Partenaires)many2many
calculé

hérité de mail.thread

my_activity_date_deadlineÉchéance de mon activitédate
lecture seulecalculé

hérité de mail.activity.mixin

rating_idsÉvaluationsone2many

inverse : res_id

hérité de mail.thread

create_dateCréé ledatetime
lecture seuleautomatique
create_uidCréé parmany2one
lecture seuleautomatique
display_nameNom affichéchar
lecture seulecalculéautomatique
idIDinteger
lecture seuleautomatique
write_dateDernière mise à jour ledatetime
lecture seuleautomatique
write_uidDernière mise à jour parmany2one
lecture seuleautomatique

Relations

Modèles liés depuis ce modèle

Champs d'autres modèles qui pointent ici

Lire ce modèle par l'API

Exemple d'appel à l'API JSON-2 d'Odoo 20 : 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
curl -X POST "https://votre-instance.odoo.com/json/2/purchase.order/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: votre-base" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","company_id","currency_id","date_order","document_tax_mode"],"limit":5}'
Python (requests)
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}/purchase.order/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","company_id","currency_id","date_order","document_tax_mode"], "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/purchase-order">purchase.order (Odoo 20.0)</a>

Sources

Données vérifiées le 25 septembre 2026 · Odoo 20.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.