Sale Purchase

sale_purchase
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/sale_purchase
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, Arnold Moyaux, Julien Castiaux, Victor Feyens, Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Levi Siuzdak (sile), Dylan Kiss (dyki), rajh-odoo, kcv-odoo, nihp-odoo, David Van Droogenbroeck (DROD), Mohammad Abdulmoneim (abdu), djameltouati, Krzysztof Magusiak (krma), rare-odoo, Lulu Grimalkin (lugr), Lancelot Semal, Quentin Colla (qucol), srap-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:44
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
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows the outsourcing of services. This module allows one to sell services provided
by external providers and will automatically generate purchase orders directed to the service seller.
    

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
exception_purchase_on_sale_cancellation Message: Alert on purchase orders when sales orders are cancelled ir.ui.view qweb New
exception_purchase_on_sale_quantity_decreased Message: Alert on purchase orders when ordered quantity decreased on Sales Orders ir.ui.view qweb New
exception_sale_on_purchase_cancellation Message: Alert on sale orders when purchase orders are cancelled ir.ui.view qweb New
product_template_form_view_inherit product.template.form.inherit product.template xpath Inherits purchase.view_product_supplier_inherit
purchase_order_inherited_form_sale purchase.order.inherited.form.sale purchase.order xpath Inherits purchase.purchase_order_form
sale_order_inherited_form_purchase sale.order.inherited.form.purchase sale.order div Inherits sale.view_order_form
Models touched (5)

New fields (1)
  • service_to_purchase Boolean
    company_dependent=True copy=False help="If ticked, each time you sell this product through a SO, a RfQ is automatically created to buy the product. Tip: don't forget to set a vendor on the product." args: 'Subcontract Service'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • has_sale_order Boolean
    compute='_compute_sale_order_count' groups='sales_team.group_sale_salesman' args: 'Technical field for whether the purchase order has associated sale orders'
  • sale_order_count Integer
    compute='_compute_sale_order_count' groups='sales_team.group_sale_salesman' args: 'Number of Source Sale'
Public methods (2)
  • action_view_sale_orders(self)
  • button_cancel(self)

New fields (2)
  • sale_line_id Many2one → sale.order.line
    copy=False index='btree_not_null' string='Origin Sale Item' args: 'sale.order.line'
  • sale_order_id Many2one
    related='sale_line_id.order_id' string='Sale Order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_order_count Integer
    compute='_compute_purchase_order_count' groups='purchase.group_purchase_user' args: 'Number of Purchase Order Generated'
Public methods (1)
  • action_view_purchase_orders(self)

New fields (2)
  • purchase_line_count Integer
    compute='_compute_purchase_count' args: 'Number of generated purchase items'
  • purchase_line_ids One2many → purchase.order.line
    help='Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.' readonly=True string='Generated Purchase Lines' args: 'purchase.order.line', 'sale_line_id'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/sale_purchase
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Odoo Online, Victor Feyens, William Henrotin, Tiffany Chang (tic), Gorash, Roy Le, Louis Wicket (wil), Gauthier Wala (gawa), Pieter Claeys (clpi), Levi Siuzdak (sile), Dylan Kiss (dyki), Mattis Megevand (mmeg), ravb-odoo, Maxime de Neuville, Nathaniel (naja), Tanguy Quéguineur, Louis (wil), David Van Droogenbroeck (DROD), pkgu-odoo, djameltouati
WEBSITE
WEBSITEhttps://www.odoo.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:57
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
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows the outsourcing of services. This module allows one to sell services provided
by external providers and will automatically generate purchase orders directed to the service seller.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
exception_purchase_on_sale_cancellation Message: Alert on purchase orders when sales orders are cancelled ir.ui.view qweb New
exception_purchase_on_sale_quantity_decreased Message: Alert on purchase orders when ordered quantity decreased on Sales Orders ir.ui.view qweb New
exception_sale_on_purchase_cancellation Message: Alert on sale orders when purchase orders are cancelled ir.ui.view qweb New
product_template_form_view_inherit product.template.form.inherit product.template xpath Inherits purchase.view_product_supplier_inherit
purchase_order_inherited_form_sale purchase.order.inherited.form.sale purchase.order xpath Inherits purchase.purchase_order_form
sale_order_cancel_view_form sale.order.cancel.form.inherit sale.order.cancel field Inherits sale.sale_order_cancel_view_form
sale_order_inherited_form_purchase sale.order.inherited.form.purchase sale.order xpath Inherits sale.view_order_form
Models touched (6)

New fields (1)
  • service_to_purchase Boolean
    company_dependent=True copy=False help="If ticked, each time you sell this product through a SO, a RfQ is automatically created to buy the product. Tip: don't forget to set a vendor on the product." args: 'Subcontract Service'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (1)
  • sale_order_count Integer
    compute='_compute_sale_order_count' groups='sales_team.group_sale_salesman' args: 'Number of Source Sale'
Public methods (2)
  • action_view_sale_orders(self)
  • button_cancel(self)

New fields (2)
  • sale_line_id Many2one → sale.order.line
    copy=False index='btree_not_null' string='Origin Sale Item' args: 'sale.order.line'
  • sale_order_id Many2one
    readonly=True related='sale_line_id.order_id' store=True string='Sale Order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_order_count Integer
    compute='_compute_purchase_order_count' groups='purchase.group_purchase_user' args: 'Number of Purchase Order Generated'
Public methods (1)
  • action_view_purchase_orders(self)

New fields (1)
  • display_purchase_orders_alert Boolean
    compute='_compute_display_purchase_orders_alert' groups='purchase.group_purchase_user' string='Purchase Order Alert'
Public methods (0)

No public methods.

New fields (2)
  • purchase_line_count Integer
    compute='_compute_purchase_count' args: 'Number of generated purchase items'
  • purchase_line_ids One2many → purchase.order.line
    help='Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.' readonly=True string='Generated Purchase Lines' args: 'purchase.order.line', 'sale_line_id'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/sale_purchase
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, Xavier Morel, Jeremy Kersten, Victor Feyens, William Henrotin, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Walid HANNICHE (waha), Roy Le, niyasraphy, Louis Wicket (wil), Levi Siuzdak (sile), Dylan Kiss (dyki), Hansun (hale), Mattis Megevand (mmeg), Nathaniel (naja), Tanguy Quéguineur, Louis (wil), David Van Droogenbroeck (DROD), djameltouati
WEBSITE
WEBSITEhttps://www.odoo.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:08
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
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows the outsourcing of services. This module allows one to sell services provided
by external providers and will automatically generate purchase orders directed to the service seller.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
exception_purchase_on_sale_cancellation Message: Alert on purchase orders when sales orders are cancelled ir.ui.view qweb New
exception_purchase_on_sale_quantity_decreased Message: Alert on purchase orders when ordered quantity decreased on Sales Orders ir.ui.view qweb New
exception_sale_on_purchase_cancellation Message: Alert on sale orders when purchase orders are cancelled ir.ui.view qweb New
product_template_form_view_inherit product.template.form.inherit product.template xpath Inherits purchase.view_product_supplier_inherit
purchase_order_inherited_form_sale purchase.order.inherited.form.sale purchase.order xpath Inherits purchase.purchase_order_form
sale_order_cancel_view_form sale.order.cancel.form.inherit sale.order.cancel field Inherits sale.sale_order_cancel_view_form
sale_order_inherited_form_purchase sale.order.inherited.form.purchase sale.order xpath Inherits sale.view_order_form
Models touched (6)

New fields (1)
  • service_to_purchase Boolean
    company_dependent=True copy=False help="If ticked, each time you sell this product through a SO, a RfQ is automatically created to buy the product. Tip: don't forget to set a vendor on the product." args: 'Subcontract Service'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (1)
  • sale_order_count Integer
    compute='_compute_sale_order_count' groups='sales_team.group_sale_salesman' args: 'Number of Source Sale'
Public methods (2)
  • action_view_sale_orders(self)
  • button_cancel(self)

New fields (2)
  • sale_line_id Many2one → sale.order.line
    copy=False index='btree_not_null' string='Origin Sale Item' args: 'sale.order.line'
  • sale_order_id Many2one
    readonly=True related='sale_line_id.order_id' store=True string='Sale Order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_order_count Integer
    compute='_compute_purchase_order_count' groups='purchase.group_purchase_user' args: 'Number of Purchase Order Generated'
Public methods (1)
  • action_view_purchase_orders(self)

New fields (1)
  • display_purchase_orders_alert Boolean
    compute='_compute_display_purchase_orders_alert' groups='purchase.group_purchase_user' string='Purchase Order Alert'
Public methods (0)

No public methods.

New fields (2)
  • purchase_line_count Integer
    compute='_compute_purchase_count' args: 'Number of generated purchase items'
  • purchase_line_ids One2many → purchase.order.line
    help='Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.' readonly=True string='Generated Purchase Lines' args: 'purchase.order.line', 'sale_line_id'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/sale_purchase
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 ALT, Barad Mahendra, Yannick Tivisse, Victor Feyens, William Henrotin, Florent de Labarre, Adrien Widart, Rémy Voet (ryv), Walid HANNICHE (waha), Laurent Stukkens (LTU), Demesmaeker, Roy Le, niyasraphy, Iván Todorovich, Levi Siuzdak (sile), Hansun (hale), Ahmed Khalaf (ahkh), Martin Trigaux (mat)
WEBSITE
WEBSITEhttps://www.odoo.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:52
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
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows the outsourcing of services. This module allows one to sell services provided
by external providers and will automatically generate purchase orders directed to the service seller.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
exception_purchase_on_sale_cancellation Message: Alert on purchase orders when sales orders are cancelled ir.ui.view qweb New
exception_purchase_on_sale_quantity_decreased Message: Alert on purchase orders when ordered quantity decreased on Sales Orders ir.ui.view qweb New
exception_sale_on_purchase_cancellation Message: Alert on sale orders when purchase orders are cancelled ir.ui.view qweb New
product_template_form_view_inherit product.template.form.inherit product.template xpath Inherits purchase.view_product_supplier_inherit
purchase_order_inherited_form_sale purchase.order.inherited.form.sale purchase.order xpath Inherits purchase.purchase_order_form
sale_order_cancel_view_form sale.order.cancel.form.inherit sale.order.cancel field Inherits sale.sale_order_cancel_view_form
sale_order_inherited_form_purchase sale.order.inherited.form.purchase sale.order xpath Inherits sale.view_order_form
Models touched (6)

New fields (1)
  • service_to_purchase Boolean
    company_dependent=True copy=False help="If ticked, each time you sell this product through a SO, a RfQ is automatically created to buy the product. Tip: don't forget to set a vendor on the product." args: 'Subcontract Service'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (1)
  • sale_order_count Integer
    compute='_compute_sale_order_count' groups='sales_team.group_sale_salesman' args: 'Number of Source Sale'
Public methods (2)
  • action_view_sale_orders(self)
  • button_cancel(self)

New fields (2)
  • sale_line_id Many2one → sale.order.line
    copy=False index='btree_not_null' string='Origin Sale Item' args: 'sale.order.line'
  • sale_order_id Many2one
    readonly=True related='sale_line_id.order_id' store=True string='Sale Order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_order_count Integer
    compute='_compute_purchase_order_count' groups='purchase.group_purchase_user' args: 'Number of Purchase Order Generated'
Public methods (1)
  • action_view_purchase_orders(self)

New fields (1)
  • display_purchase_orders_alert Boolean
    compute='_compute_display_purchase_orders_alert' groups='purchase.group_purchase_user' string='Purchase Order Alert'
Public methods (0)

No public methods.

New fields (2)
  • purchase_line_count Integer
    compute='_compute_purchase_count' args: 'Number of generated purchase items'
  • purchase_line_ids One2many → purchase.order.line
    help='Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.' readonly=True string='Generated Purchase Lines' args: 'purchase.order.line', 'sale_line_id'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/sale_purchase
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, Wolfgang Taferner, Xavier-Do, Victor Feyens, William Henrotin, Florent de Labarre, Adrien Widart, Rémy Voet (ryv), Yann Papouin, william-andre, Walid, Hansun (hale), Nam Dao
WEBSITE
WEBSITEhttps://www.odoo.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:29
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
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows the outsourcing of services. This module allows one to sell services provided
by external providers and will automatically generate purchase orders directed to the service seller.
    

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
exception_purchase_on_sale_cancellation Message: Alert on purchase orders when sales orders are cancelled ir.ui.view qweb New
exception_purchase_on_sale_quantity_decreased Message: Alert on purchase orders when ordered quantity decreased on Sales Orders ir.ui.view qweb New
exception_sale_on_purchase_cancellation Message: Alert on sale orders when purchase orders are cancelled ir.ui.view qweb New
product_template_form_view_inherit product.template.form.inherit product.template xpath Inherits purchase.view_product_supplier_inherit
purchase_order_inherited_form_sale purchase.order.inherited.form.sale purchase.order xpath Inherits purchase.purchase_order_form
sale_order_inherited_form_purchase sale.order.inherited.form.purchase sale.order xpath Inherits sale.view_order_form
Models touched (5)

New fields (1)
  • service_to_purchase Boolean
    help="If ticked, each time you sell this product through a SO, a RfQ is automatically created to buy the product. Tip: don't forget to set a vendor on the product." args: 'Subcontract Service'
Public methods (0)

No public methods.

New fields (1)
  • sale_order_count Integer
    compute='_compute_sale_order_count' groups='sales_team.group_sale_salesman' args: 'Number of Source Sale'
Public methods (2)
  • action_view_sale_orders(self)
  • button_cancel(self)

New fields (2)
  • sale_line_id Many2one → sale.order.line
    copy=False index=True string='Origin Sale Item' args: 'sale.order.line'
  • sale_order_id Many2one
    readonly=True related='sale_line_id.order_id' store=True string='Sale Order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_order_count Integer
    compute='_compute_purchase_order_count' groups='purchase.group_purchase_user' args: 'Number of Purchase Order Generated'
Public methods (1)
  • action_view_purchase_orders(self)

New fields (2)
  • purchase_line_count Integer
    compute='_compute_purchase_count' args: 'Number of generated purchase items'
  • purchase_line_ids One2many → purchase.order.line
    help='Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.' readonly=True string='Generated Purchase Lines' args: 'purchase.order.line', 'sale_line_id'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/sale_purchase
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, Olivier Dony, Christophe Simonis, Nicolas Martinelli, Laurent Smet, Arnold Moyaux, Xavier-Do, Victor Feyens, William Henrotin, Florent de Labarre, svs-odoo, Adrien Widart, Rémy Voet (ryv), Yann Papouin
WEBSITE
WEBSITEhttps://www.odoo.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:30
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
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows the outsourcing of services. This module allows one to sell services provided
by external providers and will automatically generate purchase orders directed to the service seller.
    

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
exception_purchase_on_sale_cancellation Message: Alert on purchase orders when sales orders are cancelled ir.ui.view qweb New
exception_purchase_on_sale_quantity_decreased Message: Alert on purchase orders when ordered quantity decreased on Sales Orders ir.ui.view qweb New
exception_sale_on_purchase_cancellation Message: Alert on sale orders when purchase orders are cancelled ir.ui.view qweb New
product_template_form_view_inherit product.template.form.inherit product.template xpath Inherits purchase.view_product_supplier_inherit
purchase_order_inherited_form_sale purchase.order.inherited.form.sale purchase.order xpath Inherits purchase.purchase_order_form
sale_order_inherited_form_purchase sale.order.inherited.form.purchase sale.order xpath Inherits sale.view_order_form
Models touched (5)

New fields (1)
  • service_to_purchase Boolean
    help="If ticked, each time you sell this product through a SO, a RfQ is automatically created to buy the product. Tip: don't forget to set a vendor on the product." args: 'Purchase Automatically'
Public methods (0)

No public methods.

New fields (1)
  • sale_order_count Integer
    compute='_compute_sale_order_count' groups='sales_team.group_sale_salesman' args: 'Number of Source Sale'
Public methods (2)
  • action_view_sale_orders(self)
  • button_cancel(self)

New fields (2)
  • sale_line_id Many2one → sale.order.line
    copy=False index=True string='Origin Sale Item' args: 'sale.order.line'
  • sale_order_id Many2one
    readonly=True related='sale_line_id.order_id' store=True string='Sale Order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_order_count Integer
    compute='_compute_purchase_order_count' groups='purchase.group_purchase_user' args: 'Number of Purchase Order Generated'
Public methods (1)
  • action_view_purchase_orders(self)

New fields (2)
  • purchase_line_count Integer
    compute='_compute_purchase_count' args: 'Number of generated purchase items'
  • purchase_line_ids One2many → purchase.order.line
    help='Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.' readonly=True string='Generated Purchase Lines' args: 'purchase.order.line', 'sale_line_id'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/sale_purchase
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, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Yannick Tivisse, Odoo Online, Arnold Moyaux, Adrian Torres, Xavier-Do, Victor Feyens, svs-odoo, Adrien Widart, Yann Papouin
WEBSITE
WEBSITEhttps://www.odoo.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:43
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
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows the outsourcing of services. This module allows one to sell services provided
by external providers and will automatically generate purchase orders directed to the service seller.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
exception_purchase_on_sale_cancellation Message: Alert on purchase orders when sales orders are cancelled ir.ui.view qweb New
exception_purchase_on_sale_quantity_decreased Message: Alert on purchase orders when ordered quantity decreased on Sales Orders ir.ui.view qweb New
exception_sale_on_purchase_cancellation Message: Alert on sale orders when purchase orders are cancelled ir.ui.view qweb New
product_template_form_view_inherit product.template.form.inherit product.template xpath Inherits purchase.view_product_supplier_inherit
sale_order_form_view_inherit sale.order.form.inherit sale.order xpath Inherits sale.view_order_form
Models touched (5)

New fields (1)
  • service_to_purchase Boolean
    help="If ticked, each time you sell this product through a SO, a RfQ is automatically created to buy the product. Tip: don't forget to set a vendor on the product." args: 'Purchase Automatically'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • button_cancel(self)

New fields (2)
  • sale_line_id Many2one → sale.order.line
    index=True string='Origin Sale Item' args: 'sale.order.line'
  • sale_order_id Many2one
    readonly=True related='sale_line_id.order_id' store=True string='Sale Order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_order_count Integer
    compute='_compute_purchase_order_count' groups='purchase.group_purchase_user' args: 'Number of Purchase Order'
Public methods (2)
  • action_cancel(self)
  • action_view_purchase(self)

New fields (2)
  • purchase_line_count Integer
    compute='_compute_purchase_count' args: 'Number of generated purchase items'
  • purchase_line_ids One2many → purchase.order.line
    help='Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.' readonly=True string='Generated Purchase Lines' args: 'purchase.order.line', 'sale_line_id'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/sale_purchase
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, Goffin Simon, jem-odoo, RomainLibert, Jairo Llopis, Xavier-Do, Carlos Dauden, Yann Papouin
WEBSITE
WEBSITEhttps://www.odoo.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:01
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
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows the outsourcing of services. This module allows one to sell services provided
by external providers and will automatically generate purchase orders directed to the service seller.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
exception_purchase_on_sale_cancellation Message: Alert on purchase orders when sales orders are cancelled ir.ui.view qweb New
exception_purchase_on_sale_quantity_decreased Message: Alert on purchase orders when ordered quantity decreased on Sales Orders ir.ui.view qweb New
exception_sale_on_purchase_cancellation Message: Alert on sale orders when purchase orders are cancelled ir.ui.view qweb New
product_template_form_view_inherit product.template.form.inherit product.template xpath Inherits purchase.view_product_supplier_inherit
sale_order_form_view_inherit sale.order.form.inherit sale.order xpath Inherits sale.view_order_form
Models touched (5)

New fields (1)
  • service_to_purchase Boolean
    help="If ticked, each time you sell this product through a SO, a RfQ is automatically created to buy the product. Tip: don't forget to set a vendor on the product." args: 'Purchase Automatically'
Public methods (0)

No public methods.

New fields (0)

No new fields.

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

New fields (2)
  • sale_line_id Many2one → sale.order.line
    index=True string='Origin Sale Item' args: 'sale.order.line'
  • sale_order_id Many2one
    readonly=True related='sale_line_id.order_id' store=True string='Sale Order'
Public methods (0)

No public methods.

New fields (1)
  • purchase_order_count Integer
    compute='_compute_purchase_order_count' groups='purchase.group_purchase_user' args: 'Number of Purchase Order'
Public methods (2)
  • action_cancel(self)
    @api.multi
  • action_view_purchase(self)
    @api.multi

New fields (2)
  • purchase_line_count Integer
    compute='_compute_purchase_count' args: 'Number of generated purchase items'
  • purchase_line_ids One2many → purchase.order.line
    help='Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.' readonly=True string='Generated Purchase Lines' args: 'purchase.order.line', 'sale_line_id'
Public methods (2)
  • create(self, values)
    @api.model
  • write(self, values)
    @api.multi