| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/19.0/fieldservice |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Hoa - Truong Thi Kim |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-07 14:01:36 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - base_territory odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour - html_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module is the base of the Field Service application in Odoo. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_list_view |
fsm.category.list | fsm.category | list | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_list_view |
fsm.equipment.list | fsm.equipment | list | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_graph_view |
fsm.location.graph | fsm.location | graph | New |
fsm_location_list_view |
fsm.location.list | fsm.location | list | New |
fsm_location_person_form_view |
fsm.location.person.form | fsm.location.person | form | New |
fsm_location_person_list_view |
fsm.location.person.list | fsm.location.person | list | New |
fsm_location_person_search_view |
fsm.location.person.search | fsm.location.person | search | New |
fsm_location_pivot_view |
fsm.location.pivot | fsm.location | pivot | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_order_calendar_view |
Orders | fsm.order | calendar | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_list_view |
fsm.order.list | fsm.order | list | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_sign_wizard_view_form |
fsm.order.sign.wizard | form | New | |
fsm_order_type_form_view |
fsm.order.type.form | fsm.order.type | form | New |
fsm_order_type_list_view |
fsm.order.type.list | fsm.order.type | list | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | div | Inherits base.view_partner_form |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_list |
fsm.person.list | fsm.person | list | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_list_view |
Stages | fsm.stage | list | New |
fsm_stage_search_view |
fsm.stage.search | fsm.stage | search | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_list_view |
Tags | fsm.tag | list | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_list_view |
Order Templates | fsm.template | list | New |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | field | Inherits base.view_res_partner_filter |
res_territory_form_view_inherit |
res.territory.form.inherit | res.territory | xpath | Inherits base_territory.res_territory_form_view |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_list |
fsm.team.list | fsm.team | list | New |
view_team_search |
fsm.team.search | fsm.team | search | New |
No HTTP endpoints found for this module.
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
help='Company related to this category'
index=True
required=False
string='Company'
args: 'res.company'
description
Char
full_name
Char
compute='_compute_full_name'
name
Char
required=True
parent_id
Many2one → fsm.category
string='Parent'
args: 'fsm.category'
No public methods.
branch_id
Many2one → res.branch
compute='_compute_branch_id'
readonly=False
store=True
string='Branch'
args: 'res.branch'
child_ids
One2many → fsm.equipment
string='Children'
args: 'fsm.equipment', 'parent_id'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this equipment'
index=True
required=True
string='Company'
args: 'res.company'
current_location_id
Many2one → fsm.location
string='Current Location'
args: 'fsm.location'
district_id
Many2one → res.district
compute='_compute_district_id'
readonly=False
store=True
string='District'
args: 'res.district'
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
string='Managed By'
args: 'res.partner'
name
Char
required=True
notes
Html
owned_by_id
Many2one → res.partner
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → res.region
compute='_compute_region_id'
readonly=False
store=True
string='Region'
args: 'res.region'
territory_id
Many2one → res.territory
compute='_compute_territory_id'
readonly=False
store=True
string='Territory'
args: 'res.territory'
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
branch_manager_id
Many2one
related='branch_id.partner_id'
string='Branch Manager'
calendar_id
Many2one → resource.calendar
string='Office Hours'
args: 'resource.calendar'
child_ids
One2many → fsm.location
comodel_name='fsm.location'
inverse_name='parent_id'
readonly=True
string='Children Locations'
complete_direction
Html
compute='_compute_complete_direction'
recursive=True
store=True
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
contact_count
Integer
compute='_compute_contact_count'
string='Contacts Count'
contact_id
Many2one → res.partner
domain=<expr>
index=True
string='Primary Contact'
args: 'res.partner'
description
Char
direction
Html
district_id
Many2one → res.district
string='District'
args: 'res.district'
district_manager_id
Many2one
related='district_id.partner_id'
string='District Manager'
equipment_count
Integer
compute='_compute_equipment_count'
string='Equipment'
notes
Html
string='Location Notes'
owner_id
Many2one → res.partner
bypass_search_access=True
ondelete='restrict'
required=True
string='Related Owner'
args: 'res.partner'
parent_id
Many2one → fsm.location
index=True
string='Parent'
args: 'fsm.location'
parent_path
Char
index=True
partner_id
Many2one → res.partner
bypass_search_access=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
person_ids
One2many → fsm.location.person
string='Workers'
args: 'fsm.location.person', 'location_id'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
region_manager_id
Many2one
related='region_id.partner_id'
string='Region Manager'
sublocation_count
Integer
compute='_compute_sublocation_count'
string='Sub Locations'
team_id
Many2one → fsm.team
comodel_name='fsm.team'
help='Default team assigned to orders in this location'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
territory_manager_id
Many2one
related='territory_id.person_id'
string='Primary Assignment'
action_view_contacts(self)
action_view_equipment(self)
action_view_sublocation(self)
create(self, vals)
geo_localize(self)
contact_id
Many2one
related='location_id.contact_id'
string='Contact'
email
Char
related='person_id.email'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
owner_id
Many2one
related='location_id.owner_id'
string='Owner'
person_id
Many2one → fsm.person
index=True
required=True
string='Worker'
args: 'fsm.person'
phone
Char
related='person_id.phone'
sequence
Integer
default='10'
required=True
No public methods.
hide
Boolean
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
new_stage(self, operator)
next_stage(self)
previous_stage(self)
branch_id
Many2one → res.branch
related='location_id.branch_id'
store=True
string='Branch'
args: 'res.branch'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
city
Char
related='location_id.city'
color
Integer
default=0
args: 'Color Index'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this order'
index=True
required=True
string='Company'
args: 'res.company'
country_name
Char
related='location_id.country_id.name'
string='Country'
current_date
Datetime
default=fields.Datetime.now
store=True
custom_color
Char
related='stage_id.custom_color'
string='Stage Color'
date_end
Datetime
string='Actual End'
date_start
Datetime
string='Actual Start'
description
Html
compute='_compute_description'
precompute=True
readonly=False
store=True
display_name
Char
related='name'
string='Order'
district_id
Many2one → res.district
related='location_id.district_id'
store=True
string='District'
args: 'res.district'
duration
Float
compute='_compute_duration'
help='Actual duration in hours'
string='Actual duration'
equipment_ids
Many2many → fsm.equipment
compute='_compute_equipment_ids'
precompute=True
readonly=False
store=True
string='Equipments'
args: 'fsm.equipment'
internal_type
Selection
related='type.internal_type'
is_closed
Boolean
related='stage_id.is_closed'
args: 'Is closed'
location_directions
Html
compute='_compute_location_directions'
precompute=True
readonly=False
store=True
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
name
Char
copy=False
default=<expr>
index=True
required=True
person_id
Many2one → fsm.person
index=True
string='Assigned To'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
person_phone
Char
related='person_id.phone'
string='Worker Phone'
phone
Char
related='location_id.phone'
string='Location Phone'
priority
Selection
default=<expr>
index=True
args: fsm_stage.AVAILABLE_PRIORITIES
region_id
Many2one → res.region
related='location_id.region_id'
store=True
string='Region'
args: 'res.region'
request_early
Datetime
default=<expr>
string='Earliest Request Date'
request_late
Datetime
string='Latest Request Date'
require_signature
Boolean
related='stage_id.require_signature'
resolution
Html
scheduled_date_end
Datetime
string='Scheduled End'
scheduled_date_start
Datetime
string='Scheduled Start (ETA)'
scheduled_duration
Float
help='Scheduled duration of the work in hours'
sequence
Integer
default=10
signature
Image
copy=False
max_height=1024
max_width=1024
readonly=True
signed_by
Char
copy=False
readonly=True
signed_on
Datetime
copy=False
readonly=True
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
stage_name
Char
related='stage_id.name'
string='Stage Name'
state_name
Char
related='location_id.state_id.name'
string='State'
street
Char
related='location_id.street'
street2
Char
related='location_id.street2'
tag_ids
Many2many → fsm.tag
help='Classify and analyze your orders'
string='Tags'
args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id'
team_id
Many2one → fsm.team
compute='_compute_team_id'
index=True
precompute=True
readonly=False
required=True
store=True
string='Team'
tracking=True
args: 'fsm.team'
template_id
Many2one → fsm.template
string='Template'
args: 'fsm.template'
territory_id
Many2one → res.territory
related='location_id.territory_id'
store=True
string='Territory'
args: 'res.territory'
todo
Html
compute='_compute_todo'
precompute=True
readonly=False
store=True
string='Instructions'
type
Many2one → fsm.order.type
zip
Char
related='location_id.zip'
action_cancel(self)
action_complete(self)
can_unlink(self)
check_day(self)
create(self, vals_list)
onchange_scheduled_date_end(self)
onchange_scheduled_duration(self)
write(self, vals)
order_id
Many2one → fsm.order
comodel_name='fsm.order'
ondelete='cascade'
required=True
string='Order'
signature
Image
max_height=1024
max_width=1024
required=True
signed_by
Char
required=True
action_sign(self)
default_get(self, fields)
internal_type
Selection
default='fsm'
selection=[('fsm', 'FSM')]
name
Char
required=True
No public methods.
active
Boolean
default=True
active_partner
Boolean
readonly=True
related='partner_id.active'
string='Partner is Active'
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
mobile
Char
partner_id
Many2one → res.partner
bypass_search_access=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
state_id
Many2one
domain="[('country_id', '=?', country_id)]"
inherited=True
readonly=False
related='partner_id.state_id'
store=True
team_id
Many2one → fsm.team
string='Team'
args: 'fsm.team'
territory_ids
Many2many → res.territory
string='Territories'
args: 'res.territory'
action_unarchive(self)
create(self, vals_list)
location_ids
One2many → fsm.location.person
string='Linked Locations'
args: 'fsm.location.person', 'person_id'
No public methods.
active
Boolean
default=True
person_checked
Boolean
default=True
person_id
Many2one → fsm.person
required=True
args: 'fsm.person', 'FSM Worker'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
args: 'res.users', 'Me'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
custom_color
Char
default='#FFFFFF'
help='Use Hex Code only Ex:-#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
translate=True
require_signature
Boolean
help='Whether to ask for a Customer Signature when the order is in this stage.'
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
stage_type
Selection
default='order'
required=True
args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type'
team_ids
Many2many → fsm.team
default=<expr>
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
create(self, vals_list)
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this tag'
index=True
required=True
string='Company'
args: 'res.company'
full_name
Char
compute='_compute_full_name'
name
Char
required=True
parent_id
Many2one → fsm.tag
string='Parent'
args: 'fsm.tag'
No public methods.
active
Boolean
default=True
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this team'
index=True
required=True
string='Company'
args: 'res.company'
description
Text
translate=True
name
Char
required=True
translate=True
order_count
Integer
compute='_compute_order_count'
string='Orders Count'
order_ids
One2many → fsm.order
domain=Domain('stage_id.is_closed', '=', False)
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
stage_ids
Many2many → fsm.stage
default=<expr>
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
help='Company related to this template'
index=True
string='Company'
args: 'res.company'
duration
Float
help='Default duration in hours'
instructions
Html
name
Char
required=True
team_id
Many2one → fsm.team
help='Choose a team to be set on orders of this template'
string='Team'
args: 'fsm.team'
type_id
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
action_other_address(self, partner)
auto_populate_equipments_on_order
Boolean
string='Auto-populate Equipments on Order based on Location'
auto_populate_persons_on_location
Boolean
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
default=8
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
default=48
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
default=72
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
default=24
string='Hours of Buffer for Medium Priority FS Orders'
search_on_complete_name
Boolean
string='Search Location By Hierarchy'
No public methods.
auto_populate_equipments_on_order
Boolean
readonly=False
related='company_id.auto_populate_equipments_on_order'
string='Auto-populate equipments on Order based on the Location'
auto_populate_persons_on_location
Boolean
readonly=False
related='company_id.auto_populate_persons_on_location'
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
readonly=False
related='company_id.fsm_order_request_late_high'
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
readonly=False
related='company_id.fsm_order_request_late_low'
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
readonly=False
related='company_id.fsm_order_request_late_lowest'
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
readonly=False
related='company_id.fsm_order_request_late_medium'
string='Hours of Buffer for Medium Priority FS Orders'
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
group_fsm_territory
Boolean
implied_group='fieldservice.group_fsm_territory'
string='Manage Territory'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_activity
Boolean
string='Manage FSM Activities'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_change_management
Boolean
string='Change Management'
module_fieldservice_crm
Boolean
string='CRM'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_fleet
Boolean
string='Link FSM vehicles to Fleet vehicles'
module_fieldservice_geoengine
Boolean
string='Use GeoEngine'
module_fieldservice_google_map
Boolean
string='Allow Field Service Google Map'
module_fieldservice_location_builder
Boolean
string='Use FSM Location Builder'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_purchase
Boolean
string='Manage subcontractors and their pricelists'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_route
Boolean
string='Manage routes'
module_fieldservice_route_account
Boolean
string='Check the amount collected during the route'
module_fieldservice_route_stock
Boolean
string='Check the inventory of the vehicle at the end of the route'
module_fieldservice_sale
Boolean
string='Sell FSM orders'
module_fieldservice_size
Boolean
string='Manage sizes for orders and locations'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
module_fieldservice_web_timeline_view
Boolean
string='Allow Field Service Web Timeline View'
search_on_complete_name
Boolean
readonly=False
related='company_id.search_on_complete_name'
string='Search Location By Hierarchy'
No public methods.
fsm_location
Boolean
fsm_location_ids
One2many → fsm.location
comodel_name='fsm.location'
inverse_name='partner_id'
readonly=True
string='Related FS Location'
fsm_person
Boolean
owned_location_count
Integer
compute='_compute_owned_location_count'
string='# of Owned Locations'
owned_location_ids
One2many → fsm.location
domain=Domain('parent_id', '=', False)
string='Owned Locations'
args: 'fsm.location', 'owner_id'
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
type
Selection
selection_add=[('fsm_location', 'Location')]
action_open_owned_locations(self)
create(self, vals_list)
write(self, vals)
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/18.0/fieldservice |
| VERSION | |
| VERSION | 5.8.0 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | GitHub, Weblate, OCA-git-bot, Iván Todorovich, oca-ci, Vincent Van Rossem, PicchiSeba, Quirino Leone, EdgarRetes, Christian, Julio Santa Cruz |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-07 13:55:50 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - base_territory odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour - html_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module is the base of the Field Service application in Odoo. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_list_view |
fsm.category.list | fsm.category | list | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_list_view |
fsm.equipment.list | fsm.equipment | list | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_graph_view |
fsm.location.graph | fsm.location | graph | New |
fsm_location_list_view |
fsm.location.list | fsm.location | list | New |
fsm_location_person_form_view |
fsm.location.person.form | fsm.location.person | form | New |
fsm_location_person_list_view |
fsm.location.person.list | fsm.location.person | list | New |
fsm_location_person_search_view |
fsm.location.person.search | fsm.location.person | search | New |
fsm_location_pivot_view |
fsm.location.pivot | fsm.location | pivot | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_order_calendar_view |
Orders | fsm.order | calendar | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_list_view |
fsm.order.list | fsm.order | list | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_sign_wizard_view_form |
fsm.order.sign.wizard | form | New | |
fsm_order_type_form_view |
fsm.order.type.form | fsm.order.type | form | New |
fsm_order_type_list_view |
fsm.order.type.list | fsm.order.type | list | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | div | Inherits base.view_partner_form |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_list |
fsm.person.list | fsm.person | list | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_list_view |
Stages | fsm.stage | list | New |
fsm_stage_search_view |
fsm.stage.search | fsm.stage | search | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_list_view |
Tags | fsm.tag | list | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_list_view |
Order Templates | fsm.template | list | New |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | field | Inherits base.view_res_partner_filter |
res_territory_form_view_inherit |
res.territory.form.inherit | res.territory | xpath | Inherits base_territory.res_territory_form_view |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_list |
fsm.team.list | fsm.team | list | New |
view_team_search |
fsm.team.search | fsm.team | search | New |
No HTTP endpoints found for this module.
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
help='Company related to this category'
index=True
required=False
string='Company'
args: 'res.company'
description
Char
full_name
Char
compute='_compute_full_name'
name
Char
required=True
parent_id
Many2one → fsm.category
string='Parent'
args: 'fsm.category'
No public methods.
branch_id
Many2one → res.branch
compute='_compute_branch_id'
readonly=False
store=True
string='Branch'
args: 'res.branch'
child_ids
One2many → fsm.equipment
string='Children'
args: 'fsm.equipment', 'parent_id'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this equipment'
index=True
required=True
string='Company'
args: 'res.company'
current_location_id
Many2one → fsm.location
string='Current Location'
args: 'fsm.location'
district_id
Many2one → res.district
compute='_compute_district_id'
readonly=False
store=True
string='District'
args: 'res.district'
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
string='Managed By'
args: 'res.partner'
name
Char
required=True
notes
Html
owned_by_id
Many2one → res.partner
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → res.region
compute='_compute_region_id'
readonly=False
store=True
string='Region'
args: 'res.region'
territory_id
Many2one → res.territory
compute='_compute_territory_id'
readonly=False
store=True
string='Territory'
args: 'res.territory'
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
branch_manager_id
Many2one
related='branch_id.partner_id'
string='Branch Manager'
calendar_id
Many2one → resource.calendar
string='Office Hours'
args: 'resource.calendar'
child_ids
One2many → fsm.location
comodel_name='fsm.location'
inverse_name='parent_id'
readonly=True
string='Children Locations'
complete_direction
Char
compute='_compute_complete_direction'
recursive=True
store=True
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
contact_count
Integer
compute='_compute_contact_count'
string='Contacts Count'
contact_id
Many2one → res.partner
domain="[('is_company', '=', False), ('fsm_location', '=', False)]"
index=True
string='Primary Contact'
args: 'res.partner'
description
Char
direction
Char
district_id
Many2one → res.district
string='District'
args: 'res.district'
district_manager_id
Many2one
related='district_id.partner_id'
string='District Manager'
equipment_count
Integer
compute='_compute_equipment_count'
string='Equipment'
fsm_parent_id
Many2one
related='parent_id'
string='Deprecated Parent'
notes
Html
string='Location Notes'
owner_id
Many2one → res.partner
auto_join=True
ondelete='restrict'
required=True
string='Related Owner'
args: 'res.partner'
parent_id
Many2one → fsm.location
index=True
string='Parent'
args: 'fsm.location'
parent_path
Char
index=True
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
person_ids
One2many → fsm.location.person
string='Workers'
args: 'fsm.location.person', 'location_id'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
region_manager_id
Many2one
related='region_id.partner_id'
string='Region Manager'
sublocation_count
Integer
compute='_compute_sublocation_count'
string='Sub Locations'
team_id
Many2one → fsm.team
comodel_name='fsm.team'
help='Default team assigned to orders in this location'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
territory_manager_id
Many2one
related='territory_id.person_id'
string='Primary Assignment'
action_view_contacts(self)
action_view_equipment(self)
action_view_sublocation(self)
create(self, vals)
geo_localize(self)
contact_id
Many2one
related='location_id.contact_id'
string='Contact'
email
Char
related='person_id.email'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
owner_id
Many2one
related='location_id.owner_id'
string='Owner'
person_id
Many2one → fsm.person
index=True
required=True
string='Worker'
args: 'fsm.person'
phone
Char
related='person_id.phone'
sequence
Integer
default='10'
required=True
No public methods.
hide
Boolean
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
new_stage(self, operator)
next_stage(self)
previous_stage(self)
branch_id
Many2one → res.branch
related='location_id.branch_id'
store=True
string='Branch'
args: 'res.branch'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
city
Char
related='location_id.city'
color
Integer
default=0
args: 'Color Index'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this order'
index=True
required=True
string='Company'
args: 'res.company'
country_name
Char
related='location_id.country_id.name'
string='Country'
current_date
Datetime
default=fields.Datetime.now
store=True
custom_color
Char
related='stage_id.custom_color'
string='Stage Color'
date_end
Datetime
string='Actual End'
date_start
Datetime
string='Actual Start'
description
Html
compute='_compute_description'
precompute=True
readonly=False
store=True
display_name
Char
related='name'
string='Order'
district_id
Many2one → res.district
related='location_id.district_id'
store=True
string='District'
args: 'res.district'
duration
Float
compute=_compute_duration
help='Actual duration in hours'
string='Actual duration'
equipment_ids
Many2many → fsm.equipment
compute='_compute_equipment_ids'
precompute=True
readonly=False
store=True
string='Equipments'
args: 'fsm.equipment'
internal_type
Selection
related='type.internal_type'
is_closed
Boolean
related='stage_id.is_closed'
args: 'Is closed'
location_directions
Char
compute='_compute_location_directions'
precompute=True
readonly=False
store=True
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
mobile
Char
related='location_id.mobile'
name
Char
copy=False
default=<expr>
index=True
required=True
person_id
Many2one → fsm.person
index=True
string='Assigned To'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
person_phone
Char
related='person_id.phone'
string='Worker Phone'
phone
Char
related='location_id.phone'
string='Location Phone'
priority
Selection
default=<expr>
index=True
args: fsm_stage.AVAILABLE_PRIORITIES
region_id
Many2one → res.region
related='location_id.region_id'
store=True
string='Region'
args: 'res.region'
request_early
Datetime
default=<expr>
string='Earliest Request Date'
request_late
Datetime
string='Latest Request Date'
require_signature
Boolean
related='stage_id.require_signature'
resolution
Html
scheduled_date_end
Datetime
string='Scheduled End'
scheduled_date_start
Datetime
string='Scheduled Start (ETA)'
scheduled_duration
Float
help='Scheduled duration of the work in hours'
sequence
Integer
default=10
signature
Image
copy=False
max_height=1024
max_width=1024
readonly=True
signed_by
Char
copy=False
readonly=True
signed_on
Datetime
copy=False
readonly=True
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
stage_name
Char
related='stage_id.name'
string='Stage Name'
state_name
Char
related='location_id.state_id.name'
string='State'
street
Char
related='location_id.street'
street2
Char
related='location_id.street2'
tag_ids
Many2many → fsm.tag
help='Classify and analyze your orders'
string='Tags'
args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id'
team_id
Many2one → fsm.team
compute='_compute_team_id'
index=True
precompute=True
readonly=False
required=True
store=True
string='Team'
tracking=True
args: 'fsm.team'
template_id
Many2one → fsm.template
string='Template'
args: 'fsm.template'
territory_id
Many2one → res.territory
related='location_id.territory_id'
store=True
string='Territory'
args: 'res.territory'
todo
Html
compute='_compute_todo'
precompute=True
readonly=False
store=True
string='Instructions'
type
Many2one → fsm.order.type
zip
Char
related='location_id.zip'
action_cancel(self)
action_complete(self)
can_unlink(self)
check_day(self)
create(self, vals_list)
onchange_scheduled_date_end(self)
onchange_scheduled_duration(self)
unlink(self)
write(self, vals)
order_id
Many2one → fsm.order
comodel_name='fsm.order'
ondelete='cascade'
required=True
string='Order'
signature
Image
max_height=1024
max_width=1024
required=True
signed_by
Char
required=True
action_sign(self)
default_get(self, fields)
internal_type
Selection
default='fsm'
selection=[('fsm', 'FSM')]
name
Char
required=True
No public methods.
active
Boolean
default=True
active_partner
Boolean
readonly=True
related='partner_id.active'
string='Partner is Active'
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
mobile
Char
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
territory_ids
Many2many → res.territory
string='Territories'
args: 'res.territory'
create(self, vals_list)
toggle_active(self)
location_ids
One2many → fsm.location.person
string='Linked Locations'
args: 'fsm.location.person', 'person_id'
No public methods.
active
Boolean
default=True
person_checked
Boolean
default=True
person_id
Many2one → fsm.person
required=True
args: 'fsm.person', 'FSM Worker'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
args: 'res.users', 'Me'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
custom_color
Char
default='#FFFFFF'
help='Use Hex Code only Ex:-#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
translate=True
require_signature
Boolean
help='Whether to ask for a Customer Signature when the order is in this stage.'
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
stage_type
Selection
default='order'
required=True
args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type'
team_ids
Many2many → fsm.team
default=<expr>
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
create(self, vals_list)
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this tag'
index=True
required=True
string='Company'
args: 'res.company'
full_name
Char
compute='_compute_full_name'
name
Char
required=True
parent_id
Many2one → fsm.tag
string='Parent'
args: 'fsm.tag'
No public methods.
active
Boolean
default=True
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this team'
index=True
required=True
string='Company'
args: 'res.company'
description
Text
translate=True
name
Char
required=True
translate=True
order_count
Integer
compute='_compute_order_count'
string='Orders Count'
order_ids
One2many → fsm.order
domain=[('stage_id.is_closed', '=', False)]
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
stage_ids
Many2many → fsm.stage
default=_default_stages
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
help='Company related to this template'
index=True
string='Company'
args: 'res.company'
duration
Float
help='Default duration in hours'
instructions
Html
name
Char
required=True
team_id
Many2one → fsm.team
help='Choose a team to be set on orders of this template'
string='Team'
args: 'fsm.team'
type_id
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
action_other_address(self, partner)
auto_populate_equipments_on_order
Boolean
string='Auto-populate Equipments on Order based on Location'
auto_populate_persons_on_location
Boolean
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
default=8
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
default=48
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
default=72
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
default=24
string='Hours of Buffer for Medium Priority FS Orders'
search_on_complete_name
Boolean
string='Search Location By Hierarchy'
No public methods.
auto_populate_equipments_on_order
Boolean
readonly=False
related='company_id.auto_populate_equipments_on_order'
string='Auto-populate equipments on Order based on the Location'
auto_populate_persons_on_location
Boolean
readonly=False
related='company_id.auto_populate_persons_on_location'
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
readonly=False
related='company_id.fsm_order_request_late_high'
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
readonly=False
related='company_id.fsm_order_request_late_low'
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
readonly=False
related='company_id.fsm_order_request_late_lowest'
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
readonly=False
related='company_id.fsm_order_request_late_medium'
string='Hours of Buffer for Medium Priority FS Orders'
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
group_fsm_territory
Boolean
implied_group='fieldservice.group_fsm_territory'
string='Manage Territory'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_activity
Boolean
string='Manage FSM Activities'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_change_management
Boolean
string='Change Management'
module_fieldservice_crm
Boolean
string='CRM'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_fleet
Boolean
string='Link FSM vehicles to Fleet vehicles'
module_fieldservice_geoengine
Boolean
string='Use GeoEngine'
module_fieldservice_google_map
Boolean
string='Allow Field Service Google Map'
module_fieldservice_location_builder
Boolean
string='Use FSM Location Builder'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_purchase
Boolean
string='Manage subcontractors and their pricelists'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_route
Boolean
string='Manage routes'
module_fieldservice_route_account
Boolean
string='Check the amount collected during the route'
module_fieldservice_route_stock
Boolean
string='Check the inventory of the vehicle at the end of the route'
module_fieldservice_sale
Boolean
string='Sell FSM orders'
module_fieldservice_size
Boolean
string='Manage sizes for orders and locations'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
module_fieldservice_web_timeline_view
Boolean
string='Allow Field Service Web Timeline View'
search_on_complete_name
Boolean
readonly=False
related='company_id.search_on_complete_name'
string='Search Location By Hierarchy'
No public methods.
fsm_location
Boolean
fsm_location_ids
One2many → fsm.location
comodel_name='fsm.location'
inverse_name='partner_id'
readonly=True
string='Related FS Location'
fsm_person
Boolean
owned_location_count
Integer
compute='_compute_owned_location_count'
string='# of Owned Locations'
owned_location_ids
One2many → fsm.location
domain=[('parent_id', '=', False)]
string='Owned Locations'
args: 'fsm.location', 'owner_id'
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
type
Selection
selection_add=[('fsm_location', 'Location')]
action_open_owned_locations(self)
create(self, vals_list)
write(self, vals)
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/17.0/fieldservice |
| VERSION | |
| VERSION | 2.8.0 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, GitHub, Daniel Reis, Weblate, OCA-git-bot, Iván Todorovich, oca-ci, Brian McMaster, DoDo, PicchiSeba, Antoni Marroig Campomar, ilo, bobrador, Quirino Leone, Samuel Macias Oropeza (smo) |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:00 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - base_territory odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module is the base of the Field Service application in Odoo. Videos from OCA Days: * 2024: [Field Service Management](https://www.youtube.com/watch?v=zBCa3e9rLHU) * 2022: [Field Service - New features and roadmap](https://www.youtube.com/watch?v=MH8agrNE88A) * 2021: [Job and Service Management for Install and Construction](https://www.youtube.com/watch?v=b7iivgfzPoo) * 2020: [Advanced Field Service Management](https://www.youtube.com/watch?v=7bq3cwMFeME) |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_tree_view |
fsm.category.tree | fsm.category | tree | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_equipment_tree_view |
fsm.equipment.tree | fsm.equipment | tree | New |
fsm_location_form_inherit |
fsm.location.form.inherit.sub.location | fsm.location | xpath | Inherits fieldservice.fsm_location_form_view |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_graph_view |
fsm.location.graph | fsm.location | graph | New |
fsm_location_person_form_view |
fsm.location.person.form | fsm.location.person | form | New |
fsm_location_person_search_view |
fsm.location.person.search | fsm.location.person | search | New |
fsm_location_person_tree_view |
fsm.location.person.tree | fsm.location.person | tree | New |
fsm_location_pivot_view |
fsm.location.pivot | fsm.location | pivot | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_location_tree_view |
fsm.location.tree | fsm.location | tree | New |
fsm_order_calendar_view |
Orders | fsm.order | calendar | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_tree_view |
fsm.order.tree | fsm.order | tree | New |
fsm_order_type_form_view |
fsm.order.type.form | fsm.order.type | form | New |
fsm_order_type_tree_view |
fsm.order.type.tree | fsm.order.type | tree | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | div | Inherits base.view_partner_form |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_person_tree |
fsm.person.tree | fsm.person | tree | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_search_view |
fsm.stage.search | fsm.stage | search | New |
fsm_stage_tree_view |
Stages | fsm.stage | tree | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_tree_view |
Tags | fsm.tag | tree | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_tree_view |
Order Templates | fsm.template | tree | New |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | field | Inherits base.view_res_partner_filter |
res_territory_form_view_inherit |
res.territory.form.inherit | res.territory | xpath | Inherits base_territory.res_territory_form_view |
view_create_sub_location_wizard |
fsm.create.sub.location.wizard.form | fsm.create.sub.location.wizard | form | New |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_search |
fsm.team.search | fsm.team | search | New |
view_team_tree |
fsm.team.tree | fsm.team | tree | New |
No HTTP endpoints found for this module.
child_id
One2many → fsm.category
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
help='Company related to this category'
index=True
required=False
string='Company'
args: 'res.company'
description
Char
full_name
Char
compute='_compute_full_name'
recursive=True
store=True
name
Char
required=True
parent_id
Many2one → fsm.category
index=True
string='Parent'
args: 'fsm.category'
parent_path
Char
index=True
unaccent=False
No public methods.
city
Char
country_id
Many2one → res.country
ondelete='restrict'
string='Country'
args: 'res.country'
email
Char
name
Char
compute='_compute_name'
store=True
parent_location_id
Many2one → fsm.location
required=True
string='Parent Location'
args: 'fsm.location'
phone
Char
related_owner_id
Many2one → res.partner
required=True
string='Related Owner'
args: 'res.partner'
state_id
Many2one → res.country.state
domain="[('country_id', '=?', country_id)]"
ondelete='restrict'
string='State'
args: 'res.country.state'
street
Char
street2
Char
zip
Char
change_default=True
create_sub_location(self)
default_get(self, fields)
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
child_ids
One2many → fsm.equipment
check_company=True
string='Children'
args: 'fsm.equipment', 'parent_id'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this equipment'
index=True
required=True
string='Company'
args: 'res.company'
current_location_id
Many2one → fsm.location
string='Current Location'
args: 'fsm.location'
district_id
Many2one → res.district
string='District'
args: 'res.district'
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
check_company=True
string='Managed By'
args: 'res.partner'
name
Char
required=True
notes
Text
owned_by_id
Many2one → res.partner
check_company=True
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
check_company=True
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
check_company=True
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
branch_manager_id
Many2one
related='branch_id.partner_id'
string='Branch Manager'
calendar_id
Many2one → resource.calendar
string='Office Hours'
args: 'resource.calendar'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
contact_count
Integer
compute='_compute_contact_ids'
string='Contacts Count'
contact_id
Many2one → res.partner
domain="[('is_company', '=', False), ('fsm_location', '=', False)]"
index=True
string='Primary Contact'
args: 'res.partner'
description
Char
direction
Html
district_id
Many2one → res.district
string='District'
args: 'res.district'
district_manager_id
Many2one
related='district_id.partner_id'
string='District Manager'
equipment_count
Integer
compute='_compute_equipment_ids'
string='Equipment'
fsm_parent_id
Many2one → fsm.location
index=True
string='Parent'
args: 'fsm.location'
notes
Html
string='Location Notes'
owner_id
Many2one → res.partner
auto_join=True
ondelete='restrict'
required=True
string='Related Owner'
args: 'res.partner'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
person_ids
One2many → fsm.location.person
string='Workers'
args: 'fsm.location.person', 'location_id'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
region_manager_id
Many2one
related='region_id.partner_id'
string='Region Manager'
sublocation_count
Integer
compute='_compute_sublocation_ids'
string='Sub Locations'
team_id
Many2one → fsm.team
comodel_name='fsm.team'
help='Default team assigned to orders in this location'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
territory_manager_id
Many2one
related='territory_id.person_id'
string='Primary Assignment'
action_view_contacts(self)
action_view_equipment(self)
action_view_sublocation(self)
comp_count(self, contact, equipment, loc)
create(self, vals_list)
geo_localize(self)
get_action_views(self, contact, equipment, loc)
name_search(self, name='', args=None, operator='ilike', limit=100)
contact_id
Many2one
related='location_id.contact_id'
string='Contact'
email
Char
related='person_id.email'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
owner_id
Many2one
related='location_id.owner_id'
string='Owner'
person_id
Many2one → fsm.person
index=True
required=True
string='Worker'
args: 'fsm.person'
phone
Char
related='person_id.phone'
sequence
Integer
default='10'
required=True
No public methods.
hide
Boolean
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
new_stage(self, operator)
next_stage(self)
previous_stage(self)
branch_id
Many2one → res.branch
related='location_id.branch_id'
store=True
string='Branch'
args: 'res.branch'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
city
Char
related='location_id.city'
color
Integer
default=0
args: 'Color Index'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this order'
index=True
required=True
string='Company'
args: 'res.company'
country_name
Char
related='location_id.country_id.name'
string='Country'
current_date
Datetime
default=fields.Datetime.now
store=True
custom_color
Char
related='stage_id.custom_color'
string='Stage Color'
date_end
Datetime
string='Actual End'
date_start
Datetime
string='Actual Start'
date_today_order_tz
Date
compute='_compute_date_today_order_tz'
store=True
string='Scheduled Date (User TZ)'
description
Text
display_name
Char
related='name'
string='Order'
district_id
Many2one → res.district
related='location_id.district_id'
store=True
string='District'
args: 'res.district'
duration
Float
compute=_compute_duration
help='Actual duration in hours'
string='Actual duration'
equipment_id
Many2one → fsm.equipment
string='Equipment'
args: 'fsm.equipment'
equipment_ids
Many2many → fsm.equipment
string='Equipments'
args: 'fsm.equipment'
internal_type
Selection
related='type.internal_type'
is_button
Boolean
default=False
is_closed
Boolean
related='stage_id.is_closed'
args: 'Is closed'
location_directions
Html
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
location_owner_id
Many2one
related='location_id.owner_id'
string='Location Related Owner'
mobile
Char
related='location_id.mobile'
name
Char
copy=False
default=<expr>
index=True
required=True
person_id
Many2one → fsm.person
index=True
string='Assigned To'
args: 'fsm.person'
person_ids
Many2many → fsm.person
check_company=True
string='Field Service Workers'
args: 'fsm.person'
person_phone
Char
related='person_id.phone'
string='Worker Phone'
phone
Char
related='location_id.phone'
string='Location Phone'
priority
Selection
default=<expr>
index=True
args: fsm_stage.AVAILABLE_PRIORITIES
region_id
Many2one → res.region
related='location_id.region_id'
store=True
string='Region'
args: 'res.region'
request_early
Datetime
default=<expr>
string='Earliest Request Date'
request_late
Datetime
string='Latest Request Date'
resolution
Text
scheduled_date_end
Datetime
string='Scheduled End'
scheduled_date_start
Datetime
string='Scheduled Start (ETA)'
scheduled_duration
Float
help='Scheduled duration of the work in hours'
sequence
Integer
default=10
stage_id
Many2one → fsm.stage
check_company=True
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
stage_name
Char
related='stage_id.name'
string='Stage Name'
state_name
Char
related='location_id.state_id.name'
string='State'
street
Char
related='location_id.street'
street2
Char
related='location_id.street2'
tag_ids
Many2many → fsm.tag
check_company=True
help='Classify and analyze your orders'
string='Tags'
args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id'
team_id
Many2one → fsm.team
check_company=True
compute='_compute_team_id'
index=True
precompute=True
readonly=False
required=True
store=True
string='Team'
tracking=True
args: 'fsm.team'
template_id
Many2one → fsm.template
string='Template'
args: 'fsm.template'
territory_id
Many2one → res.territory
related='location_id.territory_id'
store=True
string='Territory'
args: 'res.territory'
todo
Html
string='Instructions'
type
Many2one → fsm.order.type
zip
Char
related='location_id.zip'
action_cancel(self)
action_complete(self)
can_unlink(self)
copy_notes(self)
create(self, vals_list)
onchange_equipment_ids(self)
onchange_scheduled_date_end(self)
onchange_scheduled_duration(self)
unlink(self)
write(self, vals)
internal_type
Selection
default='fsm'
selection=[('fsm', 'FSM')]
name
Char
required=True
No public methods.
active
Boolean
default=True
active_partner
Boolean
readonly=True
related='partner_id.active'
string='Partner is Active'
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
mobile
Char
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
team_id
Many2one → fsm.team
string='Team'
args: 'fsm.team'
territory_ids
Many2many → res.territory
string='Territories'
args: 'res.territory'
create(self, vals_list)
toggle_active(self)
location_ids
One2many → fsm.location.person
string='Linked Locations'
args: 'fsm.location.person', 'person_id'
No public methods.
active
Boolean
default=True
person_checked
Boolean
default=True
person_id
Many2one → fsm.person
required=True
args: 'fsm.person', 'FSM Worker'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
args: 'res.users', 'Me'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
custom_color
Char
default='#FFFFFF'
help='Use Hex Code only Ex:-#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
translate=True
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
stage_type
Selection
default='order'
required=True
args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type'
team_ids
Many2many → fsm.team
check_company=True
default=<expr>
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
create(self, vals_list)
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this tag'
index=True
required=True
string='Company'
args: 'res.company'
full_name
Char
compute='_compute_full_name'
name
Char
required=True
parent_id
Many2one → fsm.tag
check_company=True
string='Parent'
args: 'fsm.tag'
No public methods.
active
Boolean
default=True
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this team'
index=True
required=True
string='Company'
args: 'res.company'
description
Text
translate=True
location_id
Many2one → fsm.location
string='Default Location '
args: 'fsm.location'
name
Char
required=True
translate=True
order_count
Integer
compute='_compute_order_count'
string='Orders Count'
order_ids
One2many → fsm.order
check_company=True
domain=[('stage_id.is_closed', '=', False)]
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
stage_ids
Many2many → fsm.stage
check_company=True
default=_default_stages
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
help='Company related to this template'
index=True
string='Company'
args: 'res.company'
duration
Float
help='Default duration in hours'
instructions
Html
name
Char
required=True
team_id
Many2one → fsm.team
check_company=True
help='Choose a team to be set on orders of this template'
string='Team'
args: 'fsm.team'
type_id
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
action_other_address(self, partner)
auto_populate_equipments_on_order
Boolean
string='Auto-populate Equipments on Order based on Location'
auto_populate_persons_on_location
Boolean
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
default=8
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
default=48
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
default=72
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
default=24
string='Hours of Buffer for Medium Priority FS Orders'
search_on_complete_name
Boolean
string='Search Location By Hierarchy'
No public methods.
auto_populate_equipments_on_order
Boolean
readonly=False
related='company_id.auto_populate_equipments_on_order'
string='Auto-populate equipments on Order based on the Location'
auto_populate_persons_on_location
Boolean
readonly=False
related='company_id.auto_populate_persons_on_location'
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
readonly=False
related='company_id.fsm_order_request_late_high'
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
readonly=False
related='company_id.fsm_order_request_late_low'
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
readonly=False
related='company_id.fsm_order_request_late_lowest'
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
readonly=False
related='company_id.fsm_order_request_late_medium'
string='Hours of Buffer for Medium Priority FS Orders'
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
group_fsm_territory
Boolean
implied_group='fieldservice.group_fsm_territory'
string='Manage Territory'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_activity
Boolean
string='Manage FSM Activities'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_change_management
Boolean
string='Change Management'
module_fieldservice_crm
Boolean
string='CRM'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_fleet
Boolean
string='Link FSM vehicles to Fleet vehicles'
module_fieldservice_geoengine
Boolean
string='Use GeoEngine'
module_fieldservice_google_map
Boolean
string='Allow Field Service Google Map'
module_fieldservice_location_builder
Boolean
string='Use FSM Location Builder'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_purchase
Boolean
string='Manage subcontractors and their pricelists'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_route
Boolean
string='Manage routes'
module_fieldservice_route_account
Boolean
string='Check the amount collected during the route'
module_fieldservice_route_availability
Boolean
string='Restricts blackout days for Scheduled Start (ETA)'
module_fieldservice_route_stock
Boolean
string='Check the inventory of the vehicle at the end of the route'
module_fieldservice_sale
Boolean
string='Sell FSM orders'
module_fieldservice_size
Boolean
string='Manage sizes for orders and locations'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
module_fieldservice_web_timeline_view
Boolean
string='Allow Field Service Web Timeline View'
search_on_complete_name
Boolean
readonly=False
related='company_id.search_on_complete_name'
string='Search Location By Hierarchy'
No public methods.
fsm_location
Boolean
fsm_location_id
One2many → fsm.location
comodel_name='fsm.location'
inverse_name='partner_id'
readonly=True
string='Related FS Location'
fsm_person
Boolean
owned_location_count
Integer
compute='_compute_owned_location_count'
string='# of Owned Locations'
owned_location_ids
One2many → fsm.location
domain=[('fsm_parent_id', '=', False)]
string='Owned Locations'
args: 'fsm.location', 'owner_id'
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
type
Selection
selection_add=[('fsm_location', 'Location')]
action_open_owned_locations(self)
create(self, vals_list)
write(self, vals)
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/16.0/fieldservice |
| VERSION | |
| VERSION | 1.13.0 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, GitHub, tafaRU, Víctor Martínez, Weblate, OCA-git-bot, Simone Rubino, oca-ci, Brian McMaster, Marcel Savegnago, Alessandro Uffreduzzi, PicchiSeba, Nils Coenen, Houzéfa Abbasbhay, Quirino Leone, Goncalo Brito |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:41 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - base_territory odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_tree_view |
fsm.category.tree | fsm.category | tree | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_equipment_tree_view |
fsm.equipment.tree | fsm.equipment | tree | New |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_graph_view |
fsm.location.graph | fsm.location | graph | New |
fsm_location_person_form_view |
fsm.location.person.form | fsm.location.person | form | New |
fsm_location_person_search_view |
fsm.location.person.search | fsm.location.person | search | New |
fsm_location_person_tree_view |
fsm.location.person.tree | fsm.location.person | tree | New |
fsm_location_pivot_view |
fsm.location.pivot | fsm.location | pivot | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_location_tree_view |
fsm.location.tree | fsm.location | tree | New |
fsm_order_calendar_view |
Orders | fsm.order | calendar | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_tree_view |
fsm.order.tree | fsm.order | tree | New |
fsm_order_type_form_view |
fsm.order.type.form | fsm.order.type | form | New |
fsm_order_type_tree_view |
fsm.order.type.tree | fsm.order.type | tree | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | div | Inherits base.view_partner_form |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_person_tree |
fsm.person.tree | fsm.person | tree | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_search_view |
fsm.stage.search | fsm.stage | search | New |
fsm_stage_tree_view |
Stages | fsm.stage | tree | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_tree_view |
Tags | fsm.tag | tree | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_tree_view |
Order Templates | fsm.template | tree | New |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | field | Inherits base.view_res_partner_filter |
res_territory_form_view_inherit |
res.territory.form.inherit | res.territory | xpath | Inherits base_territory.res_territory_form_view |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_search |
fsm.team.search | fsm.team | search | New |
view_team_tree |
fsm.team.tree | fsm.team | tree | New |
No HTTP endpoints found for this module.
child_id
One2many → fsm.category
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
help='Company related to this category'
index=True
required=False
string='Company'
args: 'res.company'
description
Char
full_name
Char
compute='_compute_full_name'
recursive=True
store=True
name
Char
required='True'
parent_id
Many2one → fsm.category
index=True
string='Parent'
args: 'fsm.category'
parent_path
Char
index=True
unaccent=False
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
child_ids
One2many → fsm.equipment
string='Children'
args: 'fsm.equipment', 'parent_id'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this equipment'
index=True
required=True
string='Company'
args: 'res.company'
current_location_id
Many2one → fsm.location
string='Current Location'
args: 'fsm.location'
district_id
Many2one → res.district
string='District'
args: 'res.district'
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
string='Managed By'
args: 'res.partner'
name
Char
required='True'
notes
Text
owned_by_id
Many2one → res.partner
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
branch_manager_id
Many2one
related='branch_id.partner_id'
string='Branch Manager'
calendar_id
Many2one → resource.calendar
string='Office Hours'
args: 'resource.calendar'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
contact_count
Integer
compute='_compute_contact_ids'
string='Contacts Count'
contact_id
Many2one → res.partner
domain="[('is_company', '=', False), ('fsm_location', '=', False)]"
index=True
string='Primary Contact'
args: 'res.partner'
description
Char
direction
Html
district_id
Many2one → res.district
string='District'
args: 'res.district'
district_manager_id
Many2one
related='district_id.partner_id'
string='District Manager'
equipment_count
Integer
compute='_compute_equipment_ids'
string='Equipment'
fsm_parent_id
Many2one → fsm.location
index=True
string='Parent'
args: 'fsm.location'
notes
Html
string='Location Notes'
owner_id
Many2one → res.partner
auto_join=True
ondelete='restrict'
required=True
string='Related Owner'
args: 'res.partner'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
person_ids
One2many → fsm.location.person
string='Workers'
args: 'fsm.location.person', 'location_id'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
region_manager_id
Many2one
related='region_id.partner_id'
string='Region Manager'
sublocation_count
Integer
compute='_compute_sublocation_ids'
string='Sub Locations'
team_id
Many2one → fsm.team
comodel_name='fsm.team'
help='Default team assigned to orders in this location'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
territory_manager_id
Many2one
related='territory_id.person_id'
string='Primary Assignment'
action_view_contacts(self)
action_view_equipment(self)
action_view_sublocation(self)
comp_count(self, contact, equipment, loc)
create(self, vals_list)
geo_localize(self)
get_action_views(self, contact, equipment, loc)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
contact_id
Many2one
related='location_id.contact_id'
string='Contact'
email
Char
related='person_id.email'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
owner_id
Many2one
related='location_id.owner_id'
string='Owner'
person_id
Many2one → fsm.person
index=True
required=True
string='Worker'
args: 'fsm.person'
phone
Char
related='person_id.phone'
sequence
Integer
default='10'
required=True
No public methods.
hide
Boolean
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
new_stage(self, operator)
next_stage(self)
previous_stage(self)
branch_id
Many2one → res.branch
related='location_id.branch_id'
store=True
string='Branch'
args: 'res.branch'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
city
Char
related='location_id.city'
color
Integer
default=0
args: 'Color Index'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this order'
index=True
required=True
string='Company'
args: 'res.company'
country_name
Char
related='location_id.country_id.name'
string='Country'
current_date
Datetime
default=fields.Datetime.now
store=True
custom_color
Char
related='stage_id.custom_color'
string='Stage Color'
date_end
Datetime
string='Actual End'
date_start
Datetime
string='Actual Start'
description
Text
display_name
Char
related='name'
string='Order'
district_id
Many2one → res.district
related='location_id.district_id'
store=True
string='District'
args: 'res.district'
duration
Float
compute=_compute_duration
help='Actual duration in hours'
string='Actual duration'
equipment_id
Many2one → fsm.equipment
string='Equipment'
args: 'fsm.equipment'
equipment_ids
Many2many → fsm.equipment
string='Equipments'
args: 'fsm.equipment'
internal_type
Selection
related='type.internal_type'
is_button
Boolean
default=False
is_closed
Boolean
related='stage_id.is_closed'
args: 'Is closed'
location_directions
Html
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
mobile
Char
related='location_id.mobile'
name
Char
copy=False
default=<expr>
index=True
required=True
person_id
Many2one → fsm.person
index=True
string='Assigned To'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
person_phone
Char
related='person_id.phone'
string='Worker Phone'
phone
Char
related='location_id.phone'
string='Location Phone'
priority
Selection
default=<expr>
index=True
args: fsm_stage.AVAILABLE_PRIORITIES
region_id
Many2one → res.region
related='location_id.region_id'
store=True
string='Region'
args: 'res.region'
request_early
Datetime
default=<expr>
string='Earliest Request Date'
request_late
Datetime
string='Latest Request Date'
resolution
Text
scheduled_date_end
Datetime
string='Scheduled End'
scheduled_date_start
Datetime
string='Scheduled Start (ETA)'
scheduled_duration
Float
help='Scheduled duration of the work in hours'
sequence
Integer
default=10
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
stage_name
Char
related='stage_id.name'
string='Stage Name'
state_name
Char
related='location_id.state_id.name'
string='State'
street
Char
related='location_id.street'
street2
Char
related='location_id.street2'
tag_ids
Many2many → fsm.tag
help='Classify and analyze your orders'
string='Tags'
args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id'
team_id
Many2one → fsm.team
compute='_compute_team_id'
index=True
precompute=True
readonly=False
required=True
store=True
string='Team'
tracking=True
args: 'fsm.team'
template_id
Many2one → fsm.template
string='Template'
args: 'fsm.template'
territory_id
Many2one → res.territory
related='location_id.territory_id'
store=True
string='Territory'
args: 'res.territory'
todo
Html
string='Instructions'
type
Many2one → fsm.order.type
zip
Char
related='location_id.zip'
action_cancel(self)
action_complete(self)
can_unlink(self)
check_day(self)
copy_notes(self)
create(self, vals_list)
onchange_equipment_ids(self)
onchange_scheduled_date_end(self)
onchange_scheduled_duration(self)
unlink(self)
write(self, vals)
internal_type
Selection
default='fsm'
selection=[('fsm', 'FSM')]
name
Char
required=True
No public methods.
active
Boolean
default=True
active_partner
Boolean
readonly=True
related='partner_id.active'
string='Partner is Active'
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
mobile
Char
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
territory_ids
Many2many → res.territory
string='Territories'
args: 'res.territory'
create(self, vals_list)
toggle_active(self)
location_ids
One2many → fsm.location.person
string='Linked Locations'
args: 'fsm.location.person', 'person_id'
No public methods.
active
Boolean
default=True
person_checked
Boolean
default=True
person_id
Many2one → fsm.person
required=True
args: 'fsm.person', 'FSM Worker'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
args: 'res.users', 'Me'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
custom_color
Char
default='#FFFFFF'
help='Use Hex Code only Ex:-#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
translate=True
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
stage_type
Selection
default='order'
required=True
args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type'
team_ids
Many2many → fsm.team
default=<expr>
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
create(self, vals_list)
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this tag'
index=True
required=True
string='Company'
args: 'res.company'
full_name
Char
compute='_compute_full_name'
name
Char
required=True
parent_id
Many2one → fsm.tag
string='Parent'
args: 'fsm.tag'
No public methods.
active
Boolean
default=True
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this team'
index=True
required=True
string='Company'
args: 'res.company'
description
Text
translate=True
name
Char
required=True
translate=True
order_count
Integer
compute='_compute_order_count'
string='Orders Count'
order_ids
One2many → fsm.order
domain=[('stage_id.is_closed', '=', False)]
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
stage_ids
Many2many → fsm.stage
default=_default_stages
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
help='Company related to this template'
index=True
string='Company'
args: 'res.company'
duration
Float
help='Default duration in hours'
instructions
Html
name
Char
required=True
team_id
Many2one → fsm.team
help='Choose a team to be set on orders of this template'
string='Team'
args: 'fsm.team'
type_id
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
action_other_address(self, partner)
auto_populate_equipments_on_order
Boolean
string='Auto-populate Equipments on Order based on Location'
auto_populate_persons_on_location
Boolean
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
default=8
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
default=48
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
default=72
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
default=24
string='Hours of Buffer for Medium Priority FS Orders'
search_on_complete_name
Boolean
string='Search Location By Hierarchy'
No public methods.
auto_populate_equipments_on_order
Boolean
readonly=False
related='company_id.auto_populate_equipments_on_order'
string='Auto-populate equipments on Order based on the Location'
auto_populate_persons_on_location
Boolean
readonly=False
related='company_id.auto_populate_persons_on_location'
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
readonly=False
related='company_id.fsm_order_request_late_high'
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
readonly=False
related='company_id.fsm_order_request_late_low'
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
readonly=False
related='company_id.fsm_order_request_late_lowest'
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
readonly=False
related='company_id.fsm_order_request_late_medium'
string='Hours of Buffer for Medium Priority FS Orders'
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
group_fsm_territory
Boolean
implied_group='fieldservice.group_fsm_territory'
string='Manage Territory'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_activity
Boolean
string='Manage FSM Activities'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_change_management
Boolean
string='Change Management'
module_fieldservice_crm
Boolean
string='CRM'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_fleet
Boolean
string='Link FSM vehicles to Fleet vehicles'
module_fieldservice_geoengine
Boolean
string='Use GeoEngine'
module_fieldservice_google_map
Boolean
string='Allow Field Service Google Map'
module_fieldservice_location_builder
Boolean
string='Use FSM Location Builder'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_purchase
Boolean
string='Manage subcontractors and their pricelists'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_route
Boolean
string='Manage routes'
module_fieldservice_route_account
Boolean
string='Check the amount collected during the route'
module_fieldservice_route_stock
Boolean
string='Check the inventory of the vehicle at the end of the route'
module_fieldservice_sale
Boolean
string='Sell FSM orders'
module_fieldservice_size
Boolean
string='Manage sizes for orders and locations'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
module_fieldservice_web_timeline_view
Boolean
string='Allow Field Service Web Timeline View'
search_on_complete_name
Boolean
readonly=False
related='company_id.search_on_complete_name'
string='Search Location By Hierarchy'
No public methods.
fsm_location
Boolean
fsm_location_id
One2many → fsm.location
comodel_name='fsm.location'
inverse_name='partner_id'
readonly=1
string='Related FS Location'
fsm_person
Boolean
owned_location_count
Integer
compute='_compute_owned_location_count'
string='# of Owned Locations'
owned_location_ids
One2many → fsm.location
domain=[('fsm_parent_id', '=', False)]
string='Owned Locations'
args: 'fsm.location', 'owner_id'
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
type
Selection
selection_add=[('fsm_location', 'Location')]
action_open_owned_locations(self)
create(self, vals_list)
write(self, vals)
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/15.0/fieldservice |
| VERSION | |
| VERSION | 1.7.1 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | GitHub, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Brian McMaster, Marcel Savegnago, Alessandro Uffreduzzi, Patryk Pyczko, bobrador, ppyczko, Christian Santamaria |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:30 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - base_territory odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_tree_view |
fsm.category.tree | fsm.category | tree | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_equipment_tree_view |
fsm.equipment.tree | fsm.equipment | tree | New |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_graph_view |
fsm.location.graph | fsm.location | graph | New |
fsm_location_person_form_view |
fsm.location.person.form | fsm.location.person | form | New |
fsm_location_person_search_view |
fsm.location.person.search | fsm.location.person | search | New |
fsm_location_person_tree_view |
fsm.location.person.tree | fsm.location.person | tree | New |
fsm_location_pivot_view |
fsm.location.pivot | fsm.location | pivot | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_location_tree_view |
fsm.location.tree | fsm.location | tree | New |
fsm_order_calendar_view |
Orders | fsm.order | calendar | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_tree_view |
fsm.order.tree | fsm.order | tree | New |
fsm_order_type_form_view |
fsm.order.type.form | fsm.order.type | form | New |
fsm_order_type_tree_view |
fsm.order.type.tree | fsm.order.type | tree | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | div | Inherits base.view_partner_form |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_person_tree |
fsm.person.tree | fsm.person | tree | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_search_view |
fsm.stage.search | fsm.stage | search | New |
fsm_stage_tree_view |
Stages | fsm.stage | tree | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_tree_view |
Tags | fsm.tag | tree | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_tree_view |
Order Templates | fsm.template | tree | New |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | field | Inherits base.view_res_partner_filter |
res_territory_form_view_inherit |
res.territory.form.inherit | res.territory | xpath | Inherits base_territory.res_territory_form_view |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_tree |
fsm.team.tree | fsm.team | tree | New |
No HTTP endpoints found for this module.
child_id
One2many → fsm.category
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
help='Company related to this category'
index=True
required=False
string='Company'
args: 'res.company'
description
Char
full_name
Char
compute='_compute_full_name'
recursive=True
store=True
name
Char
required='True'
parent_id
Many2one → fsm.category
index=True
string='Parent'
args: 'fsm.category'
parent_path
Char
index=True
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
child_ids
One2many → fsm.equipment
string='Children'
args: 'fsm.equipment', 'parent_id'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this equipment'
index=True
required=True
string='Company'
args: 'res.company'
current_location_id
Many2one → fsm.location
string='Current Location'
args: 'fsm.location'
district_id
Many2one → res.district
string='District'
args: 'res.district'
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
string='Managed By'
args: 'res.partner'
name
Char
required='True'
notes
Text
owned_by_id
Many2one → res.partner
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
branch_manager_id
Many2one
related='branch_id.partner_id'
string='Branch Manager'
calendar_id
Many2one → resource.calendar
string='Office Hours'
args: 'resource.calendar'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
contact_count
Integer
compute='_compute_contact_ids'
string='Contacts Count'
contact_id
Many2one → res.partner
domain="[('is_company', '=', False), ('fsm_location', '=', False)]"
index=True
string='Primary Contact'
args: 'res.partner'
description
Char
direction
Char
district_id
Many2one → res.district
string='District'
args: 'res.district'
district_manager_id
Many2one
related='district_id.partner_id'
string='District Manager'
equipment_count
Integer
compute='_compute_equipment_ids'
string='Equipment'
fsm_parent_id
Many2one → fsm.location
index=True
string='Parent'
args: 'fsm.location'
notes
Text
string='Location Notes'
owner_id
Many2one → res.partner
auto_join=True
ondelete='restrict'
required=True
string='Related Owner'
args: 'res.partner'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
person_ids
One2many → fsm.location.person
string='Workers'
args: 'fsm.location.person', 'location_id'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
region_manager_id
Many2one
related='region_id.partner_id'
string='Region Manager'
sublocation_count
Integer
compute='_compute_sublocation_ids'
string='Sub Locations'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
territory_manager_id
Many2one
related='territory_id.person_id'
string='Primary Assignment'
action_view_contacts(self)
action_view_equipment(self)
action_view_sublocation(self)
comp_count(self, contact, equipment, loc)
create(self, vals)
geo_localize(self)
get_action_views(self, contact, equipment, loc)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
contact_id
Many2one
related='location_id.contact_id'
string='Contact'
email
Char
related='person_id.email'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
owner_id
Many2one
related='location_id.owner_id'
string='Owner'
person_id
Many2one → fsm.person
index=True
required=True
string='Worker'
args: 'fsm.person'
phone
Char
related='person_id.phone'
sequence
Integer
default='10'
required=True
No public methods.
hide
Boolean
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
new_stage(self, operator)
next_stage(self)
previous_stage(self)
branch_id
Many2one → res.branch
related='location_id.branch_id'
store=True
string='Branch'
args: 'res.branch'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
city
Char
related='location_id.city'
color
Integer
default=0
args: 'Color Index'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this order'
index=True
required=True
string='Company'
args: 'res.company'
country_name
Char
related='location_id.country_id.name'
string='Country'
current_date
Datetime
default=fields.Datetime.now
store=True
custom_color
Char
related='stage_id.custom_color'
string='Stage Color'
date_end
Datetime
string='Actual End'
date_start
Datetime
string='Actual Start'
description
Text
display_name
Char
related='name'
string='Order'
district_id
Many2one → res.district
related='location_id.district_id'
store=True
string='District'
args: 'res.district'
duration
Float
compute=_compute_duration
help='Actual duration in hours'
string='Actual duration'
equipment_id
Many2one → fsm.equipment
string='Equipment'
args: 'fsm.equipment'
equipment_ids
Many2many → fsm.equipment
string='Equipments'
args: 'fsm.equipment'
internal_type
Selection
related='type.internal_type'
is_button
Boolean
default=False
is_closed
Boolean
related='stage_id.is_closed'
args: 'Is closed'
location_directions
Char
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
mobile
Char
related='location_id.mobile'
name
Char
copy=False
default=<expr>
index=True
required=True
person_id
Many2one → fsm.person
index=True
string='Assigned To'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
person_phone
Char
related='person_id.phone'
string='Worker Phone'
phone
Char
related='location_id.phone'
string='Location Phone'
priority
Selection
default=<expr>
index=True
args: fsm_stage.AVAILABLE_PRIORITIES
region_id
Many2one → res.region
related='location_id.region_id'
store=True
string='Region'
args: 'res.region'
request_early
Datetime
default=<expr>
string='Earliest Request Date'
request_late
Datetime
string='Latest Request Date'
resolution
Text
scheduled_date_end
Datetime
string='Scheduled End'
scheduled_date_start
Datetime
string='Scheduled Start (ETA)'
scheduled_duration
Float
help='Scheduled duration of the work in hours'
sequence
Integer
default=10
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
stage_name
Char
related='stage_id.name'
string='Stage Name'
state_name
Char
related='location_id.state_id.name'
string='State'
street
Char
related='location_id.street'
street2
Char
related='location_id.street2'
tag_ids
Many2many → fsm.tag
help='Classify and analyze your orders'
string='Tags'
args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id'
team_id
Many2one → fsm.team
default=<expr>
index=True
required=True
string='Team'
tracking=True
args: 'fsm.team'
template_id
Many2one → fsm.template
string='Template'
args: 'fsm.template'
territory_id
Many2one → res.territory
related='location_id.territory_id'
store=True
string='Territory'
args: 'res.territory'
todo
Html
string='Instructions'
type
Many2one → fsm.order.type
zip
Char
related='location_id.zip'
action_cancel(self)
action_complete(self)
can_unlink(self)
check_day(self)
copy_notes(self)
create(self, vals)
onchange_equipment_ids(self)
onchange_scheduled_date_end(self)
onchange_scheduled_duration(self)
unlink(self)
write(self, vals)
internal_type
Selection
default='fsm'
selection=[('fsm', 'FSM')]
name
Char
required=True
No public methods.
active
Boolean
default=True
active_partner
Boolean
readonly=True
related='partner_id.active'
string='Partner is Active'
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
mobile
Char
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
territory_ids
Many2many → res.territory
string='Territories'
args: 'res.territory'
create(self, vals)
toggle_active(self)
location_ids
One2many → fsm.location.person
string='Linked Locations'
args: 'fsm.location.person', 'person_id'
No public methods.
active
Boolean
default=True
fsm_person_id
Many2one → fsm.person
required=True
args: 'fsm.person', 'FSM Worker'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
args: 'res.users', 'Me'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
custom_color
Char
default='#FFFFFF'
help='Use Hex Code only Ex:-#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
stage_type
Selection
default='order'
required=True
args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type'
team_ids
Many2many → fsm.team
default=<expr>
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
create(self, vals)
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this tag'
index=True
required=True
string='Company'
args: 'res.company'
full_name
Char
compute='_compute_full_name'
name
Char
required=True
parent_id
Many2one → fsm.tag
string='Parent'
args: 'fsm.tag'
No public methods.
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this team'
index=True
required=True
string='Company'
args: 'res.company'
description
Text
translate=True
name
Char
required=True
translate=True
order_count
Integer
compute='_compute_order_count'
string='Orders Count'
order_ids
One2many → fsm.order
domain=[('stage_id.is_closed', '=', False)]
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
stage_ids
Many2many → fsm.stage
default=_default_stages
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
help='Company related to this template'
index=True
string='Company'
args: 'res.company'
duration
Float
help='Default duration in hours'
instructions
Text
name
Char
required=True
team_id
Many2one → fsm.team
help='Choose a team to be set on orders of this template'
string='Team'
args: 'fsm.team'
type_id
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
action_other_address(self, partner)
auto_populate_equipments_on_order
Boolean
string='Auto-populate Equipments on Order based on Location'
auto_populate_persons_on_location
Boolean
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
default=8
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
default=48
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
default=72
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
default=24
string='Hours of Buffer for Medium Priority FS Orders'
search_on_complete_name
Boolean
string='Search Location By Hierarchy'
No public methods.
auto_populate_equipments_on_order
Boolean
readonly=False
related='company_id.auto_populate_equipments_on_order'
string='Auto-populate equipments on Order based on the Location'
auto_populate_persons_on_location
Boolean
readonly=False
related='company_id.auto_populate_persons_on_location'
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
readonly=False
related='company_id.fsm_order_request_late_high'
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
readonly=False
related='company_id.fsm_order_request_late_low'
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
readonly=False
related='company_id.fsm_order_request_late_lowest'
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
readonly=False
related='company_id.fsm_order_request_late_medium'
string='Hours of Buffer for Medium Priority FS Orders'
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_activity
Boolean
string='Manage FSM Activities'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_change_management
Boolean
string='Change Management'
module_fieldservice_crm
Boolean
string='CRM'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_fleet
Boolean
string='Link FSM vehicles to Fleet vehicles'
module_fieldservice_geoengine
Boolean
string='Use GeoEngine'
module_fieldservice_google_map
Boolean
string='Allow Field Service Google Map'
module_fieldservice_location_builder
Boolean
string='Use FSM Location Builder'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_purchase
Boolean
string='Manage subcontractors and their pricelists'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_route
Boolean
string='Manage routes'
module_fieldservice_route_account
Boolean
string='Check the amount collected during the route'
module_fieldservice_route_stock
Boolean
string='Check the inventory of the vehicle at the end of the route'
module_fieldservice_sale
Boolean
string='Sell FSM orders'
module_fieldservice_size
Boolean
string='Manage sizes for orders and locations'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
module_fieldservice_web_timeline_view
Boolean
string='Allow Field Service Web Timeline View'
module_fieldservice_website_sale
Boolean
string='Integrate E-Commerce with Field Service Workflows'
search_on_complete_name
Boolean
readonly=False
related='company_id.search_on_complete_name'
string='Search Location By Hierarchy'
No public methods.
fsm_location
Boolean
fsm_location_id
One2many → fsm.location
comodel_name='fsm.location'
inverse_name='partner_id'
limit=1
readonly=1
string='Related FS Location'
fsm_person
Boolean
owned_location_count
Integer
compute='_compute_owned_location_count'
string='# of Owned Locations'
owned_location_ids
One2many → fsm.location
domain=[('fsm_parent_id', '=', False)]
string='Owned Locations'
args: 'fsm.location', 'owner_id'
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
type
Selection
selection_add=[('fsm_location', 'Location')]
action_open_owned_locations(self)
write(self, value)
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/14.0/fieldservice |
| VERSION | |
| VERSION | 1.30.1 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, Pedro M. Baeza, GitHub, Daniel Reis, tafaRU, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, hparfr, Mourad, oca-ci, Murtuza Saleh, Stefano Consolaro, Vimal Patel, HemanginiPatel, Brian McMaster, Marcel Savegnago, Alessandro Uffreduzzi, AmmarOfficewalaSerpentCS, Yves Goldberg, Reed Hayashikawa, Freni-OSI, BojanOD, Chankya Soni, Francois Poizat, PicchiSeba, Vandan-OSI, bojan, Murtaza Mithaiwala |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:50 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - base_territory odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend_team |
fsm_team_assets | ir.ui.view | qweb | Inherits web.assets_backend |
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_tree_view |
fsm.category.tree | fsm.category | tree | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_equipment_tree_view |
fsm.equipment.tree | fsm.equipment | tree | New |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_graph_view |
fsm.location.graph | fsm.location | graph | New |
fsm_location_person_form_view |
fsm.location.person.form | fsm.location.person | form | New |
fsm_location_person_search_view |
fsm.location.person.search | fsm.location.person | search | New |
fsm_location_person_tree_view |
fsm.location.person.tree | fsm.location.person | tree | New |
fsm_location_pivot_view |
fsm.location.pivot | fsm.location | pivot | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_location_tree_view |
fsm.location.tree | fsm.location | tree | New |
fsm_order_calendar_view |
Orders | fsm.order | calendar | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_tree_view |
fsm.order.tree | fsm.order | tree | New |
fsm_order_type_form_view |
fsm.order.type.form | fsm.order.type | form | New |
fsm_order_type_tree_view |
fsm.order.type.tree | fsm.order.type | tree | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | div | Inherits base.view_partner_form |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_person_tree |
fsm.person.tree | fsm.person | tree | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_search_view |
fsm.stage.search | fsm.stage | search | New |
fsm_stage_tree_view |
Stages | fsm.stage | tree | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_tree_view |
Tags | fsm.tag | tree | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_tree_view |
Order Templates | fsm.template | tree | New |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | field | Inherits base.view_res_partner_filter |
res_territory_form_view_inherit |
res.territory.form.inherit | res.territory | xpath | Inherits base_territory.res_territory_form_view |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_tree |
fsm.team.tree | fsm.team | tree | New |
No HTTP endpoints found for this module.
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
help='Company related to this category'
index=True
required=False
string='Company'
args: 'res.company'
description
Char
string='Description'
full_name
Char
compute='_compute_full_name'
string='Full Name'
name
Char
required='True'
string='Name'
parent_id
Many2one → fsm.category
string='Parent'
args: 'fsm.category'
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
child_ids
One2many → fsm.equipment
string='Children'
args: 'fsm.equipment', 'parent_id'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this equipment'
index=True
required=True
string='Company'
args: 'res.company'
current_location_id
Many2one → fsm.location
string='Current Location'
args: 'fsm.location'
district_id
Many2one → res.district
string='District'
args: 'res.district'
hide
Boolean
default=False
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
string='Managed By'
args: 'res.partner'
name
Char
required='True'
string='Name'
notes
Text
string='Notes'
owned_by_id
Many2one → res.partner
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
domain="[('stage_type', '=', 'equipment')]"
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
copy(self, default=None)
next_stage(self)
previous_stage(self)
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
branch_manager_id
Many2one
related='branch_id.partner_id'
string='Branch Manager'
calendar_id
Many2one → resource.calendar
string='Office Hours'
args: 'resource.calendar'
complete_name
Char
compute='_compute_complete_name'
store=True
string='Complete Name'
contact_count
Integer
compute='_compute_contact_ids'
string='Contacts Count'
contact_id
Many2one → res.partner
domain="[('is_company', '=', False), ('fsm_location', '=', False)]"
index=True
string='Primary Contact'
args: 'res.partner'
description
Char
string='Description'
direction
Char
string='Directions'
district_id
Many2one → res.district
string='District'
args: 'res.district'
district_manager_id
Many2one
related='district_id.partner_id'
string='District Manager'
equipment_count
Integer
compute='_compute_equipment_ids'
string='Equipment'
fsm_parent_id
Many2one → fsm.location
index=True
string='Parent'
args: 'fsm.location'
hide
Boolean
default=False
notes
Text
string='Location Notes'
owner_id
Many2one → res.partner
auto_join=True
ondelete='restrict'
required=True
string='Related Owner'
args: 'res.partner'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
person_ids
One2many → fsm.location.person
string='Workers'
args: 'fsm.location.person', 'location_id'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
region_manager_id
Many2one
related='region_id.partner_id'
string='Region Manager'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
sublocation_count
Integer
compute='_compute_sublocation_ids'
string='Sub Locations'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
territory_manager_id
Many2one
related='territory_id.person_id'
string='Primary Assignment'
action_view_contacts(self)
action_view_equipment(self)
action_view_sublocation(self)
comp_count(self, contact, equipment, loc)
create(self, vals)
geo_localize(self)
get_action_views(self, contact, equipment, loc)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
next_stage(self)
previous_stage(self)
contact_id
Many2one
related='location_id.contact_id'
string='Contact'
email
Char
related='person_id.email'
string='Email'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
owner_id
Many2one
related='location_id.owner_id'
string='Owner'
person_id
Many2one → fsm.person
index=True
required=True
string='Worker'
args: 'fsm.person'
phone
Char
related='person_id.phone'
string='Phone'
sequence
Integer
default='10'
required=True
string='Sequence'
No public methods.
branch_id
Many2one → res.branch
related='location_id.branch_id'
store=True
string='Branch'
args: 'res.branch'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
city
Char
related='location_id.city'
string='City'
color
Integer
default=0
args: 'Color Index'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this order'
index=True
required=True
string='Company'
args: 'res.company'
country_name
Char
related='location_id.country_id.name'
string='Country'
current_date
Datetime
default=fields.datetime.now()
store=True
custom_color
Char
related='stage_id.custom_color'
string='Stage Color'
date_end
Datetime
string='Actual End'
date_start
Datetime
string='Actual Start'
description
Text
string='Description'
display_name
Char
related='name'
string='Order'
district_id
Many2one → res.district
related='location_id.district_id'
store=True
string='District'
args: 'res.district'
duration
Float
compute=_compute_duration
help='Actual duration in hours'
string='Actual duration'
equipment_id
Many2one → fsm.equipment
string='Equipment'
args: 'fsm.equipment'
equipment_ids
Many2many → fsm.equipment
string='Equipments'
args: 'fsm.equipment'
internal_type
Selection
related='type.internal_type'
string='Internal Type'
is_button
Boolean
default=False
is_closed
Boolean
related='stage_id.is_closed'
args: 'Is closed'
location_directions
Char
string='Location Directions'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
mobile
Char
related='location_id.mobile'
name
Char
copy=False
default=<expr>
index=True
required=True
string='Name'
person_id
Many2one → fsm.person
index=True
string='Assigned To'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
person_phone
Char
related='person_id.phone'
string='Worker Phone'
phone
Char
related='location_id.phone'
string='Location Phone'
priority
Selection
default=<expr>
index=True
string='Priority'
args: fsm_stage.AVAILABLE_PRIORITIES
region_id
Many2one → res.region
related='location_id.region_id'
store=True
string='Region'
args: 'res.region'
request_early
Datetime
default=<expr>
string='Earliest Request Date'
request_late
Datetime
string='Latest Request Date'
resolution
Text
string='Resolution'
scheduled_date_end
Datetime
string='Scheduled End'
scheduled_date_start
Datetime
default=fields.Datetime.now
string='Scheduled Start (ETA)'
scheduled_duration
Float
help='Scheduled duration of the work in hours'
string='Scheduled duration'
sequence
Integer
default=10
string='Sequence'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
tracking=True
args: 'fsm.stage'
stage_name
Char
related='stage_id.name'
string='Stage Name'
state_name
Char
related='location_id.state_id.name'
string='State'
street
Char
related='location_id.street'
street2
Char
related='location_id.street2'
tag_ids
Many2many → fsm.tag
help='Classify and analyze your orders'
string='Tags'
args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id'
team_id
Many2one → fsm.team
default=<expr>
index=True
required=True
string='Team'
tracking=True
args: 'fsm.team'
template_id
Many2one → fsm.template
string='Template'
args: 'fsm.template'
territory_id
Many2one → res.territory
related='location_id.territory_id'
store=True
string='Territory'
args: 'res.territory'
todo
Text
string='Instructions'
type
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
zip
Char
related='location_id.zip'
action_cancel(self)
action_complete(self)
can_unlink(self)
check_day(self)
copy_notes(self)
create(self, vals)
onchange_equipment_ids(self)
onchange_location_id(self)
onchange_scheduled_date_end(self)
onchange_scheduled_duration(self)
unlink(self)
write(self, vals)
internal_type
Selection
default='fsm'
selection=[('fsm', 'FSM')]
string='Internal Type'
name
Char
string='Name'
No public methods.
active
Boolean
default=True
active_partner
Boolean
readonly=True
related='partner_id.active'
string='Partner is Active'
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
hide
Boolean
default=False
mobile
Char
string='Mobile'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
args: 'fsm.stage'
territory_ids
Many2many → res.territory
string='Territories'
args: 'res.territory'
create(self, vals)
next_stage(self)
previous_stage(self)
toggle_active(self)
location_ids
One2many → fsm.location.person
string='Linked Locations'
args: 'fsm.location.person', 'person_id'
No public methods.
active
Boolean
default=True
args: 'Active'
fsm_person_id
Many2one → fsm.person
required=True
args: 'fsm.person', 'FSM Worker'
user_id
Many2one → res.users
default=<expr>
ondelete='cascade'
required=True
args: 'res.users', 'Me'
No public methods.
active
Boolean
default=True
string='Active'
company_id
Many2one → res.company
string='Company'
args: 'res.company'
custom_color
Char
default='#FFFFFF'
help='Use Hex Code only Ex:-#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
string='Name'
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
args: 'Sequence'
stage_type
Selection
default='order'
required=True
args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type'
team_ids
Many2many → fsm.team
default=<expr>
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
create(self, vals)
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
help='Company related to this tag'
index=True
required=False
string='Company'
args: 'res.company'
full_name
Char
compute='_compute_full_name'
string='Full Name'
name
Char
required=True
string='Name'
translate=True
parent_id
Many2one → fsm.tag
string='Parent'
args: 'fsm.tag'
No public methods.
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this team'
index=True
required=False
string='Company'
args: 'res.company'
description
Text
translate=True
name
Char
required=True
translate=True
order_count
Integer
compute='_compute_order_count'
string='Orders Count'
order_ids
One2many → fsm.order
domain=[('stage_id.is_closed', '=', False)]
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
args: 'Sequence'
stage_ids
Many2many → fsm.stage
default=_default_stages
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
help='Company related to this template'
index=True
string='Company'
args: 'res.company'
duration
Float
help='Default duration in hours'
string='Duration'
instructions
Text
string='Instructions'
name
Char
required=True
string='Name'
team_id
Many2one → fsm.team
help='Choose a team to be set on orders of this template'
string='Team'
args: 'fsm.team'
type_id
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
action_other_address(self, partner)
auto_populate_equipments_on_order
Boolean
string='Auto-populate Equipments on Order based on Location'
auto_populate_persons_on_location
Boolean
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
default=8
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
default=48
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
default=72
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
default=24
string='Hours of Buffer for Medium Priority FS Orders'
search_on_complete_name
Boolean
string='Search Location By Hierarchy'
No public methods.
auto_populate_equipments_on_order
Boolean
readonly=False
related='company_id.auto_populate_equipments_on_order'
string='Auto-populate equipments on Order based on the Location'
auto_populate_persons_on_location
Boolean
readonly=False
related='company_id.auto_populate_persons_on_location'
string='Auto-populate Workers on Location based on Territory'
fsm_order_request_late_high
Float
readonly=False
related='company_id.fsm_order_request_late_high'
string='Hours of Buffer for High Priority FS Orders'
fsm_order_request_late_low
Float
readonly=False
related='company_id.fsm_order_request_late_low'
string='Hours of Buffer for Low Priority FS Orders'
fsm_order_request_late_lowest
Float
readonly=False
related='company_id.fsm_order_request_late_lowest'
string='Hours of Buffer for Lowest Priority FS Orders'
fsm_order_request_late_medium
Float
readonly=False
related='company_id.fsm_order_request_late_medium'
string='Hours of Buffer for Medium Priority FS Orders'
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_activity
Boolean
string='Manage FSM Activities'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_change_management
Boolean
string='Change Management'
module_fieldservice_crm
Boolean
string='CRM'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_fleet
Boolean
string='Link FSM vehicles to Fleet vehicles'
module_fieldservice_geoengine
Boolean
string='Use GeoEngine'
module_fieldservice_google_map
Boolean
string='Allow Field Service Google Map'
module_fieldservice_location_builder
Boolean
string='Use FSM Location Builder'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_purchase
Boolean
string='Manage subcontractors and their pricelists'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_route
Boolean
string='Manage routes'
module_fieldservice_route_account
Boolean
string='Check the amount collected during the route'
module_fieldservice_route_stock
Boolean
string='Check the inventory of the vehicle at the end of the route'
module_fieldservice_sale
Boolean
string='Sell FSM orders'
module_fieldservice_size
Boolean
string='Manage sizes for orders and locations'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_timeline
Boolean
string='Allow Field Service Web Timeline View'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
search_on_complete_name
Boolean
readonly=False
related='company_id.search_on_complete_name'
string='Search Location By Hierarchy'
No public methods.
fsm_location
Boolean
fsm_location_id
One2many → fsm.location
comodel_name='fsm.location'
inverse_name='partner_id'
readonly=1
string='Related FS Location'
fsm_person
Boolean
owned_location_count
Integer
compute='_compute_owned_location_count'
string='# of Owned Locations'
owned_location_ids
One2many → fsm.location
domain=[('fsm_parent_id', '=', False)]
string='Owned Locations'
args: 'fsm.location', 'owner_id'
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
type
Selection
selection_add=[('fsm_location', 'Location')]
action_open_owned_locations(self)
write(self, value)
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/13.0/fieldservice |
| VERSION | |
| VERSION | 1.2.1 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | david, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Murtuza Saleh, Brian McMaster, Marcel Savegnago |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - base_territory odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend_team |
fsm_team_assets | ir.ui.view | qweb | Inherits web.assets_backend |
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_tree_view |
fsm.category.tree | fsm.category | tree | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_equipment_tree_view |
fsm.equipment.tree | fsm.equipment | tree | New |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_graph_view |
fsm.location.graph | fsm.location | graph | New |
fsm_location_person_form_view |
fsm.location.person.form | fsm.location.person | form | New |
fsm_location_person_search_view |
fsm.location.person.search | fsm.location.person | search | New |
fsm_location_person_tree_view |
fsm.location.person.tree | fsm.location.person | tree | New |
fsm_location_pivot_view |
fsm.location.pivot | fsm.location | pivot | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_location_tree_view |
fsm.location.tree | fsm.location | tree | New |
fsm_order_calendar_view |
Orders | fsm.order | calendar | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_tree_view |
fsm.order.tree | fsm.order | tree | New |
fsm_order_type_form_view |
fsm.order.type.form | fsm.order.type | form | New |
fsm_order_type_tree_view |
fsm.order.type.tree | fsm.order.type | tree | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | div | Inherits base.view_partner_form |
fsm_partner_kanban_state |
res.partner.kanban.state | res.partner | xpath | Inherits base.res_partner_kanban_view |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_person_tree |
fsm.person.tree | fsm.person | tree | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_search_view |
fsm.stage.search | fsm.stage | search | New |
fsm_stage_tree_view |
Stages | fsm.stage | tree | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_tree_view |
Tags | fsm.tag | tree | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_tree_view |
Order Templates | fsm.template | tree | New |
partner_id_short_context |
partner.id.short.context | res.partner | field | Inherits base.view_partner_short_form |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | field | Inherits base.view_res_partner_filter |
res_territory_form_view_inherit |
res.territory.form.inherit | res.territory | xpath | Inherits base_territory.res_territory_form_view |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_tree |
fsm.team.tree | fsm.team | tree | New |
No HTTP endpoints found for this module.
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this category'
index=True
required=True
string='Company'
args: 'res.company'
description
Char
string='Description'
full_name
Char
compute='_compute_full_name'
string='Full Name'
name
Char
required='True'
string='Name'
parent_id
Many2one → fsm.category
string='Parent'
args: 'fsm.category'
No public methods.
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
child_ids
One2many → fsm.equipment
string='Children'
args: 'fsm.equipment', 'parent_id'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this equipment'
index=True
required=True
string='Company'
args: 'res.company'
current_location_id
Many2one → fsm.location
string='Current Location'
args: 'fsm.location'
district_id
Many2one → res.district
string='District'
args: 'res.district'
hide
Boolean
default=False
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
string='Managed By'
args: 'res.partner'
name
Char
required='True'
string='Name'
notes
Text
string='Notes'
owned_by_id
Many2one → res.partner
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
next_stage(self)
previous_stage(self)
branch_id
Many2one → res.branch
string='Branch'
args: 'res.branch'
branch_manager_id
Many2one
related='branch_id.partner_id'
string='Branch Manager'
calendar_id
Many2one → resource.calendar
string='Office Hours'
args: 'resource.calendar'
complete_name
Char
compute='_compute_complete_name'
store=True
string='Complete Name'
contact_count
Integer
compute='_compute_contact_ids'
string='Contacts Count'
contact_id
Many2one → res.partner
domain="[('is_company', '=', False), ('fsm_location', '=', False)]"
index=True
string='Primary Contact'
args: 'res.partner'
description
Char
string='Description'
direction
Char
string='Directions'
district_id
Many2one → res.district
string='District'
args: 'res.district'
district_manager_id
Many2one
related='district_id.partner_id'
string='District Manager'
equipment_count
Integer
compute='_compute_equipment_ids'
string='Equipment'
fsm_parent_id
Many2one → fsm.location
index=True
string='Parent'
args: 'fsm.location'
hide
Boolean
default=False
notes
Text
string='Location Notes'
owner_id
Many2one → res.partner
auto_join=True
ondelete='restrict'
required=True
string='Related Owner'
args: 'res.partner'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
person_ids
One2many → fsm.location.person
string='Workers'
args: 'fsm.location.person', 'location_id'
ref
Char
copy=False
string='Internal Reference'
region_id
Many2one → res.region
string='Region'
args: 'res.region'
region_manager_id
Many2one
related='region_id.partner_id'
string='Region Manager'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
sublocation_count
Integer
compute='_compute_sublocation_ids'
string='Sub Locations'
territory_id
Many2one → res.territory
string='Territory'
args: 'res.territory'
territory_manager_id
Many2one
related='territory_id.person_id'
string='Primary Assignment'
action_view_contacts(self)
action_view_equipment(self)
action_view_sublocation(self)
comp_count(self, contact, equipment, loc)
geo_localize(self)
get_action_views(self, contact, equipment, loc)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
next_stage(self)
previous_stage(self)
contact_id
Many2one
related='location_id.contact_id'
string='Contact'
email
Char
related='person_id.email'
string='Email'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
owner_id
Many2one
related='location_id.owner_id'
string='Owner'
person_id
Many2one → fsm.person
index=True
required=True
string='Worker'
args: 'fsm.person'
phone
Char
related='person_id.phone'
string='Phone'
sequence
Integer
default='10'
required=True
string='Sequence'
No public methods.
branch_id
Many2one → res.branch
related='location_id.branch_id'
store=True
string='Branch'
args: 'res.branch'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
city
Char
related='location_id.city'
string='City'
color
Integer
default=0
args: 'Color Index'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this order'
index=True
required=True
string='Company'
args: 'res.company'
country_name
Char
ondelete='restrict'
related='location_id.country_id.name'
string='Country'
current_date
Datetime
default=fields.datetime.now()
store=True
custom_color
Char
related='stage_id.custom_color'
string='Stage Color'
date_end
Datetime
string='Actual End'
date_start
Datetime
string='Actual Start'
description
Text
string='Description'
display_name
Char
related='name'
string='Order'
district_id
Many2one → res.district
related='location_id.district_id'
store=True
string='District'
args: 'res.district'
duration
Float
compute=_compute_duration
help='Actual duration in hours'
string='Actual duration'
equipment_id
Many2one → fsm.equipment
string='Equipment'
args: 'fsm.equipment'
equipment_ids
Many2many → fsm.equipment
string='Equipments'
args: 'fsm.equipment'
internal_type
Selection
related='type.internal_type'
string='Internal Type'
is_button
Boolean
default=False
location_directions
Char
string='Location Directions'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
mobile
Char
related='location_id.mobile'
name
Char
copy=False
default=<expr>
index=True
required=True
string='Name'
person_id
Many2one → fsm.person
index=True
string='Assigned To'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
person_phone
Char
related='person_id.phone'
string='Worker Phone'
phone
Char
related='location_id.phone'
string='Location Phone'
priority
Selection
default=<expr>
index=True
string='Priority'
args: fsm_stage.AVAILABLE_PRIORITIES
region_id
Many2one → res.region
related='location_id.region_id'
store=True
string='Region'
args: 'res.region'
request_early
Datetime
default=datetime.now()
string='Earliest Request Date'
request_late
Datetime
string='Latest Request Date'
resolution
Text
placeholder='Resolution of the order'
string='Resolution'
scheduled_date_end
Datetime
string='Scheduled End'
scheduled_date_start
Datetime
string='Scheduled Start (ETA)'
scheduled_duration
Float
help='Scheduled duration of the work in hours'
string='Scheduled duration'
sequence
Integer
default=10
string='Sequence'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
stage_name
Char
related='stage_id.name'
string='Stage Name'
state_name
Char
ondelete='restrict'
related='location_id.state_id.name'
string='State'
street
Char
related='location_id.street'
street2
Char
related='location_id.street2'
tag_ids
Many2many → fsm.tag
help='Classify and analyze your orders'
string='Tags'
args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id'
team_id
Many2one → fsm.team
default=<expr>
index=True
required=True
string='Team'
track_visibility='onchange'
args: 'fsm.team'
template_id
Many2one → fsm.template
string='Template'
args: 'fsm.template'
territory_id
Many2one → res.territory
related='location_id.territory_id'
store=True
string='Territory'
args: 'res.territory'
todo
Text
string='Instructions'
type
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
zip
Char
related='location_id.zip'
action_cancel(self)
action_complete(self)
can_unlink(self)
check_day(self)
copy_notes(self)
create(self, vals)
onchange_equipment_ids(self)
onchange_location_id(self)
onchange_scheduled_date_end(self)
onchange_scheduled_duration(self)
unlink(self)
write(self, vals)
internal_type
Selection
default='fsm'
selection=[('fsm', 'FSM')]
string='Internal Type'
name
Char
string='Name'
No public methods.
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
hide
Boolean
default=False
mobile
Char
string='Mobile'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
territory_ids
Many2many → res.territory
string='Territories'
args: 'res.territory'
create(self, vals)
get_person_information(self, vals)
next_stage(self)
previous_stage(self)
location_ids
One2many → fsm.location.person
string='Linked Locations'
args: 'fsm.location.person', 'person_id'
No public methods.
active
Boolean
default=True
args: 'Active'
fsm_person_id
Many2one → fsm.person
required=True
args: 'fsm.person', 'FSM Worker'
user_id
Many2one → res.users
default=<expr>
required=True
args: 'res.users', 'Me'
No public methods.
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
custom_color
Char
default='#FFFFFF'
help='Use Hex Code only Ex:-#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
string='Name'
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
args: 'Sequence'
stage_type
Selection
required=True
args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type'
team_ids
Many2many → fsm.team
default=<expr>
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
create(self, vals)
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this tag'
index=True
required=True
string='Company'
args: 'res.company'
full_name
Char
compute='_compute_full_name'
string='Full Name'
name
Char
required=True
string='Name'
parent_id
Many2one → fsm.tag
string='Parent'
args: 'fsm.tag'
No public methods.
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this team'
index=True
required=True
string='Company'
args: 'res.company'
description
Text
translation=True
name
Char
required=True
translation=True
order_count
Integer
compute='_compute_order_count'
string='Orders Count'
order_ids
One2many → fsm.order
domain=[('stage_id.is_closed', '=', False)]
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
args: 'Sequence'
stage_ids
Many2many → fsm.stage
default=_default_stages
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
default=<expr>
help='Company related to this template'
index=True
required=True
string='Company'
args: 'res.company'
hours
Float
string='Hours'
instructions
Text
string='Instructions'
name
Char
required=True
string='Name'
team_id
Many2one → fsm.team
help='Choose a team to be set on orders of this template'
string='Team'
args: 'fsm.team'
type_id
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
action_other_address(self, partner)
auto_populate_equipments_on_order
Boolean
string='Auto-populate Equipments on Order based on Location'
auto_populate_persons_on_location
Boolean
string='Auto-populate Workers on Location based on Territory'
search_on_complete_name
Boolean
string='Search Location By Hierarchy'
No public methods.
auto_populate_equipments_on_order
Boolean
readonly=False
related='company_id.auto_populate_equipments_on_order'
string='Auto-populate equipments on Order based on the Location'
auto_populate_persons_on_location
Boolean
readonly=False
related='company_id.auto_populate_persons_on_location'
string='Auto-populate Workers on Location based on Territory'
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_activity
Boolean
string='Manage FSM Activities'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_change_management
Boolean
string='Change Management'
module_fieldservice_crm
Boolean
string='CRM'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_fleet
Boolean
string='Link FSM vehicles to Fleet vehicles'
module_fieldservice_geoengine
Boolean
string='Use GeoEngine'
module_fieldservice_google_map
Boolean
string='Allow Field Service Google Map'
module_fieldservice_location_builder
Boolean
string='Use FSM Location Builder'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_purchase
Boolean
string='Manage subcontractors and their pricelists'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_route
Boolean
string='Manage routes'
module_fieldservice_route_account
Boolean
string='Check the amount collected during the route'
module_fieldservice_route_stock
Boolean
string='Check the inventory of the vehicle at the end of the route'
module_fieldservice_sale
Boolean
string='Sell FSM orders'
module_fieldservice_size
Boolean
string='Manage sizes for orders and locations'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
module_fieldservice_web_timeline_view
Boolean
string='Allow Field Service Web Timeline View'
search_on_complete_name
Boolean
readonly=False
related='company_id.search_on_complete_name'
string='Search Location By Hierarchy'
No public methods.
fsm_location
Boolean
fsm_person
Boolean
owned_location_count
Integer
compute='_compute_owned_location_count'
string='# of Owned Locations'
owned_location_ids
One2many → fsm.location
domain=[('fsm_parent_id', '=', False)]
string='Owned Locations'
args: 'fsm.location', 'owner_id'
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
action_open_owned_locations(self)
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/12.0/fieldservice |
| VERSION | |
| VERSION | 2.21.1 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, GitHub, Daniel Reis, david, Bhavesh Odedra, OCA Transbot, oca-travis, Weblate, OCA-git-bot, hparfr, oca-ci, Kitti U, Sandip Mangukiya, brian10048, scampbell, Murtuza Saleh, HemanginiPatel, patrickrwilson, Brian McMaster, Marcel Savegnago, Patrick Wilson, Alessandro Uffreduzzi, AmmarOfficewalaSerpentCS, peasebenjamin |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:13 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/partner-contact: - partner_fax OCA/web: - web_timeline odoo/odoo: - base_geolocalize - base - base_setup - web - bus - web_tour - resource - contacts |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
web_timeline_custom assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_backend_team |
fsm_team_assets | ir.ui.view | qweb | Inherits web.assets_backend |
fsm_branch_form_view |
fsm.branch.form | fsm.branch | form | New |
fsm_branch_tree_view |
fsm.branch.tree | fsm.branch | tree | New |
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_tree_view |
fsm.category.tree | fsm.category | tree | New |
fsm_district_form_view |
fsm.district.form | fsm.district | form | New |
fsm_district_tree_view |
fsm.district.tree | fsm.district | tree | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_equipment_tree_view |
fsm.equipment.tree | fsm.equipment | tree | New |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_graph_view |
fsm.location.graph | fsm.location | graph | New |
fsm_location_person_form_view |
fsm.location.person.form | fsm.location.person | form | New |
fsm_location_person_search_view |
fsm.location.person.search | fsm.location.person | search | New |
fsm_location_person_tree_view |
fsm.location.person.tree | fsm.location.person | tree | New |
fsm_location_pivot_view |
fsm.location.pivot | fsm.location | pivot | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_location_tree_view |
fsm.location.tree | fsm.location | tree | New |
fsm_order_calendar_view |
Orders | fsm.order | calendar | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_timeline_view |
fsm.order.timeline | fsm.order | timeline | New |
fsm_order_tree_view |
fsm.order.tree | fsm.order | tree | New |
fsm_order_type_form_view |
fsm.order.type.form | fsm.order.type | form | New |
fsm_order_type_tree_view |
fsm.order.type.tree | fsm.order.type | tree | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | xpath | Inherits base.view_partner_form |
fsm_partner_kanban_state |
res.partner.kanban.state | res.partner | xpath | Inherits base.res_partner_kanban_view |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_person_tree |
fsm.person.tree | fsm.person | tree | New |
fsm_region_form_view |
fsm.region.form | fsm.region | form | New |
fsm_region_tree_view |
fsm.region.tree | fsm.region | tree | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_search_view |
fsm.stage.search | fsm.stage | search | New |
fsm_stage_tree_view |
Stages | fsm.stage | tree | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_tree_view |
Tags | fsm.tag | tree | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_tree_view |
Order Templates | fsm.template | tree | New |
fsm_territory_form_view |
fsm.territory.form | fsm.territory | form | New |
fsm_territory_tree_view |
fsm.territory.tree | fsm.territory | tree | New |
partner_id_short_context |
partner.id.short.context | res.partner | field | Inherits base.view_partner_short_form |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | field | Inherits base.view_res_partner_filter |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_tree |
fsm.team.tree | fsm.team | tree | New |
No HTTP endpoints found for this module.
description
Char
string='Description'
district_id
Many2one → fsm.district
string='District'
args: 'fsm.district'
name
Char
required=True
string='Name'
partner_id
Many2one → res.partner
string='Branch Manager'
args: 'res.partner'
No public methods.
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this category'
index=True
required=True
string='Company'
args: 'res.company'
description
Char
string='Description'
full_name
Char
compute='_compute_full_name'
string='Full Name'
name
Char
required='True'
string='Name'
parent_id
Many2one → fsm.category
string='Parent'
args: 'fsm.category'
No public methods.
description
Char
string='Description'
name
Char
required=True
string='Name'
partner_id
Many2one → res.partner
string='District Manager'
args: 'res.partner'
region_id
Many2one → fsm.region
string='Region'
args: 'fsm.region'
No public methods.
branch_id
Many2one → fsm.branch
string='Branch'
args: 'fsm.branch'
child_ids
One2many → fsm.equipment
string='Children'
args: 'fsm.equipment', 'parent_id'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this equipment'
index=True
required=True
string='Company'
args: 'res.company'
current_location_id
Many2one → fsm.location
string='Current Location'
args: 'fsm.location'
district_id
Many2one → fsm.district
string='District'
args: 'fsm.district'
hide
Boolean
default=False
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
string='Managed By'
args: 'res.partner'
name
Char
required='True'
string='Name'
notes
Text
string='Notes'
owned_by_id
Many2one → res.partner
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → fsm.region
string='Region'
args: 'fsm.region'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
territory_id
Many2one → fsm.territory
string='Territory'
args: 'fsm.territory'
next_stage(self)
previous_stage(self)
branch_id
Many2one → fsm.branch
string='Branch'
args: 'fsm.branch'
branch_manager_id
Many2one
related='branch_id.partner_id'
string='Branch Manager'
calendar_id
Many2one → resource.calendar
string='Office Hours'
args: 'resource.calendar'
complete_name
Char
compute='_compute_complete_name'
store=True
string='Complete Name'
contact_count
Integer
compute='_compute_contact_ids'
string='Contacts Count'
contact_id
Many2one → res.partner
domain="[('is_company', '=', False), ('fsm_location', '=', False)]"
index=True
string='Primary Contact'
args: 'res.partner'
description
Char
string='Description'
direction
Char
string='Directions'
district_id
Many2one → fsm.district
string='District'
args: 'fsm.district'
district_manager_id
Many2one
related='district_id.partner_id'
string='District Manager'
equipment_count
Integer
compute='_compute_equipment_ids'
string='Equipment'
fsm_parent_id
Many2one → fsm.location
index=True
string='Parent'
args: 'fsm.location'
hide
Boolean
default=False
notes
Text
string='Location Notes'
owner_id
Many2one → res.partner
auto_join=True
ondelete='restrict'
required=True
string='Related Owner'
args: 'res.partner'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
person_ids
One2many → fsm.location.person
string='Workers'
args: 'fsm.location.person', 'location_id'
ref
Char
copy=False
string='Internal Reference'
region_id
Many2one → fsm.region
string='Region'
args: 'fsm.region'
region_manager_id
Many2one
related='region_id.partner_id'
string='Region Manager'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
sublocation_count
Integer
compute='_compute_sublocation_ids'
string='Sub Locations'
territory_id
Many2one → fsm.territory
string='Territory'
args: 'fsm.territory'
territory_manager_id
Many2one
related='territory_id.person_id'
string='Primary Assignment'
action_view_contacts(self)
action_view_equipment(self)
action_view_sublocation(self)
comp_count(self, contact, equipment, loc)
create(self, vals)
geo_localize(self)
get_action_views(self, contact, equipment, loc)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
next_stage(self)
previous_stage(self)
contact_id
Many2one
related='location_id.contact_id'
string='Contact'
email
Char
related='person_id.email'
string='Email'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
owner_id
Many2one
related='location_id.owner_id'
string='Owner'
person_id
Many2one → fsm.person
index=True
required=True
string='Worker'
args: 'fsm.person'
phone
Char
related='person_id.phone'
string='Phone'
sequence
Integer
default='10'
required=True
string='Sequence'
No public methods.
branch_id
Many2one → fsm.branch
related='location_id.branch_id'
store=True
string='Branch'
args: 'fsm.branch'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
city
Char
related='location_id.city'
string='City'
color
Integer
default=0
args: 'Color Index'
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this order'
index=True
required=True
string='Company'
args: 'res.company'
country_name
Char
ondelete='restrict'
related='location_id.country_id.name'
string='Country'
current_date
Datetime
default=fields.datetime.now()
store=True
custom_color
Char
related='stage_id.custom_color'
string='Stage Color'
date_end
Datetime
string='Actual End'
date_start
Datetime
string='Actual Start'
description
Text
string='Description'
display_name
Char
related='name'
string='Order'
district_id
Many2one → fsm.district
related='location_id.district_id'
store=True
string='District'
args: 'fsm.district'
duration
Float
compute=_compute_duration
help='Actual duration in hours'
string='Actual duration'
equipment_id
Many2one → fsm.equipment
string='Equipment'
args: 'fsm.equipment'
equipment_ids
Many2many → fsm.equipment
string='Equipments'
args: 'fsm.equipment'
internal_type
Selection
related='type.internal_type'
string='Internal Type'
is_button
Boolean
default=False
location_directions
Char
string='Location Directions'
location_id
Many2one → fsm.location
index=True
required=True
string='Location'
args: 'fsm.location'
mobile
Char
related='location_id.mobile'
name
Char
copy=False
default=<expr>
index=True
required=True
string='Name'
person_id
Many2one → fsm.person
index=True
string='Assigned To'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
person_phone
Char
related='person_id.phone'
string='Worker Phone'
phone
Char
related='location_id.phone'
string='Location Phone'
priority
Selection
default=<expr>
index=True
string='Priority'
args: fsm_stage.AVAILABLE_PRIORITIES
region_id
Many2one → fsm.region
related='location_id.region_id'
store=True
string='Region'
args: 'fsm.region'
request_early
Datetime
default=<expr>
string='Earliest Request Date'
request_late
Datetime
string='Latest Request Date'
resolution
Text
placeholder='Resolution of the order'
string='Resolution'
scheduled_date_end
Datetime
string='Scheduled End'
scheduled_date_start
Datetime
string='Scheduled Start (ETA)'
scheduled_duration
Float
help='Scheduled duration of the work in hours'
string='Scheduled duration'
sequence
Integer
default=10
string='Sequence'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
stage_name
Char
related='stage_id.name'
string='Stage Name'
state_name
Char
ondelete='restrict'
related='location_id.state_id.name'
string='State'
street
Char
related='location_id.street'
street2
Char
related='location_id.street2'
tag_ids
Many2many → fsm.tag
help='Classify and analyze your orders'
string='Tags'
args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id'
team_id
Many2one → fsm.team
default=<expr>
index=True
required=True
string='Team'
track_visibility='onchange'
args: 'fsm.team'
template_id
Many2one → fsm.template
string='Template'
args: 'fsm.template'
territory_id
Many2one → fsm.territory
related='location_id.territory_id'
store=True
string='Territory'
args: 'fsm.territory'
todo
Text
string='Instructions'
type
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
zip
Char
related='location_id.zip'
action_cancel(self)
action_complete(self)
can_unlink(self)
check_day(self)
copy_notes(self)
create(self, vals)
onchange_equipment_ids(self)
onchange_location_id(self)
onchange_scheduled_date_end(self)
onchange_scheduled_duration(self)
unlink(self)
write(self, vals)
internal_type
Selection
default='fsm'
selection=[('fsm', 'FSM')]
string='Internal Type'
name
Char
string='Name'
No public methods.
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
hide
Boolean
default=False
mobile
Char
string='Mobile'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
territory_ids
Many2many → fsm.territory
string='Territories'
args: 'fsm.territory'
create(self, vals)
get_person_information(self, vals)
next_stage(self)
previous_stage(self)
location_ids
One2many → fsm.location.person
string='Linked Locations'
args: 'fsm.location.person', 'person_id'
No public methods.
active
Boolean
default=True
args: 'Active'
fsm_person_id
Many2one → fsm.person
required=True
args: 'fsm.person', 'FSM Worker'
user_id
Many2one → res.users
default=<expr>
required=True
args: 'res.users', 'Me'
No public methods.
description
Char
string='Description'
name
Char
required=True
string='Name'
partner_id
Many2one → res.partner
string='Region Manager'
args: 'res.partner'
No public methods.
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
custom_color
Char
default='#FFFFFF'
help='Use Hex Code only Ex:-#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
string='Name'
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
args: 'Sequence'
stage_type
Selection
required=True
args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type'
team_ids
Many2many → fsm.team
default=<expr>
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
create(self, vals)
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
company_id
Many2one → res.company
default=<expr>
help='Company related to this tag'
index=True
required=True
string='Company'
args: 'res.company'
full_name
Char
compute='_compute_full_name'
string='Full Name'
name
Char
required=True
string='Name'
parent_id
Many2one → fsm.tag
string='Parent'
args: 'fsm.tag'
No public methods.
color
Integer
company_id
Many2one → res.company
default=<expr>
help='Company related to this team'
index=True
required=True
string='Company'
args: 'res.company'
description
Text
translation=True
name
Char
required=True
translation=True
order_count
Integer
compute='_compute_order_count'
string='Orders Count'
order_ids
One2many → fsm.order
domain=[('stage_id.is_closed', '=', False)]
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
args: 'Sequence'
stage_ids
Many2many → fsm.stage
default=_default_stages
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
default=<expr>
help='Company related to this template'
index=True
required=True
string='Company'
args: 'res.company'
hours
Float
string='Hours'
instructions
Text
string='Instructions'
name
Char
required=True
string='Name'
team_id
Many2one → fsm.team
help='Choose a team to be set on orders of this template'
string='Team'
args: 'fsm.team'
type_id
Many2one → fsm.order.type
string='Type'
args: 'fsm.order.type'
No public methods.
branch_id
Many2one → fsm.branch
string='Branch'
args: 'fsm.branch'
country_ids
One2many → res.country
string='Country Names'
args: 'res.country', 'territory_id'
description
Char
string='Description'
district_id
Many2one
related='branch_id.district_id'
string='District'
name
Char
required=True
string='Name'
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
region_id
Many2one
related='branch_id.district_id.region_id'
string='Region'
state_ids
One2many → res.country.state
string='State Names'
args: 'res.country.state', 'territory_id'
type
Selection
zip_codes
Char
string='ZIP Codes'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
action_other_address(self, partner)
auto_populate_equipments_on_order
Boolean
string='Auto-populate Equipments on Order based on Location'
auto_populate_persons_on_location
Boolean
string='Auto-populate Workers on Location based on Territory'
order_prio0_request_late
Float
default=72
string='Hours of Buffer for Lowest Priority FS Orders'
order_prio1_request_late
Float
default=48
string='Hours of Buffer for Low Priority FS Orders'
order_prio2_request_late
Float
default=24
string='Hours of Buffer for Medium Priority FS Orders'
order_prio3_request_late
Float
default=8
string='Hours of Buffer for High Priority FS Orders'
search_on_complete_name
Boolean
string='Search Location By Hierarchy'
No public methods.
auto_populate_equipments_on_order
Boolean
readonly=False
related='company_id.auto_populate_equipments_on_order'
string='Auto-populate equipments on Order based on the Location'
auto_populate_persons_on_location
Boolean
readonly=False
related='company_id.auto_populate_persons_on_location'
string='Auto-populate Workers on Location based on Territory'
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_activity
Boolean
string='Manage FSM Activities'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_change_management
Boolean
string='Change Management'
module_fieldservice_crm
Boolean
string='CRM'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_fleet
Boolean
string='Link FSM vehicles to Fleet vehicles'
module_fieldservice_geoengine
Boolean
string='Use GeoEngine'
module_fieldservice_google_map
Boolean
string='Allow Field Service Google Map'
module_fieldservice_location_builder
Boolean
string='Use FSM Location Builder'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_mgmtsystem_nonconformity
Boolean
string='Manage Order Non-Conformities'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_project
Boolean
string='Projects and Tasks'
module_fieldservice_purchase
Boolean
string='Manage subcontractors and their pricelists'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_route
Boolean
string='Manage routes'
module_fieldservice_route_account
Boolean
string='Check the amount collected during the route'
module_fieldservice_route_stock
Boolean
string='Check the inventory of the vehicle at the end of the route'
module_fieldservice_sale
Boolean
string='Sell FSM orders'
module_fieldservice_size
Boolean
string='Manage sizes for orders and locations'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stage_validation
Boolean
string='Validate data at each stage'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
order_prio0_request_late
Float
readonly=False
related='company_id.order_prio0_request_late'
string='Hours of Buffer for Lowest Priority FS Orders'
order_prio1_request_late
Float
readonly=False
related='company_id.order_prio1_request_late'
string='Hours of Buffer for Low Priority FS Orders'
order_prio2_request_late
Float
readonly=False
related='company_id.order_prio2_request_late'
string='Hours of Buffer for Medium Priority FS Orders'
order_prio3_request_late
Float
readonly=False
related='company_id.order_prio3_request_late'
string='Hours of Buffer for High Priority FS Orders'
search_on_complete_name
Boolean
readonly=False
related='company_id.search_on_complete_name'
string='Search Location By Hierarchy'
No public methods.
territory_id
Many2one → fsm.territory
string='Territory'
args: 'fsm.territory'
No public methods.
territory_id
Many2one → fsm.territory
string='Territory'
args: 'fsm.territory'
No public methods.
fsm_location
Boolean
fsm_person
Boolean
owned_location_count
Integer
compute='_compute_owned_location_count'
string='# of Owned Locations'
owned_location_ids
One2many → fsm.location
domain=[('fsm_parent_id', '=', False)]
string='Owned Locations'
args: 'fsm.location', 'owner_id'
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
action_open_owned_locations(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/11.0/fieldservice |
| VERSION | |
| VERSION | 0.3.0 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, GitHub, Bhavesh Odedra, OCA-git-bot, OCA Git Bot, Sandip Mangukiya, brian10048, scampbell, osi-scampbell, Michael Allen |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:55 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/geospatial: - base_geoengine OCA/web: - web_timeline odoo/odoo: - base_geolocalize - base - base_setup - web - bus - web_tour - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
geojson shapely simplejson |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
web_timeline_custom assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_backend_team |
fsm_team_assets | ir.ui.view | qweb | Inherits web.assets_backend |
fsm_branch_form_view |
fsm.branch.form | fsm.branch | form | New |
fsm_branch_tree_view |
fsm.branch.tree | fsm.branch | tree | New |
fsm_category_form_view |
fsm.category.form | fsm.category | form | New |
fsm_category_tree_view |
fsm.category.tree | fsm.category | tree | New |
fsm_district_form_view |
fsm.district.form | fsm.district | form | New |
fsm_district_tree_view |
fsm.district.tree | fsm.district | tree | New |
fsm_equipment_form_view |
fsm.equipment.form | fsm.equipment | form | New |
fsm_equipment_graph_view |
fsm.equipment.graph | fsm.equipment | graph | New |
fsm_equipment_kanban_view |
fsm.equipment.kanban | fsm.equipment | kanban | New |
fsm_equipment_pivot_view |
fsm.equipment.pivot | fsm.equipment | pivot | New |
fsm_equipment_search_view |
fsm.equipment.search | fsm.equipment | search | New |
fsm_equipment_tree_view |
fsm.equipment.tree | fsm.equipment | tree | New |
fsm_location_form_view |
fsm.location.form | fsm.location | form | New |
fsm_location_search_view |
fsm.location.search | fsm.location | search | New |
fsm_location_tree_view |
fsm.location.tree | fsm.location | tree | New |
fsm_order_form |
fsm.order.form | fsm.order | form | New |
fsm_order_graph_view |
fsm.order.graph | fsm.order | graph | New |
fsm_order_kanban_view |
fsm.order.kanban | fsm.order | kanban | New |
fsm_order_pivot_view |
fsm.order.pivot | fsm.order | pivot | New |
fsm_order_search_view |
fsm.order.search | fsm.order | search | New |
fsm_order_timeline_view |
fsm.order.timeline | fsm.order | timeline | New |
fsm_order_tree_view |
fsm.order.tree | fsm.order | tree | New |
fsm_partner_fields |
res.partner.fsm.form | res.partner | notebook | Inherits base.view_partner_form |
fsm_partner_kanban_state |
res.partner.kanban.state | res.partner | Inherits base.res_partner_kanban_view | |
fsm_person_form |
fsm.person.form | fsm.person | form | New |
fsm_person_search_view |
fsm.person.search | fsm.person | search | New |
fsm_person_tree |
fsm.person.tree | fsm.person | tree | New |
fsm_region_form_view |
fsm.region.form | fsm.region | form | New |
fsm_region_tree_view |
fsm.region.tree | fsm.region | tree | New |
fsm_route_form |
fsm.route.form | fsm.route | form | New |
fsm_route_graph_view |
fsm.route.graph | fsm.route | graph | New |
fsm_route_pivot_view |
fsm.route.pivot | fsm.route | pivot | New |
fsm_route_tree |
fsm.route.tree | fsm.route | tree | New |
fsm_stage_form_view |
Stage | fsm.stage | form | New |
fsm_stage_tree_view |
Stages | fsm.stage | tree | New |
fsm_tag_form_view |
Tag | fsm.tag | form | New |
fsm_tag_tree_view |
Tags | fsm.tag | tree | New |
fsm_template_form_view |
Order Template | fsm.template | form | New |
fsm_template_tree_view |
Order Templates | fsm.template | tree | New |
fsm_territory_form_view |
fsm.territory.form | fsm.territory | form | New |
fsm_territory_tree_view |
fsm.territory.tree | fsm.territory | tree | New |
ir_ui_view_fsm_order_map |
ir.ui.view.fsm.order.map | fsm.order | geoengine | New |
partner_wizard_view |
Convert to a FSM Worker or Location | fsm.wizard | form | New |
report_fsm_order |
report_fsm_order | ir.ui.view | qweb | New |
report_fsm_order_document |
report_fsm_order_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.fsm | res.config.settings | Inherits base.res_config_settings_view_form | |
res_partner_search_reference |
res.partner.search.reference | res.partner | Inherits base.view_res_partner_filter | |
view_team_form |
fsm.team.form | fsm.team | form | New |
view_team_kanban |
fsm.team.kanban | fsm.team | kanban | New |
view_team_tree |
fsm.team.tree | fsm.team | tree | New |
No HTTP endpoints found for this module.
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
description
Char
string='Description'
district_id
Many2one → fsm.district
string='District'
args: 'fsm.district'
name
Char
required=True
string='Name'
partner_id
Many2one → res.partner
string='Branch Manager'
args: 'res.partner'
No public methods.
color
Integer
default=10
args: 'Color Index'
description
Char
string='Description'
full_name
Char
compute='_compute_full_name'
string='Name'
name
Char
required='True'
string='Name'
parent_id
Many2one → fsm.category
string='Parent'
args: 'fsm.category'
No public methods.
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
description
Char
string='Description'
name
Char
required=True
string='Name'
partner_id
Many2one → res.partner
string='District Manager'
args: 'res.partner'
region_id
Many2one → fsm.region
string='Region'
args: 'fsm.region'
No public methods.
branch_id
Many2one → fsm.branch
string='Branch'
args: 'fsm.branch'
child_ids
One2many → fsm.equipment
string='Children'
args: 'fsm.equipment', 'parent_id'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
current_location_id
Many2one → fsm.location
required=True
string='Current Location'
args: 'fsm.location'
district_id
Many2one → fsm.district
string='District'
args: 'fsm.district'
hide
Boolean
default=False
location_id
Many2one → fsm.location
string='Assigned Location'
args: 'fsm.location'
managed_by_id
Many2one → res.partner
string='Managed By'
args: 'res.partner'
name
Char
required='True'
string='Name'
notes
Text
string='Notes'
owned_by_id
Many2one → res.partner
string='Owned By'
args: 'res.partner'
parent_id
Many2one → fsm.equipment
string='Parent'
args: 'fsm.equipment'
person_id
Many2one → fsm.person
string='Assigned Operator'
args: 'fsm.person'
region_id
Many2one → fsm.region
string='Region'
args: 'fsm.region'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
territory_id
Many2one → fsm.territory
string='Territory'
args: 'fsm.territory'
advance_stage(self)
calendar_id
Many2one → resource.calendar
string='Working Schedule'
args: 'resource.calendar'
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
hide
Boolean
default=False
location_ids
Many2many → fsm.location
string='Linked Locations'
args: 'fsm.location', 'fsm_person_location_rel', 'fsm_person_id', 'fsm_location_id'
partner_id
Many2one → res.partner
auto_join=True
delegate=True
ondelete='restrict'
required=True
string='Related Partner'
args: 'res.partner'
stage_id
Many2one → fsm.stage
copy=False
default=<expr>
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'fsm.stage'
territory_ids
Many2many → fsm.territory
string='Territories'
args: 'fsm.territory'
advance_stage(self)
create(self, vals)
get_person_information(self, vals)
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
description
Char
string='Description'
name
Char
required=True
string='Name'
partner_id
Many2one → res.partner
string='Region Manager'
args: 'res.partner'
No public methods.
date
Date
required=True
string='Date'
name
Char
default=<expr>
required=True
string='Name'
order_ids
One2many → fsm.order
string='Orders'
args: 'fsm.order', 'route_id'
person_id
Many2one → fsm.person
required=True
string='Assigned To'
args: 'fsm.person'
create(self, vals)
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
custom_color
Char
default='#FFFFFF'
args: 'Color Code'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no record in that stage to display.'
args: 'Folded in Kanban'
is_closed
Boolean
help='Services in this stage are considered as closed.'
args: 'Is a close stage'
is_default
Boolean
help='Used a default stage'
args: 'Is a default stage'
legend_priority
Text
help='Explanation text to help users using the star and priority mechanism on stages or orders that are in this stage.'
translate=True
args: 'Priority Management Explanation'
name
Char
required=True
string='Name'
sequence
Integer
default=1
help='Used to order stages. Lower is better.'
args: 'Sequence'
stage_type
Selection
team_ids
Many2many → fsm.team
default=_default_team_ids
string='Teams'
args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
get_color_information(self)
color
Integer
default=10
args: 'Color Index'
full_name
Char
compute='_compute_full_name'
string='Name'
name
Char
required=True
string='Name'
parent_id
Many2one → fsm.tag
string='Parent'
args: 'fsm.tag'
No public methods.
color
Integer
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
description
Text
translation=True
name
Char
required=True
translation=True
order_count
Integer
compute='_compute_order_count'
string='Orders'
order_ids
One2many → fsm.order
domain=[('stage_id.is_closed', '=', False)]
string='Orders'
args: 'fsm.order', 'team_id'
order_need_assign_count
Integer
compute='_compute_order_need_assign_count'
string='Orders to Assign'
order_need_schedule_count
Integer
compute='_compute_order_need_schedule_count'
string='Orders to Schedule'
sequence
Integer
default=1
help='Used to sort teams. Lower is better.'
args: 'Sequence'
stage_ids
Many2many → fsm.stage
default=_default_stages
string='Stages'
args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
category_ids
Many2many → fsm.category
string='Categories'
args: 'fsm.category'
hours
Float
string='Hours'
instructions
Text
string='Instructions'
name
Char
required=True
string='Name'
No public methods.
branch_id
Many2one → fsm.branch
string='Branch'
args: 'fsm.branch'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
country_ids
One2many → res.country
string='Country Names'
args: 'res.country', 'territory_id'
description
Char
string='Description'
district_id
Many2one
related='branch_id.district_id'
string='District'
name
Char
required=True
string='Name'
person_id
Many2one → fsm.person
string='Primary Assignment'
args: 'fsm.person'
person_ids
Many2many → fsm.person
string='Field Service Workers'
args: 'fsm.person'
region_id
Many2one
related='branch_id.district_id.region_id'
string='Region'
state_ids
One2many → res.country.state
string='State Names'
args: 'res.country.state', 'territory_id'
type
Selection
zip_codes
Char
string='ZIP Codes'
No public methods.
fsm_record_type
Selection
action_convert(self)
action_convert_location(self, partner)
action_convert_person(self, partner)
group_fsm_category
Boolean
implied_group='fieldservice.group_fsm_category'
string='Manage Categories'
group_fsm_equipment
Boolean
implied_group='fieldservice.group_fsm_equipment'
string='Manage Equipment'
group_fsm_tag
Boolean
implied_group='fieldservice.group_fsm_tag'
string='Manage Tags'
group_fsm_team
Boolean
implied_group='fieldservice.group_fsm_team'
string='Manage Teams'
group_fsm_template
Boolean
implied_group='fieldservice.group_fsm_template'
string='Manage Template'
module_fieldservice_account
Boolean
string='Invoice your FSM orders'
module_fieldservice_agreement
Boolean
string='Manage Agreements'
module_fieldservice_distribution
Boolean
string='Manage Distribution'
module_fieldservice_maintenance
Boolean
string='Link FSM orders to maintenance requests'
module_fieldservice_recurring
Boolean
string='Manage Recurring Orders'
module_fieldservice_repair
Boolean
string='Link FSM orders to MRP Repair orders'
module_fieldservice_sale
Boolean
string='Sell Field Service Orders'
module_fieldservice_skill
Boolean
string='Manage Skills'
module_fieldservice_stock
Boolean
string='Use Odoo Logistics'
module_fieldservice_substatus
Boolean
string='Manage Sub-Statuses'
module_fieldservice_vehicle
Boolean
string='Manage Vehicles'
No public methods.
territory_id
Many2one → fsm.territory
string='Territory'
args: 'fsm.territory'
No public methods.
territory_id
Many2one → fsm.territory
string='Territory'
args: 'fsm.territory'
No public methods.
fsm_location
Boolean
fsm_person
Boolean
service_location_id
Many2one → fsm.location
string='Primary Service Location'
args: 'fsm.location'
No public methods.