Sale Orders Terms and conditions Templates

sale_order_note_template
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/18.0/sale_order_note_template
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Pierre Verkest
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Pierre Verkest
COMMITTERS
COMMITTERSWeblate, oca-ci, IsabelAForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module add sale terms and conditions templates and change existing
terms and conditions (sale_order.note) field type from Text to Html.

Users will be able to select *terms and conditions template* to fulfill
*terms and conditions* likes in mail composer users can configure their
template using jinja2.

## How this module differ from [sale_comment_template](https://github.com/OCA/sale-reporting/tree/14.0/sale_comment_template)?

- [base_comment_template](https://github.com/OCA/reporting-engine/tree/14.0/base_comment_template)
  is for managing comments not terms, it would probably see as mess for
  users to mixed terms and comments.
- [sale_comment_template](https://github.com/OCA/sale-reporting/tree/14.0/sale_comment_template)
  depends on
  [account_comment_template](https://github.com/OCA/account-invoice-reporting/tree/14.0/account_comment_template)
  comments are forwards to generated invoices, here we don't really
  display sales terms on final invoices
- [base_comment_template](https://github.com/OCA/reporting-engine/tree/14.0/base_comment_template)
  at the time writing do not support template engine

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_order_form_terms_template sale_order_note_templatesale.order.form sale.order xpath Inherits sale.view_order_form
view_sale_terms_template_form sale.terms_template.form sale.terms_template form New
view_sale_terms_template_search sale.terms_template.search sale.terms_template search New
view_sale_terms_template_tree sale.terms_template.list sale.terms_template list New
Models touched (2)

New fields (2)
  • note Html
  • terms_template_id Many2one → sale.terms_template
    string='Terms and conditions template' args: 'sale.terms_template'
Public methods (0)

No public methods.

New fields (3)
  • active Boolean
    default=True
  • name Char
    required=True
  • text Html
    string='Terms template' translate=True
Public methods (1)
  • get_value(self, sale_order, add_context=None, post_process=True)
    Get sales terms from template. Like in mail composer `text` template can use jinja or qweb syntax. if `partner_id` is provide, it will retreive it's lang to use the right translation. Then template is populated with model/res_id attributes according jinja/qweb instructions. :param sale_order: recordset (browsed) sale order :param add_context: context forwarded to the templating engine :param post_process: what ever to use `post_process` from the templating engine. If `True` urls are transform to absolute urls
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/16.0/sale_order_note_template
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Pierre Verkest
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Pierre Verkest
COMMITTERS
COMMITTERSRuchir Shukla, OCA-git-bot, oca-ci, IsabelAForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:45
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_order_form_terms_template sale_order_note_templatesale.order.form sale.order xpath Inherits sale.view_order_form
view_sale_terms_template_form sale.terms_template.form sale.terms_template form New
view_sale_terms_template_search sale.terms_template.search sale.terms_template search New
view_sale_terms_template_tree sale.terms_template.list sale.terms_template tree New
Models touched (2)

New fields (2)
  • note Html
    readonly=True states={'draft': [('readonly', False)]}
  • terms_template_id Many2one → sale.terms_template
    readonly=True states={'draft': [('readonly', False)]} string='Terms and conditions template' args: 'sale.terms_template'
Public methods (0)

No public methods.

New fields (3)
  • active Boolean
    default=True
  • name Char
    required=True
  • text Html
    string='Terms template' translate=True
Public methods (1)
  • get_value(self, sale_order, add_context=None, post_process=True)
    Get sales terms from template. Like in mail composer `text` template can use jinja or qweb syntax. if `partner_id` is provide, it will retreive it's lang to use the right translation. Then template is populated with model/res_id attributes according jinja/qweb instructions. :param sale_order: recordset (browsed) sale order :param add_context: context forwarded to the templating engine :param post_process: what ever to use `post_process` from the templating engine. If `True` urls are transform to absolute urls
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/14.0/sale_order_note_template
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Pierre Verkest
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Pierre Verkest
COMMITTERS
COMMITTERSPierre Verkest, oca-travis, Weblate, OCA-git-bot, Duy (Đỗ Anh)
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_order_form_terms_template sale_order_note_templatesale.order.form sale.order xpath Inherits sale.view_order_form
view_sale_terms_template_form sale.terms_template.form sale.terms_template form New
view_sale_terms_template_search sale.terms_template.search sale.terms_template search New
view_sale_terms_template_tree sale.terms_template.list sale.terms_template tree New
Models touched (2)

New fields (2)
  • note Html
    readonly=True states={'draft': [('readonly', False)]}
  • terms_template_id Many2one → sale.terms_template
    readonly=True states={'draft': [('readonly', False)]} string='Terms and conditions template' args: 'sale.terms_template'
Public methods (0)

No public methods.

New fields (3)
  • active Boolean
    default=True
  • name Char
    required=True string='Name'
  • text Html
    string='Terms template' translate=True
Public methods (1)
  • get_value(self, sale_order, add_context=None, post_process=True)
    Get sales terms from template. Like in mail composer `text` template can use jinja or qweb syntax. if `partner_id` is provide, it will retreive it's lang to use the right translation. Then template is populated with model/res_id attributes according jinja/qweb instructions. :param sale_order: recordset (browsed) sale order :param add_context: context forwarded to the templating engine :param post_process: what ever to use `post_process` from the templating engine. If `True` urls are transform to absolute urls
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/sale-workflow
PULL REQUEST
PULL REQUEST[19.0][MIG] sale_order_note_template: Migration to 19.0 (#4292)