| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/19.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Omar (Comunitea), OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale_management - sale - sales_team - base - base_setup - web - bus - web_tour - html_editor - account_payment - account - onboarding - product - uom - analytic - portal - http_routing - auth_signup - digest - resource - payment - utm |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module adds a recommended products wizard to current sale order. It is based on recent delivered products, and allows the salesman to quickly know the most sold products for current customer, which results in an easy to use hint to improve sale. If you want a better mobile usability, the module is ready to use with the 'web_widget_numeric_step' module. Just install it and you will get a better numeric input experience. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form_sale |
res.config.settings | xpath | Inherits sale.res_config_settings_view_form | |
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | xpath | Inherits sale.view_order_form |
force_zero_units_included
Boolean
sale_line_recommendation_domain
Char
default='[]'
No public methods.
default_line_amount
Integer
default=15
default_model='sale.order.recommendation'
string='Default sale number of recommendations'
default_months
Float
default=6
default_model='sale.order.recommendation'
string='Default sale recommendation months'
default_sale_recommendation_price_origin
Selection
default='pricelist'
default_model='sale.order.recommendation'
required=True
string='Price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
default_use_delivery_address
Boolean
default_model='sale.order.recommendation'
string='Use delivery address'
force_zero_units_included
Boolean
help='Add recomented products in so even if units included is zero.'
readonly=False
related='company_id.force_zero_units_included'
sale_line_recommendation_domain
Char
help='Domain applied to find SO lines to propose as recommended products.'
readonly=False
related='company_id.sale_line_recommendation_domain'
No public methods.
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
recommendations_order
Selection
default='times_delivered desc'
required=True
args: [('times_delivered desc', 'Times delivered'), ('units_delivered desc', 'Units delivered'), ('product_categ_complete_name asc', 'Product category'), ('product_default_code asc', 'Product code'), ('product_name asc', 'Product name')]
sale_recommendation_price_origin
Selection
default='pricelist'
string='Product price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
use_delivery_address
Boolean
string='Use delivery address'
action_accept(self)
action_reset(self)
generate_recommendations(self)
currency_id
Many2one
related='product_id.currency_id'
image_128
Image
readonly=True
related='product_id.image_128'
partner_id
Many2one
related='wizard_id.order_id.partner_id'
price_unit
Monetary
compute='_compute_price_unit'
pricelist_id
Many2one
related='wizard_id.order_id.pricelist_id'
product_categ_complete_name
Char
readonly=True
related='product_id.categ_id.complete_name'
store=True
string='Product category'
product_default_code
Char
readonly=True
related='product_id.default_code'
store=True
product_id
Many2one → product.product
product_is_favorite
Boolean
readonly=False
related='product_id.is_favorite'
store=True
product_name
Char
readonly=True
related='product_id.name'
product_uom_readonly
Boolean
related='sale_line_id.product_uom_readonly'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
sale_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_sale_uom_id'
readonly=False
store=True
string='Unit of Measure'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/18.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 1.1.3 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, David Vidal, oca-ci, Carlos Roca, pilarvargas-tecnativa, Aungkokolin1997 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:11 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale_management - sale - sales_team - base - 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 adds a recommended products wizard to current sale order. It is based on recent delivered products, and allows the salesman to quickly know the most sold products for current customer, which results in an easy to use hint to improve sale. If you want a better mobile usability, the module is ready to use with the 'web_widget_numeric_step' module. Just install it and you will get a better numeric input experience. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form_sale |
res.config.settings | xpath | Inherits sale.res_config_settings_view_form | |
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | xpath | Inherits sale.view_order_form |
force_zero_units_included
Boolean
sale_line_recommendation_domain
Char
default='[]'
No public methods.
default_line_amount
Integer
default=15
default_model='sale.order.recommendation'
string='Default sale number of recommendations'
default_months
Float
default=6
default_model='sale.order.recommendation'
string='Default sale recommendation months'
default_sale_recommendation_price_origin
Selection
default='pricelist'
default_model='sale.order.recommendation'
required=True
string='Price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
default_use_delivery_address
Boolean
default_model='sale.order.recommendation'
string='Use delivery address'
force_zero_units_included
Boolean
help='Add recomented products in so even if units included is zero.'
readonly=False
related='company_id.force_zero_units_included'
sale_line_recommendation_domain
Char
help='Domain applied to find SO lines to propose as recommended products.'
readonly=False
related='company_id.sale_line_recommendation_domain'
No public methods.
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
recommendations_order
Selection
default='times_delivered desc'
required=True
args: [('times_delivered desc', 'Times delivered'), ('units_delivered desc', 'Units delivered'), ('product_categ_complete_name asc', 'Product category'), ('product_default_code asc', 'Product code'), ('product_name asc', 'Product name')]
sale_recommendation_price_origin
Selection
default='pricelist'
string='Product price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
use_delivery_address
Boolean
string='Use delivery address'
action_accept(self)
action_reset(self)
generate_recommendations(self)
currency_id
Many2one
related='product_id.currency_id'
image_128
Image
readonly=True
related='product_id.image_128'
partner_id
Many2one
related='wizard_id.order_id.partner_id'
price_unit
Monetary
compute='_compute_price_unit'
pricelist_id
Many2one
related='wizard_id.order_id.pricelist_id'
product_categ_complete_name
Char
readonly=True
related='product_id.categ_id.complete_name'
store=True
string='Product category'
product_default_code
Char
readonly=True
related='product_id.default_code'
store=True
product_id
Many2one → product.product
product_is_favorite
Boolean
readonly=False
related='product_id.is_favorite'
store=True
product_name
Char
readonly=True
related='product_id.name'
product_uom_category_id
Many2one
depends=['product_id']
related='product_id.uom_id.category_id'
product_uom_readonly
Boolean
related='sale_line_id.product_uom_readonly'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
sale_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_sale_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
readonly=False
store=True
string='Unit of Measure'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/17.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 1.1.1 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | OCA-git-bot, David Vidal, oca-ci, andrel |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:05 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - 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 adds a recommended products wizard to current sale order. It is based on recent delivered products, and allows the salesman to quickly know the most sold products for current customer, which results in an easy to use hint to improve sale. If you want a better mobile usability, the module is ready to use with the 'web_widget_numeric_step' module. Just install it and you will get a better numeric input experience. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form_sale |
res.config.settings | xpath | Inherits sale.res_config_settings_view_form | |
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | xpath | Inherits sale.view_order_form |
force_zero_units_included
Boolean
sale_line_recommendation_domain
Char
default='[]'
No public methods.
default_line_amount
Integer
default=15
default_model='sale.order.recommendation'
string='Default sale number of recommendations'
default_months
Float
default=6
default_model='sale.order.recommendation'
string='Default sale recommendation months'
default_sale_recommendation_price_origin
Selection
default='pricelist'
default_model='sale.order.recommendation'
required=True
string='Price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
default_use_delivery_address
Boolean
default_model='sale.order.recommendation'
string='Use delivery address'
force_zero_units_included
Boolean
help='Add recomented products in so even if units included is zero.'
readonly=False
related='company_id.force_zero_units_included'
sale_line_recommendation_domain
Char
help='Domain applied to find SO lines to propose as recommended products.'
readonly=False
related='company_id.sale_line_recommendation_domain'
No public methods.
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
recommendations_order
Selection
default='times_delivered desc'
required=True
args: [('times_delivered desc', 'Times delivered'), ('units_delivered desc', 'Units delivered'), ('product_categ_complete_name asc', 'Product category'), ('product_default_code asc', 'Product code'), ('product_name asc', 'Product name')]
sale_recommendation_price_origin
Selection
default='pricelist'
string='Product price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
use_delivery_address
Boolean
string='Use delivery address'
action_accept(self)
action_reset(self)
generate_recommendations(self)
currency_id
Many2one
related='product_id.currency_id'
partner_id
Many2one
related='wizard_id.order_id.partner_id'
price_unit
Float
compute='_compute_price_unit'
digits='Product Price'
pricelist_id
Many2one
related='wizard_id.order_id.pricelist_id'
product_categ_complete_name
Char
readonly=True
related='product_id.categ_id.complete_name'
store=True
string='Product category'
product_default_code
Char
readonly=True
related='product_id.default_code'
store=True
product_id
Many2one → product.product
string='Product'
args: 'product.product'
product_name
Char
name='Product name'
readonly=True
related='product_id.name'
store=True
product_priority
Selection
readonly=False
related='product_id.priority'
store=True
product_uom_category_id
Many2one
depends=['product_id']
related='product_id.uom_id.category_id'
product_uom_readonly
Boolean
related='sale_line_id.product_uom_readonly'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
sale_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_sale_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
readonly=False
store=True
string='Unit of Measure'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/16.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 3.0.2 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Jairo Llopis, sergio-teruel, Weblate, OCA-git-bot, oca-ci, Telmo Santos, Eduardo De Miguel, sygel, tris |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:45 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale - sales_team - base - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form_sale |
res.config.settings | xpath | Inherits sale.res_config_settings_view_form | |
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | xpath | Inherits sale.view_order_form |
force_zero_units_included
Boolean
sale_line_recommendation_domain
Char
default='[]'
No public methods.
default_line_amount
Integer
default=15
default_model='sale.order.recommendation'
string='Default sale number of recommendations'
default_months
Float
default=6
default_model='sale.order.recommendation'
string='Default sale recommendation months'
default_sale_recommendation_price_origin
Selection
default='pricelist'
default_model='sale.order.recommendation'
required=True
string='Price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
default_use_delivery_address
Boolean
default_model='sale.order.recommendation'
string='Use delivery address'
force_zero_units_included
Boolean
help='Add recomented products in so even if units included is zero.'
readonly=False
related='company_id.force_zero_units_included'
sale_line_recommendation_domain
Char
help='Domain applied to find SO lines to propose as recommended products.'
readonly=False
related='company_id.sale_line_recommendation_domain'
No public methods.
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
recommendations_order
Selection
default='times_delivered desc'
required=True
args: [('times_delivered desc', 'Times delivered'), ('units_delivered desc', 'Units delivered'), ('product_categ_complete_name asc', 'Product category'), ('product_default_code asc', 'Product code'), ('product_name asc', 'Product name')]
sale_recommendation_price_origin
Selection
default='pricelist'
string='Product price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
use_delivery_address
Boolean
string='Use delivery address'
action_accept(self)
action_reset(self)
generate_recommendations(self)
currency_id
Many2one
related='product_id.currency_id'
partner_id
Many2one
related='wizard_id.order_id.partner_id'
price_unit
Monetary
compute='_compute_price_unit'
pricelist_id
Many2one
related='wizard_id.order_id.pricelist_id'
product_categ_complete_name
Char
readonly=True
related='product_id.categ_id.complete_name'
store=True
string='Product category'
product_default_code
Char
readonly=True
related='product_id.default_code'
store=True
product_id
Many2one → product.product
string='Product'
args: 'product.product'
product_name
Char
name='Product name'
readonly=True
related='product_id.name'
store=True
product_priority
Selection
readonly=False
related='product_id.priority'
store=True
product_uom_category_id
Many2one
depends=['product_id']
related='product_id.uom_id.category_id'
product_uom_readonly
Boolean
related='sale_line_id.product_uom_readonly'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
sale_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_sale_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
readonly=False
store=True
string='Unit of Measure'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/15.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 1.2.2 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Jairo Llopis, sergio-teruel, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, pilarvargas-tecnativa, Cesar Andres Sanchez, Christopher Rogos, josep-tecnativa |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:34 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale - sales_team - base - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form_sale |
res.config.settings | xpath | Inherits sale.res_config_settings_view_form | |
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | xpath | Inherits sale.view_order_form |
default_line_amount
Integer
default=15
default_model='sale.order.recommendation'
string='Default sale number of recommendations'
default_months
Float
default=6
default_model='sale.order.recommendation'
string='Default sale recommendation months'
default_sale_recommendation_price_origin
Selection
default='pricelist'
default_model='sale.order.recommendation'
required=True
string='Price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
default_use_delivery_address
Boolean
default_model='sale.order.recommendation'
string='Use delivery address'
No public methods.
product_id
Many2one
index=True
No public methods.
last_compute
Char
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
sale_recommendation_price_origin
Selection
default='pricelist'
string='Product price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
use_delivery_address
Boolean
string='Use delivery address'
action_accept(self)
currency_id
Many2one
related='product_id.currency_id'
partner_id
Many2one
related='wizard_id.order_id.partner_id'
price_unit
Monetary
compute='_compute_price_unit'
pricelist_id
Many2one
related='wizard_id.order_id.pricelist_id'
product_id
Many2one → product.product
string='Product'
args: 'product.product'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
sale_uom_id
Many2one
related='sale_line_id.product_uom'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/13.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 3.1.1 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, mreficent, Alexandre Díaz, OCA Transbot, sergio-teruel, Víctor Martínez, Ernesto Tejeda, Alexandre D. Díaz, oca-travis, OCA-git-bot, Carlos Roca |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:13 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale - sales_team - base - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form_sale |
res.config.settings | xpath | Inherits sale.res_config_settings_view_form | |
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | header | Inherits sale.view_order_form |
default_line_amount
Integer
default=15
default_model='sale.order.recommendation'
string='Default sale number of recommendations'
default_months
Float
default=6
default_model='sale.order.recommendation'
string='Default sale recommendation months'
default_sale_recommendation_price_origin
Selection
default='pricelist'
default_model='sale.order.recommendation'
required=True
string='Price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
default_use_delivery_address
Boolean
default_model='sale.order.recommendation'
string='Use delivery address'
No public methods.
product_id
Many2one
index=True
No public methods.
last_compute
Char
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
sale_recommendation_price_origin
Selection
default='pricelist'
string='Product price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
use_delivery_address
Boolean
string='Use delivery address'
action_accept(self)
currency_id
Many2one
related='product_id.currency_id'
partner_id
Many2one
related='wizard_id.order_id.partner_id'
price_unit
Monetary
compute='_compute_price_unit'
pricelist_id
Many2one
related='wizard_id.order_id.pricelist_id'
product_id
Many2one → product.product
string='Product'
args: 'product.product'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
sale_uom_id
Many2one
related='sale_line_id.product_uom'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/12.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 3.0.2 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Denis Roussel, david, Alexandre Díaz, OCA Transbot, sergio-teruel, Víctor Martínez, oca-travis, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:17 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - payment - account - product - decimal_precision - uom - analytic - portal - http_routing - digest |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form_sale |
res.config.settings | xpath | Inherits sale.res_config_settings_view_form | |
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | header | Inherits sale.view_order_form |
default_sale_recommendation_price_origin
Selection
default='pricelist'
default_model='sale.order.recommendation'
required=True
string='Price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
No public methods.
product_id
Many2one
index=True
No public methods.
last_compute
Char
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
sale_recommendation_price_origin
Selection
default='pricelist'
string='Product price origin'
args: [('pricelist', 'Pricelist'), ('last_sale_price', 'Last sale price')]
action_accept(self)
currency_id
Many2one
readonly=True
related='product_id.currency_id'
partner_id
Many2one
readonly=True
related='wizard_id.order_id.partner_id'
price_unit
Monetary
compute='_compute_price_unit'
pricelist_id
Many2one
readonly=True
related='wizard_id.order_id.pricelist_id'
product_id
Many2one → product.product
string='Product'
args: 'product.product'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
sale_uom_id
Many2one
related='sale_line_id.product_uom'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/11.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Jairo Llopis, david, OCA Transbot, oca-travis, OCA-git-bot, OCA Git Bot, David |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:57 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - account - product - decimal_precision - analytic - web_planner - portal - http_routing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | header | Inherits sale.view_order_form |
last_compute
Char
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
action_accept(self)
currency_id
Many2one
readonly=True
related='product_id.currency_id'
is_modified
Boolean
partner_id
Many2one
readonly=True
related='wizard_id.order_id.partner_id'
price_unit
Monetary
compute='_compute_price_unit'
pricelist_id
Many2one
readonly=True
related='wizard_id.order_id.pricelist_id'
product_id
Many2one → product.product
string='Product'
args: 'product.product'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/9.0/sale_order_product_recommendation |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Sales |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Carlos Dauden, OCA Transbot, oca-travis |
| WEBSITE | |
| WEBSITE | https://www.tecnativa.com/ |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:20 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale - sales_team - base - base_setup - web_kanban - web - bus - account - product - decimal_precision - report - analytic - web_tip - web_planner - procurement |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
sale_order_recommendation_view_form |
Recommended Products for this Customer | sale.order.recommendation | form | New |
view_order_form |
Recommended products button | sale.order | header | Inherits sale.view_order_form |
last_compute
Char
line_amount
Integer
default=15
help='The less, the faster they will be found.'
required=True
args: 'Number of recommendations'
line_ids
One2many → sale.order.recommendation.line
months
Float
default=6
help='Consider these months backwards to generate recommendations.'
required=True
order_id
Many2one → sale.order
default=<expr>
ondelete='cascade'
readonly=True
required=True
args: 'sale.order', 'Sale Order'
action_accept(self)
create(self, vals)
currency_id
Many2one
readonly=True
related='product_id.currency_id'
is_modified
Boolean
partner_id
Many2one
readonly=True
related='wizard_id.order_id.partner_id'
price_unit
Monetary
compute='_compute_price_unit'
pricelist_id
Many2one
readonly=True
related='wizard_id.order_id.pricelist_id'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
sale_line_id
Many2one → sale.order.line
comodel_name='sale.order.line'
times_delivered
Integer
readonly=True
units_delivered
Float
readonly=True
units_included
Float
wizard_id
Many2one → sale.order.recommendation
ondelete='cascade'
readonly=True
required=True
args: 'sale.order.recommendation', 'Wizard'
No public methods.