Sale Elaboration

sale_elaboration
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/19.0/sale_elaboration
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Bhavesh Heliconia
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - 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
This module extends the functionality of sales orders to allow to set an
elaboration on lines that will add an extra order line with an
elaboration product linked to it when the delivery order is validated.

An **elaboration** is a process that needs to be done over the product,
usually on picking/handling phase. It doesn't modify too much the
product for needing an specific product, but it adds a surcharge on the
final price.

If the elaboration has a defined route, selecting the elaboration,
it is set on the order line, which will result in the generation of
multiple delivery notes depending on the established route.

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
elaboration_notes elaboration_notes ir.ui.view qweb New
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration list New
product_elaboration_profile_form_view product.elaboration.profile.form.view product.elaboration.profile form New
product_elaboration_profile_tree_view product.elaboration.profile.tree.view product.elaboration.profile list New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_picking report_picking ir.ui.view qweb Inherits stock.report_picking
report_stock_move_elaboration_view_tree Elaborations stock.move list New
res_config_settings_view res.config.settings xpath Inherits stock.res_config_settings_view_form
sale_elaboration_product_category_view_form_inherit_elaboration_id product.category.view.form.sale.elaboration product.category xpath Inherits product.product_category_form_view
sale_order_line_view_form_readonly sale.order.line xpath Inherits sale.sale_order_line_view_form_readonly
stock_report_delivery_has_serial_move_line stock_report_delivery_has_serial_move_line ir.ui.view qweb Inherits stock.stock_report_delivery_has_serial_move_line
view_move_line_tree_detailed stock.move.line field Inherits stock.view_move_line_tree_detailed
view_move_search stock.move field Inherits stock.view_move_search
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_picking_form stock.picking xpath Inherits stock.view_picking_form
view_stock_move_line_detailed_operation_tree stock.move.line field Inherits stock.view_stock_move_line_detailed_operation_tree
view_stock_move_line_operation_tree stock.move.line field Inherits stock.view_stock_move_line_operation_tree
Models touched (13)

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' string='Elaboration Profile'
Public methods (0)

No public methods.

New fields (6)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
  • profile_ids Many2many → product.elaboration.profile
    column1='elaboration_id' column2='profile_id' comodel_name='product.elaboration.profile' relation='product_elaboration_profile_rel'
  • route_ids Many2many → stock.route
    comodel_name='stock.route' domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Routes'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (3)
  • elaboration_ids Many2many → product.elaboration
    comodel_name='product.elaboration' string='Elaborations'
  • elaboration_note Char
  • is_elaboration Boolean
    compute='_compute_is_elaboration' readonly=False store=True
Public methods (1)
  • onchange_elaboration_ids(self)
    @api.onchange('elaboration_ids')
    Use onchange method instead of compute because if any other data of any line force a recompute of all lines and the elaboration custom notes are reset.

New fields (4)
  • active Boolean
    default=True
  • code Char
    string='Short Code'
  • elaboration_ids Many2many → product.elaboration
    column1='profile_id' column2='elaboration_id' comodel_name='product.elaboration' relation='product_elaboration_profile_rel' string='Elaborations'
  • name Char
    required=True translate=True
Public methods (0)

No public methods.

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' help='Keep this field empty to use the default value from the product category.' ondelete='restrict'
Public methods (0)

No public methods.

New fields (2)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id' help='Keep this field empty to use the default value from the product category.' inverse='_inverse_elaboration_profile_id' store=True
  • is_elaboration Boolean
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • group_elaboration_note_on_delivery_slip Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_delivery_slip' args: 'Display Elaboration notes on Delivery Slips'
  • group_elaboration_note_on_picking_operations Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_picking_operations' args: 'Display Elaboration notes on Picking Operations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • date_order Datetime
    related='order_id.date_order' string='Date'
  • elaboration_price_unit Float
    compute='_compute_elaboration_price_unit' store=True args: 'Elab. Price'
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id'
  • route_id Many2one → stock.route
    comodel_name='stock.route' compute='_compute_route_id' readonly=False store=True
Public methods (1)
  • get_elaboration_stock_route(self)

New fields (4)
  • order_date Datetime
    compute='_compute_sale_related_data'
  • sale_id Many2one → sale.order
    comodel_name='sale.order' compute='_compute_sale_related_data'
  • salesman_id Many2one → res.users
    comodel_name='res.users' compute='_compute_sale_related_data'
  • sequence_code Char
    compute='_compute_sale_related_data'
Public methods (1)
  • write(self, vals)

New fields (2)
  • elaboration_ids Many2many
    related='move_id.elaboration_ids'
  • elaboration_note Char
    related='move_id.elaboration_note'
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
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/18.0/sale_elaboration
VERSION
VERSION 1.3.1
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, David Vidal, oca-ci, Carlos Roca
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_stock
    - 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
This module extends the functionality of sales orders to allow to set an
elaboration on lines that will add an extra order line with an
elaboration product linked to it when the delivery order is validated.

An **elaboration** is a process that needs to be done over the product,
usually on picking/handling phase. It doesn't modify too much the
product for needing an specific product, but it adds a surcharge on the
final price.

If the elaboration has a defined route, selecting the elaboration,
it is set on the order line, which will result in the generation of
multiple delivery notes depending on the established route.

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
elaboration_notes elaboration_notes ir.ui.view qweb New
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration list New
product_elaboration_profile_form_view product.elaboration.profile.form.view product.elaboration.profile form New
product_elaboration_profile_tree_view product.elaboration.profile.tree.view product.elaboration.profile list New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_picking report_picking ir.ui.view qweb Inherits stock.report_picking
report_stock_move_elaboration_view_tree Elaborations stock.move list New
res_config_settings_view res.config.settings xpath Inherits stock.res_config_settings_view_form
sale_elaboration_product_category_view_form_inherit_elaboration_id product.category.view.form.sale.elaboration product.category xpath Inherits product.product_category_form_view
sale_order_line_view_form_readonly sale.order.line xpath Inherits sale.sale_order_line_view_form_readonly
stock_report_delivery_has_serial_move_line stock_report_delivery_has_serial_move_line ir.ui.view qweb Inherits stock.stock_report_delivery_has_serial_move_line
view_move_line_tree_detailed stock.move.line field Inherits stock.view_move_line_tree_detailed
view_move_search stock.move field Inherits stock.view_move_search
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_picking_form stock.picking xpath Inherits stock.view_picking_form
view_stock_move_line_detailed_operation_tree stock.move.line field Inherits stock.view_stock_move_line_detailed_operation_tree
view_stock_move_line_operation_tree stock.move.line field Inherits stock.view_stock_move_line_operation_tree
Models touched (13)

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' string='Elaboration Profile'
Public methods (0)

No public methods.

New fields (6)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
  • profile_ids Many2many → product.elaboration.profile
    column1='elaboration_id' column2='profile_id' comodel_name='product.elaboration.profile' relation='product_elaboration_profile_rel'
  • route_ids Many2many → stock.route
    comodel_name='stock.route' domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Routes'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (3)
  • elaboration_ids Many2many → product.elaboration
    comodel_name='product.elaboration' string='Elaborations'
  • elaboration_note Char
  • is_elaboration Boolean
    compute='_compute_is_elaboration' readonly=False store=True
Public methods (1)
  • onchange_elaboration_ids(self)
    @api.onchange('elaboration_ids')
    Use onchange method instead of compute because if any other data of any line force a recompute of all lines and the elaboration custom notes are reset.

New fields (4)
  • active Boolean
    default=True
  • code Char
    string='Short Code'
  • elaboration_ids Many2many → product.elaboration
    column1='profile_id' column2='elaboration_id' comodel_name='product.elaboration' relation='product_elaboration_profile_rel' string='Elaborations'
  • name Char
    required=True translate=True
Public methods (0)

No public methods.

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' help='Keep this field empty to use the default value from the product category.' ondelete='restrict'
Public methods (0)

No public methods.

New fields (2)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id' help='Keep this field empty to use the default value from the product category.' inverse='_inverse_elaboration_profile_id' store=True
  • is_elaboration Boolean
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • group_elaboration_note_on_delivery_slip Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_delivery_slip' args: 'Display Elaboration notes on Delivery Slips'
  • group_elaboration_note_on_picking_operations Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_picking_operations' args: 'Display Elaboration notes on Picking Operations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • date_order Datetime
    related='order_id.date_order' string='Date'
  • elaboration_price_unit Float
    compute='_compute_elaboration_price_unit' store=True args: 'Elab. Price'
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id'
  • route_id Many2one
    compute='_compute_route_id' readonly=False store=True
Public methods (1)
  • get_elaboration_stock_route(self)

New fields (4)
  • order_date Datetime
    compute='_compute_sale_related_data'
  • sale_id Many2one → sale.order
    comodel_name='sale.order' compute='_compute_sale_related_data'
  • salesman_id Many2one → res.users
    comodel_name='res.users' compute='_compute_sale_related_data'
  • sequence_code Char
    compute='_compute_sale_related_data'
Public methods (1)
  • write(self, vals)

New fields (2)
  • elaboration_ids Many2many
    related='move_id.elaboration_ids'
  • elaboration_note Char
    related='move_id.elaboration_note'
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
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/17.0/sale_elaboration
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, David Vidal, oca-ci, Antoni Marroig Campomar
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - 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
This module extends the functionality of sales orders to allow to set an
elaboration on lines that will add an extra order line with an
elaboration product linked to it when the delivery order is validated.

An **elaboration** is a process that needs to be done over the product,
usually on picking/handling phase. It doesn't modify too much the
product for needing an specific product, but it adds a surcharge on the
final price.

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
elaboration_notes elaboration_notes ir.ui.view qweb New
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration tree New
product_elaboration_profile_form_view product.elaboration.profile.form.view product.elaboration.profile form New
product_elaboration_profile_tree_view product.elaboration.profile.tree.view product.elaboration.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_elaboration_view_tree Elaborations sale.order.line tree New
report_picking report_picking ir.ui.view qweb Inherits stock.report_picking
res_config_settings_view res.config.settings xpath Inherits stock.res_config_settings_view_form
sale_elaboration_product_category_view_form_inherit_elaboration_id product.category.view.form.sale.elaboration product.category xpath Inherits product.product_category_form_view
stock_report_delivery_has_serial_move_line stock_report_delivery_has_serial_move_line ir.ui.view qweb Inherits stock.stock_report_delivery_has_serial_move_line
view_move_line_tree_detailed stock.move.line field Inherits stock.view_move_line_tree_detailed
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_picking_form stock.picking xpath Inherits stock.view_picking_form
view_sales_order_line_filter sale.order.line field Inherits sale.view_sales_order_line_filter
view_stock_move_line_detailed_operation_tree stock.move.line field Inherits stock.view_stock_move_line_detailed_operation_tree
view_stock_move_line_operation_tree stock.move.line field Inherits stock.view_stock_move_line_operation_tree
view_stock_move_operations_sale_operation stock.move.operation.sale stock.move xpath Inherits stock.view_stock_move_operations
Models touched (13)

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' string='Elaboration Profile'
Public methods (0)

No public methods.

New fields (6)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
  • profile_ids Many2many → product.elaboration.profile
    column1='elaboration_id' column2='profile_id' comodel_name='product.elaboration.profile' relation='product_elaboration_profile_rel'
  • route_ids Many2many → stock.route
    comodel_name='stock.route' domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Routes'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (3)
  • elaboration_ids Many2many → product.elaboration
    comodel_name='product.elaboration' string='Elaborations'
  • elaboration_note Char
    store=True
  • is_elaboration Boolean
    compute='_compute_is_elaboration' readonly=False store=True
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • code Char
    string='Short Code'
  • elaboration_ids Many2many → product.elaboration
    column1='profile_id' column2='elaboration_id' comodel_name='product.elaboration' relation='product_elaboration_profile_rel' string='Elaborations'
  • name Char
    required=True translate=True
Public methods (0)

No public methods.

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' help='Keep this field empty to use the default value from the product category.' ondelete='restrict'
Public methods (0)

No public methods.

New fields (2)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id' help='Keep this field empty to use the default value from the product category.' inverse='_inverse_elaboration_profile_id' store=True
  • is_elaboration Boolean
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • group_elaboration_note_on_delivery_slip Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_delivery_slip' args: 'Display Elaboration notes on Delivery Slips'
  • group_elaboration_note_on_picking_operations Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_picking_operations' args: 'Display Elaboration notes on Picking Operations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • date_order Datetime
    related='order_id.date_order' string='Date'
  • elaboration_price_unit Float
    compute='_compute_elaboration_price_unit' store=True args: 'Elab. Price'
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id'
  • is_prepared Boolean
    compute=<expr> help='Dummy field to be able to find prepared lines' search='_search_is_prepared'
  • route_id Many2one
    compute='_compute_route_id' readonly=False store=True
Public methods (1)
  • get_elaboration_stock_route(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • elaboration_ids Many2many
    related='move_id.elaboration_ids'
  • elaboration_note Char
    related='move_id.elaboration_note'
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
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/16.0/sale_elaboration
VERSION
VERSION 1.8.0
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSJairo Llopis, Ernesto Tejeda, Weblate, OCA-git-bot, David Vidal, oca-ci, Eduardo De Miguel, Carlos Roca, pilarvargas-tecnativa, Emilio Pascual
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_stock
    - 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

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
elaboration_notes elaboration_notes ir.ui.view qweb New
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration tree New
product_elaboration_profile_form_view product.elaboration.profile.form.view product.elaboration.profile form New
product_elaboration_profile_tree_view product.elaboration.profile.tree.view product.elaboration.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_elaboration_view_tree Elaborations sale.order.line tree New
report_picking report_picking ir.ui.view qweb Inherits stock.report_picking
res_config_settings_view res.config.settings xpath Inherits stock.res_config_settings_view_form
sale_elaboration_product_category_view_form_inherit_elaboration_id product.category.view.form.sale.elaboration product.category xpath Inherits product.product_category_form_view
stock_report_delivery_has_serial_move_line stock_report_delivery_has_serial_move_line ir.ui.view qweb Inherits stock.stock_report_delivery_has_serial_move_line
view_move_line_tree_detailed stock.move.line field Inherits stock.view_move_line_tree_detailed
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_picking_form stock.picking xpath Inherits stock.view_picking_form
view_sales_order_line_filter sale.order.line field Inherits sale.view_sales_order_line_filter
view_stock_move_line_detailed_operation_tree stock.move.line field Inherits stock.view_stock_move_line_detailed_operation_tree
view_stock_move_line_operation_tree stock.move.line field Inherits stock.view_stock_move_line_operation_tree
Models touched (13)

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' string='Elaboration Profile'
Public methods (0)

No public methods.

New fields (6)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
  • profile_ids Many2many → product.elaboration.profile
    column1='elaboration_id' column2='profile_id' comodel_name='product.elaboration.profile' relation='product_elaboration_profile_rel'
  • route_ids Many2many → stock.route
    check_company=True comodel_name='stock.route' domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Routes'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (3)
  • elaboration_ids Many2many → product.elaboration
    comodel_name='product.elaboration' string='Elaborations'
  • elaboration_note Char
    store=True
  • is_elaboration Boolean
    compute='_compute_is_elaboration' readonly=False store=True
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • code Char
    string='Short Code'
  • elaboration_ids Many2many → product.elaboration
    column1='profile_id' column2='elaboration_id' comodel_name='product.elaboration' relation='product_elaboration_profile_rel' string='Elaborations'
  • name Char
    required=True translate=True
Public methods (0)

No public methods.

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' help='Keep this field empty to use the default value from the product category.' ondelete='restrict'
Public methods (0)

No public methods.

New fields (2)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id' help='Keep this field empty to use the default value from the product category.' inverse='_inverse_elaboration_profile_id' store=True
  • is_elaboration Boolean
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • group_elaboration_note_on_delivery_slip Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_delivery_slip' args: 'Display Elaboration notes on Delivery Slips'
  • group_elaboration_note_on_picking_operations Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_picking_operations' args: 'Display Elaboration notes on Picking Operations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • date_order Datetime
    related='order_id.date_order' string='Date'
  • elaboration_price_unit Float
    compute='_compute_elaboration_price_unit' store=True args: 'Elab. Price'
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id'
  • is_prepared Boolean
    compute=<expr> help='Dummy field to be able to find prepared lines' search='_search_is_prepared'
  • route_id Many2one
    compute='_compute_route_id' readonly=False store=True
Public methods (1)
  • get_elaboration_stock_route(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • elaboration_ids Many2many
    related='move_id.elaboration_ids'
  • elaboration_note Char
    related='move_id.elaboration_note'
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
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/15.0/sale_elaboration
VERSION
VERSION 4.1.0
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSCarlos Dauden, sergio-teruel, Ernesto Tejeda, Weblate, OCA-git-bot, oca-ci, Carlos Roca, pilarvargas-tecnativa, CarlosRoca13, josep-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:33
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - 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

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration tree New
product_elaboration_profile_form_view product.elaboration.profile.form.view product.elaboration.profile form New
product_elaboration_profile_tree_view product.elaboration.profile.tree.view product.elaboration.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_stock_move_elaboration_view_tree Elaborations stock.move tree New
res_config_settings_view res.config.settings xpath Inherits stock.res_config_settings_view_form
stock_report_delivery_has_serial_move_line stock_report_delivery_has_serial_move_line ir.ui.view qweb Inherits stock.stock_report_delivery_has_serial_move_line
view_move_search stock.move field Inherits stock.view_move_search
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_picking_form stock.picking xpath Inherits stock.view_picking_form
view_stock_move_line_detailed_operation_tree stock.move.line field Inherits stock.view_stock_move_line_detailed_operation_tree
view_stock_move_line_operation_tree stock.move.line field Inherits stock.view_stock_move_line_operation_tree
Models touched (12)

New fields (6)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
  • profile_ids Many2many → product.elaboration.profile
    column1='elaboration_id' column2='profile_id' comodel_name='product.elaboration.profile' relation='product_elaboration_profile_rel'
  • route_ids Many2many → stock.location.route
    check_company=True comodel_name='stock.location.route' domain=[('sale_selectable', '=', True)] ondelete='restrict' string='Routes'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (3)
  • elaboration_ids Many2many → product.elaboration
    comodel_name='product.elaboration' string='Elaborations'
  • elaboration_note Char
  • is_elaboration Boolean
    compute='_compute_is_elaboration' readonly=False store=True
Public methods (1)
  • onchange_elaboration_ids(self)
    @api.onchange('elaboration_ids')
    Use onchange method instead of compute because if any other data of any line force a recompute of all lines and the elaboration custom notes are reset.

New fields (4)
  • active Boolean
    default=True
  • code Char
    string='Short Code'
  • elaboration_ids Many2many → product.elaboration
    column1='profile_id' column2='elaboration_id' comodel_name='product.elaboration' relation='product_elaboration_profile_rel' string='Elaborations'
  • name Char
    required=True translate=True
Public methods (0)

No public methods.

New fields (1)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' ondelete='restrict'
Public methods (0)

No public methods.

New fields (2)
  • elaboration_profile_id Many2one → product.elaboration.profile
    comodel_name='product.elaboration.profile' compute='_compute_elaboration_profile_id' inverse='_inverse_elaboration_profile_id' store=True
  • is_elaboration Boolean
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (1)
  • group_elaboration_note_on_delivery_slip Boolean
    implied_group='sale_elaboration.group_elaboration_note_on_delivery_slip' args: 'Display Elaboration notes on Delivery Slips'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • date_order Datetime
    related='order_id.date_order' string='Date'
  • elaboration_price_unit Float
    compute='_compute_elaboration_price_unit' store=True args: 'Elab. Price'
  • elaboration_profile_id Many2one
    related='product_id.elaboration_profile_id'
  • route_id Many2one
    compute='_compute_route_id' readonly=False store=True
Public methods (1)
  • get_elaboration_stock_route(self)

New fields (4)
  • order_date Datetime
    compute='_compute_sale_related_data'
  • sale_id Many2one → sale.order
    comodel_name='sale.order' compute='_compute_sale_related_data'
  • salesman_id Many2one → res.users
    comodel_name='res.users' compute='_compute_sale_related_data'
  • sequence_code Char
    compute='_compute_sale_related_data'
Public methods (1)
  • write(self, vals)

New fields (2)
  • elaboration_ids Many2many
    related='move_id.elaboration_ids'
  • elaboration_note Char
    related='move_id.elaboration_note'
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
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/14.0/sale_elaboration
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, CarlosRoca13, Alessandro Uffreduzzi
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - 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

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration tree New
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_elaboration_view_tree Elaborations sale.order.line tree New
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_sales_order_line_filter sale.order.line field Inherits sale.view_sales_order_line_filter
Models touched (5)

New fields (4)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.' string='Active'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (1)
  • is_elaboration Boolean
    string='Is elaboration'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • date_order Datetime
    related='order_id.date_order' string='Date'
  • elaboration_id Many2one → product.elaboration
    comodel_name='product.elaboration' ondelete='restrict' string='Elaboration'
  • elaboration_note Char
    compute='_compute_elaboration_note' readonly=False store=True string='Elaboration Note'
  • is_elaboration Boolean
    compute='_compute_is_elaboration' readonly=False store=True string='Is Elaboration'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/13.0/sale_elaboration
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSOCA Transbot, sergio-teruel, Sergio Teruel, oca-travis, OCA-git-bot, oca-ci, CarlosRoca13
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - 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

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration tree New
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_elaboration_view_tree Elaborations sale.order.line tree New
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_sales_order_line_filter sale.order.line field Inherits sale.view_sales_order_line_filter
Models touched (5)

New fields (4)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.' string='Active'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (1)
  • is_elaboration Boolean
    string='Is elaboration'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • date_order Datetime
    related='order_id.date_order' string='Date'
  • elaboration_id Many2one → product.elaboration
    comodel_name='product.elaboration' ondelete='restrict' string='Elaboration'
  • elaboration_note Char
    compute='_compute_elaboration_note' readonly=False store=True string='Elaboration Note'
  • is_elaboration Boolean
    compute='_compute_is_elaboration' readonly=False store=True string='Is Elaboration'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/12.0/sale_elaboration
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, Sergio Teruel, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - 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

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration tree New
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_elaboration_view_tree Elaborations sale.order.line tree New
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_sales_order_line_filter sale.order.line field Inherits sale.view_sales_order_line_filter
Models touched (5)

New fields (4)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.' string='Active'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (1)
  • is_elaboration Boolean
    string='Is elaboration'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • confirmation_date Datetime
    readonly=True related='order_id.confirmation_date' string='Date'
  • elaboration_id Many2one → product.elaboration
    comodel_name='product.elaboration' ondelete='restrict' string='Elaboration'
  • elaboration_note Char
    string='Elaboration Note'
  • is_elaboration Boolean
    string='Is Elaboration'
Public methods (2)
  • onchange_elaboration_id(self)
    @api.onchange('elaboration_id')
  • product_id_change(self)
    @api.onchange('product_id')

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/11.0/sale_elaboration
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, OCA Transbot, Sergio Teruel, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - 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

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
elaboration_view_form Elaborations product.elaboration form New
elaboration_view_search Elaborations product.elaboration search New
elaboration_view_tree Elaborations product.elaboration tree New
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_elaboration_view_tree Elaborations sale.order.line tree New
view_order_form Sale Elaboration sale.order xpath Inherits sale.view_order_form
view_sales_order_line_filter sale.order.line field Inherits sale.view_sales_order_line_filter
Models touched (5)

New fields (4)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the product elaborations without removing it.' string='Active'
  • code Char
    string='Short Code'
  • name Char
    required=True translate=True
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', '=', 'service'), ('is_elaboration', '=', True)] ondelete='restrict' required=True string='Product'
Public methods (1)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Give preference to codes on name search, appending the rest of the results after.

New fields (1)
  • is_elaboration Boolean
    string='Is elaboration'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • confirmation_date Datetime
    readonly=True related='order_id.confirmation_date' string='Date'
  • elaboration_id Many2one → product.elaboration
    comodel_name='product.elaboration' ondelete='restrict' string='Elaboration'
  • elaboration_note Char
    string='Elaboration Note'
  • is_elaboration Boolean
    string='Is Elaboration'
Public methods (2)
  • onchange_elaboration_id(self)
    @api.onchange('elaboration_id')
  • product_id_change(self)
    @api.onchange('product_id')

New fields (0)

No new fields.

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