OdooWiki OCA HUB

Sale Partner Sale Contact

sale_partner_sale_contact folder_open OCA/sale-workflow open_in_new
Sales Management License: LGPL-3

This module adds a Sale Contact field to quotations, sale orders, and invoices.

Key concept — keep the company as customer, name the person who drives the deal

In standard Odoo, partner_id is the commercial/legal counterpart of the document: it drives the fiscal position, pricelist, payment terms, receivable account and the invoice/shipping addresses. While it can technically hold a child contact, using it to store the "contact person" forces an individual into a field that is meant to represent the invoiced/contracted entity — polluting analytic accounting and reporting.

This module addresses a different need: tracking a named commercial contact person (e.g. procurement manager, project lead, key account contact) who is the day-to-day point of contact for a deal, while keeping the company as the commercial entity in partner_id. That person travels consistently across the sale order, its invoices, and (with the companion module) any generated projects — something partner_id cannot guarantee, since each document computes its own partner_id.

Billing and shipping addresses remain independent and unaffected.

This distinction is also fully compatible with B2C: when the customer is an individual without child contacts, the field simply remains empty and the ordinary Odoo workflow is unchanged.

The sale contact field allows you to:

  • Select a specific contact person for a sale order or quotation
  • Automatically propagate the contact from sale order to generated invoices
  • Display the contact person on PDF reports (quotations, orders, invoices)

The contact must be a child contact (person) of the selected customer.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Adds a 'Sale Contact' field to quotations, sale orders and invoices so you can name the person who handles the deal while the company stays the customer. The contact can also be shown on the PDF reports and gives that person portal access to the documents.

This module lets you record a named commercial contact (for example a procurement manager or project lead) on a quotation, sale order or invoice, separate from the customer company used for billing and addresses.

Where it appears: - A new 'Sale Contact' field on the sale order form, right after the customer field. It can only be changed while the order is a draft or sent. - The same field on the invoice form, editable only while the invoice is still a draft. - A setting in Sales settings, 'Display sale contact on reports', switched on by default per company.

Automatic behaviour: - If you pick a person instead of a company as the customer, Odoo switches the customer to that person's parent company and stores the person in the Sale Contact field. - If you change the customer and the stored contact no longer belongs to that company, the contact is cleared. - Only contacts that are children of the customer and are not companies can be chosen. - When an invoice is created from a sale order, the sale contact is copied onto it.

Reports and portal: - When the setting is enabled, the sale contact's name is printed in the address block of sale order and invoice PDFs. - A portal user who is the sale contact can see the sent quotations and confirmed orders where they are named, read-only.

It touches sale.order, account.move, res.partner and the company settings.

Depends on

sale_managementaccount
Models and fields (6)
  • sale.order · new model
  • res.company · extends an existing modelsale_display_contact_on_reports (Display sale contact on reports)
  • res.partner · extends an existing modelsale_contact_sale_ids, sale_contact_invoice_ids
  • account.move · new modelsale_contact_partner_id
  • sale.contact.mixin · new modelsale_contact_partner_id (Sale Contact)
  • res.config.settings · extends an existing modelsale_display_contact_on_reports (Display sale contact on reports)

Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 2 confirmed, 7 with no information of 9 versions.

Sources · Odoo 19.0

Confirmed on 2026-11-03 in branch 19.0 of OCA/sale-workflow.

terminal Installation and usage

OCA documentation · Odoo 19.0

To configure the module:

  • Go to Settings \> Sales \> Quotations & Orders
  • Enable/disable Display sale contact on reports
  • This option is enabled by default
  • When enabled, the sale contact will appear on PDF reports for sale orders and invoices

To use this module, follow these steps:

  • Go to Settings \> Sales \> Quotations & Orders
  • Enable the Display sale contact on reports option to show the sale contact on PDF reports (enabled by default)
  • Go to Sales \> Orders \> Quotations or Sales \> Orders \> Orders
  • Create or open a sale order
  • After selecting a customer, you can select a Sale Contact from the customer's child contacts
  • If the configuration option is enabled, the sale contact will appear on the printed quotation/order PDF
  • When you create an invoice from the sale order, the sale contact will be automatically copied to the invoice
  • If the configuration option is enabled, the sale contact will also appear on the printed invoice PDF

Note: Only contacts that are people (not companies) and are direct children of the selected customer will be available for selection.

Auto-switch behavior: If you select a contact person in the customer field and that person has a parent company, the system will automatically:

  • Set the customer field to the parent company
  • Set the sale contact field to the person you selected

This behavior only applies when the restriction modules (*_partner_id_company_only) are not installed.

Portal access: Portal users can always see the quotations and orders on which they are the sale contact in My Account \> Quotations / Sales Orders (read-only), in addition to the documents they can already see through the standard portal access rules.

No verified information in OCA: Installation.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.