Skip to Content
Odoo model

purchase.order.line

Purchase Order Line. Defined in module purchase; exists in Odoo 16, 17, 18, 19, 20. Across the upgrade steps we tracked: 34 fields added, 8 removed, 1 renamed, 1 type changes.

  1. Odoo 16 purchase
  2. Odoo 17 purchase
  3. Odoo 18 purchase
  4. Odoo 19 purchase
  5. Odoo 20 purchase

Odoo 16 to 17

Community only All changes in this step

Fields added (3)

FieldTypeModule
discountfloatpurchase
price_unit_discountedfloatpurchase
tax_calculation_rounding_methodselectionpurchase

Type changed (1)

FieldOdoo 16Odoo 17
move_dest_ids one2manymany2many

Odoo 17 to 18

Community only All changes in this step

Fields added (6)

FieldTypeModule
company_currency_idmany2onepurchase_requisition
group_idmany2onepurchase_stock
is_downpaymentbooleanpurchase
is_storablebooleanpurchase_stock
location_final_idmany2onepurchase_stock
price_total_ccmonetarypurchase_requisition

Odoo 18 to 19

Community + Enterprise All changes in this step

Renamed (1)

Odoo 18Odoo 19Confidence
product_uomproduct_uom_id possible (same type, name extended)

Fields removed (5)

FieldTypeModuleNotes
group_idmany2onepurchase_stock
product_packaging_idmany2onepurchase
product_packaging_qtyfloatpurchase
product_uom_category_idmany2onepurchase
taxes_idmany2manypurchase

Fields added (14)

FieldTypeModule
allowed_uom_idsmany2manypurchase
amount_to_invoice_at_datefloatpurchase
bill_to_receivebooleanpurchase_accountant
parent_idmany2onepurchase
prepaid_expensebooleanpurchase_accountant
price_unit_product_uomfloatpurchase
product_categ_idmany2onepurchase_accountant
purchase_line_warn_msgtextpurchase
qty_invoiced_at_datefloatpurchase
qty_received_at_datefloatpurchase
selected_seller_idmany2onepurchase
tax_idsmany2manypurchase
technical_price_unitfloatpurchase
translated_product_nametextpurchase

Odoo 19 to 20

Community + Enterprise All changes in this step

Fields removed (3)

FieldTypeModuleNotes
location_final_idmany2onepurchase_stock
product_uom_idmany2onepurchase
translated_product_nametextpurchase

Fields added (11)

FieldTypeModule
accrual_move_idsmany2manypurchase
auto_sale_order_line_idmany2onesale_purchase_inter_company_rules
date_promiseddatetimepurchase_stock
document_tax_modeselectionpurchase
forecasted_location_idmany2onepurchase_stock
labeltextpurchase
matched_invoice_countintegerpurchase
non_deductible_taxfloatpurchase
price_subtotal_to_invoicemonetarypurchase
qty_to_invoice_rawfloatpurchase
uom_idmany2onepurchase

Now also inherits product.catalog.line.mixin, res.currency.rate.consolidation.mixin (fields from these parents are listed on their own pages).

2 views of this model removed
  • purchase_requisition.purchase_order_line_compare_tree
  • purchase_requisition_stock.purchase_order_line_compare_tree_inherit_purchase_requisition_stock

All fields declared on purchase.order.line (81)

Fields this model declares itself in any version, with the versions they exist in. Inherited fields (mail.thread and other mixins) are on the parent model's page.

present not present not covered (Enterprise, Odoo 16 and 17)

Show all 81 fields
FieldTypeLabelModule1617181920
accrual_move_idsmany2many account.moveAccrual Entriespurchase
allowed_uom_idsmany2many uom.uompurchase
amount_to_invoice_at_datefloatAmountpurchase
analytic_jsonjsonAnalytic JSONaccount_budget_purchaseE
auto_sale_order_line_idmany2one sale.order.lineIntercompany Sale Order Linesale_purchase_inter_company_rulesE
bill_to_receivebooleanBill to Receivepurchase
budget_line_idsone2many budget.lineBudget Linesaccount_budget_purchaseE
company_currency_idmany2oneCompany Currencypurchase_alternative
company_idmany2one res.companyCompanypurchase
currency_idmany2oneCurrencypurchase
date_approvedatetimeConfirmation Datepurchase
date_orderdatetimeOrder Deadlinepurchase
date_planneddatetimeExpected Arrivalpurchase
date_promiseddatetimePromised Datepurchase_stock
discountfloatDiscount (%)purchase
display_typeselectionpurchase
document_tax_modeselectionpurchase
forecasted_issuebooleanpurchase_stock
forecasted_location_idmany2one stock.locationForecasted Locationpurchase_stock
group_idmany2one procurement.groupProcurement group that generated this linepurchase_stock
invoice_linesone2many account.move.lineBill Linespurchase
is_above_budgetbooleanIs Above Budgetaccount_budget_purchaseE
is_configurable_productbooleanIs the product configurable?purchase_product_matrix
is_downpaymentbooleanpurchase
is_storablebooleanpurchase_stock
labeltextLabelpurchase
location_final_idmany2one stock.locationLocation from procurementpurchase_stock
matched_invoice_countintegerMatched Invoices Countpurchase
move_dest_idsmany2many stock.moveDownstream moves altpurchase_stock
move_idsone2many stock.moveReservationpurchase_stock
nametextDescriptionpurchase
non_deductible_taxfloatpurchase
on_time_rate_percfloatOTDpurchase_alternative_stock
order_idmany2one purchase.orderOrder Referencepurchase
orderpoint_idmany2one stock.warehouse.orderpointOrderpointpurchase_stock
parent_idmany2one purchase.order.lineParent Section Linepurchase
partner_idmany2one res.partnerPartnerpurchase
prepaid_expensebooleanPrepaid Expensepurchase
price_subtotalmonetarySubtotalpurchase
price_subtotal_to_invoicemonetaryTo Invoicepurchase
price_taxfloatTaxpurchase
price_totalmonetaryTotalpurchase
price_total_ccmonetaryCompany Subtotalpurchase_alternative
price_unitfloatUnit Pricepurchase
price_unit_discountedfloatUnit Price (Discounted)purchase
price_unit_product_uomfloatUnit Price Product UoMpurchase
product_categ_idmany2onepurchase_accountantE
product_description_variantscharCustom Descriptionpurchase_stock
product_idmany2one product.productProductpurchase
product_no_variant_attribute_value_idsmany2many product.template.attribute.valueProduct attribute values that do not create variantspurchase
product_packaging_idmany2one product.packagingPackagingpurchase
product_packaging_qtyfloatPackaging Quantitypurchase
product_qtyfloatQuantitypurchase
product_template_attribute_value_idsmany2manypurchase
product_template_idmany2one product.templateProduct Templatepurchase_product_matrix
product_typeselectionpurchase
product_uommany2one uom.uomUnit of Measurepurchase
product_uom_category_idmany2onepurchase
product_uom_idmany2one uom.uomUnitpurchase
product_uom_qtyfloatTotal Quantitypurchase
propagate_cancelbooleanPropagate cancellationpurchase_stock
purchase_line_warn_msgtextpurchase
qty_invoicedfloatBilled Qtypurchase
qty_invoiced_at_datefloatBilledpurchase
qty_receivedfloatReceived Qtypurchase
qty_received_at_datefloatReceivedpurchase
qty_received_manualfloatManual Received Qtypurchase
qty_received_methodselectionReceived Qty Methodpurchase
qty_to_invoicefloatTo Invoice Quantitypurchase
qty_to_invoice_rawfloatNot Invoiced Quantitypurchase
sale_line_idmany2one sale.order.lineOrigin Sale Itemsale_purchase
sale_order_idmany2oneSale Ordersale_purchase
selected_seller_idmany2one product.supplierinfopurchase
sequenceintegerSequencepurchase
stateselectionpurchase
tax_calculation_rounding_methodselectionTax calculation rounding methodpurchase
tax_idsmany2many account.taxTaxespurchase
taxes_idmany2many account.taxTaxespurchase
technical_price_unitfloatpurchase
translated_product_nametextpurchase
uom_idmany2one uom.uomUnitpurchase
Coverage. Odoo 16 to 17 and 17 to 18 compare Community modules only (the Enterprise 16 and 17 sources are not available to us). Odoo 18 to 19 and 19 to 20 include Community and Enterprise modules. Everything here comes from a static read of the Odoo source code: a field counts as removed only when no parent model, mixin or delegated model still provides it. Fields created dynamically at run time can be missed, and entries we could not confirm are marked as low confidence.