Repository
odoo/odoo · module folder
Module version
1.0
Category
Sales/Sales
Folder size
1.61 MB
License
LGPL-3
Application
Yes
Auto-installable
No
Website
https://www.odoo.com/app/sales
Last tracking update
2026-08-15 22:44:14
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Géry Debongnie, Julien Castiaux, Victor Feyens, Achraf (abz), Tiffany Chang (tic), Gorash, William Braeckman, william-andre, Valentin Chevalier, Louis Wicket (wil), Victor Piryns (pivi), Levi Siuzdak (sile), Dylan Kiss (dyki), sesn-odoo, jobl, kcv-odoo, Pierre Pulinckx (PIPU), st-yes, pkgu-odoo, Mohammad Abdulmoneim (abdu), Michaël Mattiello, Mahdi Alijani (malj), Krzysztof Magusiak (krma), nipl-odoo, krip-odoo, Lancelot Semal, adip-odoo, Nisarg (nipl), Merlin Guillaume, saurabh, chpa-odoo, Nuno, Krishna Patel
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
account_invoice_pricelist, account_invoice_production_lot, agreement_sale, event_sale, fieldservice_sale, l10n_ro_account_edit_currency_rate, pos_sale, product_pricelist_revision, product_warranty, repair, sale_blanket_order, sale_channel, sale_expense, sale_last_price_info, sale_margin, sale_order_invoicing_grouping_criteria, sale_order_line_input, sale_order_line_sequence, sale_order_note_template, sale_order_product_recommendation, sale_order_revision, sale_order_tag, sale_order_type, sale_pdf_quote_builder, sale_product_set, sale_project, sale_require_po_doc, sale_service, sale_substate, sale_validity_auto_cancel, shopify_connector, subscription_oca, test_sale_product_configurators, tms_sale
Description
Manage sales quotations and orders
==================================

This application allows you to manage your sales goals in an effective and efficient manner by keeping track of all sales orders and history.

It handles the full sales workflow:

* **Quotation** -> **Sales order** -> **Invoice**

Preferences (only with Warehouse Management installed)
------------------------------------------------------

If you also installed the Warehouse Management, you can deal with the following preferences:

* Shipping: Choice of delivery at once or partial delivery
* Invoicing: choose how invoices will be paid
* Incoterms: International Commercial terms


With this module you can personnalize the sales order and invoice report with
categories, subtotals or page-breaks.

The Dashboard for the Sales Manager will include
------------------------------------------------
* My Quotations
* Monthly Turnover (Graph)
    

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
digest_digest_view_form digest.digest.view.form.inherit.sale_management digest.digest form Inherits digest.digest_digest_view_form
res_config_settings_view_form res.config.settings.view.form.inherit.sale.management res.config.settings form Inherits sale.res_config_settings_view_form
sale_order_form_quote sale.order.form.inherit.sale_management sale.order form Inherits sale.view_order_form
sale_order_portal_content_inherit_sale_management Order Options ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_order_portal_optional_product_quantity Order Quantity ir.ui.view qweb New
sale_order_template_view_form sale.order.template.form sale.order.template form New
sale_order_template_view_search sale.order.template.search sale.order.template search New
sale_order_template_view_tree sale.order.template.list sale.order.template list New
HTTP endpoints (1)
Route(s)HandlerAuthTypeMethodsFlags
/my/orders/<int:order_id>/update_line_dict CustomerPortal.portal_quote_option_update public jsonrpc ALL sudo website
Models touched (7)

New fields (2)
  • kpi_all_sale_total Boolean
    args: 'All Sales'
  • kpi_all_sale_total_value Monetary
    compute='_compute_kpi_sale_total_value'
Public methods (0)

No public methods.

New fields (1)
  • sale_order_template_id Many2one → sale.order.template
    check_company=True domain="['|', ('company_id', '=', False), ('company_id', '=', id)]" string='Default Sale Template' args: 'sale.order.template'
Public methods (0)

No public methods.

New fields (2)
  • company_so_template_id Many2one
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False related='company_id.sale_order_template_id' string='Default Template'
  • group_sale_order_template Boolean
    implied_group='sale_management.group_sale_order_template' args: 'Quotation Templates'
Public methods (1)
  • set_values(self)

New fields (1)
  • sale_order_template_id Many2one → sale.order.template
    check_company=True comodel_name='sale.order.template' compute='_compute_sale_order_template_id' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" precompute=True readonly=False store=True string='Quotation Template'
Public methods (1)
  • action_confirm(self)

New fields (1)
  • is_optional Boolean
    copy=True default=False string='Optional Line'
Public methods (0)

No public methods.

New fields (12)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the quotation template without removing it.'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr>
  • journal_id Many2one → account.journal
    check_company=True company_dependent=True domain=[('type', '=', 'sale')] help='If set, SO with this template will invoice in this journal; otherwise the sales journal with the lowest sequence is used.' string='Invoicing Journal' args: 'account.journal'
  • mail_template_id Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'sale.order')] help='This e-mail template will be sent on confirmation. Leave empty to send nothing.' string='Confirmation Mail'
  • name Char
    required=True string='Quotation Template'
  • note Html
    string='Terms and conditions' translate=True
  • number_of_days Integer
    help='Number of days for the validity date computation of the quotation' string='Quotation Duration'
  • prepayment_percent Float
    compute='_compute_prepayment_percent' help='The percentage of the amount needed to be paid to confirm quotations.' readonly=False store=True string='Prepayment percentage'
  • require_payment Boolean
    compute='_compute_require_payment' help='Request an online payment to the customer in order to confirm orders automatically.' readonly=False store=True string='Online Payment'
  • require_signature Boolean
    compute='_compute_require_signature' help='Request a online signature to the customer in order to confirm orders automatically.' readonly=False store=True string='Online Signature'
  • sale_order_template_line_ids One2many → sale.order.template.line
    comodel_name='sale.order.template.line' copy=True inverse_name='sale_order_template_id' string='Lines'
  • sequence Integer
    default=10
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (11)
  • allowed_uom_ids Many2many → uom.uom
    compute='_compute_allowed_uom_ids' args: 'uom.uom'
  • company_id Many2one
    index=True related='sale_order_template_id.company_id' store=True
  • display_type Selection
    default=False args: [('line_section', 'Section'), ('line_subsection', 'Subsection'), ('line_note', 'Note')]
  • is_optional Boolean
    copy=True default=False string='Optional Line'
  • name Text
    string='Description' translate=True
  • parent_id Many2one → sale.order.template.line
    comodel_name='sale.order.template.line' compute='_compute_parent_id' string='Parent Section Line'
  • product_id Many2one → product.product
    check_company=True comodel_name='product.product' domain=<expr>
  • product_uom_id Many2one → uom.uom
    comodel_name='uom.uom' compute='_compute_product_uom_id' domain="[('id', 'in', allowed_uom_ids)]" precompute=True readonly=False store=True string='Unit'
  • product_uom_qty Float
    default=1 digits='Product Unit' required=True string='Quantity'
  • sale_order_template_id Many2one → sale.order.template
    comodel_name='sale.order.template' index=True ondelete='cascade' required=True string='Quotation Template Reference'
  • sequence Integer
    default=10 help='Gives the sequence order when displaying a list of sale quote lines.' string='Sequence'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…