Sales and Warehouse Management

sale_stock
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Thibault Delavallée, Aaron Bohy, Arnold Moyaux, Julien Castiaux, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, svs-odoo, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, William Braeckman, David (dafr), JF Aubert, Aurelien van Delft (avd), Adrien Widart (awt), clesgow, Djamel Touati, Pieter Claeys (clpi), Levi Siuzdak (sile), Dylan Kiss (dyki), Mayurrajsinh Rathod, Odoo, Anita (anko), Paweł Fertyk, adda-odoo, Walid (wasa), Ethan Vincent, lase@odoo.com, Quentin Wolfs, AMZIL Ayoub, kcv-odoo, nihp-odoo, Chrysanthe (chgo), Quang Nguyen, Hussein Ebrahim(hyhe), Mathieu Coutant, Stéphane Diez, dhha-odoo, kawkb, gteboul, sben-odoo, David Van Droogenbroeck (DROD), pkgu-odoo, Mohammad Abdulmoneim (abdu), djameltouati, Michaël Mattiello, Kev-Roche, Shrey Mehta, chha-odoo, MaximeNoirhomme, plha-odoo, Krzysztof Magusiak (krma), Akash Pandey, joseph, krip-odoo, Hadi El Yakhni, Ester Andreetto, nsirjacobs, bhna-odoo, rare-odoo, agbr-odoo, Lulu Grimalkin (lugr), Lancelot Semal, assh-odoo, Merlin Guillaume, srap-odoo, Léo Gizard (legi), hapt-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_so exception_on_so ir.ui.view qweb New
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings setting Inherits stock.res_config_settings_view_form
res_users_view_form res.users.form.inherit res.users group Inherits base.view_users_form
res_users_view_form_preferences res.users.preferences.form.inherit res.users group Inherits base.view_users_form_simple_modif
res_users_view_simple_form res.users.simple.form.inherit res.users group Inherits base.view_users_simple_form
sale_order_tree sale.order.list.inherit.sale.stock sale.order field Inherits sale.sale_order_tree
sale_stock.portal_my_orders Portal Orders Shipping Status Column ir.ui.view qweb Inherits sale.portal_my_orders
sale_stock.sale_order_portal_content_inherit_sale_stock Orders Shipping Followup ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_stock_help_message_template sale_stock_help_message_template ir.ui.view qweb Inherits stock.help_message_template
sale_stock_sale_order_view_search_inherit sale_stock.sale.order.search.inherit sale.order filter Inherits sale.sale_order_view_search_inherit_sale
stock_location_route_view_form_inherit_sale_stock stock.route.form stock.route xpath Inherits stock.stock_location_route_form_view
stock_production_lot_view_form stock.production.lot.view.form stock.lot xpath Inherits stock.view_production_lot_form
stock_reference_sale_view_form stock.reference.sale stock.reference xpath Inherits stock.stock_reference_form_view
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order button Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.list.sale.stock.location sale.order.line field Inherits sale.view_order_line_tree
view_order_tree sale.order.list.inherit.sale.stock sale.order field Inherits sale.view_order_tree
view_picking_form sale.stock.view.picking.form stock.picking xpath Inherits stock.view_picking_form
view_stock_rules_report_sale Stock Rules Report Sale stock.rules.report xpath Inherits stock.view_stock_rules_report
Models touched (24)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (3)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Picking Policy'
  • security_lead Float
    readonly=False related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    config_parameter='sale_stock.use_security_lead' help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' string='Security Lead Time for Sales'
Public methods (0)

No public methods.

New fields (1)
  • property_warehouse_id Many2one → stock.warehouse
    check_company=True company_dependent=True string='Default Warehouse' args: 'stock.warehouse'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (13)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • delivery_status Selection
    compute='_compute_delivery_status' help='Blue: Not Delivered/Started\n Orange: Partially Delivered\n Green: Fully Delivered' store=True string='Delivery Status' args: [('pending', 'Not Delivered'), ('started', 'Started'), ('partial', 'Partially Delivered'), ('full', 'Fully Delivered')]
  • effective_date Datetime
    compute='_compute_effective_date' help='Completion date of the first delivery order.' store=True args: 'Effective Date'
  • expected_date Datetime
    help='Delivery date you can promise to the customer, computed from the minimum lead time of the order lines in case of Service products. In case of shipping, the shipping policy of the order will be taken into account to either use the minimum or maximum lead time of the order lines.'
  • incoterm Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'account.incoterms', 'Incoterm'
  • incoterm_location Char
    string='Incoterm Location'
  • json_popover Char
    compute='_compute_json_popover' args: 'JSON data for the popover widget'
  • late_availability Boolean
    compute='_compute_late_availability' help='True if any related picking has late availability' search='_search_late_availability' string='Late Availability'
  • picking_ids One2many → stock.picking
    string='Transfers' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.' required=True string='Shipping Policy' args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
  • show_json_popover Boolean
    compute='_compute_json_popover' args: 'Has late picking'
  • stock_reference_ids Many2many → stock.reference
    copy=False string='References' args: 'stock.reference', 'stock_reference_sale_rel', 'sale_id', 'reference_id'
  • warehouse_id Many2one → stock.warehouse
    check_company=True compute='_compute_warehouse_id' precompute=True readonly=False store=True string='Warehouse' args: 'stock.warehouse'
Public methods (2)
  • action_view_delivery(self)
  • write(self, vals)

New fields (14)
  • customer_lead Float
    compute='_compute_customer_lead' inverse='_inverse_customer_lead' precompute=True readonly=False store=True
  • display_qty_widget Boolean
    compute='_compute_qty_to_deliver'
  • forecast_expected_date Datetime
    compute='_compute_qty_at_date'
  • free_qty_today Float
    compute='_compute_qty_at_date' digits='Product Unit'
  • is_mto Boolean
    compute='_compute_is_mto'
  • is_storable Boolean
    related='product_id.is_storable'
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • qty_available_today Float
    compute='_compute_qty_at_date'
  • qty_delivered_method Selection
    selection_add=[('stock_move', 'Stock Moves')]
  • qty_to_deliver Float
    compute='_compute_qty_to_deliver' digits='Product Unit'
  • route_ids Many2many → stock.route
    domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Routes' args: 'stock.route'
  • scheduled_date Datetime
    compute='_compute_qty_at_date'
  • virtual_available_at_date Float
    compute='_compute_qty_at_date' digits='Product Unit'
  • warehouse_id Many2one → stock.warehouse
    compute='_compute_warehouse_id' store=True args: 'stock.warehouse'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • has_valued_move_ids(self)
  • write(self, vals)

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • sale_order_count Integer
    compute='_compute_sale_order_ids' args: 'Sale order count'
  • sale_order_ids Many2many → sale.order
    compute='_compute_sale_order_ids' string='Sales Orders' args: 'sale.order'
Public methods (1)
  • action_view_so(self)

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index='btree_not_null' args: 'sale.order.line', 'Sale Line'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    compute='_compute_sale_id' index='btree_not_null' inverse='_set_sale_id' store=True string='Sales Order' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order', 'stock_reference_sale_rel', 'reference_id', 'sale_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • so_route_ids Many2many → stock.route
    domain="[('sale_selectable', '=', True)]" help='Choose to apply SO lines specific routes.' string='Apply specific routes' args: 'stock.route'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Xavier Morel, qdp-odoo, Yannick Tivisse, Odoo Online, Laurent Smet, Arnold Moyaux, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, Akim Juillerat, Anh Thao Pham (pta), svs-odoo, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, william-andre, David (dafr), PNO, Aurelien van Delft (avd), Vincent Larcin, alsh-odoo, Louis Wicket (wil), Walid, Adrien Widart (awt), Gauthier Wala (gawa), clesgow, Djamel Touati, Pieter Claeys (clpi), Claire Bretton (clbr), Levi Siuzdak (sile), Dylan Kiss (dyki), Julien Alardot (jual), Chong Wang (cwg), Odoo, Martin Maes, Ahmed Khalaf, Anita (anko), Paweł Fertyk, adda-odoo, Zachary Hanham, Walid (wasa), Ethan Vincent, lase@odoo.com, Quentin Wolfs, bary, Maxime de Neuville, AMZIL Ayoub, vava-odoo, Julien Carion (juca), Lina (liew), Chrysanthe (chgo), Louis (wil), Quang Nguyen, mano-odoo, Hussein Ebrahim(hyhe), Mathieu Coutant, kago-odoo, Stéphane Diez, Mohammad Abdulmoneim, dhha-odoo, gteboul, Jitendra Prajapat, jepbarasgarov, David Van Droogenbroeck (DROD), djameltouati, Pierre Pulinckx (pipu), Kev-Roche, Bastien (bvdn), MaximeNoirhomme, plha-odoo, rupa-odoo, joseph, krip-odoo, Hadi El Yakhni, Ester Andreetto, nsirjacobs, Lancelot Semal, assh-odoo, Léo Gizard (legi)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_so exception_on_so ir.ui.view qweb New
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings setting Inherits stock.res_config_settings_view_form
res_users_view_form res.users.form.inherit res.users group Inherits base.view_users_form
res_users_view_form_preferences res.users.preferences.form.inherit res.users group Inherits base.view_users_form_simple_modif
res_users_view_simple_form res.users.simple.form.inherit res.users group Inherits base.view_users_simple_form
sale_order_cancel_view_form_inherit sale.order.cancel.form.inherit sale.order.cancel span Inherits sale.sale_order_cancel_view_form
sale_order_portal_content_inherit_sale_stock Orders Shipping Followup ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_order_tree sale.order.list.inherit.sale.stock sale.order field Inherits sale.sale_order_tree
sale_stock_help_message_template sale_stock_help_message_template ir.ui.view qweb Inherits stock.help_message_template
stock_location_route_view_form_inherit_sale_stock stock.route.form stock.route xpath Inherits stock.stock_location_route_form_view
stock_production_lot_view_form stock.production.lot.view.form stock.lot xpath Inherits stock.view_production_lot_form
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_form_inherit_sale_stock_qty sale.order.line.list.sale.stock.qty sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.list.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_order_tree sale.order.list.inherit.sale.stock sale.order xpath Inherits sale.view_order_tree
view_picking_form sale.stock.view.picking.form stock.picking xpath Inherits stock.view_picking_form
view_stock_rules_report_sale Stock Rules Report Sale stock.rules.report xpath Inherits stock.view_stock_rules_report
Models touched (23)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (3)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Picking Policy'
  • security_lead Float
    readonly=False related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    config_parameter='sale_stock.use_security_lead' help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' string='Security Lead Time for Sales'
Public methods (0)

No public methods.

New fields (1)
  • property_warehouse_id Many2one → stock.warehouse
    check_company=True company_dependent=True string='Default Warehouse' args: 'stock.warehouse'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (12)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • delivery_status Selection
    compute='_compute_delivery_status' help='Blue: Not Delivered/Started\n Orange: Partially Delivered\n Green: Fully Delivered' store=True string='Delivery Status' args: [('pending', 'Not Delivered'), ('started', 'Started'), ('partial', 'Partially Delivered'), ('full', 'Fully Delivered')]
  • effective_date Datetime
    compute='_compute_effective_date' help='Completion date of the first delivery order.' store=True args: 'Effective Date'
  • expected_date Datetime
    help='Delivery date you can promise to the customer, computed from the minimum lead time of the order lines in case of Service products. In case of shipping, the shipping policy of the order will be taken into account to either use the minimum or maximum lead time of the order lines.'
  • incoterm Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'account.incoterms', 'Incoterm'
  • incoterm_location Char
    string='Incoterm Location'
  • json_popover Char
    compute='_compute_json_popover' args: 'JSON data for the popover widget'
  • picking_ids One2many → stock.picking
    string='Transfers' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.' required=True string='Shipping Policy' args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
  • procurement_group_id Many2one → procurement.group
    copy=False args: 'procurement.group', 'Procurement Group'
  • show_json_popover Boolean
    compute='_compute_json_popover' args: 'Has late picking'
  • warehouse_id Many2one → stock.warehouse
    check_company=True compute='_compute_warehouse_id' precompute=True readonly=False store=True string='Warehouse' args: 'stock.warehouse'
Public methods (2)
  • action_view_delivery(self)
  • write(self, values)

New fields (1)
  • display_delivery_alert Boolean
    compute='_compute_display_delivery_alert' args: 'Delivery Alert'
Public methods (0)

No public methods.

New fields (14)
  • customer_lead Float
    compute='_compute_customer_lead' inverse='_inverse_customer_lead' precompute=True readonly=False store=True
  • display_qty_widget Boolean
    compute='_compute_qty_to_deliver'
  • forecast_expected_date Datetime
    compute='_compute_qty_at_date'
  • free_qty_today Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • is_mto Boolean
    compute='_compute_is_mto'
  • is_storable Boolean
    related='product_id.is_storable'
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • qty_available_today Float
    compute='_compute_qty_at_date'
  • qty_delivered_method Selection
    selection_add=[('stock_move', 'Stock Moves')]
  • qty_to_deliver Float
    compute='_compute_qty_to_deliver' digits='Product Unit of Measure'
  • route_id Many2one → stock.route
    domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Route' args: 'stock.route'
  • scheduled_date Datetime
    compute='_compute_qty_at_date'
  • virtual_available_at_date Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • warehouse_id Many2one → stock.warehouse
    compute='_compute_warehouse_id' store=True args: 'stock.warehouse'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • has_valued_move_ids(self)
  • write(self, values)

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • sale_order_count Integer
    compute='_compute_sale_order_ids' args: 'Sale order count'
  • sale_order_ids Many2many → sale.order
    compute='_compute_sale_order_ids' string='Sales Orders' args: 'sale.order'
Public methods (1)
  • action_view_so(self)

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index='btree_not_null' args: 'sale.order.line', 'Sale Line'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    compute='_compute_sale_id' index='btree_not_null' inverse='_set_sale_id' store=True string='Sales Order' args: 'sale.order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • so_route_ids Many2many → stock.route
    domain="[('sale_selectable', '=', True)]" help='Choose to apply SO lines specific routes.' string='Apply specific routes' args: 'stock.route'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Xavier Morel, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Lucas Perais, Arnold Moyaux, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, Akim Juillerat, Anh Thao Pham (pta), svs-odoo, Samuel Degueldre, std-odoo, Adrien Widart, Ivan Yelizariev, Touati Djamel (otd), Tiffany Chang (tic), Gorash, Pierre Paridans, snd, Stefan-Calin Crainiciuc (stcc), Hubert Van de Walle (huvw), william-andre, Florian Damhaut, JF Aubert, PNO, yhu-odoo, Walid HANNICHE (waha), Yolann Sabaux, Jinjiu Liu, Demesmaeker, Aurelien van Delft (avd), Valentin Chevalier, niyasraphy, Matheus Leal Viana (malv), Merel Geens (mege), Louis Wicket (wil), Walid, Mylyna Hy, Adrien Widart (awt), Maximilien (malb), Victor Piryns (pivi), clesgow, Daniel Kosky (dako), Djamel Touati, Pieter Claeys (clpi), Valentin Vallaeys (vava), Levi Siuzdak (sile), Dylan Kiss (dyki), Bruno Boi, Julien Alardot (jual), FrancoisGe, Michael (mcm), Horacio Tellez, Chong Wang (cwg), Odoo, Martin Maes, Ahmed Khalaf, Brieuc-brd, Ahmed Khalaf (ahkh), adda-odoo, Mahdi Cheikh Rouhou (macr), Zachary Hanham, Walid (wasa), Ethan Vincent, lase@odoo.com, bary, AMZIL Ayoub, Nathaniel (naja), Tanguy Quéguineur, Chrysanthe (chgo), Louis (wil), Hussein Ebrahim(hyhe), kago-odoo, Mohammad Abdulmoneim, Mathias Mathy (MAMA), gteboul, jepbarasgarov, David Van Droogenbroeck (DROD), pkgu-odoo, djameltouati, Bastien (bvdn), plha-odoo, Hadi El Yakhni, Ester Andreetto, Sohail JAIDI (soja), Tyler Landivar (tylan)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:04
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_so exception_on_so ir.ui.view qweb New
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings setting Inherits stock.res_config_settings_view_form
res_users_view_form res.users.form.inherit res.users group Inherits base.view_users_form
res_users_view_form_preferences res.users.preferences.form.inherit res.users group Inherits base.view_users_form_simple_modif
res_users_view_simple_form res.users.simple.form.inherit res.users group Inherits base.view_users_simple_form
sale_order_cancel_view_form_inherit sale.order.cancel.form.inherit sale.order.cancel span Inherits sale.sale_order_cancel_view_form
sale_order_portal_content_inherit_sale_stock Orders Shipping Followup ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_order_tree sale.order.tree.inherit.sale.stock sale.order field Inherits sale.sale_order_tree
stock_location_route_view_form_inherit_sale_stock stock.route.form stock.route xpath Inherits stock.stock_location_route_form_view
stock_production_lot_view_form stock.production.lot.view.form stock.lot xpath Inherits stock.view_production_lot_form
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_form_inherit_sale_stock_qty sale.order.line.tree.sale.stock.qty sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_order_tree sale.order.tree.inherit.sale.stock sale.order field Inherits sale.view_order_tree
view_stock_rules_report_sale Stock Rules Report Sale stock.rules.report xpath Inherits stock.view_stock_rules_report
Models touched (21)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (3)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Picking Policy'
  • security_lead Float
    readonly=False related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    config_parameter='sale_stock.use_security_lead' help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' string='Security Lead Time for Sales'
Public methods (0)

No public methods.

New fields (1)
  • property_warehouse_id Many2one → stock.warehouse
    check_company=True company_dependent=True string='Default Warehouse' args: 'stock.warehouse'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (12)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • delivery_status Selection
    compute='_compute_delivery_status' store=True string='Delivery Status' args: [('pending', 'Not Delivered'), ('started', 'Started'), ('partial', 'Partially Delivered'), ('full', 'Fully Delivered')]
  • effective_date Datetime
    compute='_compute_effective_date' help='Completion date of the first delivery order.' store=True args: 'Effective Date'
  • expected_date Datetime
    help='Delivery date you can promise to the customer, computed from the minimum lead time of the order lines in case of Service products. In case of shipping, the shipping policy of the order will be taken into account to either use the minimum or maximum lead time of the order lines.'
  • incoterm Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'account.incoterms', 'Incoterm'
  • incoterm_location Char
    string='Incoterm Location'
  • json_popover Char
    compute='_compute_json_popover' args: 'JSON data for the popover widget'
  • picking_ids One2many → stock.picking
    string='Transfers' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.' required=True string='Shipping Policy' args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
  • procurement_group_id Many2one → procurement.group
    copy=False args: 'procurement.group', 'Procurement Group'
  • show_json_popover Boolean
    compute='_compute_json_popover' args: 'Has late picking'
  • warehouse_id Many2one → stock.warehouse
    check_company=True compute='_compute_warehouse_id' precompute=True readonly=False required=True store=True string='Warehouse' args: 'stock.warehouse'
Public methods (2)
  • action_view_delivery(self)
  • write(self, values)

New fields (1)
  • display_delivery_alert Boolean
    compute='_compute_display_delivery_alert' args: 'Delivery Alert'
Public methods (0)

No public methods.

New fields (13)
  • customer_lead Float
    compute='_compute_customer_lead' inverse='_inverse_customer_lead' precompute=True readonly=False store=True
  • display_qty_widget Boolean
    compute='_compute_qty_to_deliver'
  • forecast_expected_date Datetime
    compute='_compute_qty_at_date'
  • free_qty_today Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • is_mto Boolean
    compute='_compute_is_mto'
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • qty_available_today Float
    compute='_compute_qty_at_date'
  • qty_delivered_method Selection
    selection_add=[('stock_move', 'Stock Moves')]
  • qty_to_deliver Float
    compute='_compute_qty_to_deliver' digits='Product Unit of Measure'
  • route_id Many2one → stock.route
    check_company=True domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Route' args: 'stock.route'
  • scheduled_date Datetime
    compute='_compute_qty_at_date'
  • virtual_available_at_date Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • warehouse_id Many2one
    related='order_id.warehouse_id'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • has_valued_move_ids(self)
  • write(self, values)

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • sale_order_count Integer
    compute='_compute_sale_order_ids' args: 'Sale order count'
  • sale_order_ids Many2many → sale.order
    compute='_compute_sale_order_ids' string='Sales Orders' args: 'sale.order'
Public methods (1)
  • action_view_so(self)

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index='btree_not_null' args: 'sale.order.line', 'Sale Line'
Public methods (1)
  • default_get(self, fields_list)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    comodel_name='sale.order' compute='_compute_sale_id' index='btree_not_null' store=True string='Sales Order'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • so_route_ids Many2many → stock.route
    domain="[('sale_selectable', '=', True)]" help='Choose to apply SO lines specific routes.' string='Apply specific routes' args: 'stock.route'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Xavier Morel, Damien Bouvy, Barad Mahendra, Yannick Tivisse, Lucas Perais, Arnold Moyaux, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, Akim Juillerat, Anh Thao Pham (pta), svs-odoo, Achraf (abz), Brice bib Bartoletti, Adrien Widart, Ivan Yelizariev, Touati Djamel (otd), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, snd, Aurélien (avd), Stefan-Calin Crainiciuc (stcc), roen-odoo, Hubert Van de Walle (huvw), Miquel Raïch, momegahed, william-andre, PNO, yhu-odoo, thcl-odoo, mafo-odoo, william, Walid HANNICHE (waha), Yolann Sabaux, John Laterre (jol), Antoine Vandevenne (anv), Jinjiu Liu, Demesmaeker, Aurelien van Delft (avd), niyasraphy, Rodrigo, Matheus Leal Viana (malv), Merel Geens (mege), Walid, Adrien Widart (awt), Victor Piryns (pivi), Tommy (tong), amdi-odoo, clesgow, Djamel Touati, Julien Alardot (jual), Cedric Prieels (cpr), Horacio Tellez, Ahmed Khalaf (ahkh), adda-odoo, Mahdi Cheikh Rouhou (macr), Mattis Megevand (mmeg), Zachary Hanham, guva-odoo, BernatPForgeFlow, lase@odoo.com, AMZIL Ayoub, Martin Trigaux (mat), Chrysanthe (chgo), Hussein Ebrahim(hyhe), kago-odoo, mathysPaul
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_so exception_on_so ir.ui.view qweb New
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_invoice_document_inherit_sale_stock report_invoice_document_inherit_sale_stock ir.ui.view qweb Inherits account.report_invoice_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_sale res.config.settings.view.form.inherit.sale.stock.sale res.config.settings xpath Inherits sale.res_config_settings_view_form
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings div Inherits stock.res_config_settings_view_form
res_users_view_form res.users.form.inherit res.users group Inherits base.view_users_form
res_users_view_form_preferences res.users.preferences.form.inherit res.users group Inherits base.view_users_form_simple_modif
res_users_view_simple_form res.users.simple.form.inherit res.users group Inherits base.view_users_simple_form
sale_order_cancel_view_form_inherit sale.order.cancel.form.inherit sale.order.cancel span Inherits sale.sale_order_cancel_view_form
sale_order_portal_content_inherit_sale_stock Orders Shipping Followup ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_report_product_product_replenishment sale_report_product_product_replenishment ir.ui.view qweb Inherits stock.report_product_product_replenishment
stock_location_route_view_form_inherit_sale_stock stock.route.form stock.route xpath Inherits stock.stock_location_route_form_view
stock_production_lot_view_form stock.production.lot.view.form stock.lot xpath Inherits stock.view_production_lot_form
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_form_inherit_sale_stock_qty sale.order.line.tree.sale.stock.qty sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_order_tree sale.order.tree.inherit.sale.stock sale.order xpath Inherits sale.view_order_tree
view_quotation_tree sale.order.tree.inherit.sale.stock sale.order xpath Inherits sale.view_quotation_tree
view_stock_rules_report_sale Stock Rules Report Sale stock.rules.report xpath Inherits stock.view_stock_rules_report
Models touched (19)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (4)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Picking Policy'
  • group_display_incoterm Boolean
    implied_group='sale_stock.group_display_incoterm' args: 'Incoterms'
  • security_lead Float
    readonly=False related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    config_parameter='sale_stock.use_security_lead' help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' string='Security Lead Time for Sales'
Public methods (0)

No public methods.

New fields (1)
  • property_warehouse_id Many2one → stock.warehouse
    check_company=True company_dependent=True string='Default Warehouse' args: 'stock.warehouse'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (12)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • delivery_status Selection
    compute='_compute_delivery_status' store=True string='Delivery Status' args: [('pending', 'Not Delivered'), ('started', 'Started'), ('partial', 'Partially Delivered'), ('full', 'Fully Delivered')]
  • effective_date Datetime
    compute='_compute_effective_date' help='Completion date of the first delivery order.' store=True args: 'Effective Date'
  • expected_date Datetime
    help='Delivery date you can promise to the customer, computed from the minimum lead time of the order lines in case of Service products. In case of shipping, the shipping policy of the order will be taken into account to either use the minimum or maximum lead time of the order lines.'
  • incoterm Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'account.incoterms', 'Incoterm'
  • incoterm_location Char
    string='Incoterm Location'
  • json_popover Char
    compute='_compute_json_popover' args: 'JSON data for the popover widget'
  • picking_ids One2many → stock.picking
    string='Transfers' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.' readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Shipping Policy' args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
  • procurement_group_id Many2one → procurement.group
    copy=False args: 'procurement.group', 'Procurement Group'
  • show_json_popover Boolean
    compute='_compute_json_popover' args: 'Has late picking'
  • warehouse_id Many2one → stock.warehouse
    check_company=True compute='_compute_warehouse_id' precompute=True readonly=False required=True states={'sale': [('readonly', True)], 'done': [('readonly', True)], 'cancel': [('readonly', False)]} store=True string='Warehouse' args: 'stock.warehouse'
Public methods (2)
  • action_view_delivery(self)
  • write(self, values)

New fields (1)
  • display_delivery_alert Boolean
    compute='_compute_display_delivery_alert' args: 'Delivery Alert'
Public methods (0)

No public methods.

New fields (13)
  • customer_lead Float
    compute='_compute_customer_lead' inverse='_inverse_customer_lead' precompute=True readonly=False store=True
  • display_qty_widget Boolean
    compute='_compute_qty_to_deliver'
  • forecast_expected_date Datetime
    compute='_compute_qty_at_date'
  • free_qty_today Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • is_mto Boolean
    compute='_compute_is_mto'
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • qty_available_today Float
    compute='_compute_qty_at_date'
  • qty_delivered_method Selection
    selection_add=[('stock_move', 'Stock Moves')]
  • qty_to_deliver Float
    compute='_compute_qty_to_deliver' digits='Product Unit of Measure'
  • route_id Many2one → stock.route
    check_company=True domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Route' args: 'stock.route'
  • scheduled_date Datetime
    compute='_compute_qty_at_date'
  • virtual_available_at_date Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • warehouse_id Many2one
    related='order_id.warehouse_id'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (2)
  • sale_order_count Integer
    compute='_compute_sale_order_ids' args: 'Sale order count'
  • sale_order_ids Many2many → sale.order
    compute='_compute_sale_order_ids' string='Sales Orders' args: 'sale.order'
Public methods (1)
  • action_view_so(self)

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index='btree_not_null' args: 'sale.order.line', 'Sale Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one
    index='btree_not_null' readonly=False related='group_id.sale_id' store=True string='Sales Order'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • so_route_ids Many2many → stock.route
    domain="[('sale_selectable', '=', True)]" help='Choose to apply SO lines specific routes.' string='Apply specific routes' args: 'stock.route'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Goffin Simon, Nicolas Martinelli, Guewen Baconnier, Aaron Bohy, Jeremy Kersten, GitHub, Yannick Tivisse, Pierre Masereel, Arnold Moyaux, Xavier-Do, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, Florent de Labarre, Julien Mougenot, Anh Thao Pham (pta), Katherine Zaoral, svs-odoo, Achraf (abz), Brice bib Bartoletti, Adrien Widart, Touati Djamel (otd), Swapnesh Shah, Tiffany Chang (tic), Rémy Voet (ryv), fja-odoo, snd, jbw, Aurélien (avd), Stefan-Calin Crainiciuc (stcc), roen-odoo, Hardik Prajapati, Bruno Zanotti (ADHOC), momegahed, william-andre, Víctor Martínez, yhu-odoo, thcl-odoo, mafo-odoo, Yolann Sabaux, Jinjiu Liu, Aurelien van Delft (avd), Matheus Leal Viana (malv), Merel Geens (mege), Walid, Mylyna Hy, Adrien Widart (awt), Victor Piryns (pivi), Tommy (tong), clesgow, Djamel Touati, Nicolas Pierre, Julien Alardot (jual), Mattis Megevand (mmeg), Zachary Hanham
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

Code Analysis

Views touched (26)
XML IDNameModelTypeStatus
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_so exception_on_so ir.ui.view qweb New
product_template_view_form_inherit_sale product.template.inherit.form product.template xpath Inherits sale.product_template_form_view_sale_order_button
product_template_view_form_inherit_stock product.template.inherit.form product.template button Inherits stock.product_template_form_view_procurement_button
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_invoice_document_inherit_sale_stock report_invoice_document_inherit_sale_stock ir.ui.view qweb Inherits account.report_invoice_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_sale res.config.settings.view.form.inherit.sale.stock.sale res.config.settings xpath Inherits sale.res_config_settings_view_form
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings div Inherits stock.res_config_settings_view_form
res_users_view_form res.users.form.inherit res.users group Inherits base.view_users_form
res_users_view_form_preferences res.users.preferences.form.inherit res.users group Inherits base.view_users_form_simple_modif
res_users_view_simple_form res.users.simple.form.inherit res.users group Inherits base.view_users_simple_form
sale_order_cancel_view_form_inherit sale.order.cancel.form.inherit sale.order.cancel field Inherits sale.sale_order_cancel_view_form
sale_order_portal_content_inherit_sale_stock Orders Shipping Followup ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_report_product_product_replenishment sale_report_product_product_replenishment ir.ui.view qweb Inherits stock.report_product_product_replenishment
stock.product_template_kanban_stock_view New
stock.view_stock_product_template_tree New
stock.view_stock_product_tree New
stock_location_route_view_form_inherit_sale_stock stock.location.route.form stock.location.route xpath Inherits stock.stock_location_route_form_view
stock_production_lot_view_form stock.production.lot.view.form stock.production.lot xpath Inherits stock.view_production_lot_form
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_form_inherit_sale_stock_qty sale.order.line.tree.sale.stock.qty sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_order_tree sale.order.tree.inherit.sale.stock sale.order xpath Inherits sale.view_order_tree
view_quotation_tree sale.order.tree.inherit.sale.stock sale.order xpath Inherits sale.view_quotation_tree
view_stock_rules_report_sale Stock Rules Report Sale stock.rules.report xpath Inherits stock.view_stock_rules_report
Models touched (20)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (4)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Picking Policy'
  • group_display_incoterm Boolean
    implied_group='sale_stock.group_display_incoterm' args: 'Incoterms'
  • security_lead Float
    readonly=False related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    config_parameter='sale_stock.use_security_lead' help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' string='Security Lead Time for Sales'
Public methods (0)

No public methods.

New fields (1)
  • property_warehouse_id Many2one → stock.warehouse
    check_company=True company_dependent=True string='Default Warehouse' args: 'stock.warehouse'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • effective_date Datetime
    compute='_compute_effective_date' help='Completion date of the first delivery order.' store=True args: 'Effective Date'
  • expected_date Datetime
    help='Delivery date you can promise to the customer, computed from the minimum lead time of the order lines in case of Service products. In case of shipping, the shipping policy of the order will be taken into account to either use the minimum or maximum lead time of the order lines.'
  • incoterm Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'account.incoterms', 'Incoterm'
  • json_popover Char
    compute='_compute_json_popover' args: 'JSON data for the popover widget'
  • picking_ids One2many → stock.picking
    string='Transfers' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.' readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Shipping Policy' args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
  • procurement_group_id Many2one → procurement.group
    copy=False args: 'procurement.group', 'Procurement Group'
  • show_json_popover Boolean
    compute='_compute_json_popover' args: 'Has late picking'
  • warehouse_id Many2one → stock.warehouse
    check_company=True default=_default_warehouse_id readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Warehouse' args: 'stock.warehouse'
Public methods (4)
  • action_view_delivery(self)
  • create(self, vals)
    @api.model
  • onchange_user_id(self)
    @api.onchange('user_id')
  • write(self, values)

New fields (1)
  • display_delivery_alert Boolean
    compute='_compute_display_delivery_alert' args: 'Delivery Alert'
Public methods (0)

No public methods.

New fields (13)
  • display_qty_widget Boolean
    compute='_compute_qty_to_deliver'
  • forecast_expected_date Datetime
    compute='_compute_qty_at_date'
  • free_qty_today Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • is_mto Boolean
    compute='_compute_is_mto'
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • product_type Selection
    related='product_id.detailed_type'
  • qty_available_today Float
    compute='_compute_qty_at_date'
  • qty_delivered_method Selection
    selection_add=[('stock_move', 'Stock Moves')]
  • qty_to_deliver Float
    compute='_compute_qty_to_deliver' digits='Product Unit of Measure'
  • route_id Many2one → stock.location.route
    check_company=True domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Route' args: 'stock.location.route'
  • scheduled_date Datetime
    compute='_compute_qty_at_date'
  • virtual_available_at_date Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • warehouse_id Many2one
    related='order_id.warehouse_id'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index=True args: 'sale.order.line', 'Sale Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one
    readonly=False related='group_id.sale_id' store=True string='Sales Order'
Public methods (0)

No public methods.

New fields (2)
  • sale_order_count Integer
    compute='_compute_sale_order_ids' args: 'Sale order count'
  • sale_order_ids Many2many → sale.order
    compute='_compute_sale_order_ids' string='Sales Orders' args: 'sale.order'
Public methods (1)
  • action_view_so(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • so_route_ids Many2many → stock.location.route
    domain="[('sale_selectable', '=', True)]" help='Choose to apply SO lines specific routes.' string='Apply specific routes' args: 'stock.location.route'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Christophe Simonis, Goffin Simon, Simon Lejeune, Ravi Gohil, Nicolas Martinelli, Guewen Baconnier, Nicolas Lempereur, Aaron Bohy, GitHub, Damien Bouvy, Yannick Tivisse, Laurent Smet, Arnold Moyaux, Julien Castiaux, Xavier-Do, jvm-odoo, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, Akim Juillerat, oco-odoo, Florent de Labarre, fw-bot, Anh Thao Pham (pta), Katherine Zaoral, Debauche Stéphane, svs-odoo, Rémy Baranx (bar), Achraf (abz), Lucas Lefèvre, Brice bib Bartoletti, Adrien Widart, Touati Djamel (otd), Swapnesh Shah, Tiffany Chang (tic), Rémy Voet (ryv), fja-odoo, snd, Hiral Bhavsar, Aurélien (avd), Kevin Baptiste, Pratima Gupta, Stefan-Calin Crainiciuc (stcc), roen-odoo, Miquel Raïch, Bruno Zanotti (ADHOC), sergio-teruel, momegahed, jdoutreloux, Jigar Vaghela, Nicolas (vin), thcl-odoo, mafo-odoo, william, Walid HANNICHE (waha), Yolann Sabaux, Hemali Bhimani, Jinjiu Liu, bve-odoo, Merel Geens (mege), Mylyna Hy, Adrien Widart (awt)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

Code Analysis

Views touched (25)
XML IDNameModelTypeStatus
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_so exception_on_so ir.ui.view qweb New
product_template_view_form_inherit_sale product.template.inherit.form product.template xpath Inherits sale.product_template_form_view_sale_order_button
product_template_view_form_inherit_stock product.template.inherit.form product.template button Inherits stock.product_template_form_view_procurement_button
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_invoice_document_inherit_sale_stock report_invoice_document_inherit_sale_stock ir.ui.view qweb Inherits account.report_invoice_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_sale res.config.settings.view.form.inherit.sale.stock.sale res.config.settings xpath Inherits sale.res_config_settings_view_form
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings div Inherits stock.res_config_settings_view_form
res_users_view_form res.users.form.inherit res.users group Inherits base.view_users_form
res_users_view_form_preferences res.users.preferences.form.inherit res.users group Inherits base.view_users_form_simple_modif
res_users_view_simple_form res.users.simple.form.inherit res.users group Inherits base.view_users_simple_form
sale_order_cancel_view_form_inherit sale.order.cancel.form.inherit sale.order.cancel field Inherits sale.sale_order_cancel_view_form
sale_order_line_view_list sale.order.line.view.list ir.ui.view qweb Inherits web.assets_backend
sale_order_portal_content_inherit_sale_stock Orders Shipping Followup ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_report_product_product_replenishment sale_report_product_product_replenishment ir.ui.view qweb Inherits stock.report_product_product_replenishment
sale_stock_report_invoice_document sale_stock_report_invoice_document ir.ui.view qweb Inherits account.report_invoice_document
stock_location_route_view_form_inherit_sale_stock stock.location.route.form stock.location.route xpath Inherits stock.stock_location_route_form_view
stock_production_lot_view_form stock.production.lot.view.form stock.production.lot xpath Inherits stock.view_production_lot_form
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_form_inherit_sale_stock_qty sale.order.line.tree.sale.stock.qty sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_order_tree sale.order.tree.inherit.sale.stock sale.order xpath Inherits sale.view_order_tree
view_quotation_tree sale.order.tree.inherit.sale.stock sale.order xpath Inherits sale.view_quotation_tree
view_stock_rules_report_sale Stock Rules Report Sale stock.rules.report xpath Inherits stock.view_stock_rules_report
Models touched (19)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (5)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Picking Policy'
  • group_display_incoterm Boolean
    implied_group='sale_stock.group_display_incoterm' args: 'Incoterms'
  • group_lot_on_invoice Boolean
    implied_group='sale_stock.group_lot_on_invoice' args: 'Display Lots & Serial Numbers on Invoices'
  • security_lead Float
    readonly=False related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    config_parameter='sale_stock.use_security_lead' help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' string='Security Lead Time for Sales'
Public methods (0)

No public methods.

New fields (1)
  • property_warehouse_id Many2one → stock.warehouse
    check_company=True company_dependent=True string='Default Warehouse' args: 'stock.warehouse'
Public methods (0)

No public methods.

New fields (10)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • effective_date Date
    compute='_compute_effective_date' help='Completion date of the first delivery order.' store=True args: 'Effective Date'
  • expected_date Datetime
    help='Delivery date you can promise to the customer, computed from the minimum lead time of the order lines in case of Service products. In case of shipping, the shipping policy of the order will be taken into account to either use the minimum or maximum lead time of the order lines.'
  • incoterm Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'account.incoterms', 'Incoterm'
  • json_popover Char
    compute='_compute_json_popover' args: 'JSON data for the popover widget'
  • picking_ids One2many → stock.picking
    string='Transfers' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.' readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Shipping Policy' args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
  • procurement_group_id Many2one → procurement.group
    copy=False args: 'procurement.group', 'Procurement Group'
  • show_json_popover Boolean
    compute='_compute_json_popover' args: 'Has late picking'
  • warehouse_id Many2one → stock.warehouse
    check_company=True default=_default_warehouse_id readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Warehouse' args: 'stock.warehouse'
Public methods (4)
  • action_view_delivery(self)
    This function returns an action that display existing delivery orders of given sales order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.
  • create(self, vals)
    @api.model
  • onchange_user_id(self)
    @api.onchange('user_id')
  • write(self, values)

New fields (1)
  • display_delivery_alert Boolean
    compute='_compute_display_delivery_alert' args: 'Delivery Alert'
Public methods (0)

No public methods.

New fields (14)
  • display_qty_widget Boolean
    compute='_compute_qty_to_deliver'
  • forecast_expected_date Datetime
    compute='_compute_qty_at_date'
  • free_qty_today Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • is_mto Boolean
    compute='_compute_is_mto'
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • product_packaging Many2one → product.packaging
    check_company=True default=False string='Package' args: 'product.packaging'
  • product_type Selection
    related='product_id.type'
  • qty_available_today Float
    compute='_compute_qty_at_date'
  • qty_delivered_method Selection
    selection_add=[('stock_move', 'Stock Moves')]
  • qty_to_deliver Float
    compute='_compute_qty_to_deliver' digits='Product Unit of Measure'
  • route_id Many2one → stock.location.route
    check_company=True domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Route' args: 'stock.location.route'
  • scheduled_date Datetime
    compute='_compute_qty_at_date'
  • virtual_available_at_date Float
    compute='_compute_qty_at_date' digits='Product Unit of Measure'
  • warehouse_id Many2one
    related='order_id.warehouse_id'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index=True args: 'sale.order.line', 'Sale Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one
    readonly=False related='group_id.sale_id' store=True string='Sales Order'
Public methods (0)

No public methods.

New fields (2)
  • sale_order_count Integer
    compute='_compute_sale_order_ids' args: 'Sale order count'
  • sale_order_ids Many2many → sale.order
    compute='_compute_sale_order_ids' string='Sales Orders' args: 'sale.order'
Public methods (1)
  • action_view_so(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • so_route_ids Many2many → stock.location.route
    domain="[('sale_selectable', '=', True)]" help='Choose to apply SO lines specific routes.' string='Apply specific routes' args: 'stock.location.route'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Denis Ledoux, Christophe Simonis, David Monjoie, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Guewen Baconnier, qdp-odoo, Aaron Bohy, GitHub, Damien Bouvy, Barad Mahendra, Yannick Tivisse, Odoo Online, Pierre Masereel, Laurent Smet, jem-odoo, Jorge Pinna Puissant, Toufik Ben Jaa, Arnold Moyaux, Adrian Torres, wan, Julien Castiaux, Aurélien Warnon, Xavier-Do, jvm-odoo, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, Akim Juillerat, Anh Thao Pham (pta), Katherine Zaoral, svs-odoo, Achraf (abz), Brice bib Bartoletti, Adrien Widart, Prakash Prajapati, nie, Tiffany Chang (tic), fja-odoo, Aurélien (avd), root, Arnaud Baes, Miquel Raïch, Bruno Zanotti (ADHOC), sergio-teruel, momegahed, jdoutreloux
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_so exception_on_so ir.ui.view qweb New
product_template_view_form_inherit_sale product.template.inherit.form product.template xpath Inherits sale.product_template_form_view_sale_order_button
product_template_view_form_inherit_stock product.template.inherit.form product.template button Inherits stock.product_template_form_view_procurement_button
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_invoice_document_inherit_sale_stock report_invoice_document_inherit_sale_stock ir.ui.view qweb Inherits account.report_invoice_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_sale res.config.settings.view.form.inherit.sale.stock.sale res.config.settings xpath Inherits sale.res_config_settings_view_form
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings div Inherits stock.res_config_settings_view_form
sale_order_line_view_list sale.order.line.view.list ir.ui.view qweb Inherits web.assets_backend
sale_order_portal_content_inherit_sale_stock Orders Shipping Followup ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_stock_report_invoice_document sale_stock_report_invoice_document ir.ui.view qweb Inherits account.report_invoice_document
stock_location_route_view_form_inherit_sale_stock stock.location.route.form stock.location.route xpath Inherits stock.stock_location_route_form_view
stock_production_lot_view_form stock.production.lot.view.form stock.production.lot xpath Inherits stock.view_production_lot_form
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_form_inherit_sale_stock_qty sale.order.line.tree.sale.stock.qty sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_order_tree sale.order.tree.inherit.sale.stock sale.order xpath Inherits sale.view_order_tree
view_quotation_tree sale.order.tree.inherit.sale.stock sale.order xpath Inherits sale.view_quotation_tree
view_stock_rules_report_sale Stock Rules Report Sale stock.rules.report xpath Inherits stock.view_stock_rules_report
Models touched (16)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (5)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Picking Policy'
  • group_display_incoterm Boolean
    implied_group='sale_stock.group_display_incoterm' args: 'Incoterms'
  • group_lot_on_invoice Boolean
    implied_group='sale_stock.group_lot_on_invoice' args: 'Display Lots & Serial Numbers on Invoices'
  • security_lead Float
    readonly=False related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    config_parameter='sale_stock.use_security_lead' help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' string='Security Lead Time for Sales'
Public methods (0)

No public methods.

New fields (8)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • effective_date Date
    compute='_compute_effective_date' help='Completion date of the first delivery order.' store=True args: 'Effective Date'
  • expected_date Datetime
    help='Delivery date you can promise to the customer, computed from the minimum lead time of the order lines in case of Service products. In case of shipping, the shipping policy of the order will be taken into account to either use the minimum or maximum lead time of the order lines.'
  • incoterm Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'account.incoterms', 'Incoterm'
  • picking_ids One2many → stock.picking
    string='Transfers' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.' readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Shipping Policy' args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
  • procurement_group_id Many2one → procurement.group
    copy=False args: 'procurement.group', 'Procurement Group'
  • warehouse_id Many2one → stock.warehouse
    check_company=True default=_default_warehouse_id readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Warehouse' args: 'stock.warehouse'
Public methods (4)
  • action_cancel(self)
  • action_view_delivery(self)
    This function returns an action that display existing delivery orders of given sales order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.
  • create(self, vals)
    @api.model
  • write(self, values)

New fields (13)
  • display_qty_widget Boolean
    compute='_compute_qty_to_deliver'
  • free_qty_today Float
    compute='_compute_qty_at_date'
  • is_mto Boolean
    compute='_compute_is_mto'
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • product_packaging Many2one → product.packaging
    check_company=True default=False string='Package' args: 'product.packaging'
  • product_type Selection
    related='product_id.type'
  • qty_available_today Float
    compute='_compute_qty_at_date'
  • qty_delivered_method Selection
    selection_add=[('stock_move', 'Stock Moves')]
  • qty_to_deliver Float
    compute='_compute_qty_to_deliver'
  • route_id Many2one → stock.location.route
    check_company=True domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Route' args: 'stock.location.route'
  • scheduled_date Datetime
    compute='_compute_qty_at_date'
  • virtual_available_at_date Float
    compute='_compute_qty_at_date'
  • warehouse_id Many2one → stock.warehouse
    compute='_compute_qty_at_date' args: 'stock.warehouse'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index=True args: 'sale.order.line', 'Sale Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one
    readonly=False related='group_id.sale_id' store=True string='Sales Order'
Public methods (0)

No public methods.

New fields (2)
  • sale_order_count Integer
    compute='_compute_sale_order_ids' args: 'Sale order count'
  • sale_order_ids Many2many → sale.order
    compute='_compute_sale_order_ids' string='Sales Orders' args: 'sale.order'
Public methods (1)
  • action_view_so(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • so_route_ids Many2many → stock.location.route
    domain="[('sale_selectable', '=', True)]" help='Choose to apply SO lines specific routes.' string='Apply specific routes' args: 'stock.location.route'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, GitHub, Yannick Tivisse, qsm-odoo, Pierre Masereel, Romain Derie, jem-odoo, RomainLibert, Christophe Monniez, Julien (juc) Castiaux, Nans Lefebvre, Johan Demaret Rivarola, jev-odoo, Arnold Moyaux, Adrian Torres, XavierDo, Aurélien Warnon, Xavier-Do, Andrea Grazioso (agr-odoo), William Henrotin, Sébastien Theys, Anh Thao Pham (pta), Kinjal Mehta, Quentin Smetz (qsm), Adrien Widart
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
assets_backend assets_backend ir.ui.view qweb Inherits web.assets_backend
exception_on_picking exception_on_picking ir.ui.view qweb New
exception_on_so exception_on_so ir.ui.view qweb New
invoice_form_inherit_sale_stock account.invoice.form.sale.stock account.invoice data Inherits account.invoice_form
product_template_view_form_inherit_sale product.template.inherit.form product.template xpath Inherits sale.product_template_form_view_sale_order_button
product_template_view_form_inherit_stock product.template.inherit.form product.template button Inherits stock.product_template_form_view_procurement_button
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_invoice_document_inherit_sale_stock report_invoice_document_inherit_sale_stock ir.ui.view qweb Inherits account.report_invoice_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_sale res.config.settings.view.form.inherit.sale.stock.sale res.config.settings xpath Inherits sale.res_config_settings_view_form
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings div Inherits stock.res_config_settings_view_form
sale_order_portal_content_inherit_sale_stock Orders Shipping Followup ir.ui.view qweb Inherits sale.sale_order_portal_content
stock_config_settings_view_form_inherit_sale_stock stock.config.settings.inherit.sale.stock stock.config.settings div Inherits stock.view_stock_config_settings
stock_location_route_view_form_inherit_sale_stock stock.location.route.form stock.location.route xpath Inherits stock.stock_location_route_form_view
stock_production_lot_view_form stock.production.lot.view.form stock.production.lot xpath Inherits stock.view_production_lot_form
stock_production_lot_view_form_simple stock.production.lot.view.form.simple stock.production.lot xpath Inherits stock.view_production_lot_form_simple
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_stock_rules_report_sale Stock Rules Report Sale stock.rules.report xpath Inherits stock.view_stock_rules_report
Models touched (16)

New fields (1)
  • incoterms_id Many2one → account.incoterms
    help='Incoterms are series of sales terms. They are used to divide transaction costs and responsibilities between buyer and seller and reflect state-of-the-art transportation practices.' readonly=True states={'draft': [('readonly', False)]} string='Incoterms' args: 'account.incoterms'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (5)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Picking Policy'
  • group_display_incoterm Boolean
    implied_group='sale_stock.group_display_incoterm' args: 'Incoterms'
  • group_route_so_lines Boolean
    implied_group='sale_stock.group_route_so_lines' args: 'Order-Specific Routes'
  • security_lead Float
    readonly=False related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    config_parameter='sale_stock.use_security_lead' help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' oldname='default_new_security_lead' string='Security Lead Time for Sales'
Public methods (0)

No public methods.

New fields (7)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • effective_date Date
    compute='_compute_effective_date' help='Completion date of the first delivery order.' store=True args: 'Effective Date'
  • incoterm Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'account.incoterms', 'Incoterms'
  • picking_ids One2many → stock.picking
    string='Pickings' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.' readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Shipping Policy' args: [('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')]
  • procurement_group_id Many2one → procurement.group
    copy=False args: 'procurement.group', 'Procurement Group'
  • warehouse_id Many2one → stock.warehouse
    default=_default_warehouse_id readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Warehouse' args: 'stock.warehouse'
Public methods (3)
  • action_cancel(self)
    @api.multi
  • action_view_delivery(self)
    @api.multi
    This function returns an action that display existing delivery orders of given sales order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.
  • write(self, values)
    @api.multi

New fields (4)
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • product_packaging Many2one → product.packaging
    default=False string='Package' args: 'product.packaging'
  • qty_delivered_method Selection
    selection_add=[('stock_move', 'Stock Moves')]
  • route_id Many2one → stock.location.route
    domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Route' args: 'stock.location.route'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)
    @api.multi

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index=True args: 'sale.order.line', 'Sale Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one
    readonly=False related='group_id.sale_id' store=True string='Sales Order'
Public methods (0)

No public methods.

New fields (2)
  • sale_order_count Integer
    compute='_compute_sale_order_ids' args: 'Sale order count'
  • sale_order_ids Many2many → sale.order
    compute='_compute_sale_order_ids' string='Sales Orders' args: 'sale.order'
Public methods (1)
  • action_view_so(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • so_route_ids Many2many → stock.location.route
    domain="[('sale_selectable', '=', True)]" help='Choose to apply SO lines specific routes.' string='Apply specific rotues' args: 'stock.location.route'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Josse Colpaert, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, qdp-odoo, GitHub, Lucas Perais (lpe), Yannick Tivisse, Odoo Online, Pierre Masereel, DVE, fwi-odoo, len-odoo, Jorge Pinna Puissant, Nans Lefebvre, amoyaux, Arnold Moyaux, Carlos Dauden, rar-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/page/warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - analytic
    - web_planner
    - portal
    - http_routing
    - account_invoicing
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

You can choose flexible invoicing methods:

* *On Demand*: Invoices are created manually from Sales Orders when needed
* *On Delivery Order*: Invoices are generated from picking (delivery)
* *Before Delivery*: A Draft invoice is created and must be paid before delivery

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
assets_backend assets_backend ir.ui.view qweb Inherits web.assets_backend
invoice_form_inherit_sale_stock account.invoice.form.sale.stock account.invoice data Inherits account.invoice_form
product_template_view_form_inherit_sale product.template.inherit.form product.template xpath Inherits sale.product_template_form_view_sale_order_button
product_template_view_form_inherit_stock product.template.inherit.form product.template button Inherits stock.product_template_form_view_procurement_button
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_invoice_document_inherit_sale_stock report_invoice_document_inherit_sale_stock ir.ui.view qweb Inherits account.report_invoice_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
res_config_settings_view_form_sale res.config.settings.view.form.inherit.sale.stock.sale res.config.settings xpath Inherits sale.res_config_settings_view_form
res_config_settings_view_form_stock res.config.settings.view.form.inherit.sale.stock.stock res.config.settings div Inherits stock.res_config_settings_view_form
stock_config_settings_view_form_inherit_sale_stock stock.config.settings.inherit.sale.stock stock.config.settings div Inherits stock.view_stock_config_settings
stock_location_route_view_form_inherit_sale_stock stock.location.route.form stock.location.route xpath Inherits stock.stock_location_route_form_view
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
Models touched (12)

New fields (1)
  • incoterms_id Many2one → stock.incoterms
    help='Incoterms are series of sales terms. They are used to divide transaction costs and responsibilities between buyer and seller and reflect state-of-the-art transportation practices.' readonly=True states={'draft': [('readonly', False)]} string='Incoterms' args: 'stock.incoterms'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (6)
  • default_picking_policy Selection
    default='direct' default_model='sale.order' required=True args: [('direct', 'Ship products as soon as available, with back orders'), ('one', 'Ship all products at once')], 'Shipping Management'
  • group_display_incoterm Boolean
    implied_group='sale_stock.group_display_incoterm' args: 'Incoterms'
  • group_route_so_lines Boolean
    implied_group='sale_stock.group_route_so_lines' args: 'Order-Specific Routes'
  • module_sale_order_dates Boolean
    args: 'Delivery Date'
  • security_lead Float
    related='company_id.security_lead' string='Security Lead Time'
  • use_security_lead Boolean
    help='Margin of error for dates promised to customers. Products will be scheduled for delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' oldname='default_new_security_lead' string='Security Lead Time for Sales'
Public methods (2)
  • get_values(self)
  • set_values(self)

New fields (6)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • incoterm Many2one → stock.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'stock.incoterms', 'Incoterms'
  • picking_ids One2many → stock.picking
    string='Pickings' args: 'stock.picking', 'sale_id'
  • picking_policy Selection
    default='direct' readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Shipping Policy' args: [('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')]
  • procurement_group_id Many2one → procurement.group
    copy=False args: 'procurement.group', 'Procurement Group'
  • warehouse_id Many2one → stock.warehouse
    default=_default_warehouse_id readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Warehouse' args: 'stock.warehouse'
Public methods (2)
  • action_cancel(self)
    @api.multi
  • action_view_delivery(self)
    @api.multi
    This function returns an action that display existing delivery orders of given sales order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.

New fields (3)
  • move_ids One2many → stock.move
    string='Stock Moves' args: 'stock.move', 'sale_line_id'
  • product_packaging Many2one → product.packaging
    default=False string='Package' args: 'product.packaging'
  • route_id Many2one → stock.location.route
    domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Route' args: 'stock.location.route'
Public methods (2)
  • create(self, values)
    @api.model
  • write(self, values)
    @api.multi

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (1)
  • sale_line_id Many2one → sale.order.line
    index=True args: 'sale.order.line', 'Sale Line'
Public methods (1)
  • write(self, vals)
    @api.multi

New fields (1)
  • sale_id Many2one
    related='group_id.sale_id' store=True string='Sales Order'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Julien Legros, qdp-odoo, Jeremy Kersten, Yannick Tivisse, qsm-odoo, len-odoo, amoyaux
WEBSITE
WEBSITEhttps://www.odoo.com/page/warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_planner
    - procurement
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

You can choose flexible invoicing methods:

* *On Demand*: Invoices are created manually from Sales Orders when needed
* *On Delivery Order*: Invoices are generated from picking (delivery)
* *Before Delivery*: A Draft invoice is created and must be paid before delivery

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
assets_backend assets_backend ir.ui.view qweb Inherits web.assets_backend
invoice_form_inherit_sale_stock account.invoice.form.sale.stock account.invoice data Inherits account.invoice_form
report_delivery_document_inherit_sale_stock report_delivery_document_inherit_sale_stock ir.ui.view qweb Inherits stock.report_delivery_document
report_invoice_document_inherit_sale_stock report_invoice_document_inherit_sale_stock ir.ui.view qweb Inherits account.report_invoice_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
stock_location_route_form_view_inherit_sale_stock stock.location.route.form stock.location.route xpath Inherits stock.stock_location_route_form_view
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order xpath Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_sales_config_inherit_sale_stock sale settings sale.config.settings group Inherits sale.view_sales_config
view_stock_return_picking_form_inherit_sale_stock stock.return.picking.sale.stock.form stock.return.picking field Inherits stock.view_stock_return_picking_form
Models touched (14)

New fields (1)
  • incoterms_id Many2one → stock.incoterms
    help='Incoterms are series of sales terms. They are used to divide transaction costs and responsibilities between buyer and seller and reflect state-of-the-art transportation practices.' readonly=True states={'draft': [('readonly', False)]} string='Incoterms' args: 'stock.incoterms'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (6)
  • default_picking_policy Selection
    args: [(0, 'Ship products when some are available, and allow back orders'), (1, 'Ship all products at once, without back orders')], 'Default Shipping Policy'
  • group_mrp_properties Selection
    help='Allows you to tag sales order lines with properties.' implied_group='sale.group_mrp_properties' args: [(0, "Don't use manufacturing properties (recommended as its easier)"), (1, 'Allow setting manufacturing order properties per order line (advanced)')], 'Properties on SO Lines'
  • group_route_so_lines Selection
    implied_group='sale_stock.group_route_so_lines' args: [(0, 'No order specific routes like MTO or drop shipping'), (1, 'Choose specific routes on sales order lines (advanced)')], 'Order Routing'
  • module_delivery Selection
    args: [(0, 'No shipping costs on sales orders'), (1, 'Allow adding shipping costs')], 'Shipping'
  • module_sale_order_dates Selection
    args: [(0, 'Procurements and deliveries dates are based on the sales order dates'), (1, 'Allow to modify the sales order dates to postpone deliveries and procurements')], 'Date'
  • security_lead Float
    related='company_id.security_lead' string='Sales Safety Days *'
Public methods (2)
  • get_default_sale_config(self, fields)
    @api.model
  • set_sale_defaults(self)
    @api.multi

New fields (5)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • incoterm Many2one → stock.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'stock.incoterms', 'Incoterms'
  • picking_ids Many2many → stock.picking
    compute='_compute_picking_ids' string='Picking associated to this sale' args: 'stock.picking'
  • picking_policy Selection
    default='direct' readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Shipping Policy' args: [('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')]
  • warehouse_id Many2one → stock.warehouse
    default=_default_warehouse_id readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Warehouse' args: 'stock.warehouse'
Public methods (2)
  • action_cancel(self)
    @api.multi
  • action_view_delivery(self)
    @api.multi
    This function returns an action that display existing delivery orders of given sales order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.

New fields (3)
  • product_packaging Many2one → product.packaging
    default=False string='Packaging' args: 'product.packaging'
  • product_tmpl_id Many2one → product.template
    readonly=True related='product_id.product_tmpl_id' string='Product Template' args: 'product.template'
  • route_id Many2one → stock.location.route
    domain=[('sale_selectable', '=', True)] string='Route' args: 'stock.location.route'
Public methods (0)

No public methods.

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    args: 'Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (1)
  • to_refund_so Boolean
    copy=False default=False help='Trigger a decrease of the delivered quantity in the associated Sale Order' args: 'To Refund in SO'
Public methods (2)
  • action_done(self)
    @api.multi
  • assign_picking(self)
    @api.multi

New fields (1)
  • sale_id Many2one → sale.order
    compute='_compute_sale_id' search='_search_sale_id' args: 'sale.order', 'Sale Order'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • to_refund_so Boolean
    help='Trigger a decrease of the delivered quantity in the associated Sale Order' string='To Refund'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Frédéric van der Essen, Nicolas Martinelli, Jérome Maes, Richard Mathot, qdp-odoo, Aaron Bohy, Damien Bouvy, Yannick Tivisse, qsm-odoo, Martin Geubelle, Ajay javiya
WEBSITE
WEBSITEhttps://www.odoo.com/page/warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_tip
    - web_planner
    - procurement
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

You can choose flexible invoicing methods:

* *On Demand*: Invoices are created manually from Sales Orders when needed
* *On Delivery Order*: Invoices are generated from picking (delivery)
* *Before Delivery*: A Draft invoice is created and must be paid before delivery

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
invoice_form_inherit_sale_stock account.invoice.form.sale.stock account.invoice data Inherits account.invoice_form
report_invoice_document_inherit_sale_stock report_invoice_document_inherit_sale_stock ir.ui.view qweb Inherits account.report_invoice_document
report_saleorder_document_inherit_sale_stock report_saleorder_document_inherit_sale_stock ir.ui.view qweb Inherits sale.report_saleorder_document
stock_location_route_form_view_inherit_sale_stock stock.location.route.form stock.location.route xpath Inherits stock.stock_location_route_form_view
view_company_form_inherit_sale_stock res.company.mrp.config res.company xpath Inherits base.view_company_form
view_order_form_inherit_sale_stock sale.order.form.sale.stock sale.order data Inherits sale.view_order_form
view_order_line_tree_inherit_sale_stock sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_sales_config_inherit_sale_stock sale settings sale.config.settings xpath Inherits sale.view_sales_config
Models touched (12)

New fields (1)
  • incoterms_id Many2one → stock.incoterms
    help='Incoterms are series of sales terms. They are used to divide transaction costs and responsibilities between buyer and seller and reflect state-of-the-art transportation practices.' readonly=True states={'draft': [('readonly', False)]} string='Incoterms' args: 'stock.incoterms'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • security_lead Float
    default=0.0 help='Margin of error for dates promised to customers. Products will be scheduled for procurement and delivery that many days earlier than the actual promised date, to cope with unexpected delays in the supply chain.' required=True args: 'Sales Safety Days'
Public methods (0)

No public methods.

New fields (4)
  • default_picking_policy Selection
    args: [(0, 'Ship products when some are available, and allow back orders'), (1, 'Ship all products at once, without back orders')], 'Default Shipping Policy'
  • group_mrp_properties Selection
    help='Allows you to tag sales order lines with properties.' implied_group='sale.group_mrp_properties' args: [(0, "Don't use manufacturing properties (recommended as its easier)"), (1, 'Allow setting manufacturing order properties per order line (advanced)')], 'Properties on SO Lines'
  • group_route_so_lines Selection
    implied_group='sale_stock.group_route_so_lines' args: [(0, 'No order specific routes like MTO or drop shipping'), (1, 'Choose specific routes on sales order lines (advanced)')], 'Order Routing'
  • module_delivery Selection
    args: [(0, 'No shipping costs on sales orders'), (1, 'Allow adding shipping costs')], 'Shipping'
Public methods (2)
  • get_default_sale_config(self, fields)
    @api.model
  • set_sale_defaults(self)
    @api.multi

New fields (5)
  • delivery_count Integer
    compute='_compute_picking_ids' string='Delivery Orders'
  • incoterm Many2one → stock.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'stock.incoterms', 'Incoterms'
  • picking_ids Many2many → stock.picking
    compute='_compute_picking_ids' string='Picking associated to this sale' args: 'stock.picking'
  • picking_policy Selection
    default='direct' readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Shipping Policy' args: [('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')]
  • warehouse_id Many2one → stock.warehouse
    default=_default_warehouse_id readonly=True required=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Warehouse' args: 'stock.warehouse'
Public methods (2)
  • action_cancel(self)
    @api.multi
  • action_view_delivery(self)
    @api.multi
    This function returns an action that display existing delivery orders of given sales order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.

New fields (3)
  • product_packaging Many2one → product.packaging
    default=False string='Packaging' args: 'product.packaging'
  • product_tmpl_id Many2one → product.template
    readonly=True related='product_id.product_tmpl_id' string='Product Template' args: 'product.template'
  • route_id Many2one → stock.location.route
    domain=[('sale_selectable', '=', True)] string='Route' args: 'stock.location.route'
Public methods (0)

No public methods.

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    readonly=True args: 'stock.warehouse', 'Warehouse'
Public methods (0)

No public methods.

New fields (1)
  • sale_selectable Boolean
    string='Selectable on Sales Order Line'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)
    @api.multi

New fields (1)
  • sale_id Many2one → sale.order
    comodel_name='sale.order' compute='_compute_sale_id' search='_search_sale_id' string='Sale Order'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Randhir Mayatra (OpenERP), Odoo Translation Bot, Turkesh Patel (Open ERP), Christophe Matthieu, Martin Trigaux, Ajay Chauhan (OpenERP), Foram Katharotiya (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Tejas Tank, Thibault Delavallée, Vo Minh Thu, Josse Colpaert, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, Christophe Simonis, Xavier Morel, Goffin Simon, Cedric Snauwaert, Simon Lejeune, Nicolas Martinelli, RGA(OpenERP), Amit Bhavsar (Open ERP), Lionel Sausin, Anand Patel (OpenERP), jke-openerp, Aaron Bohy, Bharat R. Devnani (OpenERP), openerp-sle, Gery Debongnie, sgo@tinyerp.com, Mansi Kariya (OpenERP Trainee), Darshan Kalola (OpenERP), Darshan Kalola, Jitendra Prajapati (OpenERP)
WEBSITE
WEBSITEhttps://www.odoo.com/page/warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:38
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - web_kanban_sparkline
    - account_voucher
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - board
    - edi
    - email_template
    - procurement
    - stock_account
    - stock
    - web_kanban_gauge
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

You can choose flexible invoicing methods:

* *On Demand*: Invoices are created manually from Sales Orders when needed
* *On Delivery Order*: Invoices are generated from picking (delivery)
* *Before Delivery*: A Draft invoice is created and must be paid before delivery

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
mrp_company res.company.mrp.config res.company xpath Inherits base.view_company_form
stock_location_route_form_view_inherit stock.location.route.form stock.location.route xpath Inherits stock.stock_location_route_form_view
view_order_form_inherit sale.order.form.sale.stock sale.order data Inherits sale.view_order_form
view_order_form_inherit2 sale.order.line.form.sale.stock.location sale.order.line data Inherits sale.view_order_line_form2
view_order_line_tree_inherit sale.order.line.tree.sale.stock.location sale.order.line xpath Inherits sale.view_order_line_tree
view_picking_internal_search_inherit stock.picking.search.inherit stock.picking xpath Inherits stock.view_picking_internal_search
view_res_partner_tree_type res.partner.tree.inherit.type res.partner field Inherits base.view_partner_tree
view_sales_config_sale_stock sale settings sale.config.settings data Inherits sale.view_sales_config
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/7.0/sale_stock
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Twinkle Christian (OpenERP), Cecile Tonglet, Atul Patel (OpenERP), Odoo Translation Bot, Turkesh Patel (Open ERP), pankita shah (Open ERP), Martin Trigaux, Ajay Chauhan (OpenERP), Purnendu Singh (OpenERP), Fabien Pinckaers, Antony Lesuisse, Saurang Suthar, Olivier Dony, Rajesh Prajapati (OpenERP), Divyesh Makwana (Open ERP), Thibault Delavallée, Vo Minh Thu, Launchpad Translations on behalf of openerp, vta vta@openerp.com, Quentin (OpenERP), Denis Ledoux, Mayur Maheshwari (OpenERP), Sanjay Gohel (Open ERP), Christophe Simonis, Anael Closson, Khushboo Bhatt (Open ERP), Cedric Snauwaert, Amit Patel, Dhruti Shastri (OpenERP), Nicolas Martinelli, Davide Corio, Jigar Amin, Sebastien LANGE, Yannick Vaucher, Chandni Machchhar (OpenERP)
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:43:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - account_voucher
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
    - stock
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Manage sales quotations and orders
==================================

This module makes the link between the sales and warehouses management applications.

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

You can choose flexible invoicing methods:

* *On Demand*: Invoices are created manually from Sales Orders when needed
* *On Delivery Order*: Invoices are generated from picking (delivery)
* *Before Delivery*: A Draft invoice is created and must be paid before delivery

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
mrp_company res.company.mrp.config res.company xpath Inherits base.view_company_form
stock_move_sale stock.move.form stock.move xpath Inherits stock.view_move_form
stock_picking_inherit_sale stock.picking.form stock.picking field Inherits stock.view_picking_form
stock_picking_out_inherit_sale Outgoing picking Inherited stock.picking.out field Inherits stock.view_picking_out_form
view_order_form_inherit sale.order.form.sale.stock sale.order data Inherits sale.view_order_form
view_order_product_tree_inherit sale.report.tree.sale.stock sale.report field Inherits sale.view_order_product_tree
view_res_partner_tree_type res.partner.tree.inherit.type res.partner field Inherits base.view_partner_tree
view_sale_shop_form_inherit sale.shop.inherit.form sale.shop xpath Inherits sale.view_shop_form
view_sales_config_sale_stock sale settings sale.config.settings data Inherits sale.view_sales_config
view_shop_tree_inherit sale.shop.sale.stock sale.shop field Inherits sale.view_shop_tree
Models touched (0)

No models found for this module.