Field Service - Sales

fieldservice_sale
REPOSITORY
REPOSITORYOCA/field-service
GIT
GIThttps://github.com/OCA/field-service.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/field-service/tree/18.0/fieldservice_sale
VERSION
VERSION 1.2.1
CATEGORY
CATEGORYField Service
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Iván Todorovich, oca-ci, Vincent Van Rossem, christian-ramos-tecnativa, EdgarRetes
WEBSITE
WEBSITEhttps://github.com/OCA/field-service
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/field-service:
    - fieldservice
    - base_territory
    - fieldservice_account
odoo/odoo:
    - base
    - base_geolocalize
    - base_setup
    - web
    - resource
    - contacts
    - mail
    - bus
    - web_tour
    - html_editor
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The module integrates the Field Service application with the Sales one
and allows you to sell products that generate field service orders.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
fsm_location_form_view fsm.location.form fsm.location page Inherits fieldservice.fsm_location_form_view
view_fsm_order_form_inherit_sale fsm.order xpath Inherits fieldservice.fsm_order_form
view_order_form_inherit_sale_fieldservice sale.order.form.sale.fieldservice sale.order xpath Inherits sale.view_order_form
view_product_fieldservice_form product.template.fieldservice.form product.template group Inherits product.product_template_form_view
Models touched (4)

New fields (2)
  • sale_id Many2one → sale.order
    args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    args: 'sale.order.line'
Public methods (1)
  • action_view_sales(self)

New fields (3)
  • field_service_tracking Selection
    default='no' help='Determines what happens upon sale order confirmation:\n - None: nothing additional, default behavior.\n - Per Sale Order: One FSM Order will be created for the sale.\n - Per Sale Order Line: One FSM Order for each sale order line\n will be created.' args: [('no', "Don't create FSM order"), ('sale', 'Create one FSM order per sale order'), ('line', 'Create one FSM order per sale order line')]
  • fsm_order_template_id Many2one → fsm.template
    help='Select the field service order template to be created' args: 'fsm.template', 'Field Service Order Template'
  • service_type Selection
    ondelete={'field': 'cascade'} selection_add=[('field', 'Field Service Orders')]
Public methods (0)

No public methods.

New fields (3)
  • fsm_location_id Many2one → fsm.location
    compute='_compute_fsm_location_id' help='SO Lines generating a FSM order will be for this location' precompute=True readonly=False store=True string='Service Location' args: 'fsm.location'
  • fsm_order_count Integer
    compute='_compute_fsm_order_ids' string='FSM Orders'
  • fsm_order_ids Many2many → fsm.order
    compute='_compute_fsm_order_ids' string='Field Service orders associated to this sale' args: 'fsm.order'
Public methods (2)
  • action_view_fsm_order(self)
  • write(self, values)

New fields (2)
  • fsm_order_id Many2one → fsm.order
    copy=False help='Field Service Order generated by the sales order item' index=True args: 'fsm.order', 'Order'
  • qty_delivered_method Selection
    ondelete={'field_service': 'cascade'} selection_add=[('field_service', 'Field Service Order')]
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi
REPOSITORY
REPOSITORYOCA/field-service
GIT
GIThttps://github.com/OCA/field-service.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/field-service/tree/17.0/fieldservice_sale
VERSION
VERSION 1.3.1
CATEGORY
CATEGORYField Service
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Iván Todorovich, oca-ci, Brian McMaster, Antoni Marroig Campomar, christian-ramos-tecnativa, Santiago Rodriguez
WEBSITE
WEBSITEhttps://github.com/OCA/field-service
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/field-service:
    - fieldservice
    - base_territory
    - fieldservice_account
odoo/odoo:
    - base
    - base_geolocalize
    - base_setup
    - web
    - resource
    - contacts
    - mail
    - bus
    - web_tour
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The module integrates the Field Service application with the Sales one
and allows you to sell products that generate field service orders.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
fsm_location_form_view fsm.location.form fsm.location page Inherits fieldservice.fsm_location_form_view
view_fsm_order_form_inherit_sale fsm.order xpath Inherits fieldservice.fsm_order_form
view_order_form_inherit_sale_fieldservice sale.order.form.sale.fieldservice sale.order xpath Inherits sale.view_order_form
view_product_fieldservice_form product.template.fieldservice.form product.template group Inherits product.product_template_form_view
Models touched (4)

New fields (2)
  • sale_id Many2one → sale.order
    args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    args: 'sale.order.line'
Public methods (1)
  • action_view_sales(self)

New fields (3)
  • field_service_tracking Selection
    default='no' help='Determines what happens upon sale order confirmation:\n - None: nothing additional, default behavior.\n - Per Sale Order: One FSM Order will be created for the sale.\n - Per Sale Order Line: One FSM Order for each sale order line\n will be created.' args: [('no', "Don't create FSM order"), ('sale', 'Create one FSM order per sale order'), ('line', 'Create one FSM order per sale order line')]
  • fsm_order_template_id Many2one → fsm.template
    help='Select the field service order template to be created' args: 'fsm.template', 'Field Service Order Template'
  • service_type Selection
    ondelete={'field': 'cascade'} selection_add=[('field', 'Field Service Orders')]
Public methods (0)

No public methods.

New fields (3)
  • fsm_location_id Many2one → fsm.location
    compute='_compute_fsm_location_id' help='SO Lines generating a FSM order will be for this location' precompute=True readonly=False store=True string='Service Location' args: 'fsm.location'
  • fsm_order_count Integer
    compute='_compute_fsm_order_ids' string='FSM Orders'
  • fsm_order_ids Many2many → fsm.order
    compute='_compute_fsm_order_ids' string='Field Service orders associated to this sale' args: 'fsm.order'
Public methods (1)
  • action_view_fsm_order(self)

New fields (2)
  • fsm_order_id Many2one → fsm.order
    copy=False help='Field Service Order generated by the sales order item' index=True args: 'fsm.order', 'Order'
  • qty_delivered_method Selection
    ondelete={'field_service': 'cascade'} selection_add=[('field_service', 'Field Service Order')]
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi
REPOSITORY
REPOSITORYOCA/field-service
GIT
GIThttps://github.com/OCA/field-service.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/field-service/tree/16.0/fieldservice_sale
VERSION
VERSION 1.3.1
CATEGORY
CATEGORYField Service
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSeLBati, Víctor Martínez, Weblate, OCA-git-bot, Iván Todorovich, oca-ci, Brian McMaster, Stefan, Adam Patyk
WEBSITE
WEBSITEhttps://github.com/OCA/field-service
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/field-service:
    - fieldservice
    - base_territory
    - fieldservice_account
odoo/odoo:
    - base
    - base_geolocalize
    - base_setup
    - web
    - resource
    - contacts
    - mail
    - bus
    - web_tour
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
fsm_location_form_view fsm.location.form fsm.location page Inherits fieldservice.fsm_location_form_view
view_fsm_order_form_inherit_sale fsm.order xpath Inherits fieldservice.fsm_order_form
view_order_form_inherit_sale_fieldservice sale.order.form.sale.fieldservice sale.order xpath Inherits sale.view_order_form
view_product_fieldservice_form product.template.fieldservice.form product.template group Inherits product.product_template_form_view
Models touched (4)

New fields (2)
  • sale_id Many2one → sale.order
    copy=False args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    copy=False args: 'sale.order.line'
Public methods (1)
  • action_view_sales(self)

New fields (3)
  • field_service_tracking Selection
    default='no' help='Determines what happens upon sale order confirmation:\n - None: nothing additional, default behavior.\n - Per Sale Order: One FSM Order will be created for the sale.\n - Per Sale Order Line: One FSM Order for each sale order line\n will be created.' args: [('no', "Don't create FSM order"), ('sale', 'Create one FSM order per sale order'), ('line', 'Create one FSM order per sale order line')]
  • fsm_order_template_id Many2one → fsm.template
    help='Select the field service order template to be created' args: 'fsm.template', 'Field Service Order Template'
  • service_type Selection
    ondelete={'field': 'cascade'} selection_add=[('field', 'Field Service Orders')]
Public methods (0)

No public methods.

New fields (3)
  • fsm_location_id Many2one → fsm.location
    compute='_compute_fsm_location_id' help='SO Lines generating a FSM order will be for this location' precompute=True readonly=False store=True string='Service Location' args: 'fsm.location'
  • fsm_order_count Integer
    compute='_compute_fsm_order_ids' string='FSM Orders'
  • fsm_order_ids Many2many → fsm.order
    compute='_compute_fsm_order_ids' string='Field Service orders associated to this sale' args: 'fsm.order'
Public methods (1)
  • action_view_fsm_order(self)

New fields (2)
  • fsm_order_id Many2one → fsm.order
    copy=False help='Field Service Order generated by the sales order item' index=True args: 'fsm.order', 'Order'
  • qty_delivered_method Selection
    ondelete={'field_service': 'cascade'} selection_add=[('field_service', 'Field Service Order')]
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi
REPOSITORY
REPOSITORYOCA/field-service
GIT
GIThttps://github.com/OCA/field-service.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/field-service/tree/15.0/fieldservice_sale
VERSION
VERSION 2.4.1
CATEGORY
CATEGORYField Service
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Iván Todorovich, oca-ci, Maksym Yankin, Brian McMaster, David Alonso // Solvos, Freni-OSI, Patryk Pyczko, ppyczko
WEBSITE
WEBSITEhttps://github.com/OCA/field-service
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/field-service:
    - fieldservice
    - base_territory
    - fieldservice_account
odoo/odoo:
    - base
    - base_geolocalize
    - base_setup
    - web
    - resource
    - contacts
    - mail
    - bus
    - web_tour
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
fsm_location_form_view fsm.location.form fsm.location page Inherits fieldservice.fsm_location_form_view
view_fsm_order_form_inherit_sale fsm.order xpath Inherits fieldservice.fsm_order_form
view_order_form_inherit_sale_fieldservice sale.order.form.sale.fieldservice sale.order xpath Inherits sale.view_order_form
view_product_fieldservice_form product.template.fieldservice.form product.template group Inherits sale.product_template_form_view_invoice_policy
Models touched (4)

New fields (2)
  • sale_id Many2one → sale.order
    args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    args: 'sale.order.line'
Public methods (1)
  • action_view_sales(self)

New fields (3)
  • field_service_tracking Selection
    default='no' help='Determines what happens upon sale order confirmation:\n - None: nothing additional, default behavior.\n - Per Sale Order: One FSM Order will be created for the sale.\n - Per Sale Order Line: One FSM Order for each sale order line\n will be created.' args: [('no', "Don't create FSM order"), ('sale', 'Create one FSM order per sale order'), ('line', 'Create one FSM order per sale order line')]
  • fsm_order_template_id Many2one → fsm.template
    help='Select the field service order template to be created' args: 'fsm.template', 'Field Service Order Template'
  • service_type Selection
    ondelete={'field': 'cascade'} selection_add=[('field', 'Field Service Orders')]
Public methods (0)

No public methods.

New fields (3)
  • fsm_location_id Many2one → fsm.location
    help='SO Lines generating a FSM order will be for this location' string='Service Location' args: 'fsm.location'
  • fsm_order_count Integer
    compute='_compute_fsm_order_ids' string='FSM Orders'
  • fsm_order_ids Many2many → fsm.order
    compute='_compute_fsm_order_ids' string='Field Service orders associated to this sale' args: 'fsm.order'
Public methods (2)
  • action_view_fsm_order(self)
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    Autofill the Sale Order's FS location with the partner_id, the partner_shipping_id or the partner_id.commercial_partner_id if they are FS locations.

New fields (2)
  • fsm_order_id Many2one → fsm.order
    copy=False help='Field Service Order generated by the sales order item' index=True args: 'fsm.order', 'Order'
  • qty_delivered_method Selection
    ondelete={'field_service': 'cascade'} selection_add=[('field_service', 'Field Service Order')]
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi
REPOSITORY
REPOSITORYOCA/field-service
GIT
GIThttps://github.com/OCA/field-service.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/field-service/tree/14.0/fieldservice_sale
VERSION
VERSION 2.3.0
CATEGORY
CATEGORYField Service
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Iván Todorovich, hparfr, oca-ci, Murtuza Saleh, Brian McMaster, Florian Mounier, Freni-OSI
WEBSITE
WEBSITEhttps://github.com/OCA/field-service
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/field-service:
    - fieldservice
    - base_territory
    - fieldservice_account
odoo/odoo:
    - base
    - base_geolocalize
    - base_setup
    - web
    - resource
    - contacts
    - mail
    - bus
    - web_tour
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
fsm_location_form_view fsm.location.form fsm.location page Inherits fieldservice.fsm_location_form_view
view_fsm_order_form_inherit_sale fsm.order xpath Inherits fieldservice.fsm_order_form
view_order_form_inherit_sale_fieldservice sale.order.form.sale.fieldservice sale.order xpath Inherits sale.view_order_form
view_product_fieldservice_form product.template.fieldservice.form product.template xpath Inherits sale.product_template_form_view_invoice_policy
Models touched (4)

New fields (2)
  • sale_id Many2one → sale.order
    args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    args: 'sale.order.line'
Public methods (1)
  • action_view_sales(self)

New fields (3)
  • field_service_tracking Selection
    default='no' help='Determines what happens upon sale order confirmation:\n - None: nothing additional, default behavior.\n - Per Sale Order: One FSM Order will be created for the sale.\n - Per Sale Order Line: One FSM Order for each sale order line\n will be created.' string='Field Service Tracking' args: [('no', "Don't create FSM order"), ('sale', 'Create one FSM order per sale order'), ('line', 'Create one FSM order per sale order line')]
  • fsm_order_template_id Many2one → fsm.template
    help='Select the field service order template to be created' args: 'fsm.template', 'Field Service Order Template'
  • service_type Selection
    ondelete={'field': 'cascade'} selection_add=[('field', 'Field Service Orders')]
Public methods (0)

No public methods.

New fields (3)
  • fsm_location_id Many2one → fsm.location
    help='SO Lines generating a FSM order will be for this location' string='Service Location' args: 'fsm.location'
  • fsm_order_count Integer
    compute='_compute_fsm_order_ids' string='FSM Orders'
  • fsm_order_ids Many2many → fsm.order
    compute='_compute_fsm_order_ids' string='Field Service orders associated to this sale' args: 'fsm.order'
Public methods (2)
  • action_view_fsm_order(self)
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    Autofill the Sale Order's FS location with the partner_id, the partner_shipping_id or the partner_id.commercial_partner_id if they are FS locations.

New fields (2)
  • fsm_order_id Many2one → fsm.order
    copy=False help='Field Service Order generated by the sales order item' index=True args: 'fsm.order', 'Order'
  • qty_delivered_method Selection
    ondelete={'field_service': 'cascade'} selection_add=[('field_service', 'Field Service Order')]
Public methods (1)
  • create(self, values)
    @api.model
REPOSITORY
REPOSITORYOCA/field-service
GIT
GIThttps://github.com/OCA/field-service.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/field-service/tree/13.0/fieldservice_sale
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYField Service
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSoca-travis, Weblate, OCA-git-bot, Benoit Aimont, brian10048, Brian McMaster
WEBSITE
WEBSITEhttps://github.com/OCA/field-service
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/field-service:
    - fieldservice
    - base_territory
    - fieldservice_account
odoo/odoo:
    - base
    - base_geolocalize
    - base_setup
    - web
    - resource
    - contacts
    - mail
    - bus
    - web_tour
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
fsm_location_form_view fsm.location.form fsm.location page Inherits fieldservice.fsm_location_form_view
res_branch_form_view_pricelist res.branch.form.pricelist res.branch field Inherits base_territory.res_branch_form_view
view_fsm_order_form_inherit_sale fsm.order xpath Inherits fieldservice.fsm_order_form
view_order_form_inherit_sale_fieldservice sale.order.form.sale.fieldservice sale.order xpath Inherits sale.view_order_form
view_product_fieldservice_form product.template.fieldservice.form product.template xpath Inherits sale.product_template_form_view_invoice_policy
Models touched (6)

New fields (1)
  • sales_territory_id Many2one → res.territory
    string='Sales Territory' args: 'res.territory'
Public methods (0)

No public methods.

New fields (2)
  • sale_id Many2one → sale.order
    args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    args: 'sale.order.line'
Public methods (1)
  • action_view_sales(self)

New fields (3)
  • field_service_tracking Selection
    default='no' help='Determines what happens upon sale order confirmation:\n - None: nothing additional, default behavior.\n - Per Sale Order: One FSM Order will be created for the sale.\n - Per Sale Order Line: One FSM Order for each sale order line\n will be created.' string='Field Service Tracking' args: [('no', "Don't create FSM order"), ('sale', 'Create one FSM order per sale order'), ('line', 'Create one FSM order per sale order line')]
  • fsm_order_template_id Many2one → fsm.template
    help='Select the field service order template to be created' args: 'fsm.template', 'Field Service Order Template'
  • service_type Selection
    selection_add=[('field', 'Field Service Orders')]
Public methods (0)

No public methods.

New fields (1)
  • pricelist_id Many2one → product.pricelist
    help='Default pricelist for new customers of this branch.' string='Default Pricelist' args: 'product.pricelist'
Public methods (0)

No public methods.

New fields (3)
  • fsm_location_id Many2one → fsm.location
    help='SO Lines generating a FSM order will be for this location' string='Service Location' args: 'fsm.location'
  • fsm_order_count Integer
    compute='_compute_fsm_order_ids' string='FSM Orders'
  • fsm_order_ids Many2many → fsm.order
    compute='_compute_fsm_order_ids' string='Field Service orders associated to this sale' args: 'fsm.order'
Public methods (2)
  • action_view_fsm_order(self)
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    Autofill the Sale Order's FS location with the partner_id, the partner_shipping_id or the partner_id.commercial_partner_id if they are FS locations.

New fields (2)
  • fsm_order_id Many2one → fsm.order
    help='Field Service Order generated by the sales order item' index=True args: 'fsm.order', 'Order'
  • qty_delivered_method Selection
    selection_add=[('field_service', 'Field Service Order')]
Public methods (1)
  • create(self, values)
    @api.model
REPOSITORY
REPOSITORYOCA/field-service
GIT
GIThttps://github.com/OCA/field-service.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/field-service/tree/12.0/fieldservice_sale
VERSION
VERSION 2.5.2
CATEGORY
CATEGORYField Service
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSMaxime Chambreuil, GitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, hparfr, clementmbr, brian10048, scampbell, Murtuza Saleh, Miguel Poyatos
WEBSITE
WEBSITEhttps://github.com/OCA/field-service
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/field-service:
    - fieldservice
    - fieldservice_account
OCA/partner-contact:
    - partner_fax
OCA/web:
    - web_timeline
odoo/odoo:
    - base_geolocalize
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - resource
    - contacts
    - sale_management
    - sale
    - sales_team
    - 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

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
fsm_branch_form_view_pricelist fsm.branch.form.pricelist fsm.branch field Inherits fieldservice.fsm_branch_form_view
fsm_location_form_view fsm.location.form fsm.location page Inherits fieldservice.fsm_location_form_view
view_fsm_order_form_inherit_sale fsm.order xpath Inherits fieldservice.fsm_order_form
view_order_form_inherit_sale_fieldservice sale.order.form.sale.fieldservice sale.order xpath Inherits sale.view_order_form
view_product_fieldservice_form product.template.fieldservice.form product.template xpath Inherits sale.product_template_form_view_invoice_policy
Models touched (6)

New fields (1)
  • pricelist_id Many2one → product.pricelist
    help='Default pricelist for new customers of this branch.' string='Default Pricelist' args: 'product.pricelist'
Public methods (0)

No public methods.

New fields (1)
  • sales_territory_id Many2one → fsm.territory
    string='Sales Territory' args: 'fsm.territory'
Public methods (0)

No public methods.

New fields (2)
  • sale_id Many2one → sale.order
    args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    args: 'sale.order.line'
Public methods (1)
  • action_view_sales(self)

New fields (3)
  • field_service_tracking Selection
    default='no' help='Determines what happens upon sale order confirmation:\n - None: nothing additional, default behavior.\n - Per Sale Order: One FSM Order will be created for the sale.\n - Per Sale Order Line: One FSM Order for each sale order line\n will be created.' string='Field Service Tracking' args: [('no', "Don't create FSM order"), ('sale', 'Create one FSM order per sale order'), ('line', 'Create one FSM order per sale order line')]
  • fsm_order_template_id Many2one → fsm.template
    help='Select the field service order template to be created' args: 'fsm.template', 'Field Service Order Template'
  • service_type Selection
    selection_add=[('field', 'Field Service Orders')]
Public methods (0)

No public methods.

New fields (3)
  • fsm_location_id Many2one → fsm.location
    help='SO Lines generating a FSM order will be for this location' string='Service Location' args: 'fsm.location'
  • fsm_order_count Integer
    compute='_compute_fsm_order_ids' string='FSM Orders'
  • fsm_order_ids Many2many → fsm.order
    compute='_compute_fsm_order_ids' string='Field Service orders associated to this sale' args: 'fsm.order'
Public methods (3)
  • action_invoice_create(self, grouped=False, final=False)
    @api.multi
  • action_view_fsm_order(self)
    @api.multi
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    Autofill the Sale Order's FS location with the partner_id, the partner_shipping_id or the partner_id.commercial_partner_id if they are FS locations.

New fields (2)
  • fsm_order_id Many2one → fsm.order
    help='Field Service Order generated by the sales order item' index=True args: 'fsm.order', 'Order'
  • qty_delivered_method Selection
    selection_add=[('field_service', 'Field Service Order')]
Public methods (1)
  • create(self, values)
    @api.model
REPOSITORY
REPOSITORYOCA/field-service
GIT
GIThttps://github.com/OCA/field-service.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/field-service/tree/11.0/fieldservice_sale
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYField Service
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSMaxime Chambreuil, OCA-git-bot, brian10048
WEBSITE
WEBSITEhttps://github.com/OCA/field-service
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/field-service:
    - fieldservice
    - fieldservice_recurring
OCA/geospatial:
    - base_geoengine
OCA/web:
    - web_timeline
odoo/odoo:
    - base_geolocalize
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - resource
    - sale_management
    - sale
    - sales_team
    - account
    - product
    - decimal_precision
    - analytic
    - web_planner
    - portal
    - http_routing
    - account_invoicing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES geojson
shapely
simplejson
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
fsm_location_form_view fsm.location.form fsm.location page Inherits fieldservice.fsm_location_form_view
fsm_recurring_form_view_inherit_sale fsm.recurring xpath Inherits fieldservice_recurring.fsm_recurring_form_view
view_fsm_order_form_inherit_sale fsm.order xpath Inherits fieldservice.fsm_order_form
view_order_form_inherit_sale_fieldservice sale.order.form.sale.fieldservice sale.order xpath Inherits sale.view_order_form
view_product_fieldservice_form product.template.fieldservice.form product.template xpath Inherits sale.product_template_form_view_invoice_policy
Models touched (4)

New fields (1)
  • sale_line_id Many2one → sale.order.line
    args: 'sale.order.line'
Public methods (1)
  • action_view_sales(self)

New fields (4)
  • field_service_tracking Selection
    default='no' help='On Sales order confirmation, this product can generate a field\n service order or field service recurring order.' string='Field Service Tracking' args: [('no', "Don't create order"), ('order', 'Create a single order'), ('recurring', 'Create a recurring order')]
  • fsm_order_template_id Many2one → fsm.template
    help='Select the field service order template to be created' args: 'fsm.template', 'Field Service Order Template'
  • fsm_recurring_template_id Many2one → fsm.recurring.template
    help='Select a field service recurring order template to be created' args: 'fsm.recurring.template', 'Field Service Recurring Template'
  • service_type Selection
    selection_add=[('field', 'Field Service Orders')]
Public methods (0)

No public methods.

New fields (6)
  • date_fsm_request Datetime
    copy=False default=fields.Datetime.now readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Requested Service Date'
  • fsm_location_id Many2one → fsm.location
    help='SO Lines generating a FSM order will be for this location' string='Service Location' args: 'fsm.location'
  • fsm_order_count Float
    compute='_compute_fsm_order_ids' string='Field Service Orders'
  • fsm_order_ids Many2many → fsm.order
    compute='_compute_fsm_order_ids' string='Field Service orders associated to this sale' args: 'fsm.order'
  • fsm_recurring_count Float
    compute='_compute_fsm_recurring_ids' string='FSM Recurring Orders'
  • fsm_recurring_ids Many2many → fsm.recurring
    compute='_compute_fsm_recurring_ids' string='Field Service Recurring orders associated to this sale' args: 'fsm.recurring'
Public methods (3)
  • action_confirm(self)
    @api.multi
    On SO confirmation, some lines generate field service orders.
  • action_view_fsm_order(self)
    @api.multi
  • action_view_fsm_recurring(self)
    @api.multi

New fields (3)
  • fsm_order_id Many2one → fsm.order
    help='Field Service Order generated by the sales order item' index=True args: 'fsm.order', 'Order'
  • fsm_recurring_id Many2one → fsm.recurring
    help='Field Service Recurring Order generated by the sale order line' index=True args: 'fsm.recurring', 'Recurring Order'
  • is_field_service Boolean
    compute='_compute_is_field_service' help='Sales Order item should generate an Order and/or\n Order Recurrence, depending on the product settings.' store=True args: 'Is a Field Service'
Public methods (1)
  • create(self, values)
    @api.model
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/field-service
PULL REQUEST
PULL REQUEST[19.0][MIG] fieldservice_sale: Migration to 19.0 (#1501)