Skip to content

Sales Order

The Sales Order (sale.order) is the canonical transactional record in Odoo. Every OVApp sales session anchors on a draft Sales Order, which is updated until payment is confirmed and fulfillment is complete.

Lifecycle States

Draft → Sale → Done / Cancel

  • Draft: order created at session start; fully editable
  • Sale: payment confirmed; order is binding
  • Done: fulfillment complete; invoiced and accounted
  • Cancel: aborted before fulfillment

Core Fields

  • partner_id: customer
  • order_line: product-unit lines
  • payment_transaction_ids: payment attempts
  • invoice_ids / invoice_status: invoicing linkage
  • user_id: internal system user (technical)
  • state: lifecycle

Extended Fields (attribution)

  • x_channel_partner_id → Channel Partner (company)
  • x_sales_rep_id → Sales Representative (person)
  • x_outlet_id → Sales Outlet (commercial location)

Purpose:

  • QC & commission (rep/channel)
  • Outlet & site analytics
  • Persistent context across the session

Persistence & Resumability

  • Order created immediately at session start
  • Survives interruptions and handoffs
  • Can resume later, including at different outlet (if allowed)
  • All payment attempts retained for audit

References:

  • Implementation: ./6-odoo-models.md
  • Channels & Reps: ./3-sales-channel.md, ./2-sale-reps.md
  • Session: ./5-session-register.md